Name: series-workflowqh4cm Phase: Failed StartedAt: 2026-08-31 21:36:46 +0000 UTC FinishedAt: 2026-08-31 21:56:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqh4cm[0] Phase: Succeeded StartedAt: 2026-08-31 21:36:46 +0000 UTC FinishedAt: 2026-08-31 21:56:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqh4cm[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 21:36:46 +0000 UTC FinishedAt: 2026-08-31 21:56:07 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDIxOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgUlRMODM4MC9SVEw4MzkwIHN1cHBvcnQgYW5kIE1ESU8gcG9sbGluZyBoYW5kbGluZyB0byB0aGUgUmVhbHRlayBPdHRvIE1ESU8gZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpIGFsb25nIHdpdGggaGVscGVyIG5vdGlmaWNhdGlvbiBjYWxsYmFja3MgaW4gdGhlIGNvcmUgUEhZIGRldmljZSBsYXllciAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYykuIFRoZSBkcml2ZXIgaXMgYW4gT0YtbWF0Y2hlZCBwbGF0Zm9ybSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIGNvcmUgUEhZIGFkZGl0aW9ucyBhcmUgbm8tb3AgaG9va3MgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIE1ESU8gYnVzIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBjYWxsYmFja3MsIHdoaWNoIG9ubHkgdGhpcyB1bnJlYWNoYWJsZSBkcml2ZXIgZG9lcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzOWNjYmFmYWYwYTkyZTE4MzUzODU4OWRmN2ZkMjU2YWE5MWYxMTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMjE6NTQ6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG5pbmRleCAyNzFlMDViYWU5YzU3Li42N2UwYjIzYTg0NzBlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbkBAIC00LDcgJiM0Mzs0LDcgQEBcbiAkaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sI1xuICRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuIFxuLXRpdGxlOiBSZWFsdGVrIFJUTDkzMDAgTURJTyBDb250cm9sbGVyXG4mIzQzO3RpdGxlOiBSZWFsdGVrIE90dG8gU3dpdGNoZXMgRXRoZXJuZXQgTURJTyBDb250cm9sbGVyXG4gXG4gbWFpbnRhaW5lcnM6XG4gICAtIENocmlzIFBhY2toYW0gXHUwMDNjY2hyaXMucGFja2hhbUBhbGxpZWR0ZWxlc2lzLmNvLm56XHUwMDNlXG5AQCAtMTIsNiAmIzQzOzEyLDE2IEBAIG1haW50YWluZXJzOlxuIHByb3BlcnRpZXM6XG4gICBjb21wYXRpYmxlOlxuICAgICBvbmVPZjpcbiYjNDM7ICAgICAgLSBpdGVtczpcbiYjNDM7ICAgICAgICAgIC0gZW51bTpcbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MS1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xuJiM0MzsgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw4MzgwLW1kaW9cbiYjNDM7ICAgICAgLSBpdGVtczpcbiYjNDM7ICAgICAgICAgIC0gZW51bTpcbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5Mi1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTMtbWRpb1xuJiM0MzsgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw4MzkxLW1kaW9cbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGVudW06XG4gICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmItbWRpb1xuQEAgLTI0LDYgJiM0MzszNCw4IEBAIHByb3BlcnRpZXM6XG4gICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMy1tZGlvXG4gICAgICAgICAgIC0gY29uc3Q6IHJlYWx0ZWsscnRsOTMxMS1tZGlvXG4gICAgICAgLSBlbnVtOlxuJiM0MzsgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODAtbWRpb1xuJiM0MzsgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTEtbWRpb1xuICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXG4gICAgICAgICAgIC0gcmVhbHRlayxydGw5MzExLW1kaW9cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcgYi9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcbmluZGV4IGEwNTIyOTgzOGNiNDUuLmQ0NDI3OGYyNmZhYmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1xuQEAgLTE3MiwxMSAmIzQzOzE3MiwxMSBAQCBjb25maWcgTURJT19JUFE4MDY0XG4gXHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0NcbiBcbiBjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcbi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMOTMwMCBNRElPIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4mIzQzO1x0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuIFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuIFx0aGVscFxuIFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTURJTyBpbnRlcmZhY2UgZm91bmQgaW4gdGhlIFJlYWx0ZWtcbi1cdCAgUlRMOTMwMCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbiYjNDM7XHQgIFJUTDgzeHgvUlRMOTN4eCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbiBcbiBjb25maWcgTURJT19SRUdNQVBcbiBcdHRyaXN0YXRlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG5pbmRleCBhZmQ1MmExY2Q3ZjgzLi4xMWQwNzhlZjk0MWNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbkBAIC0zNSwxMSAmIzQzOzM1LDg3IEBAXG4gICpcbiAgKiBUaGUgZHJpdmVyIHdvcmtzIG91dCB0aGUgbWFwcGluZyBiYXNlZCBvbiB0aGUgTURJTyBidXMgZGVzY3JpYmVkIGluIGRldmljZSB0cmVlIGFuZCBwaGFuZGxlcyBvblxuICAqIHRoZSBldGhlcm5ldC1wb3J0cyBwcm9wZXJ0eS5cbiYjNDM7ICpcbiYjNDM7ICogVGhlIGRldmljZXMgaGF2ZSBhIGhhcmR3YXJlIHBvbGxpbmcgdW5pdCB0aGF0IHJ1bnMgaW4gdGhlIGJhY2tncm91bmQgd2l0aG91dCBhbnkgQ1BVIGxvYWQuIEl0XG4mIzQzOyAqIGNvbnN0YW50bHkgc2NhbnMgdGhlIE1ESU8gYnVzIGFuZCB0aGUgYXR0YWNoZWQgUEhZcyBhbmQgdXBkYXRlcyB0aGUgTUFDIHN0YXR1cyByZWdpc3RlcnMuXG4mIzQzOyAqXG4mIzQzOyAqIEhvdyBkb2VzIHRoZSBwb2xsaW5nIHdvcms/XG4mIzQzOyAqXG4mIzQzOyAqIEVhY2ggZGV2aWNlIGhhcyBhIFNNSV9QT0xMX0NUUkwgcmVnaXN0ZXIuIEEgcGVyLXBvcnQgYml0bWFzayBkZWNpZGVzIGlmIHRoZSBoYXJkd2FyZSBwb2xsaW5nIG9mXG4mIzQzOyAqIHRoZSBhc3NvY2lhdGVkIGJ1cy9hZGRyZXNzIGlzIGFjdGl2ZSBvciBub3QuIFRoZSBoYXJkd2FyZSBydW5zIGEgdGlnaHQgbG9vcCBvdmVyIHRoaXMgYW5kIGZvclxuJiM0MzsgKiBlYWNoIHNldCBwb2xsaW5nIGJpdCBpdCBpc3N1ZXMgYSBzdGF0dXMgY2hlY2sgZm9yIHRoZSBQSFkuIEF0dGFjaGluZyBhIGxvZ2ljIGFuYWx5emVyIHRvIHRoZVxuJiM0MzsgKiBNRElPIGJ1cyBvZiBhbiBSVEw4MzgwIGFuZCBSVEw4MzkzIGdpdmVzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgKGluIGtlcm5lbCBub3RhdGlvbik6XG4mIzQzOyAqXG4mIzQzOyAqXHRSVEw4MzgwXHRcdFx0XHRSVEw4MzkzXG4mIzQzOyAqXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMzEsIDB4MCk7XHRwaHlfcmVhZChwaHksIDApO1xuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7XHRwaHlfcmVhZChwaHksIDEpO1xuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2MpO1x0cGh5X3JlYWQocGh5LCA0KTtcbiYjNDM7ICpcdHBoeV93cml0ZShwaHksIDEzLCAweDgwMDcpO1x0cGh5X3JlYWQocGh5LCA1KTtcbiYjNDM7ICpcdHBoeV9yZWFkKHBoeSwgMTQpO1x0XHRwaHlfcmVhZChwaHksIDYpO1xuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7XHRwaHlfcmVhZChwaHksIDkpO1xuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2QpO1x0cGh5X3JlYWQocGh5LCAxMCk7XG4mIzQzOyAqXHRwaHlfd3JpdGUocGh5LCAxMywgMHg4MDA3KTtcdHBoeV9yZWFkKHBoeSwgMTUpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCAxNCk7XHRcdHBoeV93cml0ZShwaHksIDEzLCAweDcpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCA5KTtcdFx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2MpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCAxMCk7XHRcdHBoeV93cml0ZShwaHksIDEzLCAweDQwMDcpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCAxNSk7XHRcdHBoeV9yZWFkKHBoeSwgMTQpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCAwKTtcdFx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7XG4mIzQzOyAqXHRwaHlfcmVhZChwaHksIDEpO1x0XHRwaHlfd3JpdGUocGh5LCAxNCwgMHgzZCk7XG4mIzQzOyAqXHRwaHlfcmVhZChwaHksIDQpO1x0XHRwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTtcbiYjNDM7ICpcdHBoeV9yZWFkKHBoeSwgNSk7XHRcdHBoeV9yZWFkKHBoeSwgMTQpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCA2KTtcbiYjNDM7ICpcbiYjNDM7ICogQWZ0ZXIgb25lIFBIWSBzdGF0dXMgaXMgcmVhZCwgdGhlIHBvbGxpbmcgZW5naW5lIGdvZXMgb3ZlciB0byB0aGUgbmV4dCBQSFkuIElmIG9uZSBidXMgaXMgZnVsbHlcbiYjNDM7ICogc2Nhbm5lZCBpdCBzd2l0Y2hlcyBvdmVyIHRvIHRoZSBuZXh0IGJ1cy4gQmFzaWNhbGx5IHRoZSBwb2xsaW5nIHN5c3RlbSBpcyBhbHdheXMgYnVzeSBhbmQgdGhlXG4mIzQzOyAqIE1BQyBzdGF0ZSBpcyB1cGRhdGVkIGluIHJlYWwtdGltZS5cbiYjNDM7ICpcbiYjNDM7ICogVGhpcyBpcyBhIGdsaW1wc2UgbG9vayBhdCB0aGUgY29tcGxleGl0eSBvZiB0aGUgcG9sbGluZyBhbmQgbGVhdmVzIG91dCB0aGUgQzQ1IGNhc2UgYW5kIHRoZSBNQUNcbiYjNDM7ICogcmVnaXN0ZXIgdXBkYXRlIGxvZ2ljIGFmdGVyd2FyZHMuIEltcG9ydGFudCB0byBub3RlOlxuJiM0MzsgKlxuJiM0MzsgKiAtIDEwMCBNQml0IGRvd25zaGlmdHMgKGJyb2tlbiBjYWJsZXMpIGFyZSBpZGVudGlmaWVkIGFuZCBwcm9wYWdhdGVkIHRvIHRoZSBNQUMgY29ycmVjdGx5XG4mIzQzOyAqIC0gQWNjZXNzIHRvIE1ESU9fQU5fRUVFX0FEViBhbmQgTURJT19BTl9FRUVfTFBBQkxFIHdvcmtzIHZpYSBDNDUgb3ZlciBDMjIuXG4mIzQzOyAqIC0gSXQgaXMgdW5jbGVhciBpZiB0aGVzZSBzZXF1ZW5jZXMgY2hhbmdlIGZvciBkaWZmZXJlbnQgUEhZcy5cbiYjNDM7ICogLSBBY2Nlc3MgdG8gUmVhbHRlayByZXNlcnZlZCByZWdpc3RlciAyNiAobGluayBzcGVlZCkgaGFzIG5vdCB5ZXQgYmVlbiBzZWVuLlxuJiM0MzsgKlxuJiM0MzsgKiBIb3cgZG9lcyBNRElPIGFjY2VzcyBmcm9tIGtlcm5lbCB3b3JrP1xuJiM0MzsgKlxuJiM0MzsgKiBXaGVuIGlzc3VpbmcgTURJTyBhY2Nlc3NlcyB2aWEgYW4gTU1JTyBiYXNlZCBpbnRlcmZhY2UgdGhlIGZpbmFsIHdyaXRlIHRvIHRoZSBjb21tYW5kIHJlZ2lzdGVyXG4mIzQzOyAqIHNldHMgYSBcJiMzNDtydW4gY29tbWFuZCBub3dcJiMzNDsgYml0LiBCZXR3ZWVuIHR3byBwb2xsaW5nIHNlcXVlbmNlcyBmb3IgZGlmZmVyZW50IFBIWXMgdGhlIGhhcmR3YXJlXG4mIzQzOyAqIGNoZWNrcyBpZiBhIHVzZXIgY29tbWFuZCBuZWVkcyB0byBydW4gYW5kIHNlbmRzIGl0IG9udG8gdGhlIGJ1cy4gQWZ0ZXJ3YXJkcyBpdCBzaW1wbHkgY29udGludWVzXG4mIzQzOyAqIGl0cyBwb2xsaW5nIHdvcmsuIEluc3BlY3RpbmcgdGhlIGNvbW1hbmQgc2VxdWVuY2UgZm9yIGEgcGFnZWQgd3JpdGUgb24gdGhlIGxvZ2ljIGFuYWx5emVyIGdpdmVzOlxuJiM0MzsgKlxuJiM0MzsgKlx0UlRMODM4MFx0XHRcdFx0UlRMODM5M1xuJiM0MzsgKlx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7ICpcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcbiYjNDM7ICpcdHBoeV93cml0ZShwaHksIHJlZywgdmFsdWUpO1x0cGh5X3dyaXRlKHBoeSwgcmVnLCB2YWx1ZSk7XG4mIzQzOyAqXHRcdFx0XHRcdHBoeV93cml0ZShwaHksIDMxLCAwKTtcbiYjNDM7ICpcbiYjNDM7ICogV2hhdCBkb2VzIHRoaXMgbWVhbj9cbiYjNDM7ICpcbiYjNDM7ICogVGhlcmUgYXJlIHNsaWdodCBkaWZmZXJlbmNlcyBpbiBwb2xsaW5nIGFuZCBQSFkgYWNjZXNzIGJldHdlZW4gdGhlIG1vZGVscyBidXQgdGhlIGNoYWxsZW5nZVxuJiM0MzsgKiBzdGF5cyB0aGUgc2FtZS4gT24gdGhlIG9uZSBoYW5kIHRoYXQgZ3JlYXRseSBzaW1wbGlmaWVzIHRoZSBNQUMgbGF5ZXIsIG9uIHRoZSBvdGhlciBoYW5kIGl0XG4mIzQzOyAqIGhhcyBzb21lIGltcGxpY2F0aW9ucyBmb3IgdGhlIGtlcm5lbCBQSFkgc3Vic3lzdGVtLlxuJiM0MzsgKlxuJiM0MzsgKiAtIFdpdGhvdXQgdGhlIHBvbGxpbmcgYW5kIGEgcHJvcGVyIE1BQyBzdGF0dXMsIHNvbWUgb2YgdGhlIGxpbmsgaGFuZGxpbmcgZmVhdHVyZXMgZG8gbm90IHdvcmsuXG4mIzQzOyAqICAgRXNwZWNpYWxseSBhbiB1bnBvcHVsYXRlZCBNQUNfTElOS19TVFMgcmVnaXN0ZXIgY2FuY2VscyBvcGVyYXRpb25zIHRvIG90aGVyIE1BQyByZWdpc3RlcnMuXG4mIzQzOyAqIC0gVGhlIFJlYWx0ZWsgcGFnZSByZWdpc3RlciAzMSBpcyBtYWdpY2FsbHkgbW9kaWZpZWQgaW4gdGhlIGJhY2tncm91bmQgc28gdGhhdCBwb2xsaW5nIHdpbGxcbiYjNDM7ICogICByZWFkIHRoZSByaWdodCBkYXRhLiBPbiB0aGUgUlRMODM4eCBwb2xsaW5nIHNpbXBseSByZXNldHMgaXQgdG8gemVyby4gT3RoZXIgZGV2aWNlcyBzZWVtXG4mIzQzOyAqICAgdG8gdHJhY2sgdGhlIHBhZ2UgYWNjZXNzIFwmIzM0O21hZ2ljYWxseVwmIzM0OyBpbiB0aGUgYmFja2dyb3VuZC5cbiYjNDM7ICogLSBBIEM0NSBvdmVyIEMyMiBrZXJuZWwgYWNjZXNzIHNlcXVlbmNlIGlzIG1vc3QgbGlrZWx5IHRvIGZhaWwgYmVjYXVzZSBjaGFuY2VzIGFyZSBoaWdoIHRoYXRcbiYjNDM7ICogICB0aGUgcG9sbGluZyBlbmdpbmUgb3ZlcndyaXRlcyByZWdpc3RlcnMgMTMvMTQgaW4gYmV0d2Vlbi5cbiYjNDM7ICogLSBQSFkgZmlybXdhcmUgbG9hZGluZyBjYW4gaGF2ZSBpc3N1ZXMuIEVzcGVjaWFsbHkgaWYgYSBQSFkgaXMgZGVzaWduZWQgdG8gZXhwZWN0IGEgY2xlYW5cbiYjNDM7ICogICBzZXF1ZW5jZSBvZiByZWdpc3RlcnMgYW5kIHZhbHVlcyB3aXRob3V0IGRldmlhdGlvbi5cbiYjNDM7ICogLSBBbiBhY2Nlc3MgdG8gb25lIFBIWSB3aWxsIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgZnJlZSBzbG90IG9mIHRoZSBwb2xsaW5nIGVuZ2luZS5cbiYjNDM7ICpcbiYjNDM7ICogQ29uY2x1c2lvbjogVGhlIFJlYWx0ZWsgTURJTyBidXMgZHJpdmVyIFBIWSBhY2Nlc3MgbXVzdCBrbm93IGFuZCBoYW5kbGUgYW55IGludGVyZmVyZW5jZSB0aGF0XG4mIzQzOyAqIGFyaXNlcyBmcm9tIHRoZSBhYm92ZSBkZXNjcmliZWQgaGFyZHdhcmUgcG9sbGluZy5cbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0bWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maW5kLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcdTAwM2VcbkBAIC01MCw2ICYjNDM7MTI2LDUwIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ21hcC5oXHUwMDNlXG4gXG4mIzQzOyNkZWZpbmUgUlRMODM4MF9OVU1fQlVTRVNcdFx0XHQxXG4mIzQzOyNkZWZpbmUgUlRMODM4MF9OVU1fUEFHRVNcdFx0XHQ0MDk2XG4mIzQzOyNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcdFx0XHQyOFxuJiM0MzsjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXHRcdFx0MHhhMTAwXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORVx0XHRCSVQoMTUpXG4mIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhhMWI4XG4mIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzFcdFx0MHhhMWJjXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSXHRcdEdFTk1BU0soMjQsIDIwKVxuJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0VcdFx0R0VOTUFTSygxOSwgMTUpXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX01BSU5fUEFHRVx0XHRHRU5NQVNLKDE0LCAzKVxuJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9XUklURVx0XHRCSVQoMilcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfUkVBRFx0XHRcdDBcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDVcdFx0QklUKDEpXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyXHRcdDBcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfRkFJTFx0XHRcdDAgLyogbm8gZmFpbCBpbmRpY2F0b3IgKi9cbiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMlx0XHQweGExYzBcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBXHRcdEdFTk1BU0soMzEsIDE2KVxuJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9EQVRBXHRcdFx0R0VOTUFTSygxNSwgMClcbiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfM1x0XHQweGExYzRcbiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9QT0xMX0NUUkxcdFx0XHQweGExN2NcbiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTFx0XHQweGExYzhcbiYjNDM7XG4mIzQzOyNkZWZpbmUgUlRMODM5MF9OVU1fQlVTRVNcdFx0XHQyXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9OVU1fUEFHRVNcdFx0XHQ4MTkyXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9OVU1fUE9SVFNcdFx0XHQ1MlxuJiM0MzsjZGVmaW5lIFJUTDgzOTBfQkNBU1RfUEhZSURfQ1RSTFx0XHQweDAzZWNcbiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19BQ0NFU1NfQ1RSTFx0XHQweDAzZGNcbiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFJcdFx0R0VOTUFTSyg5LCA1KVxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9NQUlOX1BBR0VcdFx0R0VOTUFTSygyMiwgMTApXG4mIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0ZBSUxcdFx0XHRCSVQoMSlcbiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfV1JJVEVcdFx0QklUKDMpXG4mIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1JFQURcdFx0XHQwXG4mIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1XHRcdEJJVCgyKVxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMlx0XHQwXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfQ1RSTFx0XHRcdDB4MDNlMFxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRVx0XHRHRU5NQVNLKDgsIDApXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMXHRcdDB4MDNmMFxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEFcdFx0R0VOTUFTSygzMSwgMTYpXG4mIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEFcdFx0XHRHRU5NQVNLKDE1LCAwKVxuJiM0MzsjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX01NRF9DVFJMXHRcdFx0MHgwM2Y0XG4mIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1x0XHQweDAzZTRcbiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSFx0XHQweDAzZThcbiYjNDM7I2RlZmluZSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTFx0XHQweDAzZmNcbiYjNDM7XG4gI2RlZmluZSBSVEw5MzAwX05VTV9CVVNFU1x0XHRcdDRcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFNcdFx0XHQyOFxuQEAgLTcwLDYgJiM0MzsxOTAsNyBAQFxuICNkZWZpbmUgICBSVEw5MzAwX1BIWV9DVFJMX0lOREFUQVx0XHRHRU5NQVNLKDMxLCAxNilcbiAjZGVmaW5lICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBXHRcdFx0R0VOTUFTSygxNSwgMClcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zXHRcdDB4Y2I3Y1xuJiM0MzsjZGVmaW5lIFJUTDkzMDBfU01JX1BPTExfQ1RSTFx0XHRcdDB4Y2E5MFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkxcdFx0MHhjYjgwXG4gXG4gI2RlZmluZSBSVEw5MzEwX05VTV9CVVNFU1x0XHRcdDRcbkBAIC05NSwxMiAmIzQzOzIxNiwxNiBAQFxuICNkZWZpbmUgICBSVEw5MzEwX1BIWV9DVFJMX0lOREFUQVx0XHRHRU5NQVNLKDE1LCAwKVxuICNkZWZpbmUgUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX01NRF9DVFJMXHQweDBjMThcbiAjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfQUREUl9DVFJMXHRcdDB4MGM3NFxuJiM0MzsjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMXHRcdDB4MGNjY1xuICNkZWZpbmUgUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTFx0XHQweDBjOWNcbiBcbiAjZGVmaW5lIFBIWV9DVFJMX0NNRFx0XHRcdFx0QklUKDApXG4gI2RlZmluZSBQSFlfQ1RSTF9NTURfREVWQURcdFx0XHRHRU5NQVNLKDIwLCAxNilcbiAjZGVmaW5lIFBIWV9DVFJMX01NRF9SRUdcdFx0XHRHRU5NQVNLKDE1LCAwKVxuIFxuJiM0MzsjZGVmaW5lIFJUTF9WRU5ET1JfSURcdFx0XHRcdDB4MDAxY2M4MDBcbiYjNDM7I2RlZmluZSBSVExfUEFHRV9TRUxFQ1RcdFx0XHRcdDMxXG4mIzQzO1xuICNkZWZpbmUgTUFQX0FERFJTX1BFUl9SRUdcdFx0XHQ2XG4gI2RlZmluZSBNQVBfQklUU19QRVJfQUREUlx0XHRcdDVcbiAjZGVmaW5lIE1BUF9CSVRTX1BFUl9CVVNcdFx0XHQyXG5AQCAtMTI2LDYgJiM0MzsyNTEsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4mIzQzO1x0dTE2IHBhZ2VbTUFYX1BPUlRTXTtcbiBcdHU4IHNtaV9idXNbTUFYX1BPUlRTXTtcbiBcdHU4IHNtaV9hZGRyW01BWF9QT1JUU107XG4gXHRib29sIHNtaV9idXNfaXNfYzQ1W01BWF9TTUlfQlVTU0VTXTtcbkBAIC0xNDIsNiAmIzQzOzI2OCw3IEBAIHN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xuIFx0dTggbnVtX2J1c2VzO1xuIFx0dTggbnVtX3BvcnRzO1xuIFx0dTE2IG51bV9wYWdlcztcbiYjNDM7XHR1MzIgcG9sbF9jdHJsO1xuIFx0aW50ICgqc2V0dXBfY29udHJvbGxlcikoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdik7XG4gXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuIFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuQEAgLTE3Nyw2ICYjNDM7MzA0LDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpvdHRvX2VtZGlvX2J1c190b19wcml2KHN0cnVjdCBtaWlfYnVzICpidXMpXG4gXHRyZXR1cm4gY2hhbi1cdTAwM2Vwcml2O1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgYWN0aXZlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHJlZ21hcF9hc3NpZ25fYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXBvbGxfY3RybCAmIzQzOyAocG9ydCAvIDMyKSAqIDQsXG4mIzQzO1x0XHRcdFx0ICBCSVQocG9ydCAlIDMyKSwgYWN0aXZlKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcbiB7XG5AQCAtMTg1LDkgJiM0MzszMTgsOSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0dTMyIGNtZHN0YXRlO1xuIFx0aW50IHJldDtcbiBcbi1cdC8qIERlZmVuc2l2ZSBwcmUgY2hlY2sganVzdCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIGhvcnJpYmxlIHdyb25nICovXG4mIzQzO1x0LyogRGVmZW5zaXZlIHByZSBjaGVjayBqdXN0IGluIGNhc2Ugc29tZXRoaW5nIGdvZXMgaG9ycmlibHkgd3JvbmcgKi9cbiBcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgaW5mby1cdTAwM2VjbWRfcmVncy5jMjJfZGF0YSxcbi1cdFx0XHRcdCAgICAgICBjbWRzdGF0ZSwgIShjbWRzdGF0ZSBcdTAwMjYgUEhZX0NUUkxfQ01EKSwgMTAsIDEwMDApO1xuJiM0MztcdFx0XHRcdCAgICAgICBjbWRzdGF0ZSwgIShjbWRzdGF0ZSBcdTAwMjYgUEhZX0NUUkxfQ01EKSwgMTAsIDEwMDAwKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMjI3LDcgJiM0MzszNjAsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuIFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBpbmZvLVx1MDAzZWNtZF9yZWdzLmMyMl9kYXRhLFxuLVx0XHRcdFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMCk7XG4mIzQzO1x0XHRcdFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMDApO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0yNjQsMTMgJiM0MzszOTcsMTIzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcbiBcdHJldHVybiBvdHRvX2VtZGlvX3J1bl9jbWQoYnVzLCBjbWQgfCBwcml2LVx1MDAzZWluZm8tXHUwMDNlY21kX3dyaXRlLCBjbWRfZGF0YSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4mIzQzO1x0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4mIzQzO1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuJiM0MztcdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4mIzQzO1x0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4mIzQzO1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXG4mIzQzO1x0XHQucG9ydF9tYXNrX2xvd1x0PSBCSVQocG9ydCksXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbiYjNDM7XHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4mIzQzO1x0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4mIzQzO1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4mIzQzO1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhLFxuJiM0MztcdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG4mIzQzO1x0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuJiM0MztcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuJiM0MztcdFx0XHRcdCAgRklFTERfUFJFUChQSFlfQ1RSTF9NTURfUkVHLCByZWdudW0pLFxuJiM0MztcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxuJiM0MztcdFx0LnBvcnRfbWFza19sb3dcdD0gQklUKHBvcnQpLFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuJiM0MztcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4mIzQzO1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuJiM0MztcdFx0LmV4dF9wYWdlXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLFxuJiM0MztcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbiYjNDM7XHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuJiM0MztcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4mIzQzO1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuJiM0MztcdFx0LmV4dF9wYWdlXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLFxuJiM0MztcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxuJiM0MztcdFx0LnBvcnRfbWFza19oaWdoXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXHUwMDNlXHUwMDNlIDMyKSxcbiYjNDM7XHRcdC5wb3J0X21hc2tfbG93XHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkpLFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG4mIzQzO1x0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuJiM0MztcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuJiM0MztcdFx0XHRcdCAgRklFTERfUFJFUChQSFlfQ1RSTF9NTURfUkVHLCByZWdudW0pLFxuJiM0MztcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSxcbiYjNDM7XHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuJiM0MztcdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiYjNDM7XHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSxcbiYjNDM7XHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcbiYjNDM7XHRcdC5wb3J0X21hc2tfaGlnaFx0PSAodTMyKShCSVRfVUxMKHBvcnQpIFx1MDAzZVx1MDAzZSAzMiksXG4mIzQzO1x0XHQucG9ydF9tYXNrX2xvd1x0PSAodTMyKShCSVRfVUxMKHBvcnQpKSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG4ge1xuIFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuIFx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbiBcdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1BBUktfUEFHRSwgMHgxZikgfFxuLVx0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksXG4mIzQzO1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuIFx0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcbiBcdH07XG4gXG5AQCAtMjg0LDcgJiM0Mzs1MjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sXG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiBcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4gXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcbi1cdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxuJiM0MztcdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi1cdTAwM2VwYWdlW3BvcnRdKSxcbiBcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxuIFx0XHQucG9ydF9tYXNrX2xvd1x0PSBCSVQocG9ydCksXG4gXHR9O1xuQEAgLTMyNCw3ICYjNDM7NTY3LDcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHVcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuIFx0XHQuYnJvYWRjYXN0XHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9CQ19QT1JUX0lELCBwb3J0KSxcbiBcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIFJBV19QQUdFKHByaXYpKSxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4gXHR9O1xuIFxuIFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbkBAIC0zMzYsNyAmIzQzOzU3OSw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiBcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIFJBV19QQUdFKHByaXYpKSxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4gXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcbiBcdFx0LnBvcnRfbWFza19oaWdoXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXHUwMDNlXHUwMDNlIDMyKSxcbiBcdFx0LnBvcnRfbWFza19sb3dcdD0gKHUzMikoQklUX1VMTChwb3J0KSksXG5AQCAtMzc4LDI3ICYjNDM7NjIxLDUzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxuIFx0aW50IHJldCwgcG9ydDtcbiBcdHUzMiB2YWx1ZTtcbiBcbiYjNDM7XHRpZiAocmVnbnVtID09IE1JSV9NTURfQ1RSTCB8fCByZWdudW0gPT0gTUlJX01NRF9EQVRBKSB7XG4mIzQzO1x0XHRkZXZfd2Fybl9vbmNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdCAgICAgIFwmIzM0O0M0NSBvdmVyIEMyMiByZWFkIGFjY2VzcyBicm9rZW4gZHVlIHRvIHBvbGxpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XG4gXHRpZiAocG9ydCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHBvcnQ7XG4gXG4tXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaylcbiYjNDM7XHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaykge1xuJiM0MztcdFx0aWYgKHJlZ251bSA9PSBSVExfUEFHRV9TRUxFQ1QpXG4mIzQzO1x0XHRcdHJldHVybiBwcml2LVx1MDAzZXBhZ2VbcG9ydF07XG4mIzQzO1xuIFx0XHRyZXQgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlcmVhZF9jMjIoYnVzLCBwb3J0LCByZWdudW0sIFx1MDAyNnZhbHVlKTtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gcmV0ID8gcmV0IDogdmFsdWU7XG4gfVxuIFxuLXN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sXG4mIzQzO1x0XHRcdFx0dTE2IHZhbHVlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4gXHRpbnQgcmV0LCBwb3J0O1xuIFxuJiM0MztcdGlmIChyZWdudW0gPT0gTUlJX01NRF9DVFJMIHx8IHJlZ251bSA9PSBNSUlfTU1EX0RBVEEpIHtcbiYjNDM7XHRcdGRldl93YXJuX29uY2UoXHUwMDI2YnVzLVx1MDAzZWRldixcbiYjNDM7XHRcdFx0ICAgICAgXCYjMzQ7QzQ1IG92ZXIgQzIyIHdyaXRlIGFjY2VzcyBicm9rZW4gZHVlIHRvIHBvbGxpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XG4gXHRpZiAocG9ydCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHBvcnQ7XG4gXG4tXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaylcbiYjNDM7XHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaykge1xuJiM0MztcdFx0aWYgKHJlZ251bSA9PSBSVExfUEFHRV9TRUxFQ1QpIHtcbiYjNDM7XHRcdFx0aWYgKHZhbHVlIFx1MDAzZT0gUkFXX1BBR0UocHJpdikpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdFx0XHRwcml2LVx1MDAzZXBhZ2VbcG9ydF0gPSB2YWx1ZTtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRyZXQgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNld3JpdGVfYzIyKGJ1cywgcG9ydCwgcmVnbnVtLCB2YWx1ZSk7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDcxLDYgJiM0Mzs3NDAsMTUgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUEhZX1BBVENIX0RPTkUgZW5hYmxlcyBQSFkgY29udHJvbCB2aWEgU29DLiBUaGlzIGlzIHJlcXVpcmVkIGZvciBQSFkgYWNjZXNzLCBpbmNsdWRpbmdcbiYjNDM7XHQgKiBwYXRjaGluZyBhbmQgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBQSFlzIGFyZSBwcm9iZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xuQEAgLTUwNyw2ICYjNDM7Nzg1LDUxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXHUwMDNlbWRpby5hZGRyKTtcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXByaXY7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IGNoYW4tXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0aWYgKHBvcnQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdC8qIEFsbCBzdWJzZXF1ZW50IGJ1cyBvcGVyYXRpb25zIHdpbGwgZmFpbCAqL1xuJiM0MztcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O1BIWSBpcyBub3QgbWFwcGVkIHRvIGEgdmFsaWQgc3dpdGNoIHBvcnRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHBvcnQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBcJiMzNDtzeW5jXCYjMzQ7IHBhZ2UgaW4gY2FzZSBvZiBwcmV2aW91c2x5IGZhaWxlZCBhdHRhY2htZW50ICovXG4mIzQzO1x0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spXG4mIzQzO1x0XHRwcml2LVx1MDAzZXBhZ2VbcG9ydF0gPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlc21pX2J1c19pc19jNDVbY2hhbi1cdTAwM2VtZGlvX2J1c10gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFwaHlfaWRfY29tcGFyZV92ZW5kb3IocGh5ZGV2LVx1MDAzZXBoeV9pZCwgUlRMX1ZFTkRPUl9JRCkpIHtcbiYjNDM7XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtPbmx5IFJlYWx0ZWsgUEhZcyBhbGxvd2VkIG9uIEMyMiBidXNcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCB0cnVlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuJiM0MztcdGludCBwb3J0O1xuJiM0MztcbiYjNDM7XHRwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuJiM0MztcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcik7XG4mIzQzO1xuJiM0MztcdGlmIChwb3J0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKiBcJiMzNDtzeW5jXCYjMzQ7IHBhZ2UgZm9yIG5leHQgYXR0YWNobWVudCAqL1xuJiM0MztcdHNjb3BlZF9ndWFyZChtdXRleCwgXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKVxuJiM0MztcdFx0cHJpdi1cdTAwM2VwYWdlW3BvcnRdID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSkpXG4mIzQzO1x0XHRkZXZfZXJyKGJ1cy1cdTAwM2VwYXJlbnQsIFwmIzM0O2ZhaWxlZCB0byBkaXNhYmxlIHBvbGxpbmcgZm9yIHBvcnQgJWRcXG5cJiMzNDssIHBvcnQpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuIFx0XHRcdFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuIHtcbkBAIC01MjgsMTQgJiM0Mzs4NTEsMTQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXZcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRidXMtXHUwMDNlbmFtZSA9IFwmIzM0O1JlYWx0ZWsgU3dpdGNoIE1ESU8gQnVzXCYjMzQ7O1xuLVx0aWYgKHByaXYtXHUwMDNlc21pX2J1c19pc19jNDVbbWRpb19idXNdKSB7XG4tXHRcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XG4tXHRcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSBvdHRvX2VtZGlvX3dyaXRlX2M0NTtcbi1cdH0gZWxzZSB7XG4tXHRcdGJ1cy1cdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcbi1cdFx0YnVzLVx1MDAzZXdyaXRlID0gb3R0b19lbWRpb193cml0ZV9jMjI7XG4tXHR9XG4mIzQzO1x0YnVzLVx1MDAzZXJlYWRfYzQ1ID0gb3R0b19lbWRpb19yZWFkX2M0NTtcbiYjNDM7XHRidXMtXHUwMDNld3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7XG4mIzQzO1x0YnVzLVx1MDAzZXJlYWQgPSBvdHRvX2VtZGlvX3JlYWRfYzIyO1xuJiM0MztcdGJ1cy1cdTAwM2V3cml0ZSA9IG90dG9fZW1kaW9fd3JpdGVfYzIyO1xuIFx0YnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbiYjNDM7XHRidXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoO1xuJiM0MztcdGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2g7XG4mIzQzO1xuIFx0Y2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuIFx0Y2hhbi1cdTAwM2VtZGlvX2J1cyA9IG1kaW9fYnVzO1xuIFx0Y2hhbi1cdTAwM2Vwcml2ID0gcHJpdjtcbkBAIC02NTIsNiAmIzQzOzk3NSwxOSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fbWFwX3BvcnRzKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRmb3IgKGludCBwb3J0ID0gMDsgcG9ydCBcdTAwM2MgcHJpdi1cdTAwM2VpbmZvLVx1MDAzZW51bV9wb3J0czsgcG9ydCYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGVyciA9IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSk7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5AQCAtNjcxLDYgJiM0MzsxMDA3LDEwIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbiBcbiYjNDM7XHRlcnIgPSBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhwcml2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4gXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTtcbiBcbiBcdGVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7XG5AQCAtNjk2LDYgJiM0MzsxMDM2LDUxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHtcbiYjNDM7XHQuYWRkcl9tYXBfYmFzZSA9IFJUTDgzODBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuJiM0MztcdC5jbWRfZmFpbCA9IFJUTDgzODBfUEhZX0NUUkxfRkFJTCxcbiYjNDM7XHQuY21kX3JlYWQgPSBSVEw4MzgwX1BIWV9DVFJMX1JFQUQsXG4mIzQzO1x0LmNtZF93cml0ZSA9IFJUTDgzODBfUEhZX0NUUkxfV1JJVEUsXG4mIzQzO1x0LmNtZF9yZWdzID0ge1xuJiM0MztcdFx0LmMyMl9kYXRhID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEsXG4mIzQzO1x0XHQuYzQ1X2RhdGEgPSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMyxcbiYjNDM7XHRcdC5pb19kYXRhID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzIsXG4mIzQzO1x0XHQucG9ydF9tYXNrX2xvdyA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wLFxuJiM0MztcdH0sXG4mIzQzO1x0Lm51bV9idXNlcyA9IFJUTDgzODBfTlVNX0JVU0VTLFxuJiM0MztcdC5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUyxcbiYjNDM7XHQubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsXG4mIzQzO1x0LnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCxcbiYjNDM7XHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxuJiM0MztcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMixcbiYjNDM7XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG4mIzQzO1x0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIsXG4mIzQzO1x0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzOTBfaW5mbyA9IHtcbiYjNDM7XHQuY21kX2ZhaWwgPSBSVEw4MzkwX1BIWV9DVFJMX0ZBSUwsXG4mIzQzO1x0LmNtZF9yZWFkID0gUlRMODM5MF9QSFlfQ1RSTF9SRUFELFxuJiM0MztcdC5jbWRfd3JpdGUgPSBSVEw4MzkwX1BIWV9DVFJMX1dSSVRFLFxuJiM0MztcdC5jbWRfcmVncyA9IHtcbiYjNDM7XHRcdC5icm9hZGNhc3QgPSBSVEw4MzkwX0JDQVNUX1BIWUlEX0NUUkwsXG4mIzQzO1x0XHQuYzIyX2RhdGEgPSBSVEw4MzkwX1BIWVJFR19BQ0NFU1NfQ1RSTCxcbiYjNDM7XHRcdC5jNDVfZGF0YSA9IFJUTDgzOTBfUEhZUkVHX01NRF9DVFJMLFxuJiM0MztcdFx0LmV4dF9wYWdlID0gUlRMODM5MF9QSFlSRUdfQ1RSTCxcbiYjNDM7XHRcdC5pb19kYXRhID0gUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMLFxuJiM0MztcdFx0LnBvcnRfbWFza19sb3cgPSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfTE9XLFxuJiM0MztcdFx0LnBvcnRfbWFza19oaWdoID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0hJR0gsXG4mIzQzO1x0fSxcbiYjNDM7XHQubnVtX2J1c2VzID0gUlRMODM5MF9OVU1fQlVTRVMsXG4mIzQzO1x0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxuJiM0MztcdC5udW1fcG9ydHMgPSBSVEw4MzkwX05VTV9QT1JUUyxcbiYjNDM7XHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4mIzQzO1x0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxuJiM0MztcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcbiYjNDM7XHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcbiYjNDM7XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7XG4gXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuIFx0LmJ1c19tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMLFxuQEAgLTcxMSw2ICYjNDM7MTA5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuIFx0Lm51bV9idXNlcyA9IFJUTDkzMDBfTlVNX0JVU0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMDBfTlVNX1BPUlRTLFxuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMDBfTlVNX1BBR0VTLFxuJiM0MztcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4gXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxuIFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxuIFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LFxuQEAgLTczNiw2ICYjNDM7MTEyMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xuIFx0Lm51bV9idXNlcyA9IFJUTDkzMTBfTlVNX0JVU0VTLFxuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxuJiM0MztcdC5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXG5AQCAtNzQ0LDYgJiM0MzsxMTMxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvdHRvX2VtZGlvX2lkc1tdID0ge1xuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzODAtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzOTEtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzgzOTBfaW5mbyB9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsOTMwMS1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMwMF9pbmZvIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw5MzExLW1kaW9cJiMzNDssIC5kYXRhID0gXHUwMDI2b3R0b19lbWRpb185MzEwX2luZm8gfSxcbiBcdHt9XG5AQCAtNzU1LDEwICYjNDM7MTE0NCwxMSBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvdHRvX2VtZGlvX2RyaXZlciA9IHtcbiBcdC5kcml2ZXIgPSB7XG4gXHRcdC5uYW1lID0gXCYjMzQ7bWRpby1ydGw5MzAwXCYjMzQ7LFxuIFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvdHRvX2VtZGlvX2lkcyxcbiYjNDM7XHRcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcbiBcdH0sXG4gfTtcbiBcbiBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTtcbiBcbi1NT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UlRMOTMwMCBNRElPIGRyaXZlclwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtSVEw4M3h4L1JUTDkzeHggTURJTyBkcml2ZXJcJiMzNDspO1xuIE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDk0YjJlODVlMDBhMzcuLmRlNTlkODY0YjA2MDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTczNCw2ICYjNDM7MTczNCwxMDQgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbiBcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9kZXRhY2hfaW50ZXJuYWwgLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4mIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuJiM0MzsgKiBAbm90aWZ5X2J1czogd2hldGhlciB0byBub3RpZnkgdGhlIE1ESU8gYnVzIGFib3V0IHRoZSBQSFkgZGV0YWNoXG4mIzQzOyAqXG4mIzQzOyAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcbiYjNDM7ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgcGh5X2RldGFjaF9pbnRlcm5hbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIG5vdGlmeV9idXMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2RldjtcbiYjNDM7XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuJiM0MztcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWRldmxpbmspIHtcbiYjNDM7XHRcdGRldmljZV9saW5rX2RlbChwaHlkZXYtXHUwMDNlZGV2bGluayk7XG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IE5VTEw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZXN5c2ZzX2xpbmtzKSB7XG4mIzQzO1x0XHRpZiAoZGV2KVxuJiM0MztcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwmIzM0O3BoeWRldlwmIzM0Oyk7XG4mIzQzO1x0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaiwgXCYjMzQ7YXR0YWNoZWRfZGV2XCYjMzQ7KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2RldilcbiYjNDM7XHRcdHN5c2ZzX3JlbW92ZV9maWxlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLFxuJiM0MztcdFx0XHRcdCAgXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XG4mIzQzO1xuJiM0MztcdHBoeV9zdXNwZW5kKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdGlmIChub3RpZnlfYnVzIFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gpXG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gocGh5ZGV2KTtcbiYjNDM7XG4mIzQzO1x0aWYgKGRldikge1xuJiM0MztcdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4mIzQzO1xuJiM0MztcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4mIzQzO1x0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdik7XG4mIzQzO1x0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4mIzQzO1x0XHRpZiAoaHdwcm92IFx1MDAyNlx1MDAyNiBod3Byb3YtXHUwMDNlcGh5ZGV2ID09IHBoeWRldikge1xuJiM0MztcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZWh3cHJvdiwgTlVMTCk7XG4mIzQzO1x0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcbiYjNDM7XHRcdHBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gTlVMTDtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4mIzQzO1xuJiM0MztcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxuJiM0MztcdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbiYjNDM7XG4mIzQzO1x0LyogSWYgdGhlIGRldmljZSBoYWQgbm8gc3BlY2lmaWMgZHJpdmVyIGJlZm9yZSAoaS5lLiAtIGl0XG4mIzQzO1x0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4mIzQzO1x0ICogZnJvbSB0aGUgZ2VuZXJpYyBkcml2ZXIgc28gdGhhdCB0aGVyZSYjMzk7cyBhIGNoYW5jZSBhXG4mIzQzO1x0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4mIzQzO1x0XHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4mIzQzO1x0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSBwaHlkZXYgbWlnaHQgZ28gYXdheSBvbiB0aGUgcHV0X2RldmljZSgpIGJlbG93LCBzbyBhdm9pZFxuJiM0MztcdCAqIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHJlYWRpbmcgdGhlIHVuZGVybHlpbmcgYnVzIGZpcnN0LlxuJiM0MztcdCAqL1xuJiM0MztcdGJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbiYjNDM7XG4mIzQzO1x0cHV0X2RldmljZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuJiM0MztcdGlmIChkZXYpXG4mIzQzO1x0XHRuZGV2X293bmVyID0gZGV2LVx1MDAzZWRldi5wYXJlbnQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyO1xuJiM0MztcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lcilcbiYjNDM7XHRcdG1vZHVsZV9wdXQoYnVzLVx1MDAzZW93bmVyKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4mIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuJiM0MzsgKlxuJiM0MzsgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4mIzQzOyAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0LyogY2xlYW51cCBpbmNsdWRpbmcgYnVzIG5vdGlmaWNhdGlvbiAqL1xuJiM0MztcdHBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCB0cnVlKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKHBoeV9kZXRhY2gpO1xuJiM0MztcbiAvKipcbiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXG5AQCAtMTg3Niw2ICYjNDM7MTk3NCwxMiBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyb3I7XG4gXG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCkge1xuJiM0MztcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKHBoeWRldik7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRnb3RvIGVycm9yO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwaHlfcmVzdW1lKHBoeWRldik7XG4gXG4gXHQvKipcbkBAIC0xODkwLDggJiM0MzsxOTk0LDggQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRyZXR1cm4gZXJyO1xuIFxuIGVycm9yOlxuLVx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG4tXHRwaHlfZGV0YWNoKHBoeWRldik7XG4mIzQzO1x0LyogcGh5X2RldGFjaF9pbnRlcm5hbCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG4mIzQzO1x0cGh5X2RldGFjaF9pbnRlcm5hbChwaHlkZXYsIGZhbHNlKTtcbiBcdHJldHVybiBlcnI7XG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbkBAIC0xOTA2LDg2ICYjNDM7MjAxMCw2IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIH1cbiBFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbiBcbi0vKipcbi0gKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZVxuLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuLSAqXG4tICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxuLSAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cbi0gKi9cbi12b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi17XG4tXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2Rldjtcbi1cdHN0cnVjdCBtb2R1bGUgKm5kZXZfb3duZXIgPSBOVUxMO1xuLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbi1cbi1cdGlmIChwaHlkZXYtXHUwMDNlZGV2bGluaykge1xuLVx0XHRkZXZpY2VfbGlua19kZWwocGh5ZGV2LVx1MDAzZWRldmxpbmspO1xuLVx0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IE5VTEw7XG4tXHR9XG4tXG4tXHRpZiAocGh5ZGV2LVx1MDAzZXN5c2ZzX2xpbmtzKSB7XG4tXHRcdGlmIChkZXYpXG4tXHRcdFx0c3lzZnNfcmVtb3ZlX2xpbmsoXHUwMDI2ZGV2LVx1MDAzZWRldi5rb2JqLCBcJiMzNDtwaHlkZXZcJiMzNDspO1xuLVx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaiwgXCYjMzQ7YXR0YWNoZWRfZGV2XCYjMzQ7KTtcbi1cdH1cbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2Rldilcbi1cdFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmtvYmosXG4tXHRcdFx0XHQgIFx1MDAyNmRldl9hdHRyX3BoeV9zdGFuZGFsb25lLmF0dHIpO1xuLVxuLVx0cGh5X3N1c3BlbmQocGh5ZGV2KTtcbi1cdGlmIChkZXYpIHtcbi1cdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4tXG4tXHRcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxuLVx0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXG4tXHRcdCAqL1xuLVx0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuLVx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4tXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4tXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuLVx0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbi1cdFx0fVxuLVxuLVx0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xuLVx0XHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xuLVx0fVxuLVxuLVx0cGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XG4tXHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4tXG4tXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlcilcbi1cdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbi1cbi1cdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxuLVx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4tXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJiMzOTtzIGEgY2hhbmNlIGFcbi1cdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuLVx0ICovXG4tXHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbi1cdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4tXHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbi1cdH1cbi1cbi1cdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4tXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4tXG4tXHQvKlxuLVx0ICogVGhlIHBoeWRldiBtaWdodCBnbyBhd2F5IG9uIHRoZSBwdXRfZGV2aWNlKCkgYmVsb3csIHNvIGF2b2lkXG4tXHQgKiBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBieSByZWFkaW5nIHRoZSB1bmRlcmx5aW5nIGJ1cyBmaXJzdC5cbi1cdCAqL1xuLVx0YnVzID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzO1xuLVxuLVx0cHV0X2RldmljZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuLVx0aWYgKGRldilcbi1cdFx0bmRldl9vd25lciA9IGRldi1cdTAwM2VkZXYucGFyZW50LVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcjtcbi1cdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lcilcbi1cdFx0bW9kdWxlX3B1dChidXMtXHUwMDNlb3duZXIpO1xuLX1cbi1FWFBPUlRfU1lNQk9MKHBoeV9kZXRhY2gpO1xuLVxuIGludCBwaHlfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCA1ZjhkNjU4NjhlMGZmLi4zZDhhZmU2YjdmMWM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaFxuQEAgLTM3Niw2ICYjNDM7Mzc2LDI0IEBAIHN0cnVjdCBtaWlfYnVzIHtcbiBcdFx0XHQgaW50IHJlZ251bSwgdTE2IHZhbCk7XG4gXHQvKiogQHJlc2V0OiBQZXJmb3JtIGEgcmVzZXQgb2YgdGhlIGJ1cyAqL1xuIFx0aW50ICgqcmVzZXQpKHN0cnVjdCBtaWlfYnVzICpidXMpO1xuJiM0MztcdC8qKlxuJiM0MztcdCAqIEBub3RpZnlfcGh5X2F0dGFjaDogUGVyZm9ybSBwb3N0LWF0dGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcbiYjNDM7XHQgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfZGV0YWNoLiBDYWxsZWRcbiYjNDM7XHQgKiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpIHJpZ2h0IGJlZm9yZSBwaHlfcmVzdW1lKCkuIFJ1bnMgaW4gcHJvY2Vzc1xuJiM0MztcdCAqIGNvbnRleHQsIG1heSBzbGVlcCBhbmQgbWF5IGJlIGNhbGxlZCB3aXRoIFJUTkwgaGVsZC4gTXVzdCBub3RcbiYjNDM7XHQgKiBhY3F1aXJlIG9yIHJlbHkgb24gUlROTC4gUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJybm9cbiYjNDM7XHQgKiBvbiBmYWlsdXJlLiBNdXN0IHVud2luZCBpdHMgb3duIHN0YXRlIG9uIGVycm9yIGFzIGF0dGFjaG1lbnQgaXNcbiYjNDM7XHQgKiBhYm9ydGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGludCAoKm5vdGlmeV9waHlfYXR0YWNoKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjNDM7XHQvKipcbiYjNDM7XHQgKiBAbm90aWZ5X3BoeV9kZXRhY2g6IFBlcmZvcm0gcHJlLWRldGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcbiYjNDM7XHQgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfYXR0YWNoLiBDYWxsZWRcbiYjNDM7XHQgKiBpbiBwaHlfZGV0YWNoKCkgcmlnaHQgYWZ0ZXIgcGh5X3N1c3BlbmQoKS4gUnVucyBpbiBwcm9jZXNzIGNvbnRleHQsXG4mIzQzO1x0ICogbWF5IHNsZWVwIGFuZCBtYXkgYmUgY2FsbGVkIHdpdGggUlROTCBoZWxkLiBNdXN0IG5vdCBhY3F1aXJlIG9yXG4mIzQzO1x0ICogcmVseSBvbiBSVE5MLlxuJiM0MztcdCAqL1xuJiM0MztcdHZvaWQgKCpub3RpZnlfcGh5X2RldGFjaCkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gXG4gXHQvKiogQHN0YXRzOiBTdGF0aXN0aWMgY291bnRlcnMgcGVyIGRldmljZSBvbiB0aGUgYnVzICovXG4gXHRzdHJ1Y3QgbWRpb19idXNfc3RhdHMgc3RhdHNbUEhZX01BWF9BRERSXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMTo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgYWRkcyBSVEw4MzgwL1JUTDgzOTAgc3VwcG9ydCBhbmQgTURJTyBwb2xsaW5nIGhhbmRsaW5nIHRvIHRoZSBSZWFsdGVrIE90dG8gTURJTyBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykgYWxvbmcgd2l0aCBoZWxwZXIgbm90aWZpY2F0aW9uIGNhbGxiYWNrcyBpbiB0aGUgY29yZSBQSFkgZGV2aWNlIGxheWVyIChkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jKS4gVGhlIGRyaXZlciBpcyBhbiBPRi1tYXRjaGVkIHBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGUgY29yZSBQSFkgYWRkaXRpb25zIGFyZSBuby1vcCBob29rcyB1bmxlc3MgdGhlIHVuZGVybHlpbmcgTURJTyBidXMgZHJpdmVyIGltcGxlbWVudHMgdGhlIGNhbGxiYWNrcywgd2hpY2ggb25seSB0aGlzIHVucmVhY2hhYmxlIGRyaXZlciBkb2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5Y2NiYWZhZjBhOTJlMTgzNTM4NTg5ZGY3ZmQyNTZhYTkxZjExNjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAyMTo1NDo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbAppbmRleCAyNzFlMDViYWU5YzU3Li42N2UwYjIzYTg0NzBlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sCkBAIC00LDcgJiM0Mzs0LDcgQEAKICRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwjCiAkc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCMKIAotdGl0bGU6IFJlYWx0ZWsgUlRMOTMwMCBNRElPIENvbnRyb2xsZXIKJiM0Mzt0aXRsZTogUmVhbHRlayBPdHRvIFN3aXRjaGVzIEV0aGVybmV0IE1ESU8gQ29udHJvbGxlcgogCiBtYWludGFpbmVyczoKICAgLSBDaHJpcyBQYWNraGFtICZsdDtjaHJpcy5wYWNraGFtQGFsbGllZHRlbGVzaXMuY28ubnomZ3Q7CkBAIC0xMiw2ICYjNDM7MTIsMTYgQEAgbWFpbnRhaW5lcnM6CiBwcm9wZXJ0aWVzOgogICBjb21wYXRpYmxlOgogICAgIG9uZU9mOgomIzQzOyAgICAgIC0gaXRlbXM6CiYjNDM7ICAgICAgICAgIC0gZW51bToKJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgxLW1kaW8KJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgyLW1kaW8KJiM0MzsgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw4MzgwLW1kaW8KJiM0MzsgICAgICAtIGl0ZW1zOgomIzQzOyAgICAgICAgICAtIGVudW06CiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5Mi1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5My1tZGlvCiYjNDM7ICAgICAgICAgIC0gY29uc3Q6IHJlYWx0ZWsscnRsODM5MS1tZGlvCiAgICAgICAtIGl0ZW1zOgogICAgICAgICAgIC0gZW51bToKICAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDJiLW1kaW8KQEAgLTI0LDYgJiM0MzszNCw4IEBAIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEzLW1kaW8KICAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDkzMTEtbWRpbwogICAgICAgLSBlbnVtOgomIzQzOyAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MC1tZGlvCiYjNDM7ICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkxLW1kaW8KICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvCiAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMTEtbWRpbwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcgYi9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcKaW5kZXggYTA1MjI5ODM4Y2I0NS4uZDQ0Mjc4ZjI2ZmFiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZwpAQCAtMTcyLDExICYjNDM7MTcyLDExIEBAIGNvbmZpZyBNRElPX0lQUTgwNjQKIAkgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0MKIAogY29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwCi0JdHJpc3RhdGUgJiMzNDtSZWFsdGVrIFJUTDkzMDAgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydCYjMzQ7CiYjNDM7CXRyaXN0YXRlICYjMzQ7UmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydCYjMzQ7CiAJZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVAogCWhlbHAKIAkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGludGVyZmFjZSBmb3VuZCBpbiB0aGUgUmVhbHRlawotCSAgUlRMOTMwMCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy4KJiM0MzsJICBSVEw4M3h4L1JUTDkzeHggZmFtaWx5IG9mIEV0aGVybmV0IHN3aXRjaGVzIHdpdGggaW50ZWdyYXRlZCBTb0MuCiAKIGNvbmZpZyBNRElPX1JFR01BUAogCXRyaXN0YXRlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMKaW5kZXggYWZkNTJhMWNkN2Y4My4uMTFkMDc4ZWY5NDFjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYwpAQCAtMzUsMTEgJiM0MzszNSw4NyBAQAogICoKICAqIFRoZSBkcml2ZXIgd29ya3Mgb3V0IHRoZSBtYXBwaW5nIGJhc2VkIG9uIHRoZSBNRElPIGJ1cyBkZXNjcmliZWQgaW4gZGV2aWNlIHRyZWUgYW5kIHBoYW5kbGVzIG9uCiAgKiB0aGUgZXRoZXJuZXQtcG9ydHMgcHJvcGVydHkuCiYjNDM7ICoKJiM0MzsgKiBUaGUgZGV2aWNlcyBoYXZlIGEgaGFyZHdhcmUgcG9sbGluZyB1bml0IHRoYXQgcnVucyBpbiB0aGUgYmFja2dyb3VuZCB3aXRob3V0IGFueSBDUFUgbG9hZC4gSXQKJiM0MzsgKiBjb25zdGFudGx5IHNjYW5zIHRoZSBNRElPIGJ1cyBhbmQgdGhlIGF0dGFjaGVkIFBIWXMgYW5kIHVwZGF0ZXMgdGhlIE1BQyBzdGF0dXMgcmVnaXN0ZXJzLgomIzQzOyAqCiYjNDM7ICogSG93IGRvZXMgdGhlIHBvbGxpbmcgd29yaz8KJiM0MzsgKgomIzQzOyAqIEVhY2ggZGV2aWNlIGhhcyBhIFNNSV9QT0xMX0NUUkwgcmVnaXN0ZXIuIEEgcGVyLXBvcnQgYml0bWFzayBkZWNpZGVzIGlmIHRoZSBoYXJkd2FyZSBwb2xsaW5nIG9mCiYjNDM7ICogdGhlIGFzc29jaWF0ZWQgYnVzL2FkZHJlc3MgaXMgYWN0aXZlIG9yIG5vdC4gVGhlIGhhcmR3YXJlIHJ1bnMgYSB0aWdodCBsb29wIG92ZXIgdGhpcyBhbmQgZm9yCiYjNDM7ICogZWFjaCBzZXQgcG9sbGluZyBiaXQgaXQgaXNzdWVzIGEgc3RhdHVzIGNoZWNrIGZvciB0aGUgUEhZLiBBdHRhY2hpbmcgYSBsb2dpYyBhbmFseXplciB0byB0aGUKJiM0MzsgKiBNRElPIGJ1cyBvZiBhbiBSVEw4MzgwIGFuZCBSVEw4MzkzIGdpdmVzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgKGluIGtlcm5lbCBub3RhdGlvbik6CiYjNDM7ICoKJiM0MzsgKglSVEw4MzgwCQkJCVJUTDgzOTMKJiM0MzsgKgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7ICoJcGh5X3dyaXRlKHBoeSwgMzEsIDB4MCk7CXBoeV9yZWFkKHBoeSwgMCk7CiYjNDM7ICoJcGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7CXBoeV9yZWFkKHBoeSwgMSk7CiYjNDM7ICoJcGh5X3dyaXRlKHBoeSwgMTQsIDB4M2MpOwlwaHlfcmVhZChwaHksIDQpOwomIzQzOyAqCXBoeV93cml0ZShwaHksIDEzLCAweDgwMDcpOwlwaHlfcmVhZChwaHksIDUpOwomIzQzOyAqCXBoeV9yZWFkKHBoeSwgMTQpOwkJcGh5X3JlYWQocGh5LCA2KTsKJiM0MzsgKglwaHlfd3JpdGUocGh5LCAxMywgMHg3KTsJcGh5X3JlYWQocGh5LCA5KTsKJiM0MzsgKglwaHlfd3JpdGUocGh5LCAxNCwgMHgzZCk7CXBoeV9yZWFkKHBoeSwgMTApOwomIzQzOyAqCXBoeV93cml0ZShwaHksIDEzLCAweDgwMDcpOwlwaHlfcmVhZChwaHksIDE1KTsKJiM0MzsgKglwaHlfcmVhZChwaHksIDE0KTsJCXBoeV93cml0ZShwaHksIDEzLCAweDcpOwomIzQzOyAqCXBoeV9yZWFkKHBoeSwgOSk7CQlwaHlfd3JpdGUocGh5LCAxNCwgMHgzYyk7CiYjNDM7ICoJcGh5X3JlYWQocGh5LCAxMCk7CQlwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTsKJiM0MzsgKglwaHlfcmVhZChwaHksIDE1KTsJCXBoeV9yZWFkKHBoeSwgMTQpOwomIzQzOyAqCXBoeV9yZWFkKHBoeSwgMCk7CQlwaHlfd3JpdGUocGh5LCAxMywgMHg3KTsKJiM0MzsgKglwaHlfcmVhZChwaHksIDEpOwkJcGh5X3dyaXRlKHBoeSwgMTQsIDB4M2QpOwomIzQzOyAqCXBoeV9yZWFkKHBoeSwgNCk7CQlwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTsKJiM0MzsgKglwaHlfcmVhZChwaHksIDUpOwkJcGh5X3JlYWQocGh5LCAxNCk7CiYjNDM7ICoJcGh5X3JlYWQocGh5LCA2KTsKJiM0MzsgKgomIzQzOyAqIEFmdGVyIG9uZSBQSFkgc3RhdHVzIGlzIHJlYWQsIHRoZSBwb2xsaW5nIGVuZ2luZSBnb2VzIG92ZXIgdG8gdGhlIG5leHQgUEhZLiBJZiBvbmUgYnVzIGlzIGZ1bGx5CiYjNDM7ICogc2Nhbm5lZCBpdCBzd2l0Y2hlcyBvdmVyIHRvIHRoZSBuZXh0IGJ1cy4gQmFzaWNhbGx5IHRoZSBwb2xsaW5nIHN5c3RlbSBpcyBhbHdheXMgYnVzeSBhbmQgdGhlCiYjNDM7ICogTUFDIHN0YXRlIGlzIHVwZGF0ZWQgaW4gcmVhbC10aW1lLgomIzQzOyAqCiYjNDM7ICogVGhpcyBpcyBhIGdsaW1wc2UgbG9vayBhdCB0aGUgY29tcGxleGl0eSBvZiB0aGUgcG9sbGluZyBhbmQgbGVhdmVzIG91dCB0aGUgQzQ1IGNhc2UgYW5kIHRoZSBNQUMKJiM0MzsgKiByZWdpc3RlciB1cGRhdGUgbG9naWMgYWZ0ZXJ3YXJkcy4gSW1wb3J0YW50IHRvIG5vdGU6CiYjNDM7ICoKJiM0MzsgKiAtIDEwMCBNQml0IGRvd25zaGlmdHMgKGJyb2tlbiBjYWJsZXMpIGFyZSBpZGVudGlmaWVkIGFuZCBwcm9wYWdhdGVkIHRvIHRoZSBNQUMgY29ycmVjdGx5CiYjNDM7ICogLSBBY2Nlc3MgdG8gTURJT19BTl9FRUVfQURWIGFuZCBNRElPX0FOX0VFRV9MUEFCTEUgd29ya3MgdmlhIEM0NSBvdmVyIEMyMi4KJiM0MzsgKiAtIEl0IGlzIHVuY2xlYXIgaWYgdGhlc2Ugc2VxdWVuY2VzIGNoYW5nZSBmb3IgZGlmZmVyZW50IFBIWXMuCiYjNDM7ICogLSBBY2Nlc3MgdG8gUmVhbHRlayByZXNlcnZlZCByZWdpc3RlciAyNiAobGluayBzcGVlZCkgaGFzIG5vdCB5ZXQgYmVlbiBzZWVuLgomIzQzOyAqCiYjNDM7ICogSG93IGRvZXMgTURJTyBhY2Nlc3MgZnJvbSBrZXJuZWwgd29yaz8KJiM0MzsgKgomIzQzOyAqIFdoZW4gaXNzdWluZyBNRElPIGFjY2Vzc2VzIHZpYSBhbiBNTUlPIGJhc2VkIGludGVyZmFjZSB0aGUgZmluYWwgd3JpdGUgdG8gdGhlIGNvbW1hbmQgcmVnaXN0ZXIKJiM0MzsgKiBzZXRzIGEgJiMzNDtydW4gY29tbWFuZCBub3cmIzM0OyBiaXQuIEJldHdlZW4gdHdvIHBvbGxpbmcgc2VxdWVuY2VzIGZvciBkaWZmZXJlbnQgUEhZcyB0aGUgaGFyZHdhcmUKJiM0MzsgKiBjaGVja3MgaWYgYSB1c2VyIGNvbW1hbmQgbmVlZHMgdG8gcnVuIGFuZCBzZW5kcyBpdCBvbnRvIHRoZSBidXMuIEFmdGVyd2FyZHMgaXQgc2ltcGx5IGNvbnRpbnVlcwomIzQzOyAqIGl0cyBwb2xsaW5nIHdvcmsuIEluc3BlY3RpbmcgdGhlIGNvbW1hbmQgc2VxdWVuY2UgZm9yIGEgcGFnZWQgd3JpdGUgb24gdGhlIGxvZ2ljIGFuYWx5emVyIGdpdmVzOgomIzQzOyAqCiYjNDM7ICoJUlRMODM4MAkJCQlSVEw4MzkzCiYjNDM7ICoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyAqCXBoeV93cml0ZShwaHksIDMxLCBwYWdlKTsJcGh5X3dyaXRlKHBoeSwgMzEsIHBhZ2UpOwomIzQzOyAqCXBoeV93cml0ZShwaHksIHJlZywgdmFsdWUpOwlwaHlfd3JpdGUocGh5LCByZWcsIHZhbHVlKTsKJiM0MzsgKgkJCQkJcGh5X3dyaXRlKHBoeSwgMzEsIDApOwomIzQzOyAqCiYjNDM7ICogV2hhdCBkb2VzIHRoaXMgbWVhbj8KJiM0MzsgKgomIzQzOyAqIFRoZXJlIGFyZSBzbGlnaHQgZGlmZmVyZW5jZXMgaW4gcG9sbGluZyBhbmQgUEhZIGFjY2VzcyBiZXR3ZWVuIHRoZSBtb2RlbHMgYnV0IHRoZSBjaGFsbGVuZ2UKJiM0MzsgKiBzdGF5cyB0aGUgc2FtZS4gT24gdGhlIG9uZSBoYW5kIHRoYXQgZ3JlYXRseSBzaW1wbGlmaWVzIHRoZSBNQUMgbGF5ZXIsIG9uIHRoZSBvdGhlciBoYW5kIGl0CiYjNDM7ICogaGFzIHNvbWUgaW1wbGljYXRpb25zIGZvciB0aGUga2VybmVsIFBIWSBzdWJzeXN0ZW0uCiYjNDM7ICoKJiM0MzsgKiAtIFdpdGhvdXQgdGhlIHBvbGxpbmcgYW5kIGEgcHJvcGVyIE1BQyBzdGF0dXMsIHNvbWUgb2YgdGhlIGxpbmsgaGFuZGxpbmcgZmVhdHVyZXMgZG8gbm90IHdvcmsuCiYjNDM7ICogICBFc3BlY2lhbGx5IGFuIHVucG9wdWxhdGVkIE1BQ19MSU5LX1NUUyByZWdpc3RlciBjYW5jZWxzIG9wZXJhdGlvbnMgdG8gb3RoZXIgTUFDIHJlZ2lzdGVycy4KJiM0MzsgKiAtIFRoZSBSZWFsdGVrIHBhZ2UgcmVnaXN0ZXIgMzEgaXMgbWFnaWNhbGx5IG1vZGlmaWVkIGluIHRoZSBiYWNrZ3JvdW5kIHNvIHRoYXQgcG9sbGluZyB3aWxsCiYjNDM7ICogICByZWFkIHRoZSByaWdodCBkYXRhLiBPbiB0aGUgUlRMODM4eCBwb2xsaW5nIHNpbXBseSByZXNldHMgaXQgdG8gemVyby4gT3RoZXIgZGV2aWNlcyBzZWVtCiYjNDM7ICogICB0byB0cmFjayB0aGUgcGFnZSBhY2Nlc3MgJiMzNDttYWdpY2FsbHkmIzM0OyBpbiB0aGUgYmFja2dyb3VuZC4KJiM0MzsgKiAtIEEgQzQ1IG92ZXIgQzIyIGtlcm5lbCBhY2Nlc3Mgc2VxdWVuY2UgaXMgbW9zdCBsaWtlbHkgdG8gZmFpbCBiZWNhdXNlIGNoYW5jZXMgYXJlIGhpZ2ggdGhhdAomIzQzOyAqICAgdGhlIHBvbGxpbmcgZW5naW5lIG92ZXJ3cml0ZXMgcmVnaXN0ZXJzIDEzLzE0IGluIGJldHdlZW4uCiYjNDM7ICogLSBQSFkgZmlybXdhcmUgbG9hZGluZyBjYW4gaGF2ZSBpc3N1ZXMuIEVzcGVjaWFsbHkgaWYgYSBQSFkgaXMgZGVzaWduZWQgdG8gZXhwZWN0IGEgY2xlYW4KJiM0MzsgKiAgIHNlcXVlbmNlIG9mIHJlZ2lzdGVycyBhbmQgdmFsdWVzIHdpdGhvdXQgZGV2aWF0aW9uLgomIzQzOyAqIC0gQW4gYWNjZXNzIHRvIG9uZSBQSFkgd2lsbCBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IGZyZWUgc2xvdCBvZiB0aGUgcG9sbGluZyBlbmdpbmUuCiYjNDM7ICoKJiM0MzsgKiBDb25jbHVzaW9uOiBUaGUgUmVhbHRlayBNRElPIGJ1cyBkcml2ZXIgUEhZIGFjY2VzcyBtdXN0IGtub3cgYW5kIGhhbmRsZSBhbnkgaW50ZXJmZXJlbmNlIHRoYXQKJiM0MzsgKiBhcmlzZXMgZnJvbSB0aGUgYWJvdmUgZGVzY3JpYmVkIGhhcmR3YXJlIHBvbGxpbmcuCiAgKi8KIAogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdGZpZWxkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYml0bWFwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYml0cy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9maW5kLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKQEAgLTUwLDYgJiM0MzsxMjYsNTAgQEAKICNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZ21hcC5oJmd0OwogCiYjNDM7I2RlZmluZSBSVEw4MzgwX05VTV9CVVNFUwkJCTEKJiM0MzsjZGVmaW5lIFJUTDgzODBfTlVNX1BBR0VTCQkJNDA5NgomIzQzOyNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFMJCQkyOAomIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkwJCQkweGExMDAKJiM0MzsjZGVmaW5lICAgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkUJCUJJVCgxNSkKJiM0MzsjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wCQkweGExYjgKJiM0MzsjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xCQkweGExYmMKJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUgkJR0VOTUFTSygyNCwgMjApCiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfUEFSS19QQUdFCQlHRU5NQVNLKDE5LCAxNSkKJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UJCUdFTk1BU0soMTQsIDMpCiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfV1JJVEUJCUJJVCgyKQomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1JFQUQJCQkwCiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUJCUJJVCgxKQomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyCQkwCiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfRkFJTAkJCTAgLyogbm8gZmFpbCBpbmRpY2F0b3IgKi8KJiM0MzsjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8yCQkweGExYzAKJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEJCUdFTk1BU0soMzEsIDE2KQomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEJCQlHRU5NQVNLKDE1LCAwKQomIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzMJCTB4YTFjNAomIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfUE9MTF9DVFJMCQkJMHhhMTdjCiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTAkJMHhhMWM4CiYjNDM7CiYjNDM7I2RlZmluZSBSVEw4MzkwX05VTV9CVVNFUwkJCTIKJiM0MzsjZGVmaW5lIFJUTDgzOTBfTlVNX1BBR0VTCQkJODE5MgomIzQzOyNkZWZpbmUgUlRMODM5MF9OVU1fUE9SVFMJCQk1MgomIzQzOyNkZWZpbmUgUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMCQkweDAzZWMKJiM0MzsjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX0FDQ0VTU19DVFJMCQkweDAzZGMKJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUgkJR0VOTUFTSyg5LCA1KQomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRQkJR0VOTUFTSygyMiwgMTApCiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfRkFJTAkJCUJJVCgxKQomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1dSSVRFCQlCSVQoMykKJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9SRUFECQkJMAomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1CQlCSVQoMikKJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMgkJMAomIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfQ1RSTAkJCTB4MDNlMAomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0VYVF9QQUdFCQlHRU5NQVNLKDgsIDApCiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19EQVRBX0NUUkwJCTB4MDNmMAomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0lOREFUQQkJR0VOTUFTSygzMSwgMTYpCiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfREFUQQkJCUdFTk1BU0soMTUsIDApCiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTAkJCTB4MDNmNAomIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPVwkJMHgwM2U0CiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSAkJMHgwM2U4CiYjNDM7I2RlZmluZSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTAkJMHgwM2ZjCiYjNDM7CiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTCQkJNAogI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFMJCQkyOApAQCAtNzAsNiAmIzQzOzE5MCw3IEBACiAjZGVmaW5lICAgUlRMOTMwMF9QSFlfQ1RSTF9JTkRBVEEJCUdFTk1BU0soMzEsIDE2KQogI2RlZmluZSAgIFJUTDkzMDBfUEhZX0NUUkxfREFUQQkJCUdFTk1BU0soMTUsIDApCiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zCQkweGNiN2MKJiM0MzsjZGVmaW5lIFJUTDkzMDBfU01JX1BPTExfQ1RSTAkJCTB4Y2E5MAogI2RlZmluZSBSVEw5MzAwX1NNSV9QT1JUMF81X0FERFJfQ1RSTAkJMHhjYjgwCiAKICNkZWZpbmUgUlRMOTMxMF9OVU1fQlVTRVMJCQk0CkBAIC05NSwxMiAmIzQzOzIxNiwxNiBAQAogI2RlZmluZSAgIFJUTDkzMTBfUEhZX0NUUkxfSU5EQVRBCQlHRU5NQVNLKDE1LCAwKQogI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfTU1EX0NUUkwJMHgwYzE4CiAjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfQUREUl9DVFJMCQkweDBjNzQKJiM0MzsjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMCQkweDBjY2MKICNkZWZpbmUgUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTAkJMHgwYzljCiAKICNkZWZpbmUgUEhZX0NUUkxfQ01ECQkJCUJJVCgwKQogI2RlZmluZSBQSFlfQ1RSTF9NTURfREVWQUQJCQlHRU5NQVNLKDIwLCAxNikKICNkZWZpbmUgUEhZX0NUUkxfTU1EX1JFRwkJCUdFTk1BU0soMTUsIDApCiAKJiM0MzsjZGVmaW5lIFJUTF9WRU5ET1JfSUQJCQkJMHgwMDFjYzgwMAomIzQzOyNkZWZpbmUgUlRMX1BBR0VfU0VMRUNUCQkJCTMxCiYjNDM7CiAjZGVmaW5lIE1BUF9BRERSU19QRVJfUkVHCQkJNgogI2RlZmluZSBNQVBfQklUU19QRVJfQUREUgkJCTUKICNkZWZpbmUgTUFQX0JJVFNfUEVSX0JVUwkJCTIKQEAgLTEyNiw2ICYjNDM7MjUxLDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7CiAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwogCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqLwogCURFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpOwomIzQzOwl1MTYgcGFnZVtNQVhfUE9SVFNdOwogCXU4IHNtaV9idXNbTUFYX1BPUlRTXTsKIAl1OCBzbWlfYWRkcltNQVhfUE9SVFNdOwogCWJvb2wgc21pX2J1c19pc19jNDVbTUFYX1NNSV9CVVNTRVNdOwpAQCAtMTQyLDYgJiM0MzsyNjgsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHsKIAl1OCBudW1fYnVzZXM7CiAJdTggbnVtX3BvcnRzOwogCXUxNiBudW1fcGFnZXM7CiYjNDM7CXUzMiBwb2xsX2N0cmw7CiAJaW50ICgqc2V0dXBfY29udHJvbGxlcikoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdik7CiAJaW50ICgqcmVhZF9jMjIpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTsKIAlpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7CkBAIC0xNzcsNiAmIzQzOzMwNCwxMiBAQCBzdGF0aWMgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqb3R0b19lbWRpb19idXNfdG9fcHJpdihzdHJ1Y3QgbWlpX2J1cyAqYnVzKQogCXJldHVybiBjaGFuLSZndDtwcml2OwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgYWN0aXZlKQomIzQzO3sKJiM0MzsJcmV0dXJuIHJlZ21hcF9hc3NpZ25fYml0cyhwcml2LSZndDtyZWdtYXAsIHByaXYtJmd0O2luZm8tJmd0O3BvbGxfY3RybCAmIzQzOyAocG9ydCAvIDMyKSAqIDQsCiYjNDM7CQkJCSAgQklUKHBvcnQgJSAzMiksIGFjdGl2ZSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCwKIAkJCSAgICAgIHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSkKIHsKQEAgLTE4NSw5ICYjNDM7MzE4LDkgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCwKIAl1MzIgY21kc3RhdGU7CiAJaW50IHJldDsKIAotCS8qIERlZmVuc2l2ZSBwcmUgY2hlY2sganVzdCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIGhvcnJpYmxlIHdyb25nICovCiYjNDM7CS8qIERlZmVuc2l2ZSBwcmUgY2hlY2sganVzdCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIGhvcnJpYmx5IHdyb25nICovCiAJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgaW5mby0mZ3Q7Y21kX3JlZ3MuYzIyX2RhdGEsCi0JCQkJICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlICZhbXA7IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwKTsKJiM0MzsJCQkJICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlICZhbXA7IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwMCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMjI3LDcgJiM0MzszNjAsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLAogCQlyZXR1cm4gcmV0OwogCiAJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgaW5mby0mZ3Q7Y21kX3JlZ3MuYzIyX2RhdGEsCi0JCQkJICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlICZhbXA7IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwKTsKJiM0MzsJCQkJICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlICZhbXA7IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwMCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMjY0LDEzICYjNDM7Mzk3LDEyMyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsCiAJcmV0dXJuIG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtJmd0O2luZm8tJmd0O2NtZF93cml0ZSwgY21kX2RhdGEpOwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1BBUktfUEFHRSwgMHgxZikgfAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtJmd0O3BhZ2VbcG9ydF0pLAomIzQzOwkJLmlvX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCAmYW1wO2NtZF9kYXRhLAomIzQzOwkJCQkgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1BBUktfUEFHRSwgMHgxZikgfAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtJmd0O3BhZ2VbcG9ydF0pLAomIzQzOwkJLmlvX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksCiYjNDM7CQkucG9ydF9tYXNrX2xvdwk9IEJJVChwb3J0KSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgJmFtcDtjbWRfZGF0YSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LAomIzQzOwkJCQkgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKQomIzQzO3sKJiM0MzsJc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7CiYjNDM7CQkuYzQ1X2RhdGEJPSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHwKJiM0MzsJCQkJICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksCiYjNDM7CQkuaW9fZGF0YQk9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLAomIzQzOwl9OwomIzQzOwomIzQzOwlyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsICZhbXA7Y21kX2RhdGEsCiYjNDM7CQkJCSAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsCiYjNDM7CQkJCSAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jNDVfZGF0YQk9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSwKJiM0MzsJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLAomIzQzOwkJLnBvcnRfbWFza19sb3cJPSBCSVQocG9ydCksCiYjNDM7CX07CiYjNDM7CiYjNDM7CXJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsICZhbXA7Y21kX2RhdGEpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0gewomIzQzOwkJLmMyMl9kYXRhCT0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHwKJiM0MzsJCQkJICBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LSZndDtwYWdlW3BvcnRdKSwKJiM0MzsJCS5leHRfcGFnZQk9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLAomIzQzOwkJLmlvX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCAmYW1wO2NtZF9kYXRhLAomIzQzOwkJCQkgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi0mZ3Q7cGFnZVtwb3J0XSksCiYjNDM7CQkuZXh0X3BhZ2UJPSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0UsIDB4MWZmKSwKJiM0MzsJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLAomIzQzOwkJLnBvcnRfbWFza19oaWdoCT0gKHUzMikoQklUX1VMTChwb3J0KSAmZ3Q7Jmd0OyAzMiksCiYjNDM7CQkucG9ydF9tYXNrX2xvdwk9ICh1MzIpKEJJVF9VTEwocG9ydCkpLAomIzQzOwl9OwomIzQzOwomIzQzOwlyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCAmYW1wO2NtZF9kYXRhKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsCiYjNDM7CQkJCSAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jNDVfZGF0YQk9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSwKJiM0MzsJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksCiYjNDM7CX07CiYjNDM7CiYjNDM7CXJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgJmFtcDtjbWRfZGF0YSwKJiM0MzsJCQkJICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwKJiM0MzsJCQkJICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0gewomIzQzOwkJLmM0NV9kYXRhCT0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8CiYjNDM7CQkJCSAgRklFTERfUFJFUChQSFlfQ1RSTF9NTURfUkVHLCByZWdudW0pLAomIzQzOwkJLmlvX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksCiYjNDM7CQkucG9ydF9tYXNrX2hpZ2gJPSAodTMyKShCSVRfVUxMKHBvcnQpICZndDsmZ3Q7IDMyKSwKJiM0MzsJCS5wb3J0X21hc2tfbG93CT0gKHUzMikoQklUX1VMTChwb3J0KSksCiYjNDM7CX07CiYjNDM7CiYjNDM7CXJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DNDUsICZhbXA7Y21kX2RhdGEpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKQogewogCXN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7CiAJc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7CiAJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiAJCQkJICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8Ci0JCQkJICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksCiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi0mZ3Q7cGFnZVtwb3J0XSksCiAJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksCiAJfTsKIApAQCAtMjg0LDcgJiM0Mzs1MjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sCiAJc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7CiAJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiAJCQkJICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8Ci0JCQkJICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksCiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi0mZ3Q7cGFnZVtwb3J0XSksCiAJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLAogCQkucG9ydF9tYXNrX2xvdwk9IEJJVChwb3J0KSwKIAl9OwpAQCAtMzI0LDcgJiM0Mzs1NjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdQogCXN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0gewogCQkuYnJvYWRjYXN0CT0gRklFTERfUFJFUChSVEw5MzEwX0JDX1BPUlRfSUQsIHBvcnQpLAogCQkuYzIyX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfAotCQkJCSAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtJmd0O3BhZ2VbcG9ydF0pLAogCX07CiAKIAlyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DMjIsICZhbXA7Y21kX2RhdGEsCkBAIC0zMzYsNyAmIzQzOzU3OSw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwKIAlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwogCXN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0gewogCQkuYzIyX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfAotCQkJCSAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtJmd0O3BhZ2VbcG9ydF0pLAogCQkuaW9fZGF0YQk9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSwKIAkJLnBvcnRfbWFza19oaWdoCT0gKHUzMikoQklUX1VMTChwb3J0KSAmZ3Q7Jmd0OyAzMiksCiAJCS5wb3J0X21hc2tfbG93CT0gKHUzMikoQklUX1VMTChwb3J0KSksCkBAIC0zNzgsMjcgJiM0Mzs2MjEsNTMgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pCiAJaW50IHJldCwgcG9ydDsKIAl1MzIgdmFsdWU7CiAKJiM0MzsJaWYgKHJlZ251bSA9PSBNSUlfTU1EX0NUUkwgfHwgcmVnbnVtID09IE1JSV9NTURfREFUQSkgewomIzQzOwkJZGV2X3dhcm5fb25jZSgmYW1wO2J1cy0mZ3Q7ZGV2LAomIzQzOwkJCSAgICAgICYjMzQ7QzQ1IG92ZXIgQzIyIHJlYWQgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwl9CiYjNDM7CiAJcG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpOwogCWlmIChwb3J0ICZsdDsgMCkKIAkJcmV0dXJuIHBvcnQ7CiAKLQlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7cHJpdi0mZ3Q7bG9jaykKJiM0MzsJc2NvcGVkX2d1YXJkKG11dGV4LCAmYW1wO3ByaXYtJmd0O2xvY2spIHsKJiM0MzsJCWlmIChyZWdudW0gPT0gUlRMX1BBR0VfU0VMRUNUKQomIzQzOwkJCXJldHVybiBwcml2LSZndDtwYWdlW3BvcnRdOwomIzQzOwogCQlyZXQgPSBwcml2LSZndDtpbmZvLSZndDtyZWFkX2MyMihidXMsIHBvcnQsIHJlZ251bSwgJmFtcDt2YWx1ZSk7CiYjNDM7CX0KIAogCXJldHVybiByZXQgPyByZXQgOiB2YWx1ZTsKIH0KIAotc3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLAomIzQzOwkJCQl1MTYgdmFsdWUpCiB7CiAJc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTsKIAlpbnQgcmV0LCBwb3J0OwogCiYjNDM7CWlmIChyZWdudW0gPT0gTUlJX01NRF9DVFJMIHx8IHJlZ251bSA9PSBNSUlfTU1EX0RBVEEpIHsKJiM0MzsJCWRldl93YXJuX29uY2UoJmFtcDtidXMtJmd0O2RldiwKJiM0MzsJCQkgICAgICAmIzM0O0M0NSBvdmVyIEMyMiB3cml0ZSBhY2Nlc3MgYnJva2VuIGR1ZSB0byBwb2xsaW5nXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKIAlwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7CiAJaWYgKHBvcnQgJmx0OyAwKQogCQlyZXR1cm4gcG9ydDsKIAotCXNjb3BlZF9ndWFyZChtdXRleCwgJmFtcDtwcml2LSZndDtsb2NrKQomIzQzOwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7cHJpdi0mZ3Q7bG9jaykgewomIzQzOwkJaWYgKHJlZ251bSA9PSBSVExfUEFHRV9TRUxFQ1QpIHsKJiM0MzsJCQlpZiAodmFsdWUgJmd0Oz0gUkFXX1BBR0UocHJpdikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwkJCXByaXYtJmd0O3BhZ2VbcG9ydF0gPSB2YWx1ZTsKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCX0KJiM0MzsKIAkJcmV0ID0gcHJpdi0mZ3Q7aW5mby0mZ3Q7d3JpdGVfYzIyKGJ1cywgcG9ydCwgcmVnbnVtLCB2YWx1ZSk7CiYjNDM7CX0KIAogCXJldHVybiByZXQ7CiB9CkBAIC00NzEsNiAmIzQzOzc0MCwxNSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CS8qCiYjNDM7CSAqIFBIWV9QQVRDSF9ET05FIGVuYWJsZXMgUEhZIGNvbnRyb2wgdmlhIFNvQy4gVGhpcyBpcyByZXF1aXJlZCBmb3IgUEhZIGFjY2VzcywgaW5jbHVkaW5nCiYjNDM7CSAqIHBhdGNoaW5nIGFuZCBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIFBIWXMgYXJlIHByb2JlZC4KJiM0MzsJICovCiYjNDM7CXJldHVybiByZWdtYXBfc2V0X2JpdHMocHJpdi0mZ3Q7cmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCwgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkUpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIHsKIAl1MzIgZ2xiX2N0cmxfbWFzayA9IDAsIGdsYl9jdHJsX3ZhbCA9IDA7CkBAIC01MDcsNiAmIzQzOzc4NSw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWludCBwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtJmd0O21kaW8uYnVzLCBwaHlkZXYtJmd0O21kaW8uYWRkcik7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtwcml2OwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gY2hhbi0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJaWYgKHBvcnQgJmx0OyAwKSB7CiYjNDM7CQkvKiBBbGwgc3Vic2VxdWVudCBidXMgb3BlcmF0aW9ucyB3aWxsIGZhaWwgKi8KJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O1BIWSBpcyBub3QgbWFwcGVkIHRvIGEgdmFsaWQgc3dpdGNoIHBvcnRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBwb3J0OwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qICYjMzQ7c3luYyYjMzQ7IHBhZ2UgaW4gY2FzZSBvZiBwcmV2aW91c2x5IGZhaWxlZCBhdHRhY2htZW50ICovCiYjNDM7CXNjb3BlZF9ndWFyZChtdXRleCwgJmFtcDtwcml2LSZndDtsb2NrKQomIzQzOwkJcHJpdi0mZ3Q7cGFnZVtwb3J0XSA9IDA7CiYjNDM7CiYjNDM7CWlmICghcHJpdi0mZ3Q7c21pX2J1c19pc19jNDVbY2hhbi0mZ3Q7bWRpb19idXNdICZhbXA7JmFtcDsKJiM0MzsJICAgICFwaHlfaWRfY29tcGFyZV92ZW5kb3IocGh5ZGV2LSZndDtwaHlfaWQsIFJUTF9WRU5ET1JfSUQpKSB7CiYjNDM7CQlwaHlkZXZfZXJyKHBoeWRldiwgJiMzNDtPbmx5IFJlYWx0ZWsgUEhZcyBhbGxvd2VkIG9uIEMyMiBidXNcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIHRydWUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LSZndDttZGlvLmJ1czsKJiM0MzsJc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjsKJiM0MzsJaW50IHBvcnQ7CiYjNDM7CiYjNDM7CXByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KHBoeWRldi0mZ3Q7bWRpby5idXMpOwomIzQzOwlwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtJmd0O21kaW8uYnVzLCBwaHlkZXYtJmd0O21kaW8uYWRkcik7CiYjNDM7CiYjNDM7CWlmIChwb3J0ICZsdDsgMCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJLyogJiMzNDtzeW5jJiMzNDsgcGFnZSBmb3IgbmV4dCBhdHRhY2htZW50ICovCiYjNDM7CXNjb3BlZF9ndWFyZChtdXRleCwgJmFtcDtwcml2LSZndDtsb2NrKQomIzQzOwkJcHJpdi0mZ3Q7cGFnZVtwb3J0XSA9IDA7CiYjNDM7CiYjNDM7CWlmIChvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgZmFsc2UpKQomIzQzOwkJZGV2X2VycihidXMtJmd0O3BhcmVudCwgJiMzNDtmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXG4mIzM0OywgcG9ydCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsCiAJCQkJIHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKQogewpAQCAtNTI4LDE0ICYjNDM7ODUxLDE0IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2CiAJCXJldHVybiAtRU5PTUVNOwogCiAJYnVzLSZndDtuYW1lID0gJiMzNDtSZWFsdGVrIFN3aXRjaCBNRElPIEJ1cyYjMzQ7OwotCWlmIChwcml2LSZndDtzbWlfYnVzX2lzX2M0NVttZGlvX2J1c10pIHsKLQkJYnVzLSZndDtyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7Ci0JCWJ1cy0mZ3Q7d3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7Ci0JfSBlbHNlIHsKLQkJYnVzLSZndDtyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjsKLQkJYnVzLSZndDt3cml0ZSA9IG90dG9fZW1kaW9fd3JpdGVfYzIyOwotCX0KJiM0MzsJYnVzLSZndDtyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7CiYjNDM7CWJ1cy0mZ3Q7d3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7CiYjNDM7CWJ1cy0mZ3Q7cmVhZCA9IG90dG9fZW1kaW9fcmVhZF9jMjI7CiYjNDM7CWJ1cy0mZ3Q7d3JpdGUgPSBvdHRvX2VtZGlvX3dyaXRlX2MyMjsKIAlidXMtJmd0O3BhcmVudCA9IGRldjsKJiM0MzsJYnVzLSZndDtub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7CiYjNDM7CWJ1cy0mZ3Q7bm90aWZ5X3BoeV9kZXRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoOwomIzQzOwogCWNoYW4gPSBidXMtJmd0O3ByaXY7CiAJY2hhbi0mZ3Q7bWRpb19idXMgPSBtZGlvX2J1czsKIAljaGFuLSZndDtwcml2ID0gcHJpdjsKQEAgLTY1Miw2ICYjNDM7OTc1LDE5IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19tYXBfcG9ydHMoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBlcnI7CiB9CiAKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlmb3IgKGludCBwb3J0ID0gMDsgcG9ydCAmbHQ7IHByaXYtJmd0O2luZm8tJmd0O251bV9wb3J0czsgcG9ydCYjNDM7JiM0MzspIHsKJiM0MzsJCWVyciA9IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CkBAIC02NzEsNiAmIzQzOzEwMDcsMTAgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKElTX0VSUihwcml2LSZndDtyZWdtYXApKQogCQlyZXR1cm4gUFRSX0VSUihwcml2LSZndDtyZWdtYXApOwogCiYjNDM7CWVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTsKIAogCWVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7CkBAIC02OTYsNiAmIzQzOzEwMzYsNTEgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHsKJiM0MzsJLmFkZHJfbWFwX2Jhc2UgPSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCwKJiM0MzsJLmNtZF9mYWlsID0gUlRMODM4MF9QSFlfQ1RSTF9GQUlMLAomIzQzOwkuY21kX3JlYWQgPSBSVEw4MzgwX1BIWV9DVFJMX1JFQUQsCiYjNDM7CS5jbWRfd3JpdGUgPSBSVEw4MzgwX1BIWV9DVFJMX1dSSVRFLAomIzQzOwkuY21kX3JlZ3MgPSB7CiYjNDM7CQkuYzIyX2RhdGEgPSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMSwKJiM0MzsJCS5jNDVfZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zLAomIzQzOwkJLmlvX2RhdGEgPSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMiwKJiM0MzsJCS5wb3J0X21hc2tfbG93ID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzAsCiYjNDM7CX0sCiYjNDM7CS5udW1fYnVzZXMgPSBSVEw4MzgwX05VTV9CVVNFUywKJiM0MzsJLm51bV9wYWdlcyA9IFJUTDgzODBfTlVNX1BBR0VTLAomIzQzOwkubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsCiYjNDM7CS5wb2xsX2N0cmwgPSBSVEw4MzgwX1NNSV9QT0xMX0NUUkwsCiYjNDM7CS5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsCiYjNDM7CS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMiwKJiM0MzsJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1LAomIzQzOwkud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMiwKJiM0MzsJLndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzOTBfaW5mbyA9IHsKJiM0MzsJLmNtZF9mYWlsID0gUlRMODM5MF9QSFlfQ1RSTF9GQUlMLAomIzQzOwkuY21kX3JlYWQgPSBSVEw4MzkwX1BIWV9DVFJMX1JFQUQsCiYjNDM7CS5jbWRfd3JpdGUgPSBSVEw4MzkwX1BIWV9DVFJMX1dSSVRFLAomIzQzOwkuY21kX3JlZ3MgPSB7CiYjNDM7CQkuYnJvYWRjYXN0ID0gUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMLAomIzQzOwkJLmMyMl9kYXRhID0gUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkwsCiYjNDM7CQkuYzQ1X2RhdGEgPSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTCwKJiM0MzsJCS5leHRfcGFnZSA9IFJUTDgzOTBfUEhZUkVHX0NUUkwsCiYjNDM7CQkuaW9fZGF0YSA9IFJUTDgzOTBfUEhZUkVHX0RBVEFfQ1RSTCwKJiM0MzsJCS5wb3J0X21hc2tfbG93ID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPVywKJiM0MzsJCS5wb3J0X21hc2tfaGlnaCA9IFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdILAomIzQzOwl9LAomIzQzOwkubnVtX2J1c2VzID0gUlRMODM5MF9OVU1fQlVTRVMsCiYjNDM7CS5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUywKJiM0MzsJLm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLAomIzQzOwkucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsCiYjNDM7CS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMiwKJiM0MzsJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1LAomIzQzOwkud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMiwKJiM0MzsJLndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0gewogCS5hZGRyX21hcF9iYXNlID0gUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsCiAJLmJ1c19tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMLApAQCAtNzExLDYgJiM0MzsxMDk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7CiAJLm51bV9idXNlcyA9IFJUTDkzMDBfTlVNX0JVU0VTLAogCS5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUywKIAkubnVtX3BhZ2VzID0gUlRMOTMwMF9OVU1fUEFHRVMsCiYjNDM7CS5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsCiAJLnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlciwKIAkucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsCiAJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LApAQCAtNzM2LDYgJiM0MzsxMTIyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7CiAJLm51bV9idXNlcyA9IFJUTDkzMTBfTlVNX0JVU0VTLAogCS5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUywKIAkubnVtX3BvcnRzID0gUlRMOTMxMF9OVU1fUE9SVFMsCiYjNDM7CS5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCwKIAkuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLAogCS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMiwKIAkucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsCkBAIC03NDQsNiAmIzQzOzExMzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHsKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG90dG9fZW1kaW9faWRzW10gPSB7CiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3JlYWx0ZWsscnRsODM4MC1tZGlvJiMzNDssIC5kYXRhID0gJmFtcDtvdHRvX2VtZGlvXzgzODBfaW5mbyB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtyZWFsdGVrLHJ0bDgzOTEtbWRpbyYjMzQ7LCAuZGF0YSA9ICZhbXA7b3R0b19lbWRpb184MzkwX2luZm8gfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDtyZWFsdGVrLHJ0bDkzMDEtbWRpbyYjMzQ7LCAuZGF0YSA9ICZhbXA7b3R0b19lbWRpb185MzAwX2luZm8gfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDtyZWFsdGVrLHJ0bDkzMTEtbWRpbyYjMzQ7LCAuZGF0YSA9ICZhbXA7b3R0b19lbWRpb185MzEwX2luZm8gfSwKIAl7fQpAQCAtNzU1LDEwICYjNDM7MTE0NCwxMSBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvdHRvX2VtZGlvX2RyaXZlciA9IHsKIAkuZHJpdmVyID0gewogCQkubmFtZSA9ICYjMzQ7bWRpby1ydGw5MzAwJiMzNDssCiAJCS5vZl9tYXRjaF90YWJsZSA9IG90dG9fZW1kaW9faWRzLAomIzQzOwkJLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLAogCX0sCiB9OwogCiBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTsKIAotTU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7UlRMOTMwMCBNRElPIGRyaXZlciYjMzQ7KTsKJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtSVEw4M3h4L1JUTDkzeHggTURJTyBkcml2ZXImIzM0Oyk7CiBNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLmRlNTlkODY0YjA2MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTczNCw2ICYjNDM7MTczNCwxMDQgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydikKIAlyZXR1cm4gcGh5ZHJ2LSZndDtjb25maWdfaW50ciAmYW1wOyZhbXA7IHBoeWRydi0mZ3Q7aGFuZGxlX2ludGVycnVwdDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHBoeV9kZXRhY2hfaW50ZXJuYWwgLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlCiYjNDM7ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0CiYjNDM7ICogQG5vdGlmeV9idXM6IHdoZXRoZXIgdG8gbm90aWZ5IHRoZSBNRElPIGJ1cyBhYm91dCB0aGUgUEhZIGRldGFjaAomIzQzOyAqCiYjNDM7ICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeQomIzQzOyAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfZGV0YWNoX2ludGVybmFsKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgbm90aWZ5X2J1cykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtJmd0O2F0dGFjaGVkX2RldjsKJiM0MzsJc3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7CiYjNDM7CXN0cnVjdCBtaWlfYnVzICpidXM7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2RldmxpbmspIHsKJiM0MzsJCWRldmljZV9saW5rX2RlbChwaHlkZXYtJmd0O2RldmxpbmspOwomIzQzOwkJcGh5ZGV2LSZndDtkZXZsaW5rID0gTlVMTDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDtzeXNmc19saW5rcykgewomIzQzOwkJaWYgKGRldikKJiM0MzsJCQlzeXNmc19yZW1vdmVfbGluaygmYW1wO2Rldi0mZ3Q7ZGV2LmtvYmosICYjMzQ7cGh5ZGV2JiMzNDspOwomIzQzOwkJc3lzZnNfcmVtb3ZlX2xpbmsoJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2LmtvYmosICYjMzQ7YXR0YWNoZWRfZGV2JiMzNDspOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghcGh5ZGV2LSZndDthdHRhY2hlZF9kZXYpCiYjNDM7CQlzeXNmc19yZW1vdmVfZmlsZSgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYua29iaiwKJiM0MzsJCQkJICAmYW1wO2Rldl9hdHRyX3BoeV9zdGFuZGFsb25lLmF0dHIpOwomIzQzOwomIzQzOwlwaHlfc3VzcGVuZChwaHlkZXYpOwomIzQzOwomIzQzOwlpZiAobm90aWZ5X2J1cyAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O25vdGlmeV9waHlfZGV0YWNoKQomIzQzOwkJcGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7bm90aWZ5X3BoeV9kZXRhY2gocGh5ZGV2KTsKJiM0MzsKJiM0MzsJaWYgKGRldikgewomIzQzOwkJc3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7CiYjNDM7CiYjNDM7CQkvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXQKJiM0MzsJCSAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkKJiM0MzsJCSAqLwomIzQzOwkJaHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O2h3cHJvdik7CiYjNDM7CQkvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovCiYjNDM7CQlpZiAoaHdwcm92ICZhbXA7JmFtcDsgaHdwcm92LSZndDtwaHlkZXYgPT0gcGh5ZGV2KSB7CiYjNDM7CQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7aHdwcm92LCBOVUxMKTsKJiM0MzsJCQlrZnJlZV9yY3UoaHdwcm92LCByY3VfaGVhZCk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlwaHlkZXYtJmd0O2F0dGFjaGVkX2Rldi0mZ3Q7cGh5ZGV2ID0gTlVMTDsKJiM0MzsJCXBoeWRldi0mZ3Q7YXR0YWNoZWRfZGV2ID0gTlVMTDsKJiM0MzsJCXBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcGh5ZGV2LSZndDtwaHlfbGlua19jaGFuZ2UgPSBOVUxMOwomIzQzOwlwaHlkZXYtJmd0O3BoeWxpbmsgPSBOVUxMOwomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDttZGlvLmRldi5kcml2ZXIpCiYjNDM7CQltb2R1bGVfcHV0KHBoeWRldi0mZ3Q7bWRpby5kZXYuZHJpdmVyLSZndDtvd25lcik7CiYjNDM7CiYjNDM7CS8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdAomIzQzOwkgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2UKJiM0MzsJICogZnJvbSB0aGUgZ2VuZXJpYyBkcml2ZXIgc28gdGhhdCB0aGVyZSYjMzk7cyBhIGNoYW5jZSBhCiYjNDM7CSAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZAomIzQzOwkgKi8KJiM0MzsJaWYgKHBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbikgewomIzQzOwkJZGV2aWNlX3JlbGVhc2VfZHJpdmVyKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldik7CiYjNDM7CQlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovCiYjNDM7CXBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogVGhlIHBoeWRldiBtaWdodCBnbyBhd2F5IG9uIHRoZSBwdXRfZGV2aWNlKCkgYmVsb3csIHNvIGF2b2lkCiYjNDM7CSAqIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHJlYWRpbmcgdGhlIHVuZGVybHlpbmcgYnVzIGZpcnN0LgomIzQzOwkgKi8KJiM0MzsJYnVzID0gcGh5ZGV2LSZndDttZGlvLmJ1czsKJiM0MzsKJiM0MzsJcHV0X2RldmljZSgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwomIzQzOwlpZiAoZGV2KQomIzQzOwkJbmRldl9vd25lciA9IGRldi0mZ3Q7ZGV2LnBhcmVudC0mZ3Q7ZHJpdmVyLSZndDtvd25lcjsKJiM0MzsJaWYgKG5kZXZfb3duZXIgIT0gYnVzLSZndDtvd25lcikKJiM0MzsJCW1vZHVsZV9wdXQoYnVzLSZndDtvd25lcik7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlCiYjNDM7ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0CiYjNDM7ICoKJiM0MzsgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5CiYjNDM7ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLgomIzQzOyAqLwomIzQzO3ZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJLyogY2xlYW51cCBpbmNsdWRpbmcgYnVzIG5vdGlmaWNhdGlvbiAqLwomIzQzOwlwaHlfZGV0YWNoX2ludGVybmFsKHBoeWRldiwgdHJ1ZSk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0wocGh5X2RldGFjaCk7CiYjNDM7CiAvKioKICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXIKICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaApAQCAtMTg3Niw2ICYjNDM7MTk3NCwxMiBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAlpZiAoZXJyKQogCQlnb3RvIGVycm9yOwogCiYjNDM7CWlmIChwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtub3RpZnlfcGh5X2F0dGFjaCkgewomIzQzOwkJZXJyID0gcGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7bm90aWZ5X3BoeV9hdHRhY2gocGh5ZGV2KTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJZ290byBlcnJvcjsKJiM0MzsJfQomIzQzOwogCXBoeV9yZXN1bWUocGh5ZGV2KTsKIAogCS8qKgpAQCAtMTg5MCw4ICYjNDM7MTk5NCw4IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCXJldHVybiBlcnI7CiAKIGVycm9yOgotCS8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqLwotCXBoeV9kZXRhY2gocGh5ZGV2KTsKJiM0MzsJLyogcGh5X2RldGFjaF9pbnRlcm5hbCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovCiYjNDM7CXBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCBmYWxzZSk7CiAJcmV0dXJuIGVycjsKIAogZXJyb3JfbW9kdWxlX3B1dDoKQEAgLTE5MDYsODYgJiM0MzsyMDEwLDYgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiB9CiBFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTsKIAotLyoqCi0gKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZQotICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0Ci0gKgotICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeQotICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLgotICovCi12b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKLXsKLQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcGh5ZGV2LSZndDthdHRhY2hlZF9kZXY7Ci0Jc3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7Ci0Jc3RydWN0IG1paV9idXMgKmJ1czsKLQotCWlmIChwaHlkZXYtJmd0O2RldmxpbmspIHsKLQkJZGV2aWNlX2xpbmtfZGVsKHBoeWRldi0mZ3Q7ZGV2bGluayk7Ci0JCXBoeWRldi0mZ3Q7ZGV2bGluayA9IE5VTEw7Ci0JfQotCi0JaWYgKHBoeWRldi0mZ3Q7c3lzZnNfbGlua3MpIHsKLQkJaWYgKGRldikKLQkJCXN5c2ZzX3JlbW92ZV9saW5rKCZhbXA7ZGV2LSZndDtkZXYua29iaiwgJiMzNDtwaHlkZXYmIzM0Oyk7Ci0JCXN5c2ZzX3JlbW92ZV9saW5rKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldi5rb2JqLCAmIzM0O2F0dGFjaGVkX2RldiYjMzQ7KTsKLQl9Ci0KLQlpZiAoIXBoeWRldi0mZ3Q7YXR0YWNoZWRfZGV2KQotCQlzeXNmc19yZW1vdmVfZmlsZSgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYua29iaiwKLQkJCQkgICZhbXA7ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7Ci0KLQlwaHlfc3VzcGVuZChwaHlkZXYpOwotCWlmIChkZXYpIHsKLQkJc3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7Ci0KLQkJLyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0Ci0JCSAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkKLQkJICovCi0JCWh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LSZndDtod3Byb3YpOwotCQkvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovCi0JCWlmIChod3Byb3YgJmFtcDsmYW1wOyBod3Byb3YtJmd0O3BoeWRldiA9PSBwaHlkZXYpIHsKLQkJCXJjdV9hc3NpZ25fcG9pbnRlcihkZXYtJmd0O2h3cHJvdiwgTlVMTCk7Ci0JCQlrZnJlZV9yY3UoaHdwcm92LCByY3VfaGVhZCk7Ci0JCX0KLQotCQlwaHlkZXYtJmd0O2F0dGFjaGVkX2Rldi0mZ3Q7cGh5ZGV2ID0gTlVMTDsKLQkJcGh5ZGV2LSZndDthdHRhY2hlZF9kZXYgPSBOVUxMOwotCQlwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpOwotCX0KLQotCXBoeWRldi0mZ3Q7cGh5X2xpbmtfY2hhbmdlID0gTlVMTDsKLQlwaHlkZXYtJmd0O3BoeWxpbmsgPSBOVUxMOwotCi0JaWYgKHBoeWRldi0mZ3Q7bWRpby5kZXYuZHJpdmVyKQotCQltb2R1bGVfcHV0KHBoeWRldi0mZ3Q7bWRpby5kZXYuZHJpdmVyLSZndDtvd25lcik7Ci0KLQkvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXQKLQkgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2UKLQkgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJiMzOTtzIGEgY2hhbmNlIGEKLQkgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWQKLQkgKi8KLQlpZiAocGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuKSB7Ci0JCWRldmljZV9yZWxlYXNlX2RyaXZlcigmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwotCQlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwotCX0KLQotCS8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovCi0JcGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpOwotCi0JLyoKLQkgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWQKLQkgKiBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBieSByZWFkaW5nIHRoZSB1bmRlcmx5aW5nIGJ1cyBmaXJzdC4KLQkgKi8KLQlidXMgPSBwaHlkZXYtJmd0O21kaW8uYnVzOwotCi0JcHV0X2RldmljZSgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwotCWlmIChkZXYpCi0JCW5kZXZfb3duZXIgPSBkZXYtJmd0O2Rldi5wYXJlbnQtJmd0O2RyaXZlci0mZ3Q7b3duZXI7Ci0JaWYgKG5kZXZfb3duZXIgIT0gYnVzLSZndDtvd25lcikKLQkJbW9kdWxlX3B1dChidXMtJmd0O293bmVyKTsKLX0KLUVYUE9SVF9TWU1CT0wocGh5X2RldGFjaCk7Ci0KIGludCBwaHlfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwaHlkZXYtJmd0O2F0dGFjaGVkX2RldjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oCmluZGV4IDVmOGQ2NTg2OGUwZmYuLjNkOGFmZTZiN2YxYzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaApAQCAtMzc2LDYgJiM0MzszNzYsMjQgQEAgc3RydWN0IG1paV9idXMgewogCQkJIGludCByZWdudW0sIHUxNiB2YWwpOwogCS8qKiBAcmVzZXQ6IFBlcmZvcm0gYSByZXNldCBvZiB0aGUgYnVzICovCiAJaW50ICgqcmVzZXQpKHN0cnVjdCBtaWlfYnVzICpidXMpOwomIzQzOwkvKioKJiM0MzsJICogQG5vdGlmeV9waHlfYXR0YWNoOiBQZXJmb3JtIHBvc3QtYXR0YWNoIGhhbmRsaW5nIGZvciBNRElPIGJ1cwomIzQzOwkgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfZGV0YWNoLiBDYWxsZWQKJiM0MzsJICogaW4gcGh5X2F0dGFjaF9kaXJlY3QoKSByaWdodCBiZWZvcmUgcGh5X3Jlc3VtZSgpLiBSdW5zIGluIHByb2Nlc3MKJiM0MzsJICogY29udGV4dCwgbWF5IHNsZWVwIGFuZCBtYXkgYmUgY2FsbGVkIHdpdGggUlROTCBoZWxkLiBNdXN0IG5vdAomIzQzOwkgKiBhY3F1aXJlIG9yIHJlbHkgb24gUlROTC4gUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJybm8KJiM0MzsJICogb24gZmFpbHVyZS4gTXVzdCB1bndpbmQgaXRzIG93biBzdGF0ZSBvbiBlcnJvciBhcyBhdHRhY2htZW50IGlzCiYjNDM7CSAqIGFib3J0ZWQuCiYjNDM7CSAqLwomIzQzOwlpbnQgKCpub3RpZnlfcGh5X2F0dGFjaCkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiYjNDM7CS8qKgomIzQzOwkgKiBAbm90aWZ5X3BoeV9kZXRhY2g6IFBlcmZvcm0gcHJlLWRldGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXMKJiM0MzsJICogZHJpdmVycy4gT3B0aW9uYWwgYW5kIGluZGVwZW5kZW50IG9mIEBub3RpZnlfcGh5X2F0dGFjaC4gQ2FsbGVkCiYjNDM7CSAqIGluIHBoeV9kZXRhY2goKSByaWdodCBhZnRlciBwaHlfc3VzcGVuZCgpLiBSdW5zIGluIHByb2Nlc3MgY29udGV4dCwKJiM0MzsJICogbWF5IHNsZWVwIGFuZCBtYXkgYmUgY2FsbGVkIHdpdGggUlROTCBoZWxkLiBNdXN0IG5vdCBhY3F1aXJlIG9yCiYjNDM7CSAqIHJlbHkgb24gUlROTC4KJiM0MzsJICovCiYjNDM7CXZvaWQgKCpub3RpZnlfcGh5X2RldGFjaCkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiAKIAkvKiogQHN0YXRzOiBTdGF0aXN0aWMgY291bnRlcnMgcGVyIGRldmljZSBvbiB0aGUgYnVzICovCiAJc3RydWN0IG1kaW9fYnVzX3N0YXRzIHN0YXRzW1BIWV9NQVhfQUREUl07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTM3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUEhZIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIHNlcmllcy4gVGhlIGZpbGVzIGltcGFjdGVkIGFyZTogYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbGAsIGBkcml2ZXJzL25ldC9tZGlvL0tjb25maWdgLCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCwgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvcGh5LmhgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb3JlIFBIWSBjb2RlIGNoYW5nZXMsIHNwZWNpZmljYWxseSBpbiBgcGh5X2RldmljZS5jYCBhbmQgYGluY2x1ZGUvbGludXgvcGh5LmhgLgoKSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgaW50cm9kdWNpbmcgY2FsbGJhY2tzLCBgbm90aWZ5X3BoeV9hdHRhY2hgIGFuZCBgbm90aWZ5X3BoeV9kZXRhY2hgLCB0byB0aGUgYHN0cnVjdCBtaWlfYnVzYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgYHBoeV9hdHRhY2hfZGlyZWN0KClgIG5vdyBjYWxscyBgYnVzLSZndDtub3RpZnlfcGh5X2F0dGFjaChwaHlkZXYpYCwgYW5kIGBwaHlfZGV0YWNoKClgIGNhbGxzIGBidXMtJmd0O25vdGlmeV9waHlfZGV0YWNoKHBoeWRldilgIHZpYSB0aGUgbmV3bHkgcmVmYWN0b3JlZCBgcGh5X2RldGFjaF9pbnRlcm5hbCgpYC4gVGhpcyBpcyBhIGNsZWFyIHNpZ25hbCB0aGF0IHRoZXJlJiMzOTtzIGEgbmV3IGludGVyYWN0aW9uIGxheWVyIGZvciBQSFkgYXR0YWNoL2RldGFjaCBldmVudHMuCgpOb3csIHBlZWtpbmcgaW50byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCwgSSBzZWUgc3VwcG9ydCBmb3IgUlRMODM4MCBhbmQgUlRMODM5MCBNRElPIGNvbnRyb2xsZXJzLCBhbG9uZyB3aXRoIGltcGxlbWVudGF0aW9ucyBmb3IgYG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2hgIGFuZCBgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaGAuIFRoZXkgYWxzbyBhZGRlZCBwb2xsaW5nIGNvbnRyb2wgbG9naWMgZm9yIFJlYWx0ZWsgc3dpdGNoZXMuIFRoaXMgbG9va3Mgc3BlY2lmaWMgdG8gdGhlc2UgUmVhbHRlayBTb0NzLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgbmV3IGNhbGxiYWNrIG1lY2hhbmlzbSBleGlzdCBvbmx5IGZvciBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2A/IElzIHRoaXMgYSBkcml2ZXIgdGhhdCYjMzk7cyBvbmx5IGdvaW5nIHRvIHdvcmsgb24gUmVhbHRlayBiYXNlZCBzeXN0ZW1zLCBvciBjYW4gaXQgYmUgdXNlZCBlbHNld2hlcmU/CgpEaXZpbmcgZGVlcGVyLCBJIHNlZSB0aGF0IGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYCBhcmUgY2VudHJhbCBQSFkgc3Vic3lzdGVtIGZ1bmN0aW9ucy4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGFjcm9zcyBuZXR3b3JraW5nLiBTbywgdGhpcyByZWZhY3RvcmluZyAqbXVzdCogYmUgY29yZSwgYW5kIHRoZSBjYWxsYmFja3MgYXJlIHByb2JhYmx5IGFkZGVkIHRvIGVuYWJsZSBicm9hZGVyIHN1cHBvcnQuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBvdGhlciBkcml2ZXJzIHdpbGwgdXNlIHRoZXNlIG5ldyBjYWxsYmFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIG90aGVyIGRyaXZlcnMgc2V0IHRoZXNlIGNhbGxiYWNrcy4gSWYgbm8gb3RoZXIgZHJpdmVyIHNldHMgYGJ1cy0mZ3Q7bm90aWZ5X3BoeV9hdHRhY2hgIGJlc2lkZXMgdGhlIFJlYWx0ZWsgZHJpdmVyLCB0aGVuIHRoaXMgZW50aXJlIGNoYW5nZSBpcyBvbmx5IHVzZWZ1bCBmb3IgUmVhbHRlayBzeXN0ZW1zLgoKTGV0JiMzOTtzIGNoZWNrIGlmIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBpcyBldmVuIHBvc3NpYmxlIHRvIHRlc3Qgb3V0c2lkZSBhIHNwZWNpZmljIFNvQy4gSSYjMzk7bGwgc2VhcmNoIGZvciBgQ09ORklHX01ESU9fUkVBTFRFS19SVEw5MzAwYCBvciBgTUFDSF9SRUFMVEVLX1JUTGAgdG8gdmVyaWZ5IGlmIEkgY2FuIHJ1biB0aGlzIHdpdGggUUVNVSBvciBHQ0UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDSF9SRUFMVEVLX1JUTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvS2NvbmZpZz02ODE9Y29uZmlnIFJBTElOS1xuLS1cbmFyY2gvbWlwcy9LY29uZmlnLTY5OC1cbmFyY2gvbWlwcy9LY29uZmlnOjY5OTpjb25maWcgTUFDSF9SRUFMVEVLX1JUTFxuYXJjaC9taXBzL0tjb25maWctNzAwLVx0Ym9vbCBcJiMzNDtSZWFsdGVrIFJUTDgzOHgvUlRMODM5eCBiYXNlZCBtYWNoaW5lc1wmIzM0O1xuLS1cbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGU6MjpkdGItJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdCYjNDM7PSBjaXNjb19zZzIyMC0yNi5kdGJcbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlOjM6ZHRiLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHQmIzQzOz0gY2FtZW8tcnRsOTMwMmMtMngtcnRsODIyNC0yeGdlLmR0YlxuLS1cbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19WSVJUX0JPQVJEX1JBTkNIVSlcdFx0JiM0Mzs9IGJvYXJkLXJhbmNodS5vXG5hcmNoL21pcHMvZ2VuZXJpYy9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdFx0JiM0Mzs9IGJvYXJkLXJlYWx0ZWsub1xuLS1cbmRyaXZlcnMvZ3Bpby9LY29uZmlnPTYyNT1jb25maWcgR1BJT19SRUFMVEVLX09UVE9cbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgT3R0byBHUElPIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyNzpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyODpcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxuZHJpdmVycy9ncGlvL0tjb25maWctNjI5LVx0c2VsZWN0IEdQSU9fR0VORVJJQ1xuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnPTExMDM9Y29uZmlnIEkyQ19SVEw5MzAwXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw5MzAwIEkyQyBjb250cm9sbGVyXCYjMzQ7XG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZzoxMTA1Olx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNi1cdGhlbHBcbi0tXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9MTMwPW9iai0kKENPTkZJR19TTDI4Q1BMRF9JTlRDKVx0XHQmIzQzOz0gaXJxLXNsMjhjcGxkLm9cbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZToxMzE6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHRcdCYjNDM7PSBpcnEtcmVhbHRlay1ydGwub1xuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlLTEzMi1vYmotJChDT05GSUdfV1BDTTQ1MF9BSUMpXHRcdCYjNDM7PSBpcnEtd3BjbTQ1MC1haWMub1xuLS1cbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZz02ND1jb25maWcgTVREX05BTkRfRUNDX1JFQUxURUtcbi0tXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWctNjYtICAgICAgICBkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnOjY3OiAgICAgICAgZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnLTY4LSAgICAgICAgc2VsZWN0IE1URF9OQU5EX0VDQ1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNzQ9Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE3NjpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzctXHRoZWxwXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZz05MTY9Y29uZmlnIFNQSV9SRUFMVEVLX1NOQU5EXG5kcml2ZXJzL3NwaS9LY29uZmlnLTkxNy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgU1BJLU5BTkQgRmxhc2ggQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy9zcGkvS2NvbmZpZzo5MTg6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3NwaS9LY29uZmlnLTkxOS1cdHNlbGVjdCBSRUdNQVBcbi0tXG5kcml2ZXJzL3NwaS9NYWtlZmlsZT0xMzE9b2JqLSQoQ09ORklHX1NQSV9SQjRYWClcdFx0XHQmIzQzOz0gc3BpLXJiNHh4Lm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdFx0JiM0Mzs9IHNwaS1yZWFsdGVrLXJ0bC5vXG5kcml2ZXJzL3NwaS9NYWtlZmlsZS0xMzMtb2JqLSQoQ09ORklHX1NQSV9SRUFMVEVLX1NOQU5EKVx0XHQmIzQzOz0gc3BpLXJlYWx0ZWstcnRsLXNuYW5kLm9cbi0tXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc9MTExMz1jb25maWcgUkVBTFRFS19PVFRPX1dEVFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIE90dG8gTUlQUyB3YXRjaGRvZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExNTpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE2LVx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4tLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTgtXHRzZWxlY3QgUkVHTUFQX01NSU9cbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTE5Olx0ZGVmYXVsdCBNQUNIX1JFQUxURUtfUlRMXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTAxNQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUEhZIERldGFjaG1lbnQgYW5kIEF0dGFjaG1lbnQgaW4gdGhlIFJlYWx0ZWsgUlRMOTMwMCBjb250ZXh0KioKCk9rYXksIHNvIGBNRElPX1JFQUxURUtfUlRMOTMwMGAgcmVsYXRlcyB0byB0aGUgTUlQUyBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4IFNvQ3MsIHNwZWNpZmljYWxseSBmb3IgdGhlIGVtYmVkZGVkIGBNQUNIX1JFQUxURUtfUlRMYCBib2FyZHMuIEdvdCBpdC4gQnV0IGhvbGQgb24sIHRoZSBjb3JlIFBIWSBjaGFuZ2Vz4oCmIFRoYXQmIzM5O3MgdGhlIGtleS4gTGV0JiMzOTtzIGRlbHZlIGludG8gd2hhdCYjMzk7cyBhbHRlcmVkIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuCgpSaWdodCwgYHBoeV9kZXRhY2hfaW50ZXJuYWxgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbi4gSXQgaGFuZGxlcyB0aGUgYWN0dWFsIGRldGFjaG1lbnQgb2YgdGhlIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIGRyaXZlci4gVGhlIGFkZGVkIGBub3RpZnlfYnVzYCBwYXJhbWV0ZXIgaXMgaW50ZXJlc3Rpbmc7IGl0IGRlY2lkZXMgd2hldGhlciB0byB0ZWxsIHRoZSBNRElPIGJ1cyBhYm91dCB0aGUgZGV0YWNobWVudC4gQW5kIGhleSwgdGhlcmUmIzM5O3MgYHBoeV9kZXRhY2hgLCBhIHdyYXBwZXIgdGhhdCBhbHdheXMgbm90aWZpZXMgdGhlIGJ1cy4gT2theSwgYG5vdGlmeV9waHlfZGV0YWNoYCBpdCBpcy4KClRoZSBjb2RlIHNob3dzIHRoYXQgYHBoeV9kZXRhY2hfaW50ZXJuYWxgIHdpbGwgY2FsbCBhIGJ1cyBzcGVjaWZpYyBgbm90aWZ5X3BoeV9kZXRhY2hgIGNhbGxiYWNrIGlmIGBub3RpZnlfYnVzYCBpcyBzZXQgdG8gdHJ1ZSBhbmQgdGhlIGJ1cyBoYXMgaW1wbGVtZW50ZWQgYSBzcGVjaWZpYyBjYWxsYmFjay4gVGhlIHNhbWUgaXMgdHJ1ZSBmb3IgYHBoeV9hdHRhY2hfaW50ZXJuYWxgIHdoaWNoIGNhbGxzIGBub3RpZnlfcGh5X2F0dGFjaGAgaWYgdGhlIGJ1cyBoYXMgYSBjYWxsYmFjayBkZWZpbmVkLiBNYWtlcyBzZW5zZS4KCkJ1dCBoZXJlJiMzOTtzIHRoZSBidXJuaW5nIHF1ZXN0aW9uOiBJcyBlaXRoZXIgYG5vdGlmeV9waHlfYXR0YWNoYCBvciBgbm90aWZ5X3BoeV9kZXRhY2hgIGFjdHVhbGx5ICp1c2VkKiBhbnl3aGVyZSBlbHNlPyBNeSBndXQgdGVsbHMgbWUgdGhpcyBjb3VsZCBiZSBhIG5ldywgb3IgdW5kZXJ1dGlsaXplZCwgaW50ZXJmYWNlLiBUaW1lIHRvIHJ1biBhIGBncmVwYCBzZWFyY2ggYWNyb3NzIHRoZSBlbnRpcmUgY29kZWJhc2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBhbnN3ZXIgYXMgdG8gd2hldGhlciBhbnkgb3RoZXIgZHJpdmVycyBsZXZlcmFnZSB0aGVzZSBuZXcgY2FsbGJhY2sgZnVuY3Rpb25zLCBvciBpZiB0aGlzIGlzIGlzb2xhdGVkIHRvIHRoZSBSZWFsdGVrIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25vdGlmeV9waHlfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vc2NzaS9saWJzYXMucnN0PTE4OT1UaGUgZXZlbnQgaW50ZXJmYWNlOjpcbi0tXG5Eb2N1bWVudGF0aW9uL3Njc2kvbGlic2FzLnJzdC0xOTItXHR2b2lkIHNhc19ub3RpZnlfcG9ydF9ldmVudChzdHJ1Y3Qgc2FzX3BoeSAqLCBlbnVtIHBvcnRfZXZlbnQsIGdmcF90KTtcbkRvY3VtZW50YXRpb24vc2NzaS9saWJzYXMucnN0OjE5MzpcdHZvaWQgc2FzX25vdGlmeV9waHlfZXZlbnQoc3RydWN0IHNhc19waHkgKiwgZW51bSBwaHlfZXZlbnQsIGdmcF90KTtcbkRvY3VtZW50YXRpb24vc2NzaS9saWJzYXMucnN0LTE5NC1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zY3NpL2xpYnNhcy5yc3Q9MTcwPW51bV9waHlzXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vc2NzaS9saWJzYXMucnN0LTE3OS1cdHZvaWQgc2FzX25vdGlmeV9wb3J0X2V2ZW50KHN0cnVjdCBzYXNfcGh5ICosIGVudW0gcG9ydF9ldmVudCwgZ2ZwX3QpO1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vc2NzaS9saWJzYXMucnN0OjE4MDpcdHZvaWQgc2FzX25vdGlmeV9waHlfZXZlbnQoc3RydWN0IHNhc19waHkgKiwgZW51bSBwaHlfZXZlbnQsIGdmcF90KTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3Njc2kvbGlic2FzLnJzdC0xODEtXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jPTc3Mj1zdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4Ny1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3ODg6c3RhdGljIGludCBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzg5LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODEyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgxMzpzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODE0LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM9ODMzPXN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NTgtXHRidXMtXHUwMDNlcGFyZW50ID0gZGV2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1OTpcdGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODYwOlx0YnVzLVx1MDAzZW5vdGlmeV9waHlfZGV0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NjEtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzQ1PXN0YXRpYyB2b2lkIHBoeV9kZXRhY2hfaW50ZXJuYWwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBub3RpZnlfYnVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2Ny1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTc2ODpcdGlmIChub3RpZnlfYnVzIFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3Njk6XHRcdHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzcwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTg1MD1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5NzYtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5Nzc6XHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5Nzg6XHRcdGVyciA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2Vub3RpZnlfcGh5X2F0dGFjaChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTc5LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmM9Njc9c3RhdGljIHZvaWQgYXNkX3BoeV9ldmVudF90YXNrbGV0KHN0cnVjdCBhc2RfYXNjYiAqYXNjYixcbi0tXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTgyLVx0XHRzYXNfcGh5X2Rpc2Nvbm5lY3RlZChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSk7XG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jOjgzOlx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCxcbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmMtODQtXHRcdFx0XHQgICAgIEdGUF9BVE9NSUMpO1xuLS1cbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmMtOTEtXHRcdFx0ICAgIHBoeV9pZCwgcGh5LVx1MDAzZXNhc19waHkubGlua3JhdGUsIHBoeS1cdTAwM2VzYXNfcGh5Lmlwcm90byk7XG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jOjkyOlx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTkzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTk2LVx0XHRhc2RfdHVybl9sZWQoYXNkX2hhLCBwaHlfaWQsIDEpO1xuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYzo5NzpcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfU1BJTlVQX0hPTEQsXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTk4LVx0XHRcdFx0ICAgICBHRlBfQVRPTUlDKTtcbi0tXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTEwNS1cdFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHkpO1xuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYzoxMDY6XHRcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9FUlJPUiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTEwNy1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzLmg9NjgzPWV4dGVybiB2b2lkIGhpc2lfc2FzX3BoeV9vb2JfcmVhZHkoc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgaW50IHBoeV9ubyk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXMuaDo2ODQ6ZXh0ZXJuIGJvb2wgaGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgaGlzaV9zYXNfcGh5ICpwaHksXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXMuaC02ODUtXHRcdFx0XHRlbnVtIGhpc2lfc2FzX3BoeV9ldmVudCBldmVudCk7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz02NDk9c3RhdGljIHZvaWQgaGlzaV9zYXNfYnl0ZXNfZG1hZWQoc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgaW50IHBoeV9ubyxcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTY1Ny1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6NjU4Olx0c2FzX25vdGlmeV9waHlfZXZlbnQoc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgZ2ZwX2ZsYWdzKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtNjU5LVxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM9OTM5PXN0YXRpYyB2b2lkIGhpc2lfc2FzX3BoeXVwX3dvcmtfY29tbW9uKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayxcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTk2Mi1cdFx0XHRzZXRfYml0KFNBU19ERVZfR09ORSwgXHUwMDI2cG9ydF9kZXYtXHUwMDNlc3RhdGUpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYzo5NjM6XHRcdFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtOTY0LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jPTk5OT1zdGF0aWMgY29uc3Qgd29ya19mdW5jX3QgaGlzaV9zYXNfcGh5ZV9mbnNbSElTSV9QSFlFU19OVU1dID0ge1xuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMTAwNC1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTAwNTpib29sIGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQoc3RydWN0IGhpc2lfc2FzX3BoeSAqcGh5LFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xMDA2LVx0XHRcdFx0ZW51bSBoaXNpX3Nhc19waHlfZXZlbnQgZXZlbnQpXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xMDE0LX1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTAxNTpFWFBPUlRfU1lNQk9MX0dQTChoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMTAxNi1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM9MTAxNz1zdGF0aWMgdm9pZCBoaXNpX3Nhc193YWl0X3BoeXVwX3RpbWVkb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMTAyNC1cdGRldl93YXJuKGRldiwgXCYjMzQ7cGh5JWQgd2FpdCBwaHl1cCB0aW1lb3V0LCBpc3N1aW5nIGxpbmsgcmVzZXRcXG5cJiMzNDssIHBoeV9ubyk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jOjEwMjU6XHRoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgSElTSV9QSFlFX0xJTktfUkVTRVQpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xMDI2LX1cbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jPTE0Mzc9c3RhdGljIHZvaWQgaGlzaV9zYXNfcmVzY2FuX3RvcG9sb2d5KHN0cnVjdCBoaXNpX2hiYSAqaGlzaV9oYmEsIHUzMiBzdGF0ZSlcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTE0NzMtXHRcdFx0aWYgKHN0YXRlIFx1MDAyNiBCSVQocGh5X25vKSlcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTQ3NDpcdFx0XHRcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xNDc1LVx0XHRcdFx0XHRcdFx0ICBISVNJX1BIWUVfTElOS19SRVNFVCk7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz0yMTAyPXZvaWQgaGlzaV9zYXNfcGh5X2Rvd24oc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgaW50IHBoeV9ubywgaW50IHJkeSxcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTIxMjEtXHRcdC8qIFBoeSBkb3duIGFuZCBub3QgcmVhZHkgKi9cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MjEyMjpcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCwgZ2ZwX2ZsYWdzKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMjEyMy1cdFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoc2FzX3BoeSk7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YxX2h3LmM9MTMxNT1zdGF0aWMgaXJxcmV0dXJuX3QgaW50X3BoeXVwX3YxX2h3KGludCBpcnFfbm8sIHZvaWQgKnApXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YxX2h3LmMtMTM3Ni1cdFx0XHRTQVNfUFJPVE9DT0xfU01QO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YxX2h3LmM6MTM3NzpcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfUEhZX1VQKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192MV9ody5jLTEzNzgtZW5kOlxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jPTI2NDY9c3RhdGljIGludCBwaHlfdXBfdjJfaHcoaW50IHBoeV9ubywgc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSlcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0yNzA3LVx0fVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM6MjcwODpcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfUEhZX1VQKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTI3MDktZW5kOlxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jPTI4NjQ9c3RhdGljIGlycXJldHVybl90IGludF9jaG5sX2ludF92Ml9odyhpbnQgaXJxX25vLCB2b2lkICpwKVxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTI5MTEtXHRcdFx0XHRcdCBwaHlfbm8pO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM6MjkxMjpcdFx0XHRcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmMtMjkxMy1cdFx0XHRcdFx0XHRISVNJX1BIWUVfTElOS19SRVNFVCk7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM9MzE5OD1zdGF0aWMgaXJxcmV0dXJuX3Qgc2F0YV9pbnRfdjJfaHcoaW50IGlycV9ubywgdm9pZCAqcClcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0zMjM1LVx0XHRcdCBmaXMtXHUwMDNlc3RhdHVzKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjMyMzY6XHRcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0zMjM3LVx0XHRyZXMgPSBJUlFfTk9ORTtcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0zMjgxLVx0cGh5LVx1MDAzZWlkZW50aWZ5LnRhcmdldF9wb3J0X3Byb3RvY29scyA9IFNBU19QUk9UT0NPTF9TQVRBO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM6MzI4MjpcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfUEhZX1VQKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTMyODMtXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmM9MTU4Mj1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5X3VwX3YzX2h3KGludCBwaHlfbm8sIHN0cnVjdCBoaXNpX2hiYSAqaGlzaV9oYmEpXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTYyMS1cdFx0XHRcdCBwaHlfbm8sIGZpcy1cdTAwM2VzdGF0dXMpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmM6MTYyMjpcdFx0XHRoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgSElTSV9QSFlFX0xJTktfUkVTRVQpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTYyMy1cdFx0XHRyZXMgPSBJUlFfTk9ORTtcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xNjc4LVx0cG1fcnVudGltZV9nZXRfbm9yZXN1bWUoZGV2KTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE2Nzk6XHRyZXMgPSBoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgSElTSV9QSFlFX1BIWV9VUF9QTSk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xNjgwLVx0aWYgKCFyZXMpXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmM9MTg4Nz1zdGF0aWMgdm9pZCBoYW5kbGVfY2hsX2ludDJfdjNfaHcoc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgaW50IHBoeV9ubylcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTA2LVx0XHRkZXZfd2FybihkZXYsIFwmIzM0O3BoeSVkIGlkZW50aWZ5IHRpbWVvdXRcXG5cJiMzNDssIHBoeV9ubyk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYzoxOTA3Olx0XHRoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgSElTSV9QSFlFX0xJTktfUkVTRVQpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTkwOC1cdH1cbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTE2LVx0XHRpZiAocmVnX3ZhbHVlIFx1MDAyNiBCSVQoTElOS19SRVNFVF9USU1FT1VUX09GRikpXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYzoxOTE3Olx0XHRcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTE4LVx0fVxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE5NDgtXHRcdGlmIChyYylcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE5NDk6XHRcdFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE5NTAtXHR9XG4tLVxuZHJpdmVycy9zY3NpL2lzY2kvcG9ydC5jPTI0MD1zdGF0aWMgdm9pZCBpc2NpX3BvcnRfbGlua19kb3duKHN0cnVjdCBpc2NpX2hvc3QgKmlzY2lfaG9zdCxcbi0tXG5kcml2ZXJzL3Njc2kvaXNjaS9wb3J0LmMtMjczLVx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoXHUwMDI2aXNjaV9waHktXHUwMDNlc2FzX3BoeSk7XG5kcml2ZXJzL3Njc2kvaXNjaS9wb3J0LmM6Mjc0Olx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2aXNjaV9waHktXHUwMDNlc2FzX3BoeSxcbmRyaXZlcnMvc2NzaS9pc2NpL3BvcnQuYy0yNzUtXHRcdFx0ICAgICBQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfQVRPTUlDKTtcbi0tXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19ldmVudC5jPTE4OT1FWFBPUlRfU1lNQk9MX0dQTChzYXNfbm90aWZ5X3BvcnRfZXZlbnQpO1xuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYy0xOTAtXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19ldmVudC5jOjE5MTp2b2lkIHNhc19ub3RpZnlfcGh5X2V2ZW50KHN0cnVjdCBhc2Rfc2FzX3BoeSAqcGh5LCBlbnVtIHBoeV9ldmVudCBldmVudCxcbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V2ZW50LmMtMTkyLVx0XHRcdCAgZ2ZwX3QgZ2ZwX2ZsYWdzKVxuLS1cbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V2ZW50LmMtMjE1LX1cbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V2ZW50LmM6MjE2OkVYUE9SVF9TWU1CT0xfR1BMKHNhc19ub3RpZnlfcGh5X2V2ZW50KTtcbi0tXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmM9NDEzPXZvaWQgc2FzX3Jlc3VtZV9oYShzdHJ1Y3Qgc2FzX2hhX3N0cnVjdCAqaGEpXG4tLVxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jLTQ1MC1cdFx0XHRkZXZfd2FybihcdTAwMjZwaHktXHUwMDNlcGh5LVx1MDAzZWRldiwgXCYjMzQ7cmVzdW1lIHRpbWVvdXRcXG5cJiMzNDspO1xuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jOjQ1MTpcdFx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIFBIWUVfUkVTVU1FX1RJTUVPVVQsXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMtNDUyLVx0XHRcdFx0XHQgICAgIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2luaXQuYz02Mzg9c3RydWN0IGFzZF9zYXNfZXZlbnQgKnNhc19hbGxvY19ldmVudChzdHJ1Y3QgYXNkX3Nhc19waHkgKnBoeSxcbi0tXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMtNjU2LVx0XHRcdFx0XHQgIHBoeS1cdTAwM2VpZCk7XG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmM6NjU3Olx0XHRcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBQSFlFX1NIVVRET1dOLFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jLTY1OC1cdFx0XHRcdFx0XHQgICAgIGdmcF9mbGFncyk7XG4tLVxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jPTIxMD1zdGF0aWMgdm9pZCBtdnNfYnl0ZXNfZG1hZWQoc3RydWN0IG12c19pbmZvICptdmksIGludCBpLCBnZnBfdCBnZnBfZmxhZ3MpXG4tLVxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTIyMi1cbmRyaXZlcnMvc2NzaS9tdnNhcy9tdl9zYXMuYzoyMjM6XHRzYXNfbm90aWZ5X3BoeV9ldmVudChzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBnZnBfZmxhZ3MpO1xuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTIyNC1cbi0tXG5kcml2ZXJzL3Njc2kvbXZzYXMvbXZfc2FzLmM9MTY5ND1zdGF0aWMgdm9pZCBtdnNfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTE3MTQtXHRcdFx0XHRtdnNfcGh5X2Rpc2Nvbm5lY3RlZChwaHkpO1xuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jOjE3MTU6XHRcdFx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChzYXNfcGh5LFxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTE3MTYtXHRcdFx0XHRcdFBIWUVfTE9TU19PRl9TSUdOQUwsIEdGUF9BVE9NSUMpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jPTMxMDU9aHdfZXZlbnRfc2FzX3BoeV91cChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTMxNjMtXHRwaHktXHUwMDNlc2FzX3BoeS5vb2JfbW9kZSA9IFNBU19PT0JfTU9ERTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jOjMxNjQ6XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zMTY1LVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2cGh5LVx1MDAzZXNhc19waHkuZnJhbWVfcmN2ZF9sb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM9MzE4Mj1od19ldmVudF9zYXRhX3BoeV91cChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTMyMDgtXHRwaHktXHUwMDNlc2FzX3BoeS5vb2JfbW9kZSA9IFNBVEFfT09CX01PREU7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYzozMjA5Olx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfT09CX0RPTkUsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzIxMC1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LmZyYW1lX3JjdmRfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jPTM1MDE9c3RhdGljIGludCBtcGlfaHdfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTQ5LVx0XHRwbTgwMDFfZGJnKHBtODAwMV9oYSwgTVNHLCBcJiMzNDtIV19FVkVOVF9TQVRBX1NQSU5VUF9IT0xEXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jOjM1NTA6XHRcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LCBQSFlFX1NQSU5VUF9IT0xELFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzU1MS1cdFx0XHRHRlBfQVRPTUlDKTtcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTU0LVx0XHRwbTgwMDFfZGJnKHBtODAwMV9oYSwgTVNHLCBcJiMzNDtIV19FVkVOVF9QSFlfRE9XTlxcblwmIzM0Oyk7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYzozNTU1Olx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTM1NTYtXHRcdFx0R0ZQX0FUT01JQyk7XG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzU4My1cdFx0cGh5LVx1MDAzZXBoeV9hdHRhY2hlZCA9IDA7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYzozNTg0Olx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRVJST1IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzU4NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmM9MjI1PWludCBwbTgwMDFfcGh5X2NvbnRyb2woc3RydWN0IGFzZF9zYXNfcGh5ICpzYXNfcGh5LCBlbnVtIHBoeV9mdW5jIGZ1bmMsXG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmMtMjkyLVx0XHRcdFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHkpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmM6MjkzOlx0XHRcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuYy0yOTQtXHRcdFx0XHRcdFBIWUVfTE9TU19PRl9TSUdOQUwsIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5jLTMwMC1cdFx0XHRcdHNhc19waHlfZGlzY29ubmVjdGVkKFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5KTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5jOjMwMTpcdFx0XHRcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmMtMzAyLVx0XHRcdFx0XHRQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zMTg2PWh3X2V2ZW50X3Nhc19waHlfdXAoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjQ3LVx0cGh5LVx1MDAzZXNhc19waHkub29iX21vZGUgPSBTQVNfT09CX01PREU7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozMjQ4Olx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfT09CX0RPTkUsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzI0OS1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LmZyYW1lX3JjdmRfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jPTMyNjY9aHdfZXZlbnRfc2F0YV9waHlfdXAoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjk2LVx0cGh5LVx1MDAzZXNhc19waHkub29iX21vZGUgPSBTQVRBX09PQl9NT0RFO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzI5NzpcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTMyOTgtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZwaHktXHUwMDNlc2FzX3BoeS5mcmFtZV9yY3ZkX2xvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zMzE1PWh3X2V2ZW50X3BoeV9kb3duKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpXG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzM4Ni1cdGlmIChwb3J0X3NhdGEgXHUwMDI2XHUwMDI2IChwb3J0c3RhdGUgIT0gUE9SVF9JTl9SRVNFVCkpXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozMzg3Olx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTMzODgtXHRcdFx0XHRHRlBfQVRPTUlDKTtcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zNDU0PXN0YXRpYyBpbnQgbXBpX2h3X2V2ZW50KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpXG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzQ5Mi1cdFx0XHQgICBwaHlfaWQsIHBvcnRfaWQpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzQ5MzpcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfU1BJTlVQX0hPTEQsXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zNDk0LVx0XHRcdEdGUF9BVE9NSUMpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM1MjYtXHRcdHBoeS1cdTAwM2VwaHlfYXR0YWNoZWQgPSAwO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzUyNzpcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfT09CX0VSUk9SLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM1MjgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM2NDItXHRcdFx0XHRwaHkgPSBcdTAwMjZwbTgwMDFfaGEtXHUwMDNlcGh5W2ldO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzY0MzpcdFx0XHRcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzY0NC1cdFx0XHRcdFx0UEhZRV9MT1NTX09GX1NJR05BTCwgR0ZQX0FUT01JQyk7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0zNjM9c3RydWN0IG1paV9idXMge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMzc5LVx0LyoqXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjM4MDpcdCAqIEBub3RpZnlfcGh5X2F0dGFjaDogUGVyZm9ybSBwb3N0LWF0dGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzgxOlx0ICogZHJpdmVycy4gT3B0aW9uYWwgYW5kIGluZGVwZW5kZW50IG9mIEBub3RpZnlfcGh5X2RldGFjaC4gQ2FsbGVkXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTM4Mi1cdCAqIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkgcmlnaHQgYmVmb3JlIHBoeV9yZXN1bWUoKS4gUnVucyBpbiBwcm9jZXNzXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0zODctXHQgKi9cbmluY2x1ZGUvbGludXgvcGh5Lmg6Mzg4Olx0aW50ICgqbm90aWZ5X3BoeV9hdHRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuaW5jbHVkZS9saW51eC9waHkuaC0zODktXHQvKipcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzkwOlx0ICogQG5vdGlmeV9waHlfZGV0YWNoOiBQZXJmb3JtIHByZS1kZXRhY2ggaGFuZGxpbmcgZm9yIE1ESU8gYnVzXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjM5MTpcdCAqIGRyaXZlcnMuIE9wdGlvbmFsIGFuZCBpbmRlcGVuZGVudCBvZiBAbm90aWZ5X3BoeV9hdHRhY2guIENhbGxlZFxuaW5jbHVkZS9saW51eC9waHkuaC0zOTItXHQgKiBpbiBwaHlfZGV0YWNoKCkgcmlnaHQgYWZ0ZXIgcGh5X3N1c3BlbmQoKS4gUnVucyBpbiBwcm9jZXNzIGNvbnRleHQsXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0zOTUtXHQgKi9cbmluY2x1ZGUvbGludXgvcGh5Lmg6Mzk2Olx0dm9pZCAoKm5vdGlmeV9waHlfZGV0YWNoKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmluY2x1ZGUvbGludXgvcGh5LmgtMzk3LVxuLS1cbmluY2x1ZGUvc2NzaS9saWJzYXMuaD03Mjk9dm9pZCBzYXNfbm90aWZ5X3BvcnRfZXZlbnQoc3RydWN0IGFzZF9zYXNfcGh5ICpwaHksIGVudW0gcG9ydF9ldmVudCBldmVudCxcbmluY2x1ZGUvc2NzaS9saWJzYXMuaC03MzAtXHRcdFx0ICAgZ2ZwX3QgZ2ZwX2ZsYWdzKTtcbmluY2x1ZGUvc2NzaS9saWJzYXMuaDo3MzE6dm9pZCBzYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgYXNkX3Nhc19waHkgKnBoeSwgZW51bSBwaHlfZXZlbnQgZXZlbnQsXG5pbmNsdWRlL3Njc2kvbGlic2FzLmgtNzMyLVx0XHRcdCAgIGdmcF90IGdmcF9mbGFncyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5OTcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQSFkgQXR0YWNobWVudC9EZXRhY2htZW50IE5vdGlmaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGBub3RpZnlfcGh5X2F0dGFjaGAgYW5kIGBub3RpZnlfcGh5X2RldGFjaGAgZnVuY3Rpb25zLiBJIGtub3cgdGhleSYjMzk7cmUgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9waHkuaGAgYW5kIHVzZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIFBIWSBmcmFtZXdvcmssIGdvb2QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hvJiMzOTtzIGFjdHVhbGx5ICp1c2luZyogdGhlbS4KClRoZSB0cmFjZSBsZWFkcyBtZSB0byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYC4gQWgsIHJpZ2h0LCB0aGUgUmVhbHRlayBNRElPIGRyaXZlci4gQnV0Li4uIGlzIHRoaXMgc3BlY2lmaWMgdG8ganVzdCB0aGUgUmVhbHRlayBNSVBTIGhhcmR3YXJlPyBUaGF0JiMzOTtzIHdoYXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQuIEkgY2FuJiMzOTt0IGp1c3QgYXNzdW1lIGl0JiMzOTtzIGJyb2FkbHkgYXBwbGljYWJsZS4KCkkmIzM5O3ZlIGdvdCB0byBkZXRlcm1pbmUgaWYgdGhpcyBkcml2ZXIgaXMgdGlnaHRseSBjb3VwbGVkIHRvIGEgcGFydGljdWxhciBTb0MsIG9yIGlmIGl0JiMzOTtzIG1vcmUgZ2VuZXJpYy4gSXMgaXQgYm91bmQgdG8gc29tZXRoaW5nIHNwZWNpZmljLCBvciBpcyB0aGVyZSBhIGJyb2FkZXIgY29udGV4dCBJJiMzOTttIG1pc3Npbmc/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGNvZGUgaXRzZWxmIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZywgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkLCBhbmQgd2hhdCBoYXJkd2FyZSBpdCYjMzk7cyBleHBlY3RpbmcgdG8gc2VlLiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3R0b19lbWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjM3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjIzODpzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjM5LVx0dTMyIGMyMl9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNDgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjQ5OnN0cnVjdCBvdHRvX2VtZGlvX3ByaXYge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI1MDpcdGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjUxLVx0c3RydWN0IHJlZ21hcCAqcmVnbWFwO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjYxOnN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI2Mi1cdHUzMiBhZGRyX21hcF9iYXNlO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjYtXHR1MzIgY21kX3dyaXRlO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI2NzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9yZWdzO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI2OC1cdHU4IG51bV9idXNlcztcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjcxLVx0dTMyIHBvbGxfY3RybDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNzI6XHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzMtXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjc5OnN0cnVjdCBvdHRvX2VtZGlvX2NoYW4ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4MDpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjgxLVx0dTggbWRpb19idXM7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI4My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyODQ6c3RhdGljIGludCBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjg1LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyODY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjg3Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODgtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjk5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMwMDpzdGF0aWMgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqb3R0b19lbWRpb19idXNfdG9fcHJpdihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwMS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzAyOlx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwMy1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzA2LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMwNzpzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCBpbnQgcG9ydCwgYm9vbCBhY3RpdmUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzA4LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzEyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxMzpzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxNDpcdFx0XHQgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE1LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMTY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxNzpcdGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gKmluZm8gPSBwcml2LVx1MDAzZWluZm87XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE4LVx0dTMyIGNtZHN0YXRlO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNjktXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzcwOnN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3MTpcdFx0XHQgICAgICAgc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhLCB1MzIgbWFzaywgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNzIte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3MzpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc0LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc2LVx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3NzpcdHJldCA9IG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXHUwMDNlaW5mby1cdTAwM2VjbWRfcmVhZCwgY21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM3OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4OS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTA6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM5MTpcdFx0XHRcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zOTIte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM5MzpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzk0LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zOTYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzk3Olx0cmV0dXJuIG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXHUwMDNlaW5mby1cdTAwM2VjbWRfd3JpdGUsIGNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zOTgtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM5OS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDA6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDAxLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDI6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQwMzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNC1cdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwOS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTA6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxMS1cdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDE0OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxNS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDE2Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTc6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTgtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDI1Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQyNi19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDI3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQyODpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjktXHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzMC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDMxOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDMyLVx0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzNi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Mzc6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzOC1cdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDQxOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDItXHRcdFx0XHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0My17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDQ0Olx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDQ1LVx0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NTE6XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDUyLX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDU0OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1NS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDU2Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NTc6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTgtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDY0Olx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjUtXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDY3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ2ODpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00Njkte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3MDpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDcxOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDcyLVx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDc5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ4MDpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODEtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4Mi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0ODM6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDg0LVx0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODUte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ4NjpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4Ny1cdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDkyOlx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTMtXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDk1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ5NjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDk3LVx0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTgte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ5OTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwMC1cdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTA3Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwOC19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTA5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxMDpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MTEte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxMjpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTEzOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE0LVx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyMDpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTIxLVx0XHRcdFx0ICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyMy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MjQ6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTI1LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MjY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyNzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyOC1cdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MzU6XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTM2LX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MzctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTM4OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzOS1cdFx0XHRcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQwLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NDE6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDItXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ2LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0NzpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ4LVx0XHRcdFx0ICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NTE6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1Mi1cdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTUzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NTQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NTUtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU2MTpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NjItfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjQ6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTY1LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU2NzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2OC1cdFx0LmJyb2FkY2FzdFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3Mi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzM6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3NC1cdFx0XHRcdCAgIFJUTDkzMTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTc3OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3OC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTc5Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODA6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODEtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTg4Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4OS19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTkwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU5MTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01OTItXHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU5My17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTk0Olx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk1LVx0XHQuYnJvYWRjYXN0XHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9CQ19QT1JUX0lELCBwb3J0KSxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYwMDpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjAxLVx0XHRcdFx0ICAgUlRMOTMxMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MDQ6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwNS1cdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA2LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MDc6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MDgtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYxNTpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MTYtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxNy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTg6c3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE5LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MjA6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyMS1cdGludCByZXQsIHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyOS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MzA6XHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjMxLVx0aWYgKHBvcnQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY0My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NDQ6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY0NS1cdFx0XHRcdHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NDYte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY0NzpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjQ4LVx0aW50IHJldCwgcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjU1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY1NjpcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KGJ1cywgcGh5X2lkKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NTctXHRpZiAocG9ydCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjc0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY3NTpzdGF0aWMgaW50IG90dG9fZW1kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY3Ni17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njc3Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NzgtXHRpbnQgcmV0LCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjgxOlx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY4Mi1cdGlmIChwb3J0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjkxOnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTItXHRcdFx0XHRpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTMte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY5NDpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjk1LVx0aW50IHJldCwgcG9ydDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njk3Olx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY5OC1cdGlmIChwb3J0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzA3OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsIHUzMiBiYXNlLCB1MzIgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDgtXHRcdFx0XHQgICAgdTMyIHZhbHNfcGVyX3JlZywgdTMyIGJpdHNfcGVyX3ZhbCwgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MTYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzE3OnN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcxOC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzE5Olx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbyA9IHByaXYtXHUwMDNlaW5mbztcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjAtXHR1MzIgcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzI0LVx0XHRpZiAoaW5mby1cdTAwM2VidXNfbWFwX2Jhc2UpIHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MjU6XHRcdFx0cmV0ID0gb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHByaXYsIGluZm8tXHUwMDNlYnVzX21hcF9iYXNlLCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyNi1cdFx0XHRcdFx0XHQgICAgICAgTUFQX0JVU0VTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9CVVMsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczMS1cdFx0aWYgKGluZm8tXHUwMDNlYWRkcl9tYXBfYmFzZSkge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjczMjpcdFx0XHRyZXQgPSBvdHRvX2VtZGlvX3dyaXRlX21hcHBpbmcocHJpdiwgaW5mby1cdTAwM2VhZGRyX21hcF9iYXNlLCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczMy1cdFx0XHRcdFx0XHQgICAgICAgTUFQX0FERFJTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9BRERSLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NDItXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzQzOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NDQte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzUyOnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTMte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NzEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzcyOnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NzMte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03ODctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Nzg4OnN0YXRpYyBpbnQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4OS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzkwOlx0aW50IHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzkxOlx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc5MjpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBjaGFuLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzkzLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDktXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODEwOlx0cmV0dXJuIG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCB0cnVlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MTEtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxMi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTM6c3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODE1LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNy1cdGludCBwb3J0O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxOC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTk6XHRwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgyMDpcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODIxLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MjgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODI5Olx0aWYgKG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSkpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODMwLVx0XHRkZXZfZXJyKGJ1cy1cdTAwM2VwYXJlbnQsIFwmIzM0O2ZhaWxlZCB0byBkaXNhYmxlIHBvbGxpbmcgZm9yIHBvcnQgJWRcXG5cJiMzNDssIHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MzItXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODMzOnN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgzNC1cdFx0XHRcdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MzUte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgzNjpcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM3LVx0c3RydWN0IG1paV9idXMgKmJ1cztcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODUzLVx0YnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtSZWFsdGVrIFN3aXRjaCBNRElPIEJ1c1wmIzM0OztcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTQ6XHRidXMtXHUwMDNlcmVhZF9jNDUgPSBvdHRvX2VtZGlvX3JlYWRfYzQ1O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1NTpcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSBvdHRvX2VtZGlvX3dyaXRlX2M0NTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTY6XHRidXMtXHUwMDNlcmVhZCA9IG90dG9fZW1kaW9fcmVhZF9jMjI7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODU3Olx0YnVzLVx1MDAzZXdyaXRlID0gb3R0b19lbWRpb193cml0ZV9jMjI7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODU4LVx0YnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTk6XHRidXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg2MDpcdGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2g7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODYxLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NzQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODc1OnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKm90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4pXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODc2LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODkzLSAqL1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg5NDpzdGF0aWMgaW50IG90dG9fZW1kaW9fbWFwX3BvcnRzKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04OTUte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg5Ni1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHNfZG4sICpwaHlfZG4sICpidXNfZG4sICpjdHJsX2RuO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg5NzpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04OTgtXHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQgPSBkZXYtXHUwMDNlcGFyZW50O1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05MTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTE1Olx0XHRidXNfZG4gPSBvdHRvX2VtZGlvX2dldF9idXNfbm9kZShwaHlfZG4pO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkxNi1cdFx0aWYgKCFidXNfZG4pXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3Ny1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Nzg6c3RhdGljIGludCBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3OS17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk4Mi1cdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFx1MDAzYyBwcml2LVx1MDAzZWluZm8tXHUwMDNlbnVtX3BvcnRzOyBwb3J0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjk4MzpcdFx0ZXJyID0gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05ODQtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5OTE6c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTkyLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05OTMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5OTQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5NS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMDktXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTAxMDpcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMTEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDE1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMTY6XHRlcnIgPSBvdHRvX2VtZGlvX21hcF9wb3J0cyhkZXYpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMTctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDE5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMjA6XHRlcnIgPSBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHByaXYpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMjEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDMwLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDMxOlx0XHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDMyLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDM4LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMzk6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA0MC1cdC5hZGRyX21hcF9iYXNlID0gUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNTMtXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTQ6XHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTU6XHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1NjpcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDU3Olx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1ODpcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzQ1LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNTktfTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDYwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjE6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA2Mi1cdC5jbWRfZmFpbCA9IFJUTDgzOTBfUEhZX0NUUkxfRkFJTCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA3Ny1cdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDc4Olx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNzk6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA4MDpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwODE6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDgyLX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA4My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDg0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODUtXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDk5LVx0LnBvbGxfY3RybCA9IFJUTDkzMDBfU01JX1BPTExfQ1RSTCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTAwOlx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTAxOlx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDI6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEwMzpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDQ6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb185MzAwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTA1LX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEwNi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTA3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMDgtXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMTBfU01JX1BPUlRfQUREUl9DVFJMLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTI1LVx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMjY6XHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMjc6XHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEyODpcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTI5Olx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzMDpcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzQ1LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMzEtfTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTMyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb3R0b19lbWRpb19pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM0Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsODM4MC1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fODM4MF9pbmZvIH0sXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzNTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzOTEtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzgzOTBfaW5mbyB9LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzY6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw5MzAxLW1kaW9cJiMzNDssIC5kYXRhID0gXHUwMDI2b3R0b19lbWRpb185MzAwX2luZm8gfSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM3Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsOTMxMS1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMxMF9pbmZvIH0sXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzOC1cdHt9XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzOS19O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNDA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb3R0b19lbWRpb19pZHMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNDEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE0MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvdHRvX2VtZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTQzOlx0LnByb2JlID0gb3R0b19lbWRpb19wcm9iZSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTQ0LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTQ1LVx0XHQubmFtZSA9IFwmIzM0O21kaW8tcnRsOTMwMFwmIzM0OyxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTQ2Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvdHRvX2VtZGlvX2lkcyxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTQ3LVx0XHQuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNTAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTUyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTQ5CgkJCQkJCQlvdXRwdXQ6IDE5MQoJCQkJCQkJdGhvdWdodHM6IDI3MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgUEhZIERyaXZlciBDaGFuZ2VzIGZvciBSZWFsdGVrIE90dG8gU29DIFN1cHBvcnQqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaXNzZWN0aW5nIHRoaXMgcGF0Y2ggc2VyaWVzIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGluIGl0cyBpbXBsaWNhdGlvbnMuIFRoZSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIHN1cHBvcnQgZm9yIFJlYWx0ZWsmIzM5O3MgT3R0byBTb0Mgc3dpdGNoZXMsIHNwZWNpZmljYWxseSB0aGUgUlRMODM4eC9SVEw4Mzl4L1JUTDkzMHggc2VyaWVzLiBUaGUgY29kZSBjaGFuZ2VzIHJldm9sdmUgYXJvdW5kIGludGVncmF0aW5nIGEgbmV3IE1ESU8gYnVzIGRyaXZlciAoYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgKSB0aGF0JiMzOTtzIE9GLW9ubHksIG1lYW5pbmcgaXQgcmVsaWVzIG9uIGRldmljZSB0cmVlIGJpbmRpbmdzIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyAoYG90dG9fZW1kaW9fZHJpdmVyYCkuIEltcG9ydGFudGx5LCBgb3R0b19lbWRpb19kcml2ZXIuZHJpdmVyLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBtZWFucyB0aGUgdXN1YWwgc3lzZnMgYmluZGluZyB3b24mIzM5O3QgZXZlbiB3b3JrLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIHRoZSBQSFkgZGV2aWNlIGNvcmUgKGBwaHlfZGV2aWNlLmNgKSB3aGVyZSBuZXcgYG5vdGlmeV9waHlfYXR0YWNoYCBhbmQgYG5vdGlmeV9waHlfZGV0YWNoYCBjYWxsYmFja3MgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBNRElPIGJ1cyBpbnRlcmZhY2UuICBIb3dldmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsLCBpbiAqZXZlcnkqIHN0YW5kYXJkIG5ldHdvcmsgZHJpdmVyIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50IChsaWtlIFFFTVUgb3IgR0NFKSwgdGhlc2UgY2FsbGJhY2tzIGFyZSBuZXZlciBpbXBsZW1lbnRlZC4gVGhlIGNoZWNrcyB1c2luZyB0aG9zZSBjYWxsYmFja3MgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgYHBoeV9kZXRhY2hfaW50ZXJuYWxgIGVmZmVjdGl2ZWx5IGJlY29tZSBuby1vcHMuIEZvciBhbnkgc3RhbmRhcmQgTURJTyBidXMsIHRob3NlIHBvaW50ZXJzIGFyZSBOVUxMIGFuZCB0aGUgY29uZGl0aW9ucyBgaWYgKHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O25vdGlmeV9waHlfYXR0YWNoKWAgYW5kIGBpZiAobm90aWZ5X2J1cyAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O25vdGlmeV9waHlfZGV0YWNoKWAgYXJlIHNpbXBseSBieXBhc3NlZC4gVGhlIGVycm9yIHBhdGggdHdlYWtzIGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgcmVkaXJlY3QgdG8gYHBoeV9kZXRhY2hfaW50ZXJuYWxgIHdpdGggYG5vdGlmeV9idXNgIHNldCB0byBmYWxzZSwgd2hpY2ggZnVydGhlciBlbnN1cmVzIHRoZXNlIGNhbGxiYWNrcyBhcmUgc2tpcHBlZCwgc2luY2UgdGhlIGBidXMtJmd0O25vdGlmeV9waHlfZGV0YWNoYCBpcyBOVUxMLCB3aGljaCBtZWFucyBgbm90aWZ5X2J1c2AgaXMgYWx3YXlzIGZhbHNlLiBUaGUgb25seSBkcml2ZXIgdGhhdCBhY3R1YWxseSAqdXNlcyogdGhlc2UgbmV3IGNhbGxiYWNrcyBpcyB0aGUgYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGRyaXZlci4KCkdpdmVuIHRoYXQgdGhpcyBSZWFsdGVrIE1ESU8gYnVzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgUlRMODM4eC9SVEw5MzB4IHN3aXRjaCBTb0NzLCBhbmQgdGhlc2UgYXJlIHNwZWNpYWxpemVkIE1JUFMtYmFzZWQgaGFyZHdhcmUgY29tcG9uZW50cywgdGhleSBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIGNvbW1vbiB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gIE1vcmVvdmVyLCB0aGUgZHJpdmVyJiMzOTtzIHN1cHByZXNzaW9uIG9mIHN5c2ZzIGJpbmRpbmcgY29uZmlybXMgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggc3BlY2lmaWMgUmVhbHRlayBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgd2hpY2gsIGFnYWluLCBleGNsdWRlcyBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpUaGVyZWZvcmUsIHNpbmNlIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBhIHBsYXRmb3JtLXNwZWNpZmljIGRyaXZlciAoUmVhbHRlayBPdHRvIHN3aXRjaCkgYW5kIGludHJvZHVjZSBuby1vcCBiZWhhdmlvcnMgaW4gZ2VuZXJhbCwgdGhlcmUmIzM5O3Mgbm8gcmVhc29uIHRvIGNvbnNpZGVyIHRoaXMgcGF0Y2ggc2VyaWVzIGZ1enphYmxlIGluIGFueSBzdGFuZGFyZCBzZXR0aW5nLiAgVGhlIG1vZGlmaWNhdGlvbnMgaW4gdGhlIFBIWSBjb3JlIGFyZSBwYXNzaXZlIHVubGVzcyB0aGUgUmVhbHRlayBNRElPIGRyaXZlciBpcyBwcmVzZW50LCB3aGljaCBpcyBhIHZlcnkgc3BlY2lmaWMgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIFJUTDgzODAvUlRMODM5MCBzdXBwb3J0IGFuZCBNRElPIHBvbGxpbmcgaGFuZGxpbmcgdG8gdGhlIFJlYWx0ZWsgT3R0byBNRElPIGRyaXZlciAoZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jKSBhbG9uZyB3aXRoIGhlbHBlciBub3RpZmljYXRpb24gY2FsbGJhY2tzIGluIHRoZSBjb3JlIFBIWSBkZXZpY2UgbGF5ZXIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLiBUaGUgZHJpdmVyIGlzIGFuIE9GLW1hdGNoZWQgcGxhdGZvcm0gZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBzd2l0Y2ggU29DcyAoTUFDSF9SRUFMVEVLX1JUTCkgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZSBjb3JlIFBIWSBhZGRpdGlvbnMgYXJlIG5vLW9wIGhvb2tzIHVubGVzcyB0aGUgdW5kZXJseWluZyBNRElPIGJ1cyBkcml2ZXIgaW1wbGVtZW50cyB0aGUgY2FsbGJhY2tzLCB3aGljaCBvbmx5IHRoaXMgdW5yZWFjaGFibGUgZHJpdmVyIGRvZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgYWRkcyBSVEw4MzgwL1JUTDgzOTAgc3VwcG9ydCBhbmQgTURJTyBwb2xsaW5nIGhhbmRsaW5nIHRvIHRoZSBSZWFsdGVrIE90dG8gTURJTyBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykgYWxvbmcgd2l0aCBoZWxwZXIgbm90aWZpY2F0aW9uIGNhbGxiYWNrcyBpbiB0aGUgY29yZSBQSFkgZGV2aWNlIGxheWVyIChkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jKS4gVGhlIGRyaXZlciBpcyBhbiBPRi1tYXRjaGVkIHBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGUgY29yZSBQSFkgYWRkaXRpb25zIGFyZSBuby1vcCBob29rcyB1bmxlc3MgdGhlIHVuZGVybHlpbmcgTURJTyBidXMgZHJpdmVyIGltcGxlbWVudHMgdGhlIGNhbGxiYWNrcywgd2hpY2ggb25seSB0aGlzIHVucmVhY2hhYmxlIGRyaXZlciBkb2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU0OjU5LjkxODAyNjgyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzA1MjM4MzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgUlRMODM4MC9SVEw4MzkwIHN1cHBvcnQgYW5kIE1ESU8gcG9sbGluZyBoYW5kbGluZyB0byB0aGUgUmVhbHRlayBPdHRvIE1ESU8gZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpIGFsb25nIHdpdGggaGVscGVyIG5vdGlmaWNhdGlvbiBjYWxsYmFja3MgaW4gdGhlIGNvcmUgUEhZIGRldmljZSBsYXllciAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYykuIFRoZSBkcml2ZXIgaXMgYW4gT0YtbWF0Y2hlZCBwbGF0Zm9ybSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIGNvcmUgUEhZIGFkZGl0aW9ucyBhcmUgbm8tb3AgaG9va3MgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIE1ESU8gYnVzIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBjYWxsYmFja3MsIHdoaWNoIG9ubHkgdGhpcyB1bnJlYWNoYWJsZSBkcml2ZXIgZG9lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU0OjU5LjkxODAzMTE0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwNzEyMTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzljY2JhZmFmMGE5MmUxODM1Mzg1ODlkZjdmZDI1NmFhOTFmMTE2MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMTo1NDo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG5pbmRleCAyNzFlMDViYWU5YzU3Li42N2UwYjIzYTg0NzBlIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxcbkBAIC00LDcgKzQsNyBAQFxcbiAkaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sI1xcbiAkc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4gXFxuLXRpdGxlOiBSZWFsdGVrIFJUTDkzMDAgTURJTyBDb250cm9sbGVyXFxuK3RpdGxlOiBSZWFsdGVrIE90dG8gU3dpdGNoZXMgRXRoZXJuZXQgTURJTyBDb250cm9sbGVyXFxuIFxcbiBtYWludGFpbmVyczpcXG4gICAtIENocmlzIFBhY2toYW0gXFx1MDAzY2NocmlzLnBhY2toYW1AYWxsaWVkdGVsZXNpcy5jby5uelxcdTAwM2VcXG5AQCAtMTIsNiArMTIsMTYgQEAgbWFpbnRhaW5lcnM6XFxuIHByb3BlcnRpZXM6XFxuICAgY29tcGF0aWJsZTpcXG4gICAgIG9uZU9mOlxcbisgICAgICAtIGl0ZW1zOlxcbisgICAgICAgICAgLSBlbnVtOlxcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgxLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4Mi1tZGlvXFxuKyAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDgzODAtbWRpb1xcbisgICAgICAtIGl0ZW1zOlxcbisgICAgICAgICAgLSBlbnVtOlxcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkyLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5My1tZGlvXFxuKyAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDgzOTEtbWRpb1xcbiAgICAgICAtIGl0ZW1zOlxcbiAgICAgICAgICAgLSBlbnVtOlxcbiAgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAyYi1tZGlvXFxuQEAgLTI0LDYgKzM0LDggQEAgcHJvcGVydGllczpcXG4gICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMy1tZGlvXFxuICAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDkzMTEtbWRpb1xcbiAgICAgICAtIGVudW06XFxuKyAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MC1tZGlvXFxuKyAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5MS1tZGlvXFxuICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXFxuICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMS1tZGlvXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcgYi9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcXG5pbmRleCBhMDUyMjk4MzhjYjQ1Li5kNDQyNzhmMjZmYWJlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1xcbkBAIC0xNzIsMTEgKzE3MiwxMSBAQCBjb25maWcgTURJT19JUFE4MDY0XFxuIFxcdCAgaW50ZXJmYWNlIHVuaXRzIG9mIHRoZSBJUFE4MDY0IFNvQ1xcbiBcXG4gY29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXFxuLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDkzMDAgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4rXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuIFxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG4gXFx0aGVscFxcbiBcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGludGVyZmFjZSBmb3VuZCBpbiB0aGUgUmVhbHRla1xcbi1cXHQgIFJUTDkzMDAgZmFtaWx5IG9mIEV0aGVybmV0IHN3aXRjaGVzIHdpdGggaW50ZWdyYXRlZCBTb0MuXFxuK1xcdCAgUlRMODN4eC9SVEw5M3h4IGZhbWlseSBvZiBFdGhlcm5ldCBzd2l0Y2hlcyB3aXRoIGludGVncmF0ZWQgU29DLlxcbiBcXG4gY29uZmlnIE1ESU9fUkVHTUFQXFxuIFxcdHRyaXN0YXRlXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xcbmluZGV4IGFmZDUyYTFjZDdmODMuLjExZDA3OGVmOTQxY2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXFxuQEAgLTM1LDExICszNSw4NyBAQFxcbiAgKlxcbiAgKiBUaGUgZHJpdmVyIHdvcmtzIG91dCB0aGUgbWFwcGluZyBiYXNlZCBvbiB0aGUgTURJTyBidXMgZGVzY3JpYmVkIGluIGRldmljZSB0cmVlIGFuZCBwaGFuZGxlcyBvblxcbiAgKiB0aGUgZXRoZXJuZXQtcG9ydHMgcHJvcGVydHkuXFxuKyAqXFxuKyAqIFRoZSBkZXZpY2VzIGhhdmUgYSBoYXJkd2FyZSBwb2xsaW5nIHVuaXQgdGhhdCBydW5zIGluIHRoZSBiYWNrZ3JvdW5kIHdpdGhvdXQgYW55IENQVSBsb2FkLiBJdFxcbisgKiBjb25zdGFudGx5IHNjYW5zIHRoZSBNRElPIGJ1cyBhbmQgdGhlIGF0dGFjaGVkIFBIWXMgYW5kIHVwZGF0ZXMgdGhlIE1BQyBzdGF0dXMgcmVnaXN0ZXJzLlxcbisgKlxcbisgKiBIb3cgZG9lcyB0aGUgcG9sbGluZyB3b3JrP1xcbisgKlxcbisgKiBFYWNoIGRldmljZSBoYXMgYSBTTUlfUE9MTF9DVFJMIHJlZ2lzdGVyLiBBIHBlci1wb3J0IGJpdG1hc2sgZGVjaWRlcyBpZiB0aGUgaGFyZHdhcmUgcG9sbGluZyBvZlxcbisgKiB0aGUgYXNzb2NpYXRlZCBidXMvYWRkcmVzcyBpcyBhY3RpdmUgb3Igbm90LiBUaGUgaGFyZHdhcmUgcnVucyBhIHRpZ2h0IGxvb3Agb3ZlciB0aGlzIGFuZCBmb3JcXG4rICogZWFjaCBzZXQgcG9sbGluZyBiaXQgaXQgaXNzdWVzIGEgc3RhdHVzIGNoZWNrIGZvciB0aGUgUEhZLiBBdHRhY2hpbmcgYSBsb2dpYyBhbmFseXplciB0byB0aGVcXG4rICogTURJTyBidXMgb2YgYW4gUlRMODM4MCBhbmQgUlRMODM5MyBnaXZlcyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIChpbiBrZXJuZWwgbm90YXRpb24pOlxcbisgKlxcbisgKlxcdFJUTDgzODBcXHRcXHRcXHRcXHRSVEw4MzkzXFxuKyAqXFx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyAqXFx0cGh5X3dyaXRlKHBoeSwgMzEsIDB4MCk7XFx0cGh5X3JlYWQocGh5LCAwKTtcXG4rICpcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg3KTtcXHRwaHlfcmVhZChwaHksIDEpO1xcbisgKlxcdHBoeV93cml0ZShwaHksIDE0LCAweDNjKTtcXHRwaHlfcmVhZChwaHksIDQpO1xcbisgKlxcdHBoeV93cml0ZShwaHksIDEzLCAweDgwMDcpO1xcdHBoeV9yZWFkKHBoeSwgNSk7XFxuKyAqXFx0cGh5X3JlYWQocGh5LCAxNCk7XFx0XFx0cGh5X3JlYWQocGh5LCA2KTtcXG4rICpcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg3KTtcXHRwaHlfcmVhZChwaHksIDkpO1xcbisgKlxcdHBoeV93cml0ZShwaHksIDE0LCAweDNkKTtcXHRwaHlfcmVhZChwaHksIDEwKTtcXG4rICpcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg4MDA3KTtcXHRwaHlfcmVhZChwaHksIDE1KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDE0KTtcXHRcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg3KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDkpO1xcdFxcdHBoeV93cml0ZShwaHksIDE0LCAweDNjKTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDEwKTtcXHRcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDE1KTtcXHRcXHRwaHlfcmVhZChwaHksIDE0KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDApO1xcdFxcdHBoeV93cml0ZShwaHksIDEzLCAweDcpO1xcbisgKlxcdHBoeV9yZWFkKHBoeSwgMSk7XFx0XFx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2QpO1xcbisgKlxcdHBoeV9yZWFkKHBoeSwgNCk7XFx0XFx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4NDAwNyk7XFxuKyAqXFx0cGh5X3JlYWQocGh5LCA1KTtcXHRcXHRwaHlfcmVhZChwaHksIDE0KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDYpO1xcbisgKlxcbisgKiBBZnRlciBvbmUgUEhZIHN0YXR1cyBpcyByZWFkLCB0aGUgcG9sbGluZyBlbmdpbmUgZ29lcyBvdmVyIHRvIHRoZSBuZXh0IFBIWS4gSWYgb25lIGJ1cyBpcyBmdWxseVxcbisgKiBzY2FubmVkIGl0IHN3aXRjaGVzIG92ZXIgdG8gdGhlIG5leHQgYnVzLiBCYXNpY2FsbHkgdGhlIHBvbGxpbmcgc3lzdGVtIGlzIGFsd2F5cyBidXN5IGFuZCB0aGVcXG4rICogTUFDIHN0YXRlIGlzIHVwZGF0ZWQgaW4gcmVhbC10aW1lLlxcbisgKlxcbisgKiBUaGlzIGlzIGEgZ2xpbXBzZSBsb29rIGF0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSBwb2xsaW5nIGFuZCBsZWF2ZXMgb3V0IHRoZSBDNDUgY2FzZSBhbmQgdGhlIE1BQ1xcbisgKiByZWdpc3RlciB1cGRhdGUgbG9naWMgYWZ0ZXJ3YXJkcy4gSW1wb3J0YW50IHRvIG5vdGU6XFxuKyAqXFxuKyAqIC0gMTAwIE1CaXQgZG93bnNoaWZ0cyAoYnJva2VuIGNhYmxlcykgYXJlIGlkZW50aWZpZWQgYW5kIHByb3BhZ2F0ZWQgdG8gdGhlIE1BQyBjb3JyZWN0bHlcXG4rICogLSBBY2Nlc3MgdG8gTURJT19BTl9FRUVfQURWIGFuZCBNRElPX0FOX0VFRV9MUEFCTEUgd29ya3MgdmlhIEM0NSBvdmVyIEMyMi5cXG4rICogLSBJdCBpcyB1bmNsZWFyIGlmIHRoZXNlIHNlcXVlbmNlcyBjaGFuZ2UgZm9yIGRpZmZlcmVudCBQSFlzLlxcbisgKiAtIEFjY2VzcyB0byBSZWFsdGVrIHJlc2VydmVkIHJlZ2lzdGVyIDI2IChsaW5rIHNwZWVkKSBoYXMgbm90IHlldCBiZWVuIHNlZW4uXFxuKyAqXFxuKyAqIEhvdyBkb2VzIE1ESU8gYWNjZXNzIGZyb20ga2VybmVsIHdvcms/XFxuKyAqXFxuKyAqIFdoZW4gaXNzdWluZyBNRElPIGFjY2Vzc2VzIHZpYSBhbiBNTUlPIGJhc2VkIGludGVyZmFjZSB0aGUgZmluYWwgd3JpdGUgdG8gdGhlIGNvbW1hbmQgcmVnaXN0ZXJcXG4rICogc2V0cyBhIFxcXCJydW4gY29tbWFuZCBub3dcXFwiIGJpdC4gQmV0d2VlbiB0d28gcG9sbGluZyBzZXF1ZW5jZXMgZm9yIGRpZmZlcmVudCBQSFlzIHRoZSBoYXJkd2FyZVxcbisgKiBjaGVja3MgaWYgYSB1c2VyIGNvbW1hbmQgbmVlZHMgdG8gcnVuIGFuZCBzZW5kcyBpdCBvbnRvIHRoZSBidXMuIEFmdGVyd2FyZHMgaXQgc2ltcGx5IGNvbnRpbnVlc1xcbisgKiBpdHMgcG9sbGluZyB3b3JrLiBJbnNwZWN0aW5nIHRoZSBjb21tYW5kIHNlcXVlbmNlIGZvciBhIHBhZ2VkIHdyaXRlIG9uIHRoZSBsb2dpYyBhbmFseXplciBnaXZlczpcXG4rICpcXG4rICpcXHRSVEw4MzgwXFx0XFx0XFx0XFx0UlRMODM5M1xcbisgKlxcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisgKlxcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcXHRwaHlfd3JpdGUocGh5LCAzMSwgcGFnZSk7XFxuKyAqXFx0cGh5X3dyaXRlKHBoeSwgcmVnLCB2YWx1ZSk7XFx0cGh5X3dyaXRlKHBoeSwgcmVnLCB2YWx1ZSk7XFxuKyAqXFx0XFx0XFx0XFx0XFx0cGh5X3dyaXRlKHBoeSwgMzEsIDApO1xcbisgKlxcbisgKiBXaGF0IGRvZXMgdGhpcyBtZWFuP1xcbisgKlxcbisgKiBUaGVyZSBhcmUgc2xpZ2h0IGRpZmZlcmVuY2VzIGluIHBvbGxpbmcgYW5kIFBIWSBhY2Nlc3MgYmV0d2VlbiB0aGUgbW9kZWxzIGJ1dCB0aGUgY2hhbGxlbmdlXFxuKyAqIHN0YXlzIHRoZSBzYW1lLiBPbiB0aGUgb25lIGhhbmQgdGhhdCBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIE1BQyBsYXllciwgb24gdGhlIG90aGVyIGhhbmQgaXRcXG4rICogaGFzIHNvbWUgaW1wbGljYXRpb25zIGZvciB0aGUga2VybmVsIFBIWSBzdWJzeXN0ZW0uXFxuKyAqXFxuKyAqIC0gV2l0aG91dCB0aGUgcG9sbGluZyBhbmQgYSBwcm9wZXIgTUFDIHN0YXR1cywgc29tZSBvZiB0aGUgbGluayBoYW5kbGluZyBmZWF0dXJlcyBkbyBub3Qgd29yay5cXG4rICogICBFc3BlY2lhbGx5IGFuIHVucG9wdWxhdGVkIE1BQ19MSU5LX1NUUyByZWdpc3RlciBjYW5jZWxzIG9wZXJhdGlvbnMgdG8gb3RoZXIgTUFDIHJlZ2lzdGVycy5cXG4rICogLSBUaGUgUmVhbHRlayBwYWdlIHJlZ2lzdGVyIDMxIGlzIG1hZ2ljYWxseSBtb2RpZmllZCBpbiB0aGUgYmFja2dyb3VuZCBzbyB0aGF0IHBvbGxpbmcgd2lsbFxcbisgKiAgIHJlYWQgdGhlIHJpZ2h0IGRhdGEuIE9uIHRoZSBSVEw4Mzh4IHBvbGxpbmcgc2ltcGx5IHJlc2V0cyBpdCB0byB6ZXJvLiBPdGhlciBkZXZpY2VzIHNlZW1cXG4rICogICB0byB0cmFjayB0aGUgcGFnZSBhY2Nlc3MgXFxcIm1hZ2ljYWxseVxcXCIgaW4gdGhlIGJhY2tncm91bmQuXFxuKyAqIC0gQSBDNDUgb3ZlciBDMjIga2VybmVsIGFjY2VzcyBzZXF1ZW5jZSBpcyBtb3N0IGxpa2VseSB0byBmYWlsIGJlY2F1c2UgY2hhbmNlcyBhcmUgaGlnaCB0aGF0XFxuKyAqICAgdGhlIHBvbGxpbmcgZW5naW5lIG92ZXJ3cml0ZXMgcmVnaXN0ZXJzIDEzLzE0IGluIGJldHdlZW4uXFxuKyAqIC0gUEhZIGZpcm13YXJlIGxvYWRpbmcgY2FuIGhhdmUgaXNzdWVzLiBFc3BlY2lhbGx5IGlmIGEgUEhZIGlzIGRlc2lnbmVkIHRvIGV4cGVjdCBhIGNsZWFuXFxuKyAqICAgc2VxdWVuY2Ugb2YgcmVnaXN0ZXJzIGFuZCB2YWx1ZXMgd2l0aG91dCBkZXZpYXRpb24uXFxuKyAqIC0gQW4gYWNjZXNzIHRvIG9uZSBQSFkgd2lsbCBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IGZyZWUgc2xvdCBvZiB0aGUgcG9sbGluZyBlbmdpbmUuXFxuKyAqXFxuKyAqIENvbmNsdXNpb246IFRoZSBSZWFsdGVrIE1ESU8gYnVzIGRyaXZlciBQSFkgYWNjZXNzIG11c3Qga25vdyBhbmQgaGFuZGxlIGFueSBpbnRlcmZlcmVuY2UgdGhhdFxcbisgKiBhcmlzZXMgZnJvbSB0aGUgYWJvdmUgZGVzY3JpYmVkIGhhcmR3YXJlIHBvbGxpbmcuXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRtYXAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdHMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZmluZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXFx1MDAzZVxcbkBAIC01MCw2ICsxMjYsNTAgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gXFxuKyNkZWZpbmUgUlRMODM4MF9OVU1fQlVTRVNcXHRcXHRcXHQxXFxuKyNkZWZpbmUgUlRMODM4MF9OVU1fUEFHRVNcXHRcXHRcXHQ0MDk2XFxuKyNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcXHRcXHRcXHQyOFxcbisjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXFx0XFx0XFx0MHhhMTAwXFxuKyNkZWZpbmUgICBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORVxcdFxcdEJJVCgxNSlcXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFxcdFxcdDB4YTFiOFxcbisjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXFx0XFx0MHhhMWJjXFxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSXFx0XFx0R0VOTUFTSygyNCwgMjApXFxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1BBUktfUEFHRVxcdFxcdEdFTk1BU0soMTksIDE1KVxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0VcXHRcXHRHRU5NQVNLKDE0LCAzKVxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9XUklURVxcdFxcdEJJVCgyKVxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9SRUFEXFx0XFx0XFx0MFxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0M0NVxcdFxcdEJJVCgxKVxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMlxcdFxcdDBcXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfRkFJTFxcdFxcdFxcdDAgLyogbm8gZmFpbCBpbmRpY2F0b3IgKi9cXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMlxcdFxcdDB4YTFjMFxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEFcXHRcXHRHRU5NQVNLKDMxLCAxNilcXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfREFUQVxcdFxcdFxcdEdFTk1BU0soMTUsIDApXFxuKyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzNcXHRcXHQweGExYzRcXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9QT0xMX0NUUkxcXHRcXHRcXHQweGExN2NcXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTFxcdFxcdDB4YTFjOFxcbitcXG4rI2RlZmluZSBSVEw4MzkwX05VTV9CVVNFU1xcdFxcdFxcdDJcXG4rI2RlZmluZSBSVEw4MzkwX05VTV9QQUdFU1xcdFxcdFxcdDgxOTJcXG4rI2RlZmluZSBSVEw4MzkwX05VTV9QT1JUU1xcdFxcdFxcdDUyXFxuKyNkZWZpbmUgUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMXFx0XFx0MHgwM2VjXFxuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkxcXHRcXHQweDAzZGNcXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFJcXHRcXHRHRU5NQVNLKDksIDUpXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRVxcdFxcdEdFTk1BU0soMjIsIDEwKVxcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9GQUlMXFx0XFx0XFx0QklUKDEpXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1dSSVRFXFx0XFx0QklUKDMpXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1JFQURcXHRcXHRcXHQwXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1XFx0XFx0QklUKDIpXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyXFx0XFx0MFxcbisjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX0NUUkxcXHRcXHRcXHQweDAzZTBcXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0VcXHRcXHRHRU5NQVNLKDgsIDApXFxuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMXFx0XFx0MHgwM2YwXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0lOREFUQVxcdFxcdEdFTk1BU0soMzEsIDE2KVxcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBXFx0XFx0XFx0R0VOTUFTSygxNSwgMClcXG4rI2RlZmluZSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTFxcdFxcdFxcdDB4MDNmNFxcbisjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1dcXHRcXHQweDAzZTRcXG4rI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSFxcdFxcdDB4MDNlOFxcbisjZGVmaW5lIFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMXFx0XFx0MHgwM2ZjXFxuK1xcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXFx0XFx0XFx0NFxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BBR0VTXFx0XFx0XFx0NDA5NlxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BPUlRTXFx0XFx0XFx0MjhcXG5AQCAtNzAsNiArMTkwLDcgQEBcXG4gI2RlZmluZSAgIFJUTDkzMDBfUEhZX0NUUkxfSU5EQVRBXFx0XFx0R0VOTUFTSygzMSwgMTYpXFxuICNkZWZpbmUgICBSVEw5MzAwX1BIWV9DVFJMX0RBVEFcXHRcXHRcXHRHRU5NQVNLKDE1LCAwKVxcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zXFx0XFx0MHhjYjdjXFxuKyNkZWZpbmUgUlRMOTMwMF9TTUlfUE9MTF9DVFJMXFx0XFx0XFx0MHhjYTkwXFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkxcXHRcXHQweGNiODBcXG4gXFxuICNkZWZpbmUgUlRMOTMxMF9OVU1fQlVTRVNcXHRcXHRcXHQ0XFxuQEAgLTk1LDEyICsyMTYsMTYgQEBcXG4gI2RlZmluZSAgIFJUTDkzMTBfUEhZX0NUUkxfSU5EQVRBXFx0XFx0R0VOTUFTSygxNSwgMClcXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfTU1EX0NUUkxcXHQweDBjMThcXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9QT1JUX0FERFJfQ1RSTFxcdFxcdDB4MGM3NFxcbisjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMXFx0XFx0MHgwY2NjXFxuICNkZWZpbmUgUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTFxcdFxcdDB4MGM5Y1xcbiBcXG4gI2RlZmluZSBQSFlfQ1RSTF9DTURcXHRcXHRcXHRcXHRCSVQoMClcXG4gI2RlZmluZSBQSFlfQ1RSTF9NTURfREVWQURcXHRcXHRcXHRHRU5NQVNLKDIwLCAxNilcXG4gI2RlZmluZSBQSFlfQ1RSTF9NTURfUkVHXFx0XFx0XFx0R0VOTUFTSygxNSwgMClcXG4gXFxuKyNkZWZpbmUgUlRMX1ZFTkRPUl9JRFxcdFxcdFxcdFxcdDB4MDAxY2M4MDBcXG4rI2RlZmluZSBSVExfUEFHRV9TRUxFQ1RcXHRcXHRcXHRcXHQzMVxcbitcXG4gI2RlZmluZSBNQVBfQUREUlNfUEVSX1JFR1xcdFxcdFxcdDZcXG4gI2RlZmluZSBNQVBfQklUU19QRVJfQUREUlxcdFxcdFxcdDVcXG4gI2RlZmluZSBNQVBfQklUU19QRVJfQlVTXFx0XFx0XFx0MlxcbkBAIC0xMjYsNiArMjUxLDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7XFxuIFxcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcXG4gXFx0c3RydWN0IG11dGV4IGxvY2s7IC8qIHByb3RlY3QgSFcgYWNjZXNzICovXFxuIFxcdERFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpO1xcbitcXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xcbiBcXHR1OCBzbWlfYnVzW01BWF9QT1JUU107XFxuIFxcdHU4IHNtaV9hZGRyW01BWF9QT1JUU107XFxuIFxcdGJvb2wgc21pX2J1c19pc19jNDVbTUFYX1NNSV9CVVNTRVNdO1xcbkBAIC0xNDIsNiArMjY4LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7XFxuIFxcdHU4IG51bV9idXNlcztcXG4gXFx0dTggbnVtX3BvcnRzO1xcbiBcXHR1MTYgbnVtX3BhZ2VzO1xcbitcXHR1MzIgcG9sbF9jdHJsO1xcbiBcXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcXG4gXFx0aW50ICgqcmVhZF9jMjIpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTtcXG4gXFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xcbkBAIC0xNzcsNiArMzA0LDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpvdHRvX2VtZGlvX2J1c190b19wcml2KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIFxcdHJldHVybiBjaGFuLVxcdTAwM2Vwcml2O1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCBpbnQgcG9ydCwgYm9vbCBhY3RpdmUpXFxuK3tcXG4rXFx0cmV0dXJuIHJlZ21hcF9hc3NpZ25fYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZXBvbGxfY3RybCArIChwb3J0IC8gMzIpICogNCxcXG4rXFx0XFx0XFx0XFx0ICBCSVQocG9ydCAlIDMyKSwgYWN0aXZlKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhKVxcbiB7XFxuQEAgLTE4NSw5ICszMTgsOSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxcbiBcXHR1MzIgY21kc3RhdGU7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHQvKiBEZWZlbnNpdmUgcHJlIGNoZWNrIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyBob3JyaWJsZSB3cm9uZyAqL1xcbitcXHQvKiBEZWZlbnNpdmUgcHJlIGNoZWNrIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyBob3JyaWJseSB3cm9uZyAqL1xcbiBcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBpbmZvLVxcdTAwM2VjbWRfcmVncy5jMjJfZGF0YSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFxcdTAwMjYgUEhZX0NUUkxfQ01EKSwgMTAsIDEwMDApO1xcbitcXHRcXHRcXHRcXHQgICAgICAgY21kc3RhdGUsICEoY21kc3RhdGUgXFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMDApO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMjI3LDcgKzM2MCw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19ydW5fY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbiBcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBpbmZvLVxcdTAwM2VjbWRfcmVncy5jMjJfZGF0YSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFxcdTAwMjYgUEhZX0NUUkxfQ01EKSwgMTAsIDEwMDApO1xcbitcXHRcXHRcXHRcXHQgICAgICAgY21kc3RhdGUsICEoY21kc3RhdGUgXFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMDApO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMjY0LDEzICszOTcsMTIzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG4gXFx0cmV0dXJuIG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZWNtZF93cml0ZSwgY21kX2RhdGEpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4rXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcXG4rXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVxcdTAwM2VwYWdlW3BvcnRdKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuK1xcdFxcdFxcdFxcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4rXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcXG4rXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVxcdTAwM2VwYWdlW3BvcnRdKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcXG4rXFx0XFx0LnBvcnRfbWFza19sb3dcXHQ9IEJJVChwb3J0KSxcXG4rXFx0fTtcXG4rXFxuK1xcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbitcXHRcXHRcXHRcXHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbitcXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEsXFxuK1xcdFxcdFxcdFxcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuK1xcdFxcdFxcdFxcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuK3tcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuK1xcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuK1xcdFxcdFxcdFxcdCAgRklFTERfUFJFUChQSFlfQ1RSTF9NTURfUkVHLCByZWdudW0pLFxcbitcXHRcXHQuaW9fZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxcbitcXHRcXHQucG9ydF9tYXNrX2xvd1xcdD0gQklUKHBvcnQpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuK3tcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuK1xcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4rXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVxcdTAwM2VwYWdlW3BvcnRdKSxcXG4rXFx0XFx0LmV4dF9wYWdlXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0UsIDB4MWZmKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuK1xcdFxcdFxcdFxcdCAgIFJUTDgzOTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4rXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0pLFxcbitcXHRcXHQuZXh0X3BhZ2VcXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLFxcbitcXHRcXHQuaW9fZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxcbitcXHRcXHQucG9ydF9tYXNrX2hpZ2hcXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXFx1MDAzZVxcdTAwM2UgMzIpLFxcbitcXHRcXHQucG9ydF9tYXNrX2xvd1xcdD0gKHUzMikoQklUX1VMTChwb3J0KSksXFxuK1xcdH07XFxuK1xcbitcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG4rXFx0XFx0XFx0XFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4rXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4rXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXFxuK1xcdFxcdC5pb19kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcXG4rXFx0fTtcXG4rXFxuK1xcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhLFxcbitcXHRcXHRcXHRcXHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbitcXHRcXHRcXHRcXHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbitcXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcXG4rXFx0XFx0LnBvcnRfbWFza19oaWdoXFx0PSAodTMyKShCSVRfVUxMKHBvcnQpIFxcdTAwM2VcXHUwMDNlIDMyKSxcXG4rXFx0XFx0LnBvcnRfbWFza19sb3dcXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuIHtcXG4gXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4gXFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuIFxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4gXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8XFxuLVxcdFxcdFxcdFxcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0pLFxcbiBcXHRcXHQuaW9fZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksXFxuIFxcdH07XFxuIFxcbkBAIC0yODQsNyArNTI3LDcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxcbiBcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4gXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbiBcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcXG4tXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksXFxuK1xcdFxcdFxcdFxcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi1cXHUwMDNlcGFnZVtwb3J0XSksXFxuIFxcdFxcdC5pb19kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXFxuIFxcdFxcdC5wb3J0X21hc2tfbG93XFx0PSBCSVQocG9ydCksXFxuIFxcdH07XFxuQEAgLTMyNCw3ICs1NjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdVxcbiBcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4gXFx0XFx0LmJyb2FkY2FzdFxcdD0gRklFTERfUFJFUChSVEw5MzEwX0JDX1BPUlRfSUQsIHBvcnQpLFxcbiBcXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLVxcdFxcdFxcdFxcdCAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0pLFxcbiBcXHR9O1xcbiBcXG4gXFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuQEAgLTMzNiw3ICs1NzksNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sXFxuIFxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuIFxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbiBcXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLVxcdFxcdFxcdFxcdCAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0pLFxcbiBcXHRcXHQuaW9fZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxcbiBcXHRcXHQucG9ydF9tYXNrX2hpZ2hcXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXFx1MDAzZVxcdTAwM2UgMzIpLFxcbiBcXHRcXHQucG9ydF9tYXNrX2xvd1xcdD0gKHUzMikoQklUX1VMTChwb3J0KSksXFxuQEAgLTM3OCwyNyArNjIxLDUzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxcbiBcXHRpbnQgcmV0LCBwb3J0O1xcbiBcXHR1MzIgdmFsdWU7XFxuIFxcbitcXHRpZiAocmVnbnVtID09IE1JSV9NTURfQ1RSTCB8fCByZWdudW0gPT0gTUlJX01NRF9EQVRBKSB7XFxuK1xcdFxcdGRldl93YXJuX29uY2UoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgICAgICBcXFwiQzQ1IG92ZXIgQzIyIHJlYWQgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4gXFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbiBcXHRpZiAocG9ydCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBwb3J0O1xcbiBcXG4tXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaylcXG4rXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaykge1xcbitcXHRcXHRpZiAocmVnbnVtID09IFJUTF9QQUdFX1NFTEVDVClcXG4rXFx0XFx0XFx0cmV0dXJuIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF07XFxuK1xcbiBcXHRcXHRyZXQgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VyZWFkX2MyMihidXMsIHBvcnQsIHJlZ251bSwgXFx1MDAyNnZhbHVlKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHJldCA/IHJldCA6IHZhbHVlO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxcbitcXHRcXHRcXHRcXHR1MTYgdmFsdWUpXFxuIHtcXG4gXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4gXFx0aW50IHJldCwgcG9ydDtcXG4gXFxuK1xcdGlmIChyZWdudW0gPT0gTUlJX01NRF9DVFJMIHx8IHJlZ251bSA9PSBNSUlfTU1EX0RBVEEpIHtcXG4rXFx0XFx0ZGV2X3dhcm5fb25jZShcXHUwMDI2YnVzLVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdCAgICAgIFxcXCJDNDUgb3ZlciBDMjIgd3JpdGUgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4gXFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbiBcXHRpZiAocG9ydCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBwb3J0O1xcbiBcXG4tXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaylcXG4rXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaykge1xcbitcXHRcXHRpZiAocmVnbnVtID09IFJUTF9QQUdFX1NFTEVDVCkge1xcbitcXHRcXHRcXHRpZiAodmFsdWUgXFx1MDAzZT0gUkFXX1BBR0UocHJpdikpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFnZVtwb3J0XSA9IHZhbHVlO1xcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0cmV0ID0gcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNld3JpdGVfYzIyKGJ1cywgcG9ydCwgcmVnbnVtLCB2YWx1ZSk7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtNDcxLDYgKzc0MCwxNSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4re1xcbitcXHQvKlxcbitcXHQgKiBQSFlfUEFUQ0hfRE9ORSBlbmFibGVzIFBIWSBjb250cm9sIHZpYSBTb0MuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIFBIWSBhY2Nlc3MsIGluY2x1ZGluZ1xcbitcXHQgKiBwYXRjaGluZyBhbmQgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBQSFlzIGFyZSBwcm9iZWQuXFxuK1xcdCAqL1xcbitcXHRyZXR1cm4gcmVnbWFwX3NldF9iaXRzKHByaXYtXFx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbiB7XFxuIFxcdHUzMiBnbGJfY3RybF9tYXNrID0gMCwgZ2xiX2N0cmxfdmFsID0gMDtcXG5AQCAtNTA3LDYgKzc4NSw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpbnQgcG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQocGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHIpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlcHJpdjtcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IGNoYW4tXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAocG9ydCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0LyogQWxsIHN1YnNlcXVlbnQgYnVzIG9wZXJhdGlvbnMgd2lsbCBmYWlsICovXFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiUEhZIGlzIG5vdCBtYXBwZWQgdG8gYSB2YWxpZCBzd2l0Y2ggcG9ydFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiBwb3J0O1xcbitcXHR9XFxuK1xcbitcXHQvKiBcXFwic3luY1xcXCIgcGFnZSBpbiBjYXNlIG9mIHByZXZpb3VzbHkgZmFpbGVkIGF0dGFjaG1lbnQgKi9cXG4rXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaylcXG4rXFx0XFx0cHJpdi1cXHUwMDNlcGFnZVtwb3J0XSA9IDA7XFxuK1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZXNtaV9idXNfaXNfYzQ1W2NoYW4tXFx1MDAzZW1kaW9fYnVzXSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIXBoeV9pZF9jb21wYXJlX3ZlbmRvcihwaHlkZXYtXFx1MDAzZXBoeV9pZCwgUlRMX1ZFTkRPUl9JRCkpIHtcXG4rXFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJPbmx5IFJlYWx0ZWsgUEhZcyBhbGxvd2VkIG9uIEMyMiBidXNcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgdHJ1ZSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcXG4rXFx0aW50IHBvcnQ7XFxuK1xcbitcXHRwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihwaHlkZXYtXFx1MDAzZW1kaW8uYnVzKTtcXG4rXFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQocGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHIpO1xcbitcXG4rXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHQvKiBcXFwic3luY1xcXCIgcGFnZSBmb3IgbmV4dCBhdHRhY2htZW50ICovXFxuK1xcdHNjb3BlZF9ndWFyZChtdXRleCwgXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spXFxuK1xcdFxcdHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0gPSAwO1xcbitcXG4rXFx0aWYgKG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSkpXFxuK1xcdFxcdGRldl9lcnIoYnVzLVxcdTAwM2VwYXJlbnQsIFxcXCJmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSlcXG4ge1xcbkBAIC01MjgsMTQgKzg1MSwxNCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdGJ1cy1cXHUwMDNlbmFtZSA9IFxcXCJSZWFsdGVrIFN3aXRjaCBNRElPIEJ1c1xcXCI7XFxuLVxcdGlmIChwcml2LVxcdTAwM2VzbWlfYnVzX2lzX2M0NVttZGlvX2J1c10pIHtcXG4tXFx0XFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XFxuLVxcdFxcdGJ1cy1cXHUwMDNld3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdGJ1cy1cXHUwMDNlcmVhZCA9IG90dG9fZW1kaW9fcmVhZF9jMjI7XFxuLVxcdFxcdGJ1cy1cXHUwMDNld3JpdGUgPSBvdHRvX2VtZGlvX3dyaXRlX2MyMjtcXG4tXFx0fVxcbitcXHRidXMtXFx1MDAzZXJlYWRfYzQ1ID0gb3R0b19lbWRpb19yZWFkX2M0NTtcXG4rXFx0YnVzLVxcdTAwM2V3cml0ZV9jNDUgPSBvdHRvX2VtZGlvX3dyaXRlX2M0NTtcXG4rXFx0YnVzLVxcdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcXG4rXFx0YnVzLVxcdTAwM2V3cml0ZSA9IG90dG9fZW1kaW9fd3JpdGVfYzIyO1xcbiBcXHRidXMtXFx1MDAzZXBhcmVudCA9IGRldjtcXG4rXFx0YnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7XFxuK1xcdGJ1cy1cXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoO1xcbitcXG4gXFx0Y2hhbiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG4gXFx0Y2hhbi1cXHUwMDNlbWRpb19idXMgPSBtZGlvX2J1cztcXG4gXFx0Y2hhbi1cXHUwMDNlcHJpdiA9IHByaXY7XFxuQEAgLTY1Miw2ICs5NzUsMTkgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb19pbml0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4re1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0Zm9yIChpbnQgcG9ydCA9IDA7IHBvcnQgXFx1MDAzYyBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VudW1fcG9ydHM7IHBvcnQrKykge1xcbitcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgZmFsc2UpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5AQCAtNjcxLDYgKzEwMDcsMTAgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVnbWFwKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cXHUwMDNlcmVnbWFwKTtcXG4gXFxuK1xcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4gXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7XFxuIFxcbiBcXHRlcnIgPSBvdHRvX2VtZGlvX21hcF9wb3J0cyhkZXYpO1xcbkBAIC02OTYsNiArMTAzNiw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xcbitcXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDgzODBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxcbitcXHQuY21kX2ZhaWwgPSBSVEw4MzgwX1BIWV9DVFJMX0ZBSUwsXFxuK1xcdC5jbWRfcmVhZCA9IFJUTDgzODBfUEhZX0NUUkxfUkVBRCxcXG4rXFx0LmNtZF93cml0ZSA9IFJUTDgzODBfUEhZX0NUUkxfV1JJVEUsXFxuK1xcdC5jbWRfcmVncyA9IHtcXG4rXFx0XFx0LmMyMl9kYXRhID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEsXFxuK1xcdFxcdC5jNDVfZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zLFxcbitcXHRcXHQuaW9fZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8yLFxcbitcXHRcXHQucG9ydF9tYXNrX2xvdyA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wLFxcbitcXHR9LFxcbitcXHQubnVtX2J1c2VzID0gUlRMODM4MF9OVU1fQlVTRVMsXFxuK1xcdC5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUyxcXG4rXFx0Lm51bV9wb3J0cyA9IFJUTDgzODBfTlVNX1BPUlRTLFxcbitcXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxcbitcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxcbitcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXFxuK1xcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcXG4rXFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIsXFxuK1xcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzQ1LFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XFxuK1xcdC5jbWRfZmFpbCA9IFJUTDgzOTBfUEhZX0NUUkxfRkFJTCxcXG4rXFx0LmNtZF9yZWFkID0gUlRMODM5MF9QSFlfQ1RSTF9SRUFELFxcbitcXHQuY21kX3dyaXRlID0gUlRMODM5MF9QSFlfQ1RSTF9XUklURSxcXG4rXFx0LmNtZF9yZWdzID0ge1xcbitcXHRcXHQuYnJvYWRjYXN0ID0gUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMLFxcbitcXHRcXHQuYzIyX2RhdGEgPSBSVEw4MzkwX1BIWVJFR19BQ0NFU1NfQ1RSTCxcXG4rXFx0XFx0LmM0NV9kYXRhID0gUlRMODM5MF9QSFlSRUdfTU1EX0NUUkwsXFxuK1xcdFxcdC5leHRfcGFnZSA9IFJUTDgzOTBfUEhZUkVHX0NUUkwsXFxuK1xcdFxcdC5pb19kYXRhID0gUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMLFxcbitcXHRcXHQucG9ydF9tYXNrX2xvdyA9IFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1csXFxuK1xcdFxcdC5wb3J0X21hc2tfaGlnaCA9IFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdILFxcbitcXHR9LFxcbitcXHQubnVtX2J1c2VzID0gUlRMODM5MF9OVU1fQlVTRVMsXFxuK1xcdC5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUyxcXG4rXFx0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxcbitcXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXFxuK1xcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMixcXG4rXFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1LFxcbitcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcXG4rXFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUsXFxuK307XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcXG4gXFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw5MzAwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcXG4gXFx0LmJ1c19tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMLFxcbkBAIC03MTEsNiArMTA5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xcbiBcXHQubnVtX2J1c2VzID0gUlRMOTMwMF9OVU1fQlVTRVMsXFxuIFxcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcXG4gXFx0Lm51bV9wYWdlcyA9IFJUTDkzMDBfTlVNX1BBR0VTLFxcbitcXHQucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLFxcbiBcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcXG5AQCAtNzM2LDYgKzExMjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcXG4gXFx0Lm51bV9idXNlcyA9IFJUTDkzMTBfTlVNX0JVU0VTLFxcbiBcXHQubnVtX3BhZ2VzID0gUlRMOTMxMF9OVU1fUEFHRVMsXFxuIFxcdC5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUyxcXG4rXFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxcbiBcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcXG5AQCAtNzQ0LDYgKzExMzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG90dG9fZW1kaW9faWRzW10gPSB7XFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzgwLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlYWx0ZWsscnRsODM5MS1tZGlvXFxcIiwgLmRhdGEgPSBcXHUwMDI2b3R0b19lbWRpb184MzkwX2luZm8gfSxcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZWFsdGVrLHJ0bDkzMDEtbWRpb1xcXCIsIC5kYXRhID0gXFx1MDAyNm90dG9fZW1kaW9fOTMwMF9pbmZvIH0sXFxuIFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzExLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxcbiBcXHR7fVxcbkBAIC03NTUsMTAgKzExNDQsMTEgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb3R0b19lbWRpb19kcml2ZXIgPSB7XFxuIFxcdC5kcml2ZXIgPSB7XFxuIFxcdFxcdC5uYW1lID0gXFxcIm1kaW8tcnRsOTMwMFxcXCIsXFxuIFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG90dG9fZW1kaW9faWRzLFxcbitcXHRcXHQuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsXFxuIFxcdH0sXFxuIH07XFxuIFxcbiBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTtcXG4gXFxuLU1PRFVMRV9ERVNDUklQVElPTihcXFwiUlRMOTMwMCBNRElPIGRyaXZlclxcXCIpO1xcbitNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlJUTDgzeHgvUlRMOTN4eCBNRElPIGRyaXZlclxcXCIpO1xcbiBNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uZGU1OWQ4NjRiMDYwOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzM0LDYgKzE3MzQsMTA0IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXFxuIFxcdHJldHVybiBwaHlkcnYtXFx1MDAzZWNvbmZpZ19pbnRyIFxcdTAwMjZcXHUwMDI2IHBoeWRydi1cXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIHBoeV9kZXRhY2hfaW50ZXJuYWwgLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuKyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbisgKiBAbm90aWZ5X2J1czogd2hldGhlciB0byBub3RpZnkgdGhlIE1ESU8gYnVzIGFib3V0IHRoZSBQSFkgZGV0YWNoXFxuKyAqXFxuKyAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcXG4rICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgcGh5X2RldGFjaF9pbnRlcm5hbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIG5vdGlmeV9idXMpXFxuK3tcXG4rXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2O1xcbitcXHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcXG4rXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4rXFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZWRldmxpbmspIHtcXG4rXFx0XFx0ZGV2aWNlX2xpbmtfZGVsKHBoeWRldi1cXHUwMDNlZGV2bGluayk7XFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IE5VTEw7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZXN5c2ZzX2xpbmtzKSB7XFxuK1xcdFxcdGlmIChkZXYpXFxuK1xcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZkZXYtXFx1MDAzZWRldi5rb2JqLCBcXFwicGh5ZGV2XFxcIik7XFxuK1xcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosIFxcXCJhdHRhY2hlZF9kZXZcXFwiKTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldilcXG4rXFx0XFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYua29iaixcXG4rXFx0XFx0XFx0XFx0ICBcXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XFxuK1xcbitcXHRwaHlfc3VzcGVuZChwaHlkZXYpO1xcbitcXG4rXFx0aWYgKG5vdGlmeV9idXMgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZW5vdGlmeV9waHlfZGV0YWNoKHBoeWRldik7XFxuK1xcbitcXHRpZiAoZGV2KSB7XFxuK1xcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xcbitcXG4rXFx0XFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XFxuK1xcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcXG4rXFx0XFx0ICovXFxuK1xcdFxcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YpO1xcbitcXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuK1xcdFxcdGlmIChod3Byb3YgXFx1MDAyNlxcdTAwMjYgaHdwcm92LVxcdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XFxuK1xcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZWh3cHJvdiwgTlVMTCk7XFxuK1xcdFxcdFxcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcXG4rXFx0XFx0cGh5X2xpbmtfdG9wb19kZWxfcGh5KGRldiwgcGh5ZGV2KTtcXG4rXFx0fVxcbitcXG4rXFx0cGh5ZGV2LVxcdTAwM2VwaHlfbGlua19jaGFuZ2UgPSBOVUxMO1xcbitcXHRwaHlkZXYtXFx1MDAzZXBoeWxpbmsgPSBOVUxMO1xcbitcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxcbitcXHRcXHRtb2R1bGVfcHV0KHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyLVxcdTAwM2Vvd25lcik7XFxuK1xcbitcXHQvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXRcXG4rXFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXFxuK1xcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUncyBhIGNoYW5jZSBhXFxuK1xcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxcbitcXHQgKi9cXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xcbitcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYpO1xcbitcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbitcXHR9XFxuK1xcbitcXHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbitcXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWRcXG4rXFx0ICogYSB1c2UtYWZ0ZXItZnJlZSBidWcgYnkgcmVhZGluZyB0aGUgdW5kZXJseWluZyBidXMgZmlyc3QuXFxuK1xcdCAqL1xcbitcXHRidXMgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzO1xcbitcXG4rXFx0cHV0X2RldmljZShcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuK1xcdGlmIChkZXYpXFxuK1xcdFxcdG5kZXZfb3duZXIgPSBkZXYtXFx1MDAzZWRldi5wYXJlbnQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXI7XFxuK1xcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuK1xcdFxcdG1vZHVsZV9wdXQoYnVzLVxcdTAwM2Vvd25lcik7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZVxcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4rICpcXG4rICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxcbisgKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXFxuKyAqL1xcbit2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHQvKiBjbGVhbnVwIGluY2x1ZGluZyBidXMgbm90aWZpY2F0aW9uICovXFxuK1xcdHBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCB0cnVlKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MKHBoeV9kZXRhY2gpO1xcbitcXG4gLyoqXFxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuQEAgLTE4NzYsNiArMTk3NCwxMiBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBlcnJvcjtcXG4gXFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCkge1xcbitcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaChwaHlkZXYpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRnb3RvIGVycm9yO1xcbitcXHR9XFxuK1xcbiBcXHRwaHlfcmVzdW1lKHBoeWRldik7XFxuIFxcbiBcXHQvKipcXG5AQCAtMTg5MCw4ICsxOTk0LDggQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIFxcdHJldHVybiBlcnI7XFxuIFxcbiBlcnJvcjpcXG4tXFx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXFxuLVxcdHBoeV9kZXRhY2gocGh5ZGV2KTtcXG4rXFx0LyogcGh5X2RldGFjaF9pbnRlcm5hbCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXFxuK1xcdHBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCBmYWxzZSk7XFxuIFxcdHJldHVybiBlcnI7XFxuIFxcbiBlcnJvcl9tb2R1bGVfcHV0OlxcbkBAIC0xOTA2LDg2ICsyMDEwLDYgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIH1cXG4gRVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoX2RpcmVjdCk7XFxuIFxcbi0vKipcXG4tICogcGh5X2RldGFjaCAtIGRldGFjaCBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2VcXG4tICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuLSAqXFxuLSAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcXG4tICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxcbi0gKi9cXG4tdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLXtcXG4tXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2O1xcbi1cXHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcXG4tXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4tXFxuLVxcdGlmIChwaHlkZXYtXFx1MDAzZWRldmxpbmspIHtcXG4tXFx0XFx0ZGV2aWNlX2xpbmtfZGVsKHBoeWRldi1cXHUwMDNlZGV2bGluayk7XFxuLVxcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IE5VTEw7XFxuLVxcdH1cXG4tXFxuLVxcdGlmIChwaHlkZXYtXFx1MDAzZXN5c2ZzX2xpbmtzKSB7XFxuLVxcdFxcdGlmIChkZXYpXFxuLVxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZkZXYtXFx1MDAzZWRldi5rb2JqLCBcXFwicGh5ZGV2XFxcIik7XFxuLVxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosIFxcXCJhdHRhY2hlZF9kZXZcXFwiKTtcXG4tXFx0fVxcbi1cXG4tXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldilcXG4tXFx0XFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYua29iaixcXG4tXFx0XFx0XFx0XFx0ICBcXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XFxuLVxcbi1cXHRwaHlfc3VzcGVuZChwaHlkZXYpO1xcbi1cXHRpZiAoZGV2KSB7XFxuLVxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xcbi1cXG4tXFx0XFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XFxuLVxcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcXG4tXFx0XFx0ICovXFxuLVxcdFxcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YpO1xcbi1cXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuLVxcdFxcdGlmIChod3Byb3YgXFx1MDAyNlxcdTAwMjYgaHdwcm92LVxcdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XFxuLVxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZWh3cHJvdiwgTlVMTCk7XFxuLVxcdFxcdFxcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcXG4tXFx0XFx0fVxcbi1cXG4tXFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuLVxcdFxcdHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcXG4tXFx0XFx0cGh5X2xpbmtfdG9wb19kZWxfcGh5KGRldiwgcGh5ZGV2KTtcXG4tXFx0fVxcbi1cXG4tXFx0cGh5ZGV2LVxcdTAwM2VwaHlfbGlua19jaGFuZ2UgPSBOVUxMO1xcbi1cXHRwaHlkZXYtXFx1MDAzZXBoeWxpbmsgPSBOVUxMO1xcbi1cXG4tXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxcbi1cXHRcXHRtb2R1bGVfcHV0KHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyLVxcdTAwM2Vvd25lcik7XFxuLVxcbi1cXHQvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXRcXG4tXFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXFxuLVxcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUncyBhIGNoYW5jZSBhXFxuLVxcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxcbi1cXHQgKi9cXG4tXFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xcbi1cXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYpO1xcbi1cXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbi1cXHR9XFxuLVxcbi1cXHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbi1cXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XFxuLVxcbi1cXHQvKlxcbi1cXHQgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWRcXG4tXFx0ICogYSB1c2UtYWZ0ZXItZnJlZSBidWcgYnkgcmVhZGluZyB0aGUgdW5kZXJseWluZyBidXMgZmlyc3QuXFxuLVxcdCAqL1xcbi1cXHRidXMgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzO1xcbi1cXG4tXFx0cHV0X2RldmljZShcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuLVxcdGlmIChkZXYpXFxuLVxcdFxcdG5kZXZfb3duZXIgPSBkZXYtXFx1MDAzZWRldi5wYXJlbnQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXI7XFxuLVxcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuLVxcdFxcdG1vZHVsZV9wdXQoYnVzLVxcdTAwM2Vvd25lcik7XFxuLX1cXG4tRVhQT1JUX1NZTUJPTChwaHlfZGV0YWNoKTtcXG4tXFxuIGludCBwaHlfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5pbmRleCA1ZjhkNjU4NjhlMGZmLi4zZDhhZmU2YjdmMWM1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXFxuQEAgLTM3Niw2ICszNzYsMjQgQEAgc3RydWN0IG1paV9idXMge1xcbiBcXHRcXHRcXHQgaW50IHJlZ251bSwgdTE2IHZhbCk7XFxuIFxcdC8qKiBAcmVzZXQ6IFBlcmZvcm0gYSByZXNldCBvZiB0aGUgYnVzICovXFxuIFxcdGludCAoKnJlc2V0KShzdHJ1Y3QgbWlpX2J1cyAqYnVzKTtcXG4rXFx0LyoqXFxuK1xcdCAqIEBub3RpZnlfcGh5X2F0dGFjaDogUGVyZm9ybSBwb3N0LWF0dGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcXG4rXFx0ICogZHJpdmVycy4gT3B0aW9uYWwgYW5kIGluZGVwZW5kZW50IG9mIEBub3RpZnlfcGh5X2RldGFjaC4gQ2FsbGVkXFxuK1xcdCAqIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkgcmlnaHQgYmVmb3JlIHBoeV9yZXN1bWUoKS4gUnVucyBpbiBwcm9jZXNzXFxuK1xcdCAqIGNvbnRleHQsIG1heSBzbGVlcCBhbmQgbWF5IGJlIGNhbGxlZCB3aXRoIFJUTkwgaGVsZC4gTXVzdCBub3RcXG4rXFx0ICogYWNxdWlyZSBvciByZWx5IG9uIFJUTkwuIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm5vXFxuK1xcdCAqIG9uIGZhaWx1cmUuIE11c3QgdW53aW5kIGl0cyBvd24gc3RhdGUgb24gZXJyb3IgYXMgYXR0YWNobWVudCBpc1xcbitcXHQgKiBhYm9ydGVkLlxcbitcXHQgKi9cXG4rXFx0aW50ICgqbm90aWZ5X3BoeV9hdHRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbitcXHQvKipcXG4rXFx0ICogQG5vdGlmeV9waHlfZGV0YWNoOiBQZXJmb3JtIHByZS1kZXRhY2ggaGFuZGxpbmcgZm9yIE1ESU8gYnVzXFxuK1xcdCAqIGRyaXZlcnMuIE9wdGlvbmFsIGFuZCBpbmRlcGVuZGVudCBvZiBAbm90aWZ5X3BoeV9hdHRhY2guIENhbGxlZFxcbitcXHQgKiBpbiBwaHlfZGV0YWNoKCkgcmlnaHQgYWZ0ZXIgcGh5X3N1c3BlbmQoKS4gUnVucyBpbiBwcm9jZXNzIGNvbnRleHQsXFxuK1xcdCAqIG1heSBzbGVlcCBhbmQgbWF5IGJlIGNhbGxlZCB3aXRoIFJUTkwgaGVsZC4gTXVzdCBub3QgYWNxdWlyZSBvclxcbitcXHQgKiByZWx5IG9uIFJUTkwuXFxuK1xcdCAqL1xcbitcXHR2b2lkICgqbm90aWZ5X3BoeV9kZXRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbiBcXG4gXFx0LyoqIEBzdGF0czogU3RhdGlzdGljIGNvdW50ZXJzIHBlciBkZXZpY2Ugb24gdGhlIGJ1cyAqL1xcbiBcXHRzdHJ1Y3QgbWRpb19idXNfc3RhdHMgc3RhdHNbUEhZX01BWF9BRERSXTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjE6NTU6MDAuNTA5MzgwODcyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NjExMzg3MTc1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgUlRMODM4MC9SVEw4MzkwIHN1cHBvcnQgYW5kIE1ESU8gcG9sbGluZyBoYW5kbGluZyB0byB0aGUgUmVhbHRlayBPdHRvIE1ESU8gZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpIGFsb25nIHdpdGggaGVscGVyIG5vdGlmaWNhdGlvbiBjYWxsYmFja3MgaW4gdGhlIGNvcmUgUEhZIGRldmljZSBsYXllciAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYykuIFRoZSBkcml2ZXIgaXMgYW4gT0YtbWF0Y2hlZCBwbGF0Zm9ybSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIGNvcmUgUEhZIGFkZGl0aW9ucyBhcmUgbm8tb3AgaG9va3MgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIE1ESU8gYnVzIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBjYWxsYmFja3MsIHdoaWNoIG9ubHkgdGhpcyB1bnJlYWNoYWJsZSBkcml2ZXIgZG9lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM5Y2NiYWZhZjBhOTJlMTgzNTM4NTg5ZGY3ZmQyNTZhYTkxZjExNjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMTo1NDo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuaW5kZXggMjcxZTA1YmFlOWM1Ny4uNjdlMGIyM2E4NDcwZSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG5AQCAtNCw3ICs0LDcgQEBcbiAkaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sI1xuICRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuIFxuLXRpdGxlOiBSZWFsdGVrIFJUTDkzMDAgTURJTyBDb250cm9sbGVyXG4rdGl0bGU6IFJlYWx0ZWsgT3R0byBTd2l0Y2hlcyBFdGhlcm5ldCBNRElPIENvbnRyb2xsZXJcbiBcbiBtYWludGFpbmVyczpcbiAgIC0gQ2hyaXMgUGFja2hhbSBcdTAwM2NjaHJpcy5wYWNraGFtQGFsbGllZHRlbGVzaXMuY28ubnpcdTAwM2VcbkBAIC0xMiw2ICsxMiwxNiBAQCBtYWludGFpbmVyczpcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbiAgICAgb25lT2Y6XG4rICAgICAgLSBpdGVtczpcbisgICAgICAgICAgLSBlbnVtOlxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODEtbWRpb1xuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xuKyAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDgzODAtbWRpb1xuKyAgICAgIC0gaXRlbXM6XG4rICAgICAgICAgIC0gZW51bTpcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkyLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkzLW1kaW9cbisgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw4MzkxLW1kaW9cbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGVudW06XG4gICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmItbWRpb1xuQEAgLTI0LDYgKzM0LDggQEAgcHJvcGVydGllczpcbiAgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEzLW1kaW9cbiAgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw5MzExLW1kaW9cbiAgICAgICAtIGVudW06XG4rICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgwLW1kaW9cbisgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTEtbWRpb1xuICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXG4gICAgICAgICAgIC0gcmVhbHRlayxydGw5MzExLW1kaW9cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcgYi9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcbmluZGV4IGEwNTIyOTgzOGNiNDUuLmQ0NDI3OGYyNmZhYmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1xuQEAgLTE3MiwxMSArMTcyLDExIEBAIGNvbmZpZyBNRElPX0lQUTgwNjRcbiBcdCAgaW50ZXJmYWNlIHVuaXRzIG9mIHRoZSBJUFE4MDY0IFNvQ1xuIFxuIGNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxuLVx0dHJpc3RhdGUgXCJSZWFsdGVrIFJUTDkzMDAgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwiXG4rXHR0cmlzdGF0ZSBcIlJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcIlxuIFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuIFx0aGVscFxuIFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTURJTyBpbnRlcmZhY2UgZm91bmQgaW4gdGhlIFJlYWx0ZWtcbi1cdCAgUlRMOTMwMCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbitcdCAgUlRMODN4eC9SVEw5M3h4IGZhbWlseSBvZiBFdGhlcm5ldCBzd2l0Y2hlcyB3aXRoIGludGVncmF0ZWQgU29DLlxuIFxuIGNvbmZpZyBNRElPX1JFR01BUFxuIFx0dHJpc3RhdGVcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbmluZGV4IGFmZDUyYTFjZDdmODMuLjExZDA3OGVmOTQxY2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xuQEAgLTM1LDExICszNSw4NyBAQFxuICAqXG4gICogVGhlIGRyaXZlciB3b3JrcyBvdXQgdGhlIG1hcHBpbmcgYmFzZWQgb24gdGhlIE1ESU8gYnVzIGRlc2NyaWJlZCBpbiBkZXZpY2UgdHJlZSBhbmQgcGhhbmRsZXMgb25cbiAgKiB0aGUgZXRoZXJuZXQtcG9ydHMgcHJvcGVydHkuXG4rICpcbisgKiBUaGUgZGV2aWNlcyBoYXZlIGEgaGFyZHdhcmUgcG9sbGluZyB1bml0IHRoYXQgcnVucyBpbiB0aGUgYmFja2dyb3VuZCB3aXRob3V0IGFueSBDUFUgbG9hZC4gSXRcbisgKiBjb25zdGFudGx5IHNjYW5zIHRoZSBNRElPIGJ1cyBhbmQgdGhlIGF0dGFjaGVkIFBIWXMgYW5kIHVwZGF0ZXMgdGhlIE1BQyBzdGF0dXMgcmVnaXN0ZXJzLlxuKyAqXG4rICogSG93IGRvZXMgdGhlIHBvbGxpbmcgd29yaz9cbisgKlxuKyAqIEVhY2ggZGV2aWNlIGhhcyBhIFNNSV9QT0xMX0NUUkwgcmVnaXN0ZXIuIEEgcGVyLXBvcnQgYml0bWFzayBkZWNpZGVzIGlmIHRoZSBoYXJkd2FyZSBwb2xsaW5nIG9mXG4rICogdGhlIGFzc29jaWF0ZWQgYnVzL2FkZHJlc3MgaXMgYWN0aXZlIG9yIG5vdC4gVGhlIGhhcmR3YXJlIHJ1bnMgYSB0aWdodCBsb29wIG92ZXIgdGhpcyBhbmQgZm9yXG4rICogZWFjaCBzZXQgcG9sbGluZyBiaXQgaXQgaXNzdWVzIGEgc3RhdHVzIGNoZWNrIGZvciB0aGUgUEhZLiBBdHRhY2hpbmcgYSBsb2dpYyBhbmFseXplciB0byB0aGVcbisgKiBNRElPIGJ1cyBvZiBhbiBSVEw4MzgwIGFuZCBSVEw4MzkzIGdpdmVzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgKGluIGtlcm5lbCBub3RhdGlvbik6XG4rICpcbisgKlx0UlRMODM4MFx0XHRcdFx0UlRMODM5M1xuKyAqXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyAqXHRwaHlfd3JpdGUocGh5LCAzMSwgMHgwKTtcdHBoeV9yZWFkKHBoeSwgMCk7XG4rICpcdHBoeV93cml0ZShwaHksIDEzLCAweDcpO1x0cGh5X3JlYWQocGh5LCAxKTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2MpO1x0cGh5X3JlYWQocGh5LCA0KTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4ODAwNyk7XHRwaHlfcmVhZChwaHksIDUpO1xuKyAqXHRwaHlfcmVhZChwaHksIDE0KTtcdFx0cGh5X3JlYWQocGh5LCA2KTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7XHRwaHlfcmVhZChwaHksIDkpO1xuKyAqXHRwaHlfd3JpdGUocGh5LCAxNCwgMHgzZCk7XHRwaHlfcmVhZChwaHksIDEwKTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4ODAwNyk7XHRwaHlfcmVhZChwaHksIDE1KTtcbisgKlx0cGh5X3JlYWQocGh5LCAxNCk7XHRcdHBoeV93cml0ZShwaHksIDEzLCAweDcpO1xuKyAqXHRwaHlfcmVhZChwaHksIDkpO1x0XHRwaHlfd3JpdGUocGh5LCAxNCwgMHgzYyk7XG4rICpcdHBoeV9yZWFkKHBoeSwgMTApO1x0XHRwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTtcbisgKlx0cGh5X3JlYWQocGh5LCAxNSk7XHRcdHBoeV9yZWFkKHBoeSwgMTQpO1xuKyAqXHRwaHlfcmVhZChwaHksIDApO1x0XHRwaHlfd3JpdGUocGh5LCAxMywgMHg3KTtcbisgKlx0cGh5X3JlYWQocGh5LCAxKTtcdFx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2QpO1xuKyAqXHRwaHlfcmVhZChwaHksIDQpO1x0XHRwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTtcbisgKlx0cGh5X3JlYWQocGh5LCA1KTtcdFx0cGh5X3JlYWQocGh5LCAxNCk7XG4rICpcdHBoeV9yZWFkKHBoeSwgNik7XG4rICpcbisgKiBBZnRlciBvbmUgUEhZIHN0YXR1cyBpcyByZWFkLCB0aGUgcG9sbGluZyBlbmdpbmUgZ29lcyBvdmVyIHRvIHRoZSBuZXh0IFBIWS4gSWYgb25lIGJ1cyBpcyBmdWxseVxuKyAqIHNjYW5uZWQgaXQgc3dpdGNoZXMgb3ZlciB0byB0aGUgbmV4dCBidXMuIEJhc2ljYWxseSB0aGUgcG9sbGluZyBzeXN0ZW0gaXMgYWx3YXlzIGJ1c3kgYW5kIHRoZVxuKyAqIE1BQyBzdGF0ZSBpcyB1cGRhdGVkIGluIHJlYWwtdGltZS5cbisgKlxuKyAqIFRoaXMgaXMgYSBnbGltcHNlIGxvb2sgYXQgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHBvbGxpbmcgYW5kIGxlYXZlcyBvdXQgdGhlIEM0NSBjYXNlIGFuZCB0aGUgTUFDXG4rICogcmVnaXN0ZXIgdXBkYXRlIGxvZ2ljIGFmdGVyd2FyZHMuIEltcG9ydGFudCB0byBub3RlOlxuKyAqXG4rICogLSAxMDAgTUJpdCBkb3duc2hpZnRzIChicm9rZW4gY2FibGVzKSBhcmUgaWRlbnRpZmllZCBhbmQgcHJvcGFnYXRlZCB0byB0aGUgTUFDIGNvcnJlY3RseVxuKyAqIC0gQWNjZXNzIHRvIE1ESU9fQU5fRUVFX0FEViBhbmQgTURJT19BTl9FRUVfTFBBQkxFIHdvcmtzIHZpYSBDNDUgb3ZlciBDMjIuXG4rICogLSBJdCBpcyB1bmNsZWFyIGlmIHRoZXNlIHNlcXVlbmNlcyBjaGFuZ2UgZm9yIGRpZmZlcmVudCBQSFlzLlxuKyAqIC0gQWNjZXNzIHRvIFJlYWx0ZWsgcmVzZXJ2ZWQgcmVnaXN0ZXIgMjYgKGxpbmsgc3BlZWQpIGhhcyBub3QgeWV0IGJlZW4gc2Vlbi5cbisgKlxuKyAqIEhvdyBkb2VzIE1ESU8gYWNjZXNzIGZyb20ga2VybmVsIHdvcms/XG4rICpcbisgKiBXaGVuIGlzc3VpbmcgTURJTyBhY2Nlc3NlcyB2aWEgYW4gTU1JTyBiYXNlZCBpbnRlcmZhY2UgdGhlIGZpbmFsIHdyaXRlIHRvIHRoZSBjb21tYW5kIHJlZ2lzdGVyXG4rICogc2V0cyBhIFwicnVuIGNvbW1hbmQgbm93XCIgYml0LiBCZXR3ZWVuIHR3byBwb2xsaW5nIHNlcXVlbmNlcyBmb3IgZGlmZmVyZW50IFBIWXMgdGhlIGhhcmR3YXJlXG4rICogY2hlY2tzIGlmIGEgdXNlciBjb21tYW5kIG5lZWRzIHRvIHJ1biBhbmQgc2VuZHMgaXQgb250byB0aGUgYnVzLiBBZnRlcndhcmRzIGl0IHNpbXBseSBjb250aW51ZXNcbisgKiBpdHMgcG9sbGluZyB3b3JrLiBJbnNwZWN0aW5nIHRoZSBjb21tYW5kIHNlcXVlbmNlIGZvciBhIHBhZ2VkIHdyaXRlIG9uIHRoZSBsb2dpYyBhbmFseXplciBnaXZlczpcbisgKlxuKyAqXHRSVEw4MzgwXHRcdFx0XHRSVEw4MzkzXG4rICpcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rICpcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgcmVnLCB2YWx1ZSk7XHRwaHlfd3JpdGUocGh5LCByZWcsIHZhbHVlKTtcbisgKlx0XHRcdFx0XHRwaHlfd3JpdGUocGh5LCAzMSwgMCk7XG4rICpcbisgKiBXaGF0IGRvZXMgdGhpcyBtZWFuP1xuKyAqXG4rICogVGhlcmUgYXJlIHNsaWdodCBkaWZmZXJlbmNlcyBpbiBwb2xsaW5nIGFuZCBQSFkgYWNjZXNzIGJldHdlZW4gdGhlIG1vZGVscyBidXQgdGhlIGNoYWxsZW5nZVxuKyAqIHN0YXlzIHRoZSBzYW1lLiBPbiB0aGUgb25lIGhhbmQgdGhhdCBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIE1BQyBsYXllciwgb24gdGhlIG90aGVyIGhhbmQgaXRcbisgKiBoYXMgc29tZSBpbXBsaWNhdGlvbnMgZm9yIHRoZSBrZXJuZWwgUEhZIHN1YnN5c3RlbS5cbisgKlxuKyAqIC0gV2l0aG91dCB0aGUgcG9sbGluZyBhbmQgYSBwcm9wZXIgTUFDIHN0YXR1cywgc29tZSBvZiB0aGUgbGluayBoYW5kbGluZyBmZWF0dXJlcyBkbyBub3Qgd29yay5cbisgKiAgIEVzcGVjaWFsbHkgYW4gdW5wb3B1bGF0ZWQgTUFDX0xJTktfU1RTIHJlZ2lzdGVyIGNhbmNlbHMgb3BlcmF0aW9ucyB0byBvdGhlciBNQUMgcmVnaXN0ZXJzLlxuKyAqIC0gVGhlIFJlYWx0ZWsgcGFnZSByZWdpc3RlciAzMSBpcyBtYWdpY2FsbHkgbW9kaWZpZWQgaW4gdGhlIGJhY2tncm91bmQgc28gdGhhdCBwb2xsaW5nIHdpbGxcbisgKiAgIHJlYWQgdGhlIHJpZ2h0IGRhdGEuIE9uIHRoZSBSVEw4Mzh4IHBvbGxpbmcgc2ltcGx5IHJlc2V0cyBpdCB0byB6ZXJvLiBPdGhlciBkZXZpY2VzIHNlZW1cbisgKiAgIHRvIHRyYWNrIHRoZSBwYWdlIGFjY2VzcyBcIm1hZ2ljYWxseVwiIGluIHRoZSBiYWNrZ3JvdW5kLlxuKyAqIC0gQSBDNDUgb3ZlciBDMjIga2VybmVsIGFjY2VzcyBzZXF1ZW5jZSBpcyBtb3N0IGxpa2VseSB0byBmYWlsIGJlY2F1c2UgY2hhbmNlcyBhcmUgaGlnaCB0aGF0XG4rICogICB0aGUgcG9sbGluZyBlbmdpbmUgb3ZlcndyaXRlcyByZWdpc3RlcnMgMTMvMTQgaW4gYmV0d2Vlbi5cbisgKiAtIFBIWSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBoYXZlIGlzc3Vlcy4gRXNwZWNpYWxseSBpZiBhIFBIWSBpcyBkZXNpZ25lZCB0byBleHBlY3QgYSBjbGVhblxuKyAqICAgc2VxdWVuY2Ugb2YgcmVnaXN0ZXJzIGFuZCB2YWx1ZXMgd2l0aG91dCBkZXZpYXRpb24uXG4rICogLSBBbiBhY2Nlc3MgdG8gb25lIFBIWSB3aWxsIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgZnJlZSBzbG90IG9mIHRoZSBwb2xsaW5nIGVuZ2luZS5cbisgKlxuKyAqIENvbmNsdXNpb246IFRoZSBSZWFsdGVrIE1ESU8gYnVzIGRyaXZlciBQSFkgYWNjZXNzIG11c3Qga25vdyBhbmQgaGFuZGxlIGFueSBpbnRlcmZlcmVuY2UgdGhhdFxuKyAqIGFyaXNlcyBmcm9tIHRoZSBhYm92ZSBkZXNjcmliZWQgaGFyZHdhcmUgcG9sbGluZy5cbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0bWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZpbmQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21mZC9zeXNjb24uaFx1MDAzZVxuQEAgLTUwLDYgKzEyNiw1MCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuIFxuKyNkZWZpbmUgUlRMODM4MF9OVU1fQlVTRVNcdFx0XHQxXG4rI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFU1x0XHRcdDQwOTZcbisjZGVmaW5lIFJUTDgzODBfTlVNX1BPUlRTXHRcdFx0MjhcbisjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXHRcdFx0MHhhMTAwXG4rI2RlZmluZSAgIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FXHRcdEJJVCgxNSlcbisjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wXHRcdDB4YTFiOFxuKyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzFcdFx0MHhhMWJjXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFJcdFx0R0VOTUFTSygyNCwgMjApXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfUEFSS19QQUdFXHRcdEdFTk1BU0soMTksIDE1KVxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX01BSU5fUEFHRVx0XHRHRU5NQVNLKDE0LCAzKVxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1dSSVRFXHRcdEJJVCgyKVxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1JFQURcdFx0XHQwXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDVcdFx0QklUKDEpXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjJcdFx0MFxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX0ZBSUxcdFx0XHQwIC8qIG5vIGZhaWwgaW5kaWNhdG9yICovXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMlx0XHQweGExYzBcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEFcdFx0R0VOTUFTSygzMSwgMTYpXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfREFUQVx0XHRcdEdFTk1BU0soMTUsIDApXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfM1x0XHQweGExYzRcbisjZGVmaW5lIFJUTDgzODBfU01JX1BPTExfQ1RSTFx0XHRcdDB4YTE3Y1xuKyNkZWZpbmUgUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkxcdFx0MHhhMWM4XG4rXG4rI2RlZmluZSBSVEw4MzkwX05VTV9CVVNFU1x0XHRcdDJcbisjZGVmaW5lIFJUTDgzOTBfTlVNX1BBR0VTXHRcdFx0ODE5MlxuKyNkZWZpbmUgUlRMODM5MF9OVU1fUE9SVFNcdFx0XHQ1MlxuKyNkZWZpbmUgUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMXHRcdDB4MDNlY1xuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkxcdFx0MHgwM2RjXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFJcdFx0R0VOTUFTSyg5LCA1KVxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRVx0XHRHRU5NQVNLKDIyLCAxMClcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9GQUlMXHRcdFx0QklUKDEpXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfV1JJVEVcdFx0QklUKDMpXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfUkVBRFx0XHRcdDBcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NVx0XHRCSVQoMilcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMlx0XHQwXG4rI2RlZmluZSBSVEw4MzkwX1BIWVJFR19DVFJMXHRcdFx0MHgwM2UwXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0VcdFx0R0VOTUFTSyg4LCAwKVxuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMXHRcdDB4MDNmMFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0lOREFUQVx0XHRHRU5NQVNLKDMxLCAxNilcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBXHRcdFx0R0VOTUFTSygxNSwgMClcbisjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX01NRF9DVFJMXHRcdFx0MHgwM2Y0XG4rI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfTE9XXHRcdDB4MDNlNFxuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0hJR0hcdFx0MHgwM2U4XG4rI2RlZmluZSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTFx0XHQweDAzZmNcbitcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUEFHRVNcdFx0XHQ0MDk2XG4gI2RlZmluZSBSVEw5MzAwX05VTV9QT1JUU1x0XHRcdDI4XG5AQCAtNzAsNiArMTkwLDcgQEBcbiAjZGVmaW5lICAgUlRMOTMwMF9QSFlfQ1RSTF9JTkRBVEFcdFx0R0VOTUFTSygzMSwgMTYpXG4gI2RlZmluZSAgIFJUTDkzMDBfUEhZX0NUUkxfREFUQVx0XHRcdEdFTk1BU0soMTUsIDApXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfM1x0XHQweGNiN2NcbisjZGVmaW5lIFJUTDkzMDBfU01JX1BPTExfQ1RSTFx0XHRcdDB4Y2E5MFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkxcdFx0MHhjYjgwXG4gXG4gI2RlZmluZSBSVEw5MzEwX05VTV9CVVNFU1x0XHRcdDRcbkBAIC05NSwxMiArMjE2LDE2IEBAXG4gI2RlZmluZSAgIFJUTDkzMTBfUEhZX0NUUkxfSU5EQVRBXHRcdEdFTk1BU0soMTUsIDApXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfTU1EX0NUUkxcdDB4MGMxOFxuICNkZWZpbmUgUlRMOTMxMF9TTUlfUE9SVF9BRERSX0NUUkxcdFx0MHgwYzc0XG4rI2RlZmluZSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTFx0XHQweDBjY2NcbiAjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19TRUxcdFx0MHgwYzljXG4gXG4gI2RlZmluZSBQSFlfQ1RSTF9DTURcdFx0XHRcdEJJVCgwKVxuICNkZWZpbmUgUEhZX0NUUkxfTU1EX0RFVkFEXHRcdFx0R0VOTUFTSygyMCwgMTYpXG4gI2RlZmluZSBQSFlfQ1RSTF9NTURfUkVHXHRcdFx0R0VOTUFTSygxNSwgMClcbiBcbisjZGVmaW5lIFJUTF9WRU5ET1JfSURcdFx0XHRcdDB4MDAxY2M4MDBcbisjZGVmaW5lIFJUTF9QQUdFX1NFTEVDVFx0XHRcdFx0MzFcbitcbiAjZGVmaW5lIE1BUF9BRERSU19QRVJfUkVHXHRcdFx0NlxuICNkZWZpbmUgTUFQX0JJVFNfUEVSX0FERFJcdFx0XHQ1XG4gI2RlZmluZSBNQVBfQklUU19QRVJfQlVTXHRcdFx0MlxuQEAgLTEyNiw2ICsyNTEsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4rXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xuIFx0dTggc21pX2J1c1tNQVhfUE9SVFNdO1xuIFx0dTggc21pX2FkZHJbTUFYX1BPUlRTXTtcbiBcdGJvb2wgc21pX2J1c19pc19jNDVbTUFYX1NNSV9CVVNTRVNdO1xuQEAgLTE0Miw2ICsyNjgsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHtcbiBcdHU4IG51bV9idXNlcztcbiBcdHU4IG51bV9wb3J0cztcbiBcdHUxNiBudW1fcGFnZXM7XG4rXHR1MzIgcG9sbF9jdHJsO1xuIFx0aW50ICgqc2V0dXBfY29udHJvbGxlcikoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdik7XG4gXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuIFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuQEAgLTE3Nyw2ICszMDQsMTIgQEAgc3RhdGljIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKm90dG9fZW1kaW9fYnVzX3RvX3ByaXYoc3RydWN0IG1paV9idXMgKmJ1cylcbiBcdHJldHVybiBjaGFuLVx1MDAzZXByaXY7XG4gfVxuIFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsIGludCBwb3J0LCBib29sIGFjdGl2ZSlcbit7XG4rXHRyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBwcml2LVx1MDAzZWluZm8tXHUwMDNlcG9sbF9jdHJsICsgKHBvcnQgLyAzMikgKiA0LFxuK1x0XHRcdFx0ICBCSVQocG9ydCAlIDMyKSwgYWN0aXZlKTtcbit9XG4rXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEpXG4ge1xuQEAgLTE4NSw5ICszMTgsOSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0dTMyIGNtZHN0YXRlO1xuIFx0aW50IHJldDtcbiBcbi1cdC8qIERlZmVuc2l2ZSBwcmUgY2hlY2sganVzdCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIGhvcnJpYmxlIHdyb25nICovXG4rXHQvKiBEZWZlbnNpdmUgcHJlIGNoZWNrIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyBob3JyaWJseSB3cm9uZyAqL1xuIFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBpbmZvLVx1MDAzZWNtZF9yZWdzLmMyMl9kYXRhLFxuLVx0XHRcdFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMCk7XG4rXHRcdFx0XHQgICAgICAgY21kc3RhdGUsICEoY21kc3RhdGUgXHUwMDI2IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwMCk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTIyNyw3ICszNjAsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuIFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBpbmZvLVx1MDAzZWNtZF9yZWdzLmMyMl9kYXRhLFxuLVx0XHRcdFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMCk7XG4rXHRcdFx0XHQgICAgICAgY21kc3RhdGUsICEoY21kc3RhdGUgXHUwMDI2IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwMCk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTI2NCwxMyArMzk3LDEyMyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsXG4gXHRyZXR1cm4gb3R0b19lbWRpb19ydW5fY21kKGJ1cywgY21kIHwgcHJpdi1cdTAwM2VpbmZvLVx1MDAzZWNtZF93cml0ZSwgY21kX2RhdGEpO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1x0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4rXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8XG4rXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxuK1x0fTtcbitcbitcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEsXG4rXHRcdFx0XHQgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbit9XG4rXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG4re1xuK1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbitcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuK1x0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbitcdFx0XHRcdCAgRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1BBUktfUEFHRSwgMHgxZikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuK1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXG4rXHRcdC5wb3J0X21hc2tfbG93XHQ9IEJJVChwb3J0KSxcbitcdH07XG4rXG4rXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuK1x0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxuK1x0fTtcbitcbitcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG4rXHRcdFx0XHQgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbit9XG4rXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuK1x0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcbitcdFx0LnBvcnRfbWFza19sb3dcdD0gQklUKHBvcnQpLFxuK1x0fTtcbitcbitcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbit9XG4rXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG4re1xuK1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbitcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuK1x0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbitcdFx0XHRcdCAgRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi1cdTAwM2VwYWdlW3BvcnRdKSxcbitcdFx0LmV4dF9wYWdlXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLFxuK1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcbitcdH07XG4rXG4rXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuK1x0XHRcdFx0ICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuK3tcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4rXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4rXHRcdC5leHRfcGFnZVx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0UsIDB4MWZmKSxcbitcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxuK1x0XHQucG9ydF9tYXNrX2hpZ2hcdD0gKHUzMikoQklUX1VMTChwb3J0KSBcdTAwM2VcdTAwM2UgMzIpLFxuK1x0XHQucG9ydF9tYXNrX2xvd1x0PSAodTMyKShCSVRfVUxMKHBvcnQpKSxcbitcdH07XG4rXG4rXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuK1x0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxuK1x0fTtcbitcbitcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG4rXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbit9XG4rXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuK1x0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcbitcdFx0LnBvcnRfbWFza19oaWdoXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXHUwMDNlXHUwMDNlIDMyKSxcbitcdFx0LnBvcnRfbWFza19sb3dcdD0gKHUzMikoQklUX1VMTChwb3J0KSksXG4rXHR9O1xuK1xuK1x0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEpO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbiB7XG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuIFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4gXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuIFx0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8XG4tXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIFJBV19QQUdFKHByaXYpKSxcbitcdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi1cdTAwM2VwYWdlW3BvcnRdKSxcbiBcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksXG4gXHR9O1xuIFxuQEAgLTI4NCw3ICs1MjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sXG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiBcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4gXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcbi1cdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuIFx0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXG4gXHRcdC5wb3J0X21hc2tfbG93XHQ9IEJJVChwb3J0KSxcbiBcdH07XG5AQCAtMzI0LDcgKzU2Nyw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1XG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiBcdFx0LmJyb2FkY2FzdFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXG4gXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLVx0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksXG4rXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4gXHR9O1xuIFxuIFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbkBAIC0zMzYsNyArNTc5LDcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuIFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuIFx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi1cdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuIFx0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXG4gXHRcdC5wb3J0X21hc2tfaGlnaFx0PSAodTMyKShCSVRfVUxMKHBvcnQpIFx1MDAzZVx1MDAzZSAzMiksXG4gXHRcdC5wb3J0X21hc2tfbG93XHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkpLFxuQEAgLTM3OCwyNyArNjIxLDUzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxuIFx0aW50IHJldCwgcG9ydDtcbiBcdHUzMiB2YWx1ZTtcbiBcbitcdGlmIChyZWdudW0gPT0gTUlJX01NRF9DVFJMIHx8IHJlZ251bSA9PSBNSUlfTU1EX0RBVEEpIHtcbitcdFx0ZGV2X3dhcm5fb25jZShcdTAwMjZidXMtXHUwMDNlZGV2LFxuK1x0XHRcdCAgICAgIFwiQzQ1IG92ZXIgQzIyIHJlYWQgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuIFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuIFx0aWYgKHBvcnQgXHUwMDNjIDApXG4gXHRcdHJldHVybiBwb3J0O1xuIFxuLVx0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spXG4rXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaykge1xuK1x0XHRpZiAocmVnbnVtID09IFJUTF9QQUdFX1NFTEVDVClcbitcdFx0XHRyZXR1cm4gcHJpdi1cdTAwM2VwYWdlW3BvcnRdO1xuK1xuIFx0XHRyZXQgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlcmVhZF9jMjIoYnVzLCBwb3J0LCByZWdudW0sIFx1MDAyNnZhbHVlKTtcbitcdH1cbiBcbiBcdHJldHVybiByZXQgPyByZXQgOiB2YWx1ZTtcbiB9XG4gXG4tc3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG4rc3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxuK1x0XHRcdFx0dTE2IHZhbHVlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4gXHRpbnQgcmV0LCBwb3J0O1xuIFxuK1x0aWYgKHJlZ251bSA9PSBNSUlfTU1EX0NUUkwgfHwgcmVnbnVtID09IE1JSV9NTURfREFUQSkge1xuK1x0XHRkZXZfd2Fybl9vbmNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYsXG4rXHRcdFx0ICAgICAgXCJDNDUgb3ZlciBDMjIgd3JpdGUgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuIFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuIFx0aWYgKHBvcnQgXHUwMDNjIDApXG4gXHRcdHJldHVybiBwb3J0O1xuIFxuLVx0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spXG4rXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaykge1xuK1x0XHRpZiAocmVnbnVtID09IFJUTF9QQUdFX1NFTEVDVCkge1xuK1x0XHRcdGlmICh2YWx1ZSBcdTAwM2U9IFJBV19QQUdFKHByaXYpKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRcdFx0cHJpdi1cdTAwM2VwYWdlW3BvcnRdID0gdmFsdWU7XG4rXHRcdFx0cmV0dXJuIDA7XG4rXHRcdH1cbitcbiBcdFx0cmV0ID0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXdyaXRlX2MyMihidXMsIHBvcnQsIHJlZ251bSwgdmFsdWUpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDcxLDYgKzc0MCwxNSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4re1xuK1x0LypcbitcdCAqIFBIWV9QQVRDSF9ET05FIGVuYWJsZXMgUEhZIGNvbnRyb2wgdmlhIFNvQy4gVGhpcyBpcyByZXF1aXJlZCBmb3IgUEhZIGFjY2VzcywgaW5jbHVkaW5nXG4rXHQgKiBwYXRjaGluZyBhbmQgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBQSFlzIGFyZSBwcm9iZWQuXG4rXHQgKi9cbitcdHJldHVybiByZWdtYXBfc2V0X2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiB7XG4gXHR1MzIgZ2xiX2N0cmxfbWFzayA9IDAsIGdsYl9jdHJsX3ZhbCA9IDA7XG5AQCAtNTA3LDYgKzc4NSw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0aW50IHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcik7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gY2hhbi1cdTAwM2Vwcml2O1xuK1xuK1x0aWYgKHBvcnQgXHUwMDNjIDApIHtcbitcdFx0LyogQWxsIHN1YnNlcXVlbnQgYnVzIG9wZXJhdGlvbnMgd2lsbCBmYWlsICovXG4rXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcIlBIWSBpcyBub3QgbWFwcGVkIHRvIGEgdmFsaWQgc3dpdGNoIHBvcnRcXG5cIik7XG4rXHRcdHJldHVybiBwb3J0O1xuK1x0fVxuK1xuK1x0LyogXCJzeW5jXCIgcGFnZSBpbiBjYXNlIG9mIHByZXZpb3VzbHkgZmFpbGVkIGF0dGFjaG1lbnQgKi9cbitcdHNjb3BlZF9ndWFyZChtdXRleCwgXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKVxuK1x0XHRwcml2LVx1MDAzZXBhZ2VbcG9ydF0gPSAwO1xuK1xuK1x0aWYgKCFwcml2LVx1MDAzZXNtaV9idXNfaXNfYzQ1W2NoYW4tXHUwMDNlbWRpb19idXNdIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFwaHlfaWRfY29tcGFyZV92ZW5kb3IocGh5ZGV2LVx1MDAzZXBoeV9pZCwgUlRMX1ZFTkRPUl9JRCkpIHtcbitcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwiT25seSBSZWFsdGVrIFBIWXMgYWxsb3dlZCBvbiBDMjIgYnVzXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4rXG4rXHRyZXR1cm4gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIHRydWUpO1xuK31cbitcbitzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XG4rXHRpbnQgcG9ydDtcbitcbitcdHByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KHBoeWRldi1cdTAwM2VtZGlvLmJ1cyk7XG4rXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIpO1xuK1xuK1x0aWYgKHBvcnQgXHUwMDNjIDApXG4rXHRcdHJldHVybjtcbitcbitcdC8qIFwic3luY1wiIHBhZ2UgZm9yIG5leHQgYXR0YWNobWVudCAqL1xuK1x0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spXG4rXHRcdHByaXYtXHUwMDNlcGFnZVtwb3J0XSA9IDA7XG4rXG4rXHRpZiAob3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKSlcbitcdFx0ZGV2X2VycihidXMtXHUwMDNlcGFyZW50LCBcImZhaWxlZCB0byBkaXNhYmxlIHBvbGxpbmcgZm9yIHBvcnQgJWRcXG5cIiwgcG9ydCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuIFx0XHRcdFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuIHtcbkBAIC01MjgsMTQgKzg1MSwxNCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGJ1cy1cdTAwM2VuYW1lID0gXCJSZWFsdGVrIFN3aXRjaCBNRElPIEJ1c1wiO1xuLVx0aWYgKHByaXYtXHUwMDNlc21pX2J1c19pc19jNDVbbWRpb19idXNdKSB7XG4tXHRcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XG4tXHRcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSBvdHRvX2VtZGlvX3dyaXRlX2M0NTtcbi1cdH0gZWxzZSB7XG4tXHRcdGJ1cy1cdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcbi1cdFx0YnVzLVx1MDAzZXdyaXRlID0gb3R0b19lbWRpb193cml0ZV9jMjI7XG4tXHR9XG4rXHRidXMtXHUwMDNlcmVhZF9jNDUgPSBvdHRvX2VtZGlvX3JlYWRfYzQ1O1xuK1x0YnVzLVx1MDAzZXdyaXRlX2M0NSA9IG90dG9fZW1kaW9fd3JpdGVfYzQ1O1xuK1x0YnVzLVx1MDAzZXJlYWQgPSBvdHRvX2VtZGlvX3JlYWRfYzIyO1xuK1x0YnVzLVx1MDAzZXdyaXRlID0gb3R0b19lbWRpb193cml0ZV9jMjI7XG4gXHRidXMtXHUwMDNlcGFyZW50ID0gZGV2O1xuK1x0YnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaDtcbitcdGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2g7XG4rXG4gXHRjaGFuID0gYnVzLVx1MDAzZXByaXY7XG4gXHRjaGFuLVx1MDAzZW1kaW9fYnVzID0gbWRpb19idXM7XG4gXHRjaGFuLVx1MDAzZXByaXYgPSBwcml2O1xuQEAgLTY1Miw2ICs5NzUsMTkgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4re1xuK1x0aW50IGVycjtcbitcbitcdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFx1MDAzYyBwcml2LVx1MDAzZWluZm8tXHUwMDNlbnVtX3BvcnRzOyBwb3J0KyspIHtcbitcdFx0ZXJyID0gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIHtcbiBcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuQEAgLTY3MSw2ICsxMDA3LDEwIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbiBcbitcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbiBcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpO1xuIFxuIFx0ZXJyID0gb3R0b19lbWRpb19tYXBfcG9ydHMoZGV2KTtcbkBAIC02OTYsNiArMTAzNiw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHtcbitcdC5hZGRyX21hcF9iYXNlID0gUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXG4rXHQuY21kX2ZhaWwgPSBSVEw4MzgwX1BIWV9DVFJMX0ZBSUwsXG4rXHQuY21kX3JlYWQgPSBSVEw4MzgwX1BIWV9DVFJMX1JFQUQsXG4rXHQuY21kX3dyaXRlID0gUlRMODM4MF9QSFlfQ1RSTF9XUklURSxcbitcdC5jbWRfcmVncyA9IHtcbitcdFx0LmMyMl9kYXRhID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEsXG4rXHRcdC5jNDVfZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zLFxuK1x0XHQuaW9fZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8yLFxuK1x0XHQucG9ydF9tYXNrX2xvdyA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wLFxuK1x0fSxcbitcdC5udW1fYnVzZXMgPSBSVEw4MzgwX05VTV9CVVNFUyxcbitcdC5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUyxcbitcdC5udW1fcG9ydHMgPSBSVEw4MzgwX05VTV9QT1JUUyxcbitcdC5wb2xsX2N0cmwgPSBSVEw4MzgwX1NNSV9QT0xMX0NUUkwsXG4rXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxuK1x0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLFxuK1x0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1LFxuK1x0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIsXG4rXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NSxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xuK1x0LmNtZF9mYWlsID0gUlRMODM5MF9QSFlfQ1RSTF9GQUlMLFxuK1x0LmNtZF9yZWFkID0gUlRMODM5MF9QSFlfQ1RSTF9SRUFELFxuK1x0LmNtZF93cml0ZSA9IFJUTDgzOTBfUEhZX0NUUkxfV1JJVEUsXG4rXHQuY21kX3JlZ3MgPSB7XG4rXHRcdC5icm9hZGNhc3QgPSBSVEw4MzkwX0JDQVNUX1BIWUlEX0NUUkwsXG4rXHRcdC5jMjJfZGF0YSA9IFJUTDgzOTBfUEhZUkVHX0FDQ0VTU19DVFJMLFxuK1x0XHQuYzQ1X2RhdGEgPSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTCxcbitcdFx0LmV4dF9wYWdlID0gUlRMODM5MF9QSFlSRUdfQ1RSTCxcbitcdFx0LmlvX2RhdGEgPSBSVEw4MzkwX1BIWVJFR19EQVRBX0NUUkwsXG4rXHRcdC5wb3J0X21hc2tfbG93ID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPVyxcbitcdFx0LnBvcnRfbWFza19oaWdoID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0hJR0gsXG4rXHR9LFxuK1x0Lm51bV9idXNlcyA9IFJUTDgzOTBfTlVNX0JVU0VTLFxuK1x0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxuK1x0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxuK1x0LnBvbGxfY3RybCA9IFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuK1x0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxuK1x0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1LFxuK1x0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIsXG4rXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuIFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw5MzAwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcbiBcdC5idXNfbWFwX2Jhc2UgPSBSVEw5MzAwX1NNSV9QT1JUMF8xNV9QT0xMSU5HX1NFTCxcbkBAIC03MTEsNiArMTA5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuIFx0Lm51bV9idXNlcyA9IFJUTDkzMDBfTlVNX0JVU0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMDBfTlVNX1BPUlRTLFxuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMDBfTlVNX1BBR0VTLFxuK1x0LnBvbGxfY3RybCA9IFJUTDkzMDBfU01JX1BPTExfQ1RSTCxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsXG5AQCAtNzM2LDYgKzExMjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcbiBcdC5udW1fYnVzZXMgPSBSVEw5MzEwX05VTV9CVVNFUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUyxcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUyxcbitcdC5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXG5AQCAtNzQ0LDYgKzExMzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG90dG9fZW1kaW9faWRzW10gPSB7XG4rXHR7IC5jb21wYXRpYmxlID0gXCJyZWFsdGVrLHJ0bDgzODAtbWRpb1wiLCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fODM4MF9pbmZvIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJyZWFsdGVrLHJ0bDgzOTEtbWRpb1wiLCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fODM5MF9pbmZvIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCJyZWFsdGVrLHJ0bDkzMDEtbWRpb1wiLCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMwMF9pbmZvIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCJyZWFsdGVrLHJ0bDkzMTEtbWRpb1wiLCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMxMF9pbmZvIH0sXG4gXHR7fVxuQEAgLTc1NSwxMCArMTE0NCwxMSBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvdHRvX2VtZGlvX2RyaXZlciA9IHtcbiBcdC5kcml2ZXIgPSB7XG4gXHRcdC5uYW1lID0gXCJtZGlvLXJ0bDkzMDBcIixcbiBcdFx0Lm9mX21hdGNoX3RhYmxlID0gb3R0b19lbWRpb19pZHMsXG4rXHRcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcbiBcdH0sXG4gfTtcbiBcbiBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTtcbiBcbi1NT0RVTEVfREVTQ1JJUFRJT04oXCJSVEw5MzAwIE1ESU8gZHJpdmVyXCIpO1xuK01PRFVMRV9ERVNDUklQVElPTihcIlJUTDgzeHgvUlRMOTN4eCBNRElPIGRyaXZlclwiKTtcbiBNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uZGU1OWQ4NjRiMDYwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzM0LDYgKzE3MzQsMTA0IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbiB9XG4gXG4rLyoqXG4rICogcGh5X2RldGFjaF9pbnRlcm5hbCAtIGRldGFjaCBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2VcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbisgKiBAbm90aWZ5X2J1czogd2hldGhlciB0byBub3RpZnkgdGhlIE1ESU8gYnVzIGFib3V0IHRoZSBQSFkgZGV0YWNoXG4rICpcbisgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4rICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuKyAqL1xuK3N0YXRpYyB2b2lkIHBoeV9kZXRhY2hfaW50ZXJuYWwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBub3RpZnlfYnVzKVxuK3tcbitcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2O1xuK1x0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XG4rXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuK1xuK1x0aWYgKHBoeWRldi1cdTAwM2VkZXZsaW5rKSB7XG4rXHRcdGRldmljZV9saW5rX2RlbChwaHlkZXYtXHUwMDNlZGV2bGluayk7XG4rXHRcdHBoeWRldi1cdTAwM2VkZXZsaW5rID0gTlVMTDtcbitcdH1cbitcbitcdGlmIChwaHlkZXYtXHUwMDNlc3lzZnNfbGlua3MpIHtcbitcdFx0aWYgKGRldilcbitcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwicGh5ZGV2XCIpO1xuK1x0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaiwgXCJhdHRhY2hlZF9kZXZcIik7XG4rXHR9XG4rXG4rXHRpZiAoIXBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYpXG4rXHRcdHN5c2ZzX3JlbW92ZV9maWxlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLFxuK1x0XHRcdFx0ICBcdTAwMjZkZXZfYXR0cl9waHlfc3RhbmRhbG9uZS5hdHRyKTtcbitcbitcdHBoeV9zdXNwZW5kKHBoeWRldik7XG4rXG4rXHRpZiAobm90aWZ5X2J1cyBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZW5vdGlmeV9waHlfZGV0YWNoKVxuK1x0XHRwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gocGh5ZGV2KTtcbitcbitcdGlmIChkZXYpIHtcbitcdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4rXG4rXHRcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxuK1x0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXG4rXHRcdCAqL1xuK1x0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuK1x0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4rXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4rXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuK1x0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbitcdFx0fVxuK1xuK1x0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4rXHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xuK1x0XHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xuK1x0fVxuK1xuK1x0cGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XG4rXHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4rXG4rXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlcilcbitcdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcbitcdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxuK1x0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4rXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3MgYSBjaGFuY2UgYVxuK1x0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4rXHQgKi9cbitcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuK1x0XHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbitcdFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuK1x0fVxuK1xuK1x0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbitcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbitcbitcdC8qXG4rXHQgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWRcbitcdCAqIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHJlYWRpbmcgdGhlIHVuZGVybHlpbmcgYnVzIGZpcnN0LlxuK1x0ICovXG4rXHRidXMgPSBwaHlkZXYtXHUwMDNlbWRpby5idXM7XG4rXG4rXHRwdXRfZGV2aWNlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4rXHRpZiAoZGV2KVxuK1x0XHRuZGV2X293bmVyID0gZGV2LVx1MDAzZWRldi5wYXJlbnQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyO1xuK1x0aWYgKG5kZXZfb3duZXIgIT0gYnVzLVx1MDAzZW93bmVyKVxuK1x0XHRtb2R1bGVfcHV0KGJ1cy1cdTAwM2Vvd25lcik7XG4rfVxuK1xuKy8qKlxuKyAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4rICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4rICpcbisgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4rICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuKyAqL1xuK3ZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdC8qIGNsZWFudXAgaW5jbHVkaW5nIGJ1cyBub3RpZmljYXRpb24gKi9cbitcdHBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCB0cnVlKTtcbit9XG4rRVhQT1JUX1NZTUJPTChwaHlfZGV0YWNoKTtcbitcbiAvKipcbiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXG5AQCAtMTg3Niw2ICsxOTc0LDEyIEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJvcjtcbiBcbitcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2gpIHtcbitcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKHBoeWRldik7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0Z290byBlcnJvcjtcbitcdH1cbitcbiBcdHBoeV9yZXN1bWUocGh5ZGV2KTtcbiBcbiBcdC8qKlxuQEAgLTE4OTAsOCArMTk5NCw4IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0cmV0dXJuIGVycjtcbiBcbiBlcnJvcjpcbi1cdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xuLVx0cGh5X2RldGFjaChwaHlkZXYpO1xuK1x0LyogcGh5X2RldGFjaF9pbnRlcm5hbCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG4rXHRwaHlfZGV0YWNoX2ludGVybmFsKHBoeWRldiwgZmFsc2UpO1xuIFx0cmV0dXJuIGVycjtcbiBcbiBlcnJvcl9tb2R1bGVfcHV0OlxuQEAgLTE5MDYsODYgKzIwMTAsNiBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiB9XG4gRVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoX2RpcmVjdCk7XG4gXG4tLyoqXG4tICogcGh5X2RldGFjaCAtIGRldGFjaCBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2Vcbi0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0gKlxuLSAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcbi0gKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXG4tICovXG4tdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXY7XG4tXHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbi1cdHN0cnVjdCBtaWlfYnVzICpidXM7XG4tXG4tXHRpZiAocGh5ZGV2LVx1MDAzZWRldmxpbmspIHtcbi1cdFx0ZGV2aWNlX2xpbmtfZGVsKHBoeWRldi1cdTAwM2VkZXZsaW5rKTtcbi1cdFx0cGh5ZGV2LVx1MDAzZWRldmxpbmsgPSBOVUxMO1xuLVx0fVxuLVxuLVx0aWYgKHBoeWRldi1cdTAwM2VzeXNmc19saW5rcykge1xuLVx0XHRpZiAoZGV2KVxuLVx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNmRldi1cdTAwM2VkZXYua29iaiwgXCJwaHlkZXZcIik7XG4tXHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLCBcImF0dGFjaGVkX2RldlwiKTtcbi1cdH1cbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2Rldilcbi1cdFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmtvYmosXG4tXHRcdFx0XHQgIFx1MDAyNmRldl9hdHRyX3BoeV9zdGFuZGFsb25lLmF0dHIpO1xuLVxuLVx0cGh5X3N1c3BlbmQocGh5ZGV2KTtcbi1cdGlmIChkZXYpIHtcbi1cdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4tXG4tXHRcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxuLVx0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXG4tXHRcdCAqL1xuLVx0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuLVx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4tXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4tXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuLVx0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbi1cdFx0fVxuLVxuLVx0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xuLVx0XHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xuLVx0fVxuLVxuLVx0cGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XG4tXHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4tXG4tXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlcilcbi1cdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbi1cbi1cdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxuLVx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4tXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3MgYSBjaGFuY2UgYVxuLVx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4tXHQgKi9cbi1cdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuLVx0XHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbi1cdFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuLVx0fVxuLVxuLVx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbi1cdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbi1cbi1cdC8qXG4tXHQgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWRcbi1cdCAqIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHJlYWRpbmcgdGhlIHVuZGVybHlpbmcgYnVzIGZpcnN0LlxuLVx0ICovXG4tXHRidXMgPSBwaHlkZXYtXHUwMDNlbWRpby5idXM7XG4tXG4tXHRwdXRfZGV2aWNlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4tXHRpZiAoZGV2KVxuLVx0XHRuZGV2X293bmVyID0gZGV2LVx1MDAzZWRldi5wYXJlbnQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyO1xuLVx0aWYgKG5kZXZfb3duZXIgIT0gYnVzLVx1MDAzZW93bmVyKVxuLVx0XHRtb2R1bGVfcHV0KGJ1cy1cdTAwM2Vvd25lcik7XG4tfVxuLUVYUE9SVF9TWU1CT0wocGh5X2RldGFjaCk7XG4tXG4gaW50IHBoeV9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXY7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcbmluZGV4IDVmOGQ2NTg2OGUwZmYuLjNkOGFmZTZiN2YxYzUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMzc2LDYgKzM3NiwyNCBAQCBzdHJ1Y3QgbWlpX2J1cyB7XG4gXHRcdFx0IGludCByZWdudW0sIHUxNiB2YWwpO1xuIFx0LyoqIEByZXNldDogUGVyZm9ybSBhIHJlc2V0IG9mIHRoZSBidXMgKi9cbiBcdGludCAoKnJlc2V0KShzdHJ1Y3QgbWlpX2J1cyAqYnVzKTtcbitcdC8qKlxuK1x0ICogQG5vdGlmeV9waHlfYXR0YWNoOiBQZXJmb3JtIHBvc3QtYXR0YWNoIGhhbmRsaW5nIGZvciBNRElPIGJ1c1xuK1x0ICogZHJpdmVycy4gT3B0aW9uYWwgYW5kIGluZGVwZW5kZW50IG9mIEBub3RpZnlfcGh5X2RldGFjaC4gQ2FsbGVkXG4rXHQgKiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpIHJpZ2h0IGJlZm9yZSBwaHlfcmVzdW1lKCkuIFJ1bnMgaW4gcHJvY2Vzc1xuK1x0ICogY29udGV4dCwgbWF5IHNsZWVwIGFuZCBtYXkgYmUgY2FsbGVkIHdpdGggUlROTCBoZWxkLiBNdXN0IG5vdFxuK1x0ICogYWNxdWlyZSBvciByZWx5IG9uIFJUTkwuIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm5vXG4rXHQgKiBvbiBmYWlsdXJlLiBNdXN0IHVud2luZCBpdHMgb3duIHN0YXRlIG9uIGVycm9yIGFzIGF0dGFjaG1lbnQgaXNcbitcdCAqIGFib3J0ZWQuXG4rXHQgKi9cbitcdGludCAoKm5vdGlmeV9waHlfYXR0YWNoKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbitcdC8qKlxuK1x0ICogQG5vdGlmeV9waHlfZGV0YWNoOiBQZXJmb3JtIHByZS1kZXRhY2ggaGFuZGxpbmcgZm9yIE1ESU8gYnVzXG4rXHQgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfYXR0YWNoLiBDYWxsZWRcbitcdCAqIGluIHBoeV9kZXRhY2goKSByaWdodCBhZnRlciBwaHlfc3VzcGVuZCgpLiBSdW5zIGluIHByb2Nlc3MgY29udGV4dCxcbitcdCAqIG1heSBzbGVlcCBhbmQgbWF5IGJlIGNhbGxlZCB3aXRoIFJUTkwgaGVsZC4gTXVzdCBub3QgYWNxdWlyZSBvclxuK1x0ICogcmVseSBvbiBSVE5MLlxuK1x0ICovXG4rXHR2b2lkICgqbm90aWZ5X3BoeV9kZXRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIFxuIFx0LyoqIEBzdGF0czogU3RhdGlzdGljIGNvdW50ZXJzIHBlciBkZXZpY2Ugb24gdGhlIGJ1cyAqL1xuIFx0c3RydWN0IG1kaW9fYnVzX3N0YXRzIHN0YXRzW1BIWV9NQVhfQUREUl07XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NTowMC41MDkzODIxOTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NjM0NTc3Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUEhZIFN1YnN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBzZXJpZXMuIFRoZSBmaWxlcyBpbXBhY3RlZCBhcmU6IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxgLCBgZHJpdmVycy9uZXQvbWRpby9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AsIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L3BoeS5oYC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29yZSBQSFkgY29kZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgaW4gYHBoeV9kZXZpY2UuY2AgYW5kIGBpbmNsdWRlL2xpbnV4L3BoeS5oYC5cblxuSXQgbG9va3MgbGlrZSB3ZSdyZSBpbnRyb2R1Y2luZyBjYWxsYmFja3MsIGBub3RpZnlfcGh5X2F0dGFjaGAgYW5kIGBub3RpZnlfcGh5X2RldGFjaGAsIHRvIHRoZSBgc3RydWN0IG1paV9idXNgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBgcGh5X2F0dGFjaF9kaXJlY3QoKWAgbm93IGNhbGxzIGBidXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2gocGh5ZGV2KWAsIGFuZCBgcGh5X2RldGFjaCgpYCBjYWxscyBgYnVzLVx1MDAzZW5vdGlmeV9waHlfZGV0YWNoKHBoeWRldilgIHZpYSB0aGUgbmV3bHkgcmVmYWN0b3JlZCBgcGh5X2RldGFjaF9pbnRlcm5hbCgpYC4gVGhpcyBpcyBhIGNsZWFyIHNpZ25hbCB0aGF0IHRoZXJlJ3MgYSBuZXcgaW50ZXJhY3Rpb24gbGF5ZXIgZm9yIFBIWSBhdHRhY2gvZGV0YWNoIGV2ZW50cy5cblxuTm93LCBwZWVraW5nIGludG8gYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AsIEkgc2VlIHN1cHBvcnQgZm9yIFJUTDgzODAgYW5kIFJUTDgzOTAgTURJTyBjb250cm9sbGVycywgYWxvbmcgd2l0aCBpbXBsZW1lbnRhdGlvbnMgZm9yIGBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoYCBhbmQgYG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2hgLiBUaGV5IGFsc28gYWRkZWQgcG9sbGluZyBjb250cm9sIGxvZ2ljIGZvciBSZWFsdGVrIHN3aXRjaGVzLiBUaGlzIGxvb2tzIHNwZWNpZmljIHRvIHRoZXNlIFJlYWx0ZWsgU29Dcy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgbmV3IGNhbGxiYWNrIG1lY2hhbmlzbSBleGlzdCBvbmx5IGZvciBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2A/IElzIHRoaXMgYSBkcml2ZXIgdGhhdCdzIG9ubHkgZ29pbmcgdG8gd29yayBvbiBSZWFsdGVrIGJhc2VkIHN5c3RlbXMsIG9yIGNhbiBpdCBiZSB1c2VkIGVsc2V3aGVyZT9cblxuRGl2aW5nIGRlZXBlciwgSSBzZWUgdGhhdCBgcGh5X2F0dGFjaF9kaXJlY3RgIGFuZCBgcGh5X2RldGFjaGAgYXJlIGNlbnRyYWwgUEhZIHN1YnN5c3RlbSBmdW5jdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBhY3Jvc3MgbmV0d29ya2luZy4gU28sIHRoaXMgcmVmYWN0b3JpbmcgKm11c3QqIGJlIGNvcmUsIGFuZCB0aGUgY2FsbGJhY2tzIGFyZSBwcm9iYWJseSBhZGRlZCB0byBlbmFibGUgYnJvYWRlciBzdXBwb3J0LlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBvdGhlciBkcml2ZXJzIHdpbGwgdXNlIHRoZXNlIG5ldyBjYWxsYmFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIG90aGVyIGRyaXZlcnMgc2V0IHRoZXNlIGNhbGxiYWNrcy4gSWYgbm8gb3RoZXIgZHJpdmVyIHNldHMgYGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2F0dGFjaGAgYmVzaWRlcyB0aGUgUmVhbHRlayBkcml2ZXIsIHRoZW4gdGhpcyBlbnRpcmUgY2hhbmdlIGlzIG9ubHkgdXNlZnVsIGZvciBSZWFsdGVrIHN5c3RlbXMuXG5cbkxldCdzIGNoZWNrIGlmIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBpcyBldmVuIHBvc3NpYmxlIHRvIHRlc3Qgb3V0c2lkZSBhIHNwZWNpZmljIFNvQy4gSSdsbCBzZWFyY2ggZm9yIGBDT05GSUdfTURJT19SRUFMVEVLX1JUTDkzMDBgIG9yIGBNQUNIX1JFQUxURUtfUlRMYCB0byB2ZXJpZnkgaWYgSSBjYW4gcnVuIHRoaXMgd2l0aCBRRU1VIG9yIEdDRS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1MzcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NTowOC4xNDM5NjMxNjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NzE4MjA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUNIX1JFQUxURUtfUlRMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9LY29uZmlnPTY4MT1jb25maWcgUkFMSU5LXFxuLS1cXG5hcmNoL21pcHMvS2NvbmZpZy02OTgtXFxuYXJjaC9taXBzL0tjb25maWc6Njk5OmNvbmZpZyBNQUNIX1JFQUxURUtfUlRMXFxuYXJjaC9taXBzL0tjb25maWctNzAwLVxcdGJvb2wgXFxcIlJlYWx0ZWsgUlRMODM4eC9SVEw4Mzl4IGJhc2VkIG1hY2hpbmVzXFxcIlxcbi0tXFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGU6MjpkdGItJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcXHQrPSBjaXNjb19zZzIyMC0yNi5kdGJcXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZTozOmR0Yi0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdCs9IGNhbWVvLXJ0bDkzMDJjLTJ4LXJ0bDgyMjQtMnhnZS5kdGJcXG4tLVxcbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19WSVJUX0JPQVJEX1JBTkNIVSlcXHRcXHQrPSBib2FyZC1yYW5jaHUub1xcbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IGJvYXJkLXJlYWx0ZWsub1xcbi0tXFxuZHJpdmVycy9ncGlvL0tjb25maWc9NjI1PWNvbmZpZyBHUElPX1JFQUxURUtfT1RUT1xcbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBPdHRvIEdQSU8gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2dwaW8vS2NvbmZpZzo2Mjc6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyODpcXHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcXG5kcml2ZXJzL2dwaW8vS2NvbmZpZy02MjktXFx0c2VsZWN0IEdQSU9fR0VORVJJQ1xcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc9MTEwMz1jb25maWcgSTJDX1JUTDkzMDBcXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDkzMDAgSTJDIGNvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc6MTEwNTpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9MTMwPW9iai0kKENPTkZJR19TTDI4Q1BMRF9JTlRDKVxcdFxcdCs9IGlycS1zbDI4Y3BsZC5vXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlOjEzMTpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcXHRcXHQrPSBpcnEtcmVhbHRlay1ydGwub1xcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0xMzItb2JqLSQoQ09ORklHX1dQQ000NTBfQUlDKVxcdFxcdCs9IGlycS13cGNtNDUwLWFpYy5vXFxuLS1cXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWc9NjQ9Y29uZmlnIE1URF9OQU5EX0VDQ19SRUFMVEVLXFxuLS1cXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWctNjYtICAgICAgICBkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnOjY3OiAgICAgICAgZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZy02OC0gICAgICAgIHNlbGVjdCBNVERfTkFORF9FQ0NcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNzQ9Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3NS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTc2OlxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvc3BpL0tjb25maWc9OTE2PWNvbmZpZyBTUElfUkVBTFRFS19TTkFORFxcbmRyaXZlcnMvc3BpL0tjb25maWctOTE3LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFNQSS1OQU5EIEZsYXNoIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy9zcGkvS2NvbmZpZzo5MTg6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvc3BpL0tjb25maWctOTE5LVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvc3BpL01ha2VmaWxlPTEzMT1vYmotJChDT05GSUdfU1BJX1JCNFhYKVxcdFxcdFxcdCs9IHNwaS1yYjR4eC5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU6MTMyOm9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IHNwaS1yZWFsdGVrLXJ0bC5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGUtMTMzLW9iai0kKENPTkZJR19TUElfUkVBTFRFS19TTkFORClcXHRcXHQrPSBzcGktcmVhbHRlay1ydGwtc25hbmQub1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTExMTM9Y29uZmlnIFJFQUxURUtfT1RUT19XRFRcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExNC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBPdHRvIE1JUFMgd2F0Y2hkb2cgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExNTpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTYtXFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExOC1cXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExOTpcXHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU1OjEwLjMyMTE1MDkzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg5OTcxODEyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBEZXRhY2htZW50IGFuZCBBdHRhY2htZW50IGluIHRoZSBSZWFsdGVrIFJUTDkzMDAgY29udGV4dCoqXG5cbk9rYXksIHNvIGBNRElPX1JFQUxURUtfUlRMOTMwMGAgcmVsYXRlcyB0byB0aGUgTUlQUyBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4IFNvQ3MsIHNwZWNpZmljYWxseSBmb3IgdGhlIGVtYmVkZGVkIGBNQUNIX1JFQUxURUtfUlRMYCBib2FyZHMuIEdvdCBpdC4gQnV0IGhvbGQgb24sIHRoZSBjb3JlIFBIWSBjaGFuZ2Vz4oCmIFRoYXQncyB0aGUga2V5LiBMZXQncyBkZWx2ZSBpbnRvIHdoYXQncyBhbHRlcmVkIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuXG5cblJpZ2h0LCBgcGh5X2RldGFjaF9pbnRlcm5hbGAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uLiBJdCBoYW5kbGVzIHRoZSBhY3R1YWwgZGV0YWNobWVudCBvZiB0aGUgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgZHJpdmVyLiBUaGUgYWRkZWQgYG5vdGlmeV9idXNgIHBhcmFtZXRlciBpcyBpbnRlcmVzdGluZzsgaXQgZGVjaWRlcyB3aGV0aGVyIHRvIHRlbGwgdGhlIE1ESU8gYnVzIGFib3V0IHRoZSBkZXRhY2htZW50LiBBbmQgaGV5LCB0aGVyZSdzIGBwaHlfZGV0YWNoYCwgYSB3cmFwcGVyIHRoYXQgYWx3YXlzIG5vdGlmaWVzIHRoZSBidXMuIE9rYXksIGBub3RpZnlfcGh5X2RldGFjaGAgaXQgaXMuXG5cblRoZSBjb2RlIHNob3dzIHRoYXQgYHBoeV9kZXRhY2hfaW50ZXJuYWxgIHdpbGwgY2FsbCBhIGJ1cyBzcGVjaWZpYyBgbm90aWZ5X3BoeV9kZXRhY2hgIGNhbGxiYWNrIGlmIGBub3RpZnlfYnVzYCBpcyBzZXQgdG8gdHJ1ZSBhbmQgdGhlIGJ1cyBoYXMgaW1wbGVtZW50ZWQgYSBzcGVjaWZpYyBjYWxsYmFjay4gVGhlIHNhbWUgaXMgdHJ1ZSBmb3IgYHBoeV9hdHRhY2hfaW50ZXJuYWxgIHdoaWNoIGNhbGxzIGBub3RpZnlfcGh5X2F0dGFjaGAgaWYgdGhlIGJ1cyBoYXMgYSBjYWxsYmFjayBkZWZpbmVkLiBNYWtlcyBzZW5zZS5cblxuQnV0IGhlcmUncyB0aGUgYnVybmluZyBxdWVzdGlvbjogSXMgZWl0aGVyIGBub3RpZnlfcGh5X2F0dGFjaGAgb3IgYG5vdGlmeV9waHlfZGV0YWNoYCBhY3R1YWxseSAqdXNlZCogYW55d2hlcmUgZWxzZT8gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgY291bGQgYmUgYSBuZXcsIG9yIHVuZGVydXRpbGl6ZWQsIGludGVyZmFjZS4gVGltZSB0byBydW4gYSBgZ3JlcGAgc2VhcmNoIGFjcm9zcyB0aGUgZW50aXJlIGNvZGViYXNlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgcXVpY2sgYW5zd2VyIGFzIHRvIHdoZXRoZXIgYW55IG90aGVyIGRyaXZlcnMgbGV2ZXJhZ2UgdGhlc2UgbmV3IGNhbGxiYWNrIGZ1bmN0aW9ucywgb3IgaWYgdGhpcyBpcyBpc29sYXRlZCB0byB0aGUgUmVhbHRlayBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwMTUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjE6NTU6MTkuMzE4MzM0NDAxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzc0NTY5NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm90aWZ5X3BoeV9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9zY3NpL2xpYnNhcy5yc3Q9MTg5PVRoZSBldmVudCBpbnRlcmZhY2U6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zY3NpL2xpYnNhcy5yc3QtMTkyLVxcdHZvaWQgc2FzX25vdGlmeV9wb3J0X2V2ZW50KHN0cnVjdCBzYXNfcGh5ICosIGVudW0gcG9ydF9ldmVudCwgZ2ZwX3QpO1xcbkRvY3VtZW50YXRpb24vc2NzaS9saWJzYXMucnN0OjE5MzpcXHR2b2lkIHNhc19ub3RpZnlfcGh5X2V2ZW50KHN0cnVjdCBzYXNfcGh5ICosIGVudW0gcGh5X2V2ZW50LCBnZnBfdCk7XFxuRG9jdW1lbnRhdGlvbi9zY3NpL2xpYnNhcy5yc3QtMTk0LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vc2NzaS9saWJzYXMucnN0PTE3MD1udW1fcGh5c1xcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vc2NzaS9saWJzYXMucnN0LTE3OS1cXHR2b2lkIHNhc19ub3RpZnlfcG9ydF9ldmVudChzdHJ1Y3Qgc2FzX3BoeSAqLCBlbnVtIHBvcnRfZXZlbnQsIGdmcF90KTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zY3NpL2xpYnNhcy5yc3Q6MTgwOlxcdHZvaWQgc2FzX25vdGlmeV9waHlfZXZlbnQoc3RydWN0IHNhc19waHkgKiwgZW51bSBwaHlfZXZlbnQsIGdmcF90KTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zY3NpL2xpYnNhcy5yc3QtMTgxLVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jPTc3Mj1zdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzg3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3ODg6c3RhdGljIGludCBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODEyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTM6c3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jPTgzMz1zdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NTgtXFx0YnVzLVxcdTAwM2VwYXJlbnQgPSBkZXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1OTpcXHRidXMtXFx1MDAzZW5vdGlmeV9waHlfYXR0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODYwOlxcdGJ1cy1cXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NjEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3NDU9c3RhdGljIHZvaWQgcGh5X2RldGFjaF9pbnRlcm5hbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIG5vdGlmeV9idXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NjctXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNzY4OlxcdGlmIChub3RpZnlfYnVzIFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZW5vdGlmeV9waHlfZGV0YWNoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTc2OTpcXHRcXHRwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vub3RpZnlfcGh5X2RldGFjaChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTg1MD1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTk3Ni1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5Nzc6XFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTc4OlxcdFxcdGVyciA9IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTc5LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jPTY3PXN0YXRpYyB2b2lkIGFzZF9waHlfZXZlbnRfdGFza2xldChzdHJ1Y3QgYXNkX2FzY2IgKmFzY2IsXFxuLS1cXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTgyLVxcdFxcdHNhc19waHlfZGlzY29ubmVjdGVkKFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHkpO1xcbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmM6ODM6XFx0XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCxcXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTg0LVxcdFxcdFxcdFxcdCAgICAgR0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTkxLVxcdFxcdFxcdCAgICBwaHlfaWQsIHBoeS1cXHUwMDNlc2FzX3BoeS5saW5rcmF0ZSwgcGh5LVxcdTAwM2VzYXNfcGh5Lmlwcm90byk7XFxuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYzo5MjpcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTkzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYy05Ni1cXHRcXHRhc2RfdHVybl9sZWQoYXNkX2hhLCBwaHlfaWQsIDEpO1xcbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmM6OTc6XFx0XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9TUElOVVBfSE9MRCxcXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTk4LVxcdFxcdFxcdFxcdCAgICAgR0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTEwNS1cXHRcXHRzYXNfcGh5X2Rpc2Nvbm5lY3RlZChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5KTtcXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jOjEwNjpcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9FUlJPUiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYy0xMDctXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXMuaD02ODM9ZXh0ZXJuIHZvaWQgaGlzaV9zYXNfcGh5X29vYl9yZWFkeShzdHJ1Y3QgaGlzaV9oYmEgKmhpc2lfaGJhLCBpbnQgcGh5X25vKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXMuaDo2ODQ6ZXh0ZXJuIGJvb2wgaGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgaGlzaV9zYXNfcGh5ICpwaHksXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzLmgtNjg1LVxcdFxcdFxcdFxcdGVudW0gaGlzaV9zYXNfcGh5X2V2ZW50IGV2ZW50KTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM9NjQ5PXN0YXRpYyB2b2lkIGhpc2lfc2FzX2J5dGVzX2RtYWVkKHN0cnVjdCBoaXNpX2hiYSAqaGlzaV9oYmEsIGludCBwaHlfbm8sXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTY1Ny1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jOjY1ODpcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBnZnBfZmxhZ3MpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtNjU5LVxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz05Mzk9c3RhdGljIHZvaWQgaGlzaV9zYXNfcGh5dXBfd29ya19jb21tb24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrLFxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy05NjItXFx0XFx0XFx0c2V0X2JpdChTQVNfREVWX0dPTkUsIFxcdTAwMjZwb3J0X2Rldi1cXHUwMDNlc3RhdGUpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6OTYzOlxcdFxcdFxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy05NjQtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz05OTk9c3RhdGljIGNvbnN0IHdvcmtfZnVuY190IGhpc2lfc2FzX3BoeWVfZm5zW0hJU0lfUEhZRVNfTlVNXSA9IHtcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMTAwNC1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jOjEwMDU6Ym9vbCBoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHN0cnVjdCBoaXNpX3Nhc19waHkgKnBoeSxcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTEwMDYtXFx0XFx0XFx0XFx0ZW51bSBoaXNpX3Nhc19waHlfZXZlbnQgZXZlbnQpXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTEwMTQtfVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTAxNTpFWFBPUlRfU1lNQk9MX0dQTChoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTEwMTYtXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz0xMDE3PXN0YXRpYyB2b2lkIGhpc2lfc2FzX3dhaXRfcGh5dXBfdGltZWRvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTEwMjQtXFx0ZGV2X3dhcm4oZGV2LCBcXFwicGh5JWQgd2FpdCBwaHl1cCB0aW1lb3V0LCBpc3N1aW5nIGxpbmsgcmVzZXRcXFxcblxcXCIsIHBoeV9ubyk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYzoxMDI1OlxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xMDI2LX1cXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM9MTQzNz1zdGF0aWMgdm9pZCBoaXNpX3Nhc19yZXNjYW5fdG9wb2xvZ3koc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgdTMyIHN0YXRlKVxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xNDczLVxcdFxcdFxcdGlmIChzdGF0ZSBcXHUwMDI2IEJJVChwaHlfbm8pKVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTQ3NDpcXHRcXHRcXHRcXHRoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSxcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTE0NzUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jPTIxMDI9dm9pZCBoaXNpX3Nhc19waHlfZG93bihzdHJ1Y3QgaGlzaV9oYmEgKmhpc2lfaGJhLCBpbnQgcGh5X25vLCBpbnQgcmR5LFxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0yMTIxLVxcdFxcdC8qIFBoeSBkb3duIGFuZCBub3QgcmVhZHkgKi9cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jOjIxMjI6XFx0XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCwgZ2ZwX2ZsYWdzKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTIxMjMtXFx0XFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoc2FzX3BoeSk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjFfaHcuYz0xMzE1PXN0YXRpYyBpcnFyZXR1cm5fdCBpbnRfcGh5dXBfdjFfaHcoaW50IGlycV9ubywgdm9pZCAqcClcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192MV9ody5jLTEzNzYtXFx0XFx0XFx0U0FTX1BST1RPQ09MX1NNUDtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjFfaHcuYzoxMzc3OlxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfUEhZX1VQKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjFfaHcuYy0xMzc4LWVuZDpcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jPTI2NDY9c3RhdGljIGludCBwaHlfdXBfdjJfaHcoaW50IHBoeV9ubywgc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSlcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTI3MDctXFx0fVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjI3MDg6XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9QSFlfVVApO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTI3MDktZW5kOlxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM9Mjg2ND1zdGF0aWMgaXJxcmV0dXJuX3QgaW50X2NobmxfaW50X3YyX2h3KGludCBpcnFfbm8sIHZvaWQgKnApXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0yOTExLVxcdFxcdFxcdFxcdFxcdCBwaHlfbm8pO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjI5MTI6XFx0XFx0XFx0XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmMtMjkxMy1cXHRcXHRcXHRcXHRcXHRcXHRISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYz0zMTk4PXN0YXRpYyBpcnFyZXR1cm5fdCBzYXRhX2ludF92Ml9odyhpbnQgaXJxX25vLCB2b2lkICpwKVxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmMtMzIzNS1cXHRcXHRcXHQgZmlzLVxcdTAwM2VzdGF0dXMpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjMyMzY6XFx0XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0zMjM3LVxcdFxcdHJlcyA9IElSUV9OT05FO1xcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmMtMzI4MS1cXHRwaHktXFx1MDAzZWlkZW50aWZ5LnRhcmdldF9wb3J0X3Byb3RvY29scyA9IFNBU19QUk9UT0NPTF9TQVRBO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjMyODI6XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9QSFlfVVApO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTMyODMtXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYz0xNTgyPXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlfdXBfdjNfaHcoaW50IHBoeV9ubywgc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSlcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE2MjEtXFx0XFx0XFx0XFx0IHBoeV9ubywgZmlzLVxcdTAwM2VzdGF0dXMpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE2MjI6XFx0XFx0XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xNjIzLVxcdFxcdFxcdHJlcyA9IElSUV9OT05FO1xcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTY3OC1cXHRwbV9ydW50aW1lX2dldF9ub3Jlc3VtZShkZXYpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE2Nzk6XFx0cmVzID0gaGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9QSFlfVVBfUE0pO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE2ODAtXFx0aWYgKCFyZXMpXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYz0xODg3PXN0YXRpYyB2b2lkIGhhbmRsZV9jaGxfaW50Ml92M19odyhzdHJ1Y3QgaGlzaV9oYmEgKmhpc2lfaGJhLCBpbnQgcGh5X25vKVxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTkwNi1cXHRcXHRkZXZfd2FybihkZXYsIFxcXCJwaHklZCBpZGVudGlmeSB0aW1lb3V0XFxcXG5cXFwiLCBwaHlfbm8pO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE5MDc6XFx0XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTA4LVxcdH1cXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE5MTYtXFx0XFx0aWYgKHJlZ192YWx1ZSBcXHUwMDI2IEJJVChMSU5LX1JFU0VUX1RJTUVPVVRfT0ZGKSlcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYzoxOTE3OlxcdFxcdFxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTkxOC1cXHR9XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTQ4LVxcdFxcdGlmIChyYylcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYzoxOTQ5OlxcdFxcdFxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTk1MC1cXHR9XFxuLS1cXG5kcml2ZXJzL3Njc2kvaXNjaS9wb3J0LmM9MjQwPXN0YXRpYyB2b2lkIGlzY2lfcG9ydF9saW5rX2Rvd24oc3RydWN0IGlzY2lfaG9zdCAqaXNjaV9ob3N0LFxcbi0tXFxuZHJpdmVycy9zY3NpL2lzY2kvcG9ydC5jLTI3My1cXHRzYXNfcGh5X2Rpc2Nvbm5lY3RlZChcXHUwMDI2aXNjaV9waHktXFx1MDAzZXNhc19waHkpO1xcbmRyaXZlcnMvc2NzaS9pc2NpL3BvcnQuYzoyNzQ6XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNmlzY2lfcGh5LVxcdTAwM2VzYXNfcGh5LFxcbmRyaXZlcnMvc2NzaS9pc2NpL3BvcnQuYy0yNzUtXFx0XFx0XFx0ICAgICBQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfQVRPTUlDKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V2ZW50LmM9MTg5PUVYUE9SVF9TWU1CT0xfR1BMKHNhc19ub3RpZnlfcG9ydF9ldmVudCk7XFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYy0xOTAtXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYzoxOTE6dm9pZCBzYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgYXNkX3Nhc19waHkgKnBoeSwgZW51bSBwaHlfZXZlbnQgZXZlbnQsXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYy0xOTItXFx0XFx0XFx0ICBnZnBfdCBnZnBfZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19ldmVudC5jLTIxNS19XFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYzoyMTY6RVhQT1JUX1NZTUJPTF9HUEwoc2FzX25vdGlmeV9waHlfZXZlbnQpO1xcbi0tXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jPTQxMz12b2lkIHNhc19yZXN1bWVfaGEoc3RydWN0IHNhc19oYV9zdHJ1Y3QgKmhhKVxcbi0tXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jLTQ1MC1cXHRcXHRcXHRkZXZfd2FybihcXHUwMDI2cGh5LVxcdTAwM2VwaHktXFx1MDAzZWRldiwgXFxcInJlc3VtZSB0aW1lb3V0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmM6NDUxOlxcdFxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgUEhZRV9SRVNVTUVfVElNRU9VVCxcXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMtNDUyLVxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmM9NjM4PXN0cnVjdCBhc2Rfc2FzX2V2ZW50ICpzYXNfYWxsb2NfZXZlbnQoc3RydWN0IGFzZF9zYXNfcGh5ICpwaHksXFxuLS1cXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMtNjU2LVxcdFxcdFxcdFxcdFxcdCAgcGh5LVxcdTAwM2VpZCk7XFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jOjY1NzpcXHRcXHRcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIFBIWUVfU0hVVERPV04sXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jLTY1OC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGdmcF9mbGFncyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvbXZzYXMvbXZfc2FzLmM9MjEwPXN0YXRpYyB2b2lkIG12c19ieXRlc19kbWFlZChzdHJ1Y3QgbXZzX2luZm8gKm12aSwgaW50IGksIGdmcF90IGdmcF9mbGFncylcXG4tLVxcbmRyaXZlcnMvc2NzaS9tdnNhcy9tdl9zYXMuYy0yMjItXFxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jOjIyMzpcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBnZnBfZmxhZ3MpO1xcbmRyaXZlcnMvc2NzaS9tdnNhcy9tdl9zYXMuYy0yMjQtXFxuLS1cXG5kcml2ZXJzL3Njc2kvbXZzYXMvbXZfc2FzLmM9MTY5ND1zdGF0aWMgdm9pZCBtdnNfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3Njc2kvbXZzYXMvbXZfc2FzLmMtMTcxNC1cXHRcXHRcXHRcXHRtdnNfcGh5X2Rpc2Nvbm5lY3RlZChwaHkpO1xcbmRyaXZlcnMvc2NzaS9tdnNhcy9tdl9zYXMuYzoxNzE1OlxcdFxcdFxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KHNhc19waHksXFxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTE3MTYtXFx0XFx0XFx0XFx0XFx0UEhZRV9MT1NTX09GX1NJR05BTCwgR0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYz0zMTA1PWh3X2V2ZW50X3Nhc19waHlfdXAoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTMxNjMtXFx0cGh5LVxcdTAwM2VzYXNfcGh5Lm9vYl9tb2RlID0gU0FTX09PQl9NT0RFO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jOjMxNjQ6XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzE2NS1cXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LmZyYW1lX3JjdmRfbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM9MzE4Mj1od19ldmVudF9zYXRhX3BoeV91cChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzIwOC1cXHRwaHktXFx1MDAzZXNhc19waHkub29iX21vZGUgPSBTQVRBX09PQl9NT0RFO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jOjMyMDk6XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzIxMC1cXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LmZyYW1lX3JjdmRfbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM9MzUwMT1zdGF0aWMgaW50IG1waV9od19ldmVudChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzU0OS1cXHRcXHRwbTgwMDFfZGJnKHBtODAwMV9oYSwgTVNHLCBcXFwiSFdfRVZFTlRfU0FUQV9TUElOVVBfSE9MRFxcXFxuXFxcIik7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM6MzU1MDpcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX1NQSU5VUF9IT0xELFxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTM1NTEtXFx0XFx0XFx0R0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTU0LVxcdFxcdHBtODAwMV9kYmcocG04MDAxX2hhLCBNU0csIFxcXCJIV19FVkVOVF9QSFlfRE9XTlxcXFxuXFxcIik7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM6MzU1NTpcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX0xPU1NfT0ZfU0lHTkFMLFxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTM1NTYtXFx0XFx0XFx0R0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTgzLVxcdFxcdHBoeS1cXHUwMDNlcGh5X2F0dGFjaGVkID0gMDtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYzozNTg0OlxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksIFBIWUVfT09CX0VSUk9SLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTg1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmM9MjI1PWludCBwbTgwMDFfcGh5X2NvbnRyb2woc3RydWN0IGFzZF9zYXNfcGh5ICpzYXNfcGh5LCBlbnVtIHBoeV9mdW5jIGZ1bmMsXFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuYy0yOTItXFx0XFx0XFx0XFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSk7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmM6MjkzOlxcdFxcdFxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmMtMjk0LVxcdFxcdFxcdFxcdFxcdFBIWUVfTE9TU19PRl9TSUdOQUwsIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmMtMzAwLVxcdFxcdFxcdFxcdHNhc19waHlfZGlzY29ubmVjdGVkKFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHkpO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5jOjMwMTpcXHRcXHRcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LFxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5jLTMwMi1cXHRcXHRcXHRcXHRcXHRQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jPTMxODY9aHdfZXZlbnRfc2FzX3BoeV91cChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzI0Ny1cXHRwaHktXFx1MDAzZXNhc19waHkub29iX21vZGUgPSBTQVNfT09CX01PREU7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzI0ODpcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjQ5LVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHkuZnJhbWVfcmN2ZF9sb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zMjY2PWh3X2V2ZW50X3NhdGFfcGh5X3VwKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpXFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjk2LVxcdHBoeS1cXHUwMDNlc2FzX3BoeS5vb2JfbW9kZSA9IFNBVEFfT09CX01PREU7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzI5NzpcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjk4LVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHkuZnJhbWVfcmN2ZF9sb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zMzE1PWh3X2V2ZW50X3BoeV9kb3duKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpXFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMzg2LVxcdGlmIChwb3J0X3NhdGEgXFx1MDAyNlxcdTAwMjYgKHBvcnRzdGF0ZSAhPSBQT1JUX0lOX1JFU0VUKSlcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozMzg3OlxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksIFBIWUVfTE9TU19PRl9TSUdOQUwsXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzM4OC1cXHRcXHRcXHRcXHRHRlBfQVRPTUlDKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jPTM0NTQ9c3RhdGljIGludCBtcGlfaHdfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM0OTItXFx0XFx0XFx0ICAgcGh5X2lkLCBwb3J0X2lkKTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozNDkzOlxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksIFBIWUVfU1BJTlVQX0hPTEQsXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzQ5NC1cXHRcXHRcXHRHRlBfQVRPTUlDKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM1MjYtXFx0XFx0cGh5LVxcdTAwM2VwaHlfYXR0YWNoZWQgPSAwO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jOjM1Mjc6XFx0XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRVJST1IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM1MjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zNjQyLVxcdFxcdFxcdFxcdHBoeSA9IFxcdTAwMjZwbTgwMDFfaGEtXFx1MDAzZXBoeVtpXTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozNjQzOlxcdFxcdFxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzY0NC1cXHRcXHRcXHRcXHRcXHRQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfQVRPTUlDKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MzYzPXN0cnVjdCBtaWlfYnVzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMzc5LVxcdC8qKlxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzgwOlxcdCAqIEBub3RpZnlfcGh5X2F0dGFjaDogUGVyZm9ybSBwb3N0LWF0dGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjM4MTpcXHQgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfZGV0YWNoLiBDYWxsZWRcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTM4Mi1cXHQgKiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpIHJpZ2h0IGJlZm9yZSBwaHlfcmVzdW1lKCkuIFJ1bnMgaW4gcHJvY2Vzc1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0zODctXFx0ICovXFxuaW5jbHVkZS9saW51eC9waHkuaDozODg6XFx0aW50ICgqbm90aWZ5X3BoeV9hdHRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtMzg5LVxcdC8qKlxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzkwOlxcdCAqIEBub3RpZnlfcGh5X2RldGFjaDogUGVyZm9ybSBwcmUtZGV0YWNoIGhhbmRsaW5nIGZvciBNRElPIGJ1c1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzkxOlxcdCAqIGRyaXZlcnMuIE9wdGlvbmFsIGFuZCBpbmRlcGVuZGVudCBvZiBAbm90aWZ5X3BoeV9hdHRhY2guIENhbGxlZFxcbmluY2x1ZGUvbGludXgvcGh5LmgtMzkyLVxcdCAqIGluIHBoeV9kZXRhY2goKSByaWdodCBhZnRlciBwaHlfc3VzcGVuZCgpLiBSdW5zIGluIHByb2Nlc3MgY29udGV4dCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMzk1LVxcdCAqL1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6Mzk2OlxcdHZvaWQgKCpub3RpZnlfcGh5X2RldGFjaCkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuaW5jbHVkZS9saW51eC9waHkuaC0zOTctXFxuLS1cXG5pbmNsdWRlL3Njc2kvbGlic2FzLmg9NzI5PXZvaWQgc2FzX25vdGlmeV9wb3J0X2V2ZW50KHN0cnVjdCBhc2Rfc2FzX3BoeSAqcGh5LCBlbnVtIHBvcnRfZXZlbnQgZXZlbnQsXFxuaW5jbHVkZS9zY3NpL2xpYnNhcy5oLTczMC1cXHRcXHRcXHQgICBnZnBfdCBnZnBfZmxhZ3MpO1xcbmluY2x1ZGUvc2NzaS9saWJzYXMuaDo3MzE6dm9pZCBzYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgYXNkX3Nhc19waHkgKnBoeSwgZW51bSBwaHlfZXZlbnQgZXZlbnQsXFxuaW5jbHVkZS9zY3NpL2xpYnNhcy5oLTczMi1cXHRcXHRcXHQgICBnZnBfdCBnZnBfZmxhZ3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NToyMS41NTU4MDI3OTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTMxMTgwMTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFBIWSBBdHRhY2htZW50L0RldGFjaG1lbnQgTm90aWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGBub3RpZnlfcGh5X2F0dGFjaGAgYW5kIGBub3RpZnlfcGh5X2RldGFjaGAgZnVuY3Rpb25zLiBJIGtub3cgdGhleSdyZSBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L3BoeS5oYCBhbmQgdXNlZCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFRoYXQncyB0aGUgY29yZSBQSFkgZnJhbWV3b3JrLCBnb29kLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdobydzIGFjdHVhbGx5ICp1c2luZyogdGhlbS5cblxuVGhlIHRyYWNlIGxlYWRzIG1lIHRvIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgLiBBaCwgcmlnaHQsIHRoZSBSZWFsdGVrIE1ESU8gZHJpdmVyLiBCdXQuLi4gaXMgdGhpcyBzcGVjaWZpYyB0byBqdXN0IHRoZSBSZWFsdGVrIE1JUFMgaGFyZHdhcmU/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LiBJIGNhbid0IGp1c3QgYXNzdW1lIGl0J3MgYnJvYWRseSBhcHBsaWNhYmxlLlxuXG5JJ3ZlIGdvdCB0byBkZXRlcm1pbmUgaWYgdGhpcyBkcml2ZXIgaXMgdGlnaHRseSBjb3VwbGVkIHRvIGEgcGFydGljdWxhciBTb0MsIG9yIGlmIGl0J3MgbW9yZSBnZW5lcmljLiBJcyBpdCBib3VuZCB0byBzb21ldGhpbmcgc3BlY2lmaWMsIG9yIGlzIHRoZXJlIGEgYnJvYWRlciBjb250ZXh0IEknbSBtaXNzaW5nPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBjb2RlIGl0c2VsZiBhbmQgc2VlIHdoYXQgaXQncyBkb2luZywgaG93IGl0J3MgaW5pdGlhbGl6ZWQsIGFuZCB3aGF0IGhhcmR3YXJlIGl0J3MgZXhwZWN0aW5nIHRvIHNlZS4gVGltZSB0byBkaXZlIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk5NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NTozNi44Njc2MDk0OTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ1ODEwMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm90dG9fZW1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yMzctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjIzODpzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTIzOS1cXHR1MzIgYzIyX2RhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjQ4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNDk6c3RydWN0IG90dG9fZW1kaW9fcHJpdiB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI1MDpcXHRjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvICppbmZvO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNTEtXFx0c3RydWN0IHJlZ21hcCAqcmVnbWFwO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI2MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjYxOnN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjItXFx0dTMyIGFkZHJfbWFwX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjY2LVxcdHUzMiBjbWRfd3JpdGU7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI2NzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfcmVncztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjY4LVxcdHU4IG51bV9idXNlcztcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzEtXFx0dTMyIHBvbGxfY3RybDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjcyOlxcdGludCAoKnNldHVwX2NvbnRyb2xsZXIpKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzMtXFx0aW50ICgqcmVhZF9jMjIpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI3OTpzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjgwOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI4MS1cXHR1OCBtZGlvX2J1cztcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4NDpzdGF0aWMgaW50IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZClcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjg1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjg2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4NzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODgtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjk5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMDA6c3RhdGljIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKm90dG9fZW1kaW9fYnVzX3RvX3ByaXYoc3RydWN0IG1paV9idXMgKmJ1cylcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzAxLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzAyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zMDYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMwNzpzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCBpbnQgcG9ydCwgYm9vbCBhY3RpdmUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwOC17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzEyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMTM6c3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzE0OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzE2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxNzpcXHRjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvICppbmZvID0gcHJpdi1cXHUwMDNlaW5mbztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE4LVxcdHUzMiBjbWRzdGF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNjktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3MDpzdGF0aWMgaW50IG90dG9fZW1kaW9fcmVhZF9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzcxOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEsIHUzMiBtYXNrLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNzIte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozNzM6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc0LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc2LVxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozNzc6XFx0cmV0ID0gb3R0b19lbWRpb19ydW5fY21kKGJ1cywgY21kIHwgcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlY21kX3JlYWQsIGNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzg5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTA6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTE6XFx0XFx0XFx0XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zOTIte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTM6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzk0LVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzk3OlxcdHJldHVybiBvdHRvX2VtZGlvX3J1bl9jbWQoYnVzLCBjbWQgfCBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VjbWRfd3JpdGUsIGNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzk4LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzk5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDA6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwMS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQwMjpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDM6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNC1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDA5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTA6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxMS1cXHRcXHRcXHRcXHQgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQxNDpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDE1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDE2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQxNzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDE4LVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQyNTpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjYtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQyODpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDI5LVxcdFxcdFxcdFxcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzMC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQzMTpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDMyLVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDM2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Mzc6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzOC1cXHRcXHRcXHRcXHQgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ0MTpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0Mi1cXHRcXHRcXHRcXHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDMte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NDQ6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0NS1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDUxOlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1Mi19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1My1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDU0OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTUte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NTY6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDU3OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTgtXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ2My1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDY0OlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjUtXFx0XFx0XFx0XFx0ICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDY3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Njg6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ2OS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3MDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NzE6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ3Mi1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDc5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0ODA6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDgxLX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDgyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0ODM6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4NC1cXHRcXHRcXHRcXHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODUte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0ODY6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4Ny1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ5MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDkyOlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTMtXFx0XFx0XFx0XFx0ICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDk1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0OTY6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTctXFx0XFx0XFx0XFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDk4LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDk5OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDAtXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwNzpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDgtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxMDpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTExLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTEyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxMzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE0LVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MTktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyMDpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTIxLVxcdFxcdFxcdFxcdCAgIFJUTDkzMDBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyMy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTI0OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MjUte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MjY6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTI3OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MjgtXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTM1OlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNi19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTM4OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MzktXFx0XFx0XFx0XFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQwLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTQxOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDItXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0NzpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ4LVxcdFxcdFxcdFxcdCAgIFJUTDkzMDBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTUxOnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTUyLVxcdFxcdFxcdFxcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU1NDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTU1LVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjE6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYyLX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYzLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjQ6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2NS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU2NjpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1Njc6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2OC1cXHRcXHQuYnJvYWRjYXN0XFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTcyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzM6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3NC1cXHRcXHRcXHRcXHQgICBSVEw5MzEwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU3NzpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTc4LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTc5OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU4MDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTgxLVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU4ODpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODktfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01OTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU5MTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTkyLVxcdFxcdFxcdFxcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU5My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU5NDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk1LVxcdFxcdC5icm9hZGNhc3RcXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9CQ19QT1JUX0lELCBwb3J0KSxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01OTktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYwMDpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjAxLVxcdFxcdFxcdFxcdCAgIFJUTDkzMTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjA0OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA1LVxcdFxcdFxcdFxcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwNi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYwNzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA4LVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTU6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE2LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTg6c3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxOS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYyMDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MjEtXFx0aW50IHJldCwgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MjktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYzMDpcXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYzMS1cXHRpZiAocG9ydCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjQzLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NDQ6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NDUtXFx0XFx0XFx0XFx0dTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NDYte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NDc6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjQ4LVxcdGludCByZXQsIHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjU1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NTY6XFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NTctXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY3NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njc1OnN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY3Ni17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY3NzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NzgtXFx0aW50IHJldCwgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY4MTpcXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY4Mi1cXHRpZiAocG9ydCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjkwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2OTE6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTItXFx0XFx0XFx0XFx0aW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY5My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY5NDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTUtXFx0aW50IHJldCwgcG9ydDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjk2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2OTc6XFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTgtXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcwNi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzA3OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsIHUzMiBiYXNlLCB1MzIgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzA4LVxcdFxcdFxcdFxcdCAgICB1MzIgdmFsc19wZXJfcmVnLCB1MzIgYml0c19wZXJfdmFsLCB1MzIgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzE2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MTc6c3RhdGljIGludCBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcxOC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjcxOTpcXHRjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvICppbmZvID0gcHJpdi1cXHUwMDNlaW5mbztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzIwLVxcdHUzMiBwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyNC1cXHRcXHRpZiAoaW5mby1cXHUwMDNlYnVzX21hcF9iYXNlKSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjcyNTpcXHRcXHRcXHRyZXQgPSBvdHRvX2VtZGlvX3dyaXRlX21hcHBpbmcocHJpdiwgaW5mby1cXHUwMDNlYnVzX21hcF9iYXNlLCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE1BUF9CVVNFU19QRVJfUkVHLCBNQVBfQklUU19QRVJfQlVTLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczMS1cXHRcXHRpZiAoaW5mby1cXHUwMDNlYWRkcl9tYXBfYmFzZSkge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MzI6XFx0XFx0XFx0cmV0ID0gb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHByaXYsIGluZm8tXFx1MDAzZWFkZHJfbWFwX2Jhc2UsIHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgTUFQX0FERFJTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9BRERSLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc0Mi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzQzOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc1MjpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc1My17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzcxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NzI6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NzMte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4Ny1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Nzg4OnN0YXRpYyBpbnQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03ODkte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3OTA6XFx0aW50IHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzkxOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3OTI6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IGNoYW4tXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc5My1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgxMDpcXHRyZXR1cm4gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MTEtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MTItXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgxMzpzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNS1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODE2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNy1cXHRpbnQgcG9ydDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODE4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTk6XFx0cHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYocGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgyMDpcXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MjgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgyOTpcXHRpZiAob3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODMwLVxcdFxcdGRldl9lcnIoYnVzLVxcdTAwM2VwYXJlbnQsIFxcXCJmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MzItXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgzMzpzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM0LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODM2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgzNy1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg1My1cXHRidXMtXFx1MDAzZW5hbWUgPSBcXFwiUmVhbHRlayBTd2l0Y2ggTURJTyBCdXNcXFwiO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTQ6XFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1NTpcXHRidXMtXFx1MDAzZXdyaXRlX2M0NSA9IG90dG9fZW1kaW9fd3JpdGVfYzQ1O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTY6XFx0YnVzLVxcdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODU3OlxcdGJ1cy1cXHUwMDNld3JpdGUgPSBvdHRvX2VtZGlvX3dyaXRlX2MyMjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODU4LVxcdGJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTk6XFx0YnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg2MDpcXHRidXMtXFx1MDAzZW5vdGlmeV9waHlfZGV0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODYxLVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg3NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODc1OnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKm90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4pXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODkzLSAqL1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4OTQ6c3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg5NS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg5Ni1cXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzX2RuLCAqcGh5X2RuLCAqYnVzX2RuLCAqY3RybF9kbjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODk3OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODk4LVxcdHN0cnVjdCBkZXZpY2UgKnBhcmVudCA9IGRldi1cXHUwMDNlcGFyZW50O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkxNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTE1OlxcdFxcdGJ1c19kbiA9IG90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHBoeV9kbik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkxNi1cXHRcXHRpZiAoIWJ1c19kbilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05NzctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjk3ODpzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3OS17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTgyLVxcdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFxcdTAwM2MgcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlbnVtX3BvcnRzOyBwb3J0KyspIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTgzOlxcdFxcdGVyciA9IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk4NC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTkxOnN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05OTIte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05OTMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTk0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5NS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMDktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMTA6XFx0ZXJyID0gb3R0b19lbWRpb19pbml0X3BvbGxpbmcocHJpdik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMTEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDE1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDE2OlxcdGVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDE5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDIwOlxcdGVyciA9IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3kocHJpdik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMjEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDMwLVxcdGRldmljZV9mb3JfZWFjaF9jaGlsZF9ub2RlX3Njb3BlZChkZXYsIGNoaWxkKSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMzE6XFx0XFx0ZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMzItXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDM4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDM5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDQwLVxcdC5hZGRyX21hcF9iYXNlID0gUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1My1cXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDU0OlxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTU6XFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDU2OlxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1NzpcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1ODpcXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1OS19O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDYwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDYxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDYyLVxcdC5jbWRfZmFpbCA9IFJUTDgzOTBfUEhZX0NUUkxfRkFJTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDc3LVxcdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA3ODpcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNzk6XFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDgwOlxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDgxOlxcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDgyLX07XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODUtXFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw5MzAwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDk5LVxcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDA6XFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEwMTpcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDI6XFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTAzOlxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTA0OlxcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzQ1LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTA1LX07XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMDYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDc6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMDgtXFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw5MzEwX1NNSV9QT1JUX0FERFJfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTI1LVxcdC5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEyNjpcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTI3OlxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEyODpcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMjk6XFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzA6XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMzEtfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzMi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzMzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvdHRvX2VtZGlvX2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM0OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzgwLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzkxLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzOTBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM2OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzAxLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMDBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM3OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzExLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTM4LVxcdHt9XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMzktfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE0MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvdHRvX2VtZGlvX2lkcyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNDEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNDI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb3R0b19lbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNDM6XFx0LnByb2JlID0gb3R0b19lbWRpb19wcm9iZSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE0NC1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTQ1LVxcdFxcdC5uYW1lID0gXFxcIm1kaW8tcnRsOTMwMFxcXCIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNDY6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gb3R0b19lbWRpb19pZHMsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNDctXFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihvdHRvX2VtZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNTItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU1OjM3LjUxMzQ0MzI5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5MTA5NzgwNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFBIWSBEcml2ZXIgQ2hhbmdlcyBmb3IgUmVhbHRlayBPdHRvIFNvQyBTdXBwb3J0KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpc3NlY3RpbmcgdGhpcyBwYXRjaCBzZXJpZXMgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgaW4gaXRzIGltcGxpY2F0aW9ucy4gVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyB0aGUgYWRkaXRpb24gb2Ygc3VwcG9ydCBmb3IgUmVhbHRlaydzIE90dG8gU29DIHN3aXRjaGVzLCBzcGVjaWZpY2FsbHkgdGhlIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4IHNlcmllcy4gVGhlIGNvZGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCBpbnRlZ3JhdGluZyBhIG5ldyBNRElPIGJ1cyBkcml2ZXIgKGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCkgdGhhdCdzIE9GLW9ubHksIG1lYW5pbmcgaXQgcmVsaWVzIG9uIGRldmljZSB0cmVlIGJpbmRpbmdzIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyAoYG90dG9fZW1kaW9fZHJpdmVyYCkuIEltcG9ydGFudGx5LCBgb3R0b19lbWRpb19kcml2ZXIuZHJpdmVyLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBtZWFucyB0aGUgdXN1YWwgc3lzZnMgYmluZGluZyB3b24ndCBldmVuIHdvcmsuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiB0aGUgUEhZIGRldmljZSBjb3JlIChgcGh5X2RldmljZS5jYCkgd2hlcmUgbmV3IGBub3RpZnlfcGh5X2F0dGFjaGAgYW5kIGBub3RpZnlfcGh5X2RldGFjaGAgY2FsbGJhY2tzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgTURJTyBidXMgaW50ZXJmYWNlLiAgSG93ZXZlciwgYW5kIHRoaXMgaXMgY3J1Y2lhbCwgaW4gKmV2ZXJ5KiBzdGFuZGFyZCBuZXR3b3JrIGRyaXZlciBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCAobGlrZSBRRU1VIG9yIEdDRSksIHRoZXNlIGNhbGxiYWNrcyBhcmUgbmV2ZXIgaW1wbGVtZW50ZWQuIFRoZSBjaGVja3MgdXNpbmcgdGhvc2UgY2FsbGJhY2tzIGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoX2ludGVybmFsYCBlZmZlY3RpdmVseSBiZWNvbWUgbm8tb3BzLiBGb3IgYW55IHN0YW5kYXJkIE1ESU8gYnVzLCB0aG9zZSBwb2ludGVycyBhcmUgTlVMTCBhbmQgdGhlIGNvbmRpdGlvbnMgYGlmIChwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2gpYCBhbmQgYGlmIChub3RpZnlfYnVzIFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gpYCBhcmUgc2ltcGx5IGJ5cGFzc2VkLiBUaGUgZXJyb3IgcGF0aCB0d2Vha3MgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCByZWRpcmVjdCB0byBgcGh5X2RldGFjaF9pbnRlcm5hbGAgd2l0aCBgbm90aWZ5X2J1c2Agc2V0IHRvIGZhbHNlLCB3aGljaCBmdXJ0aGVyIGVuc3VyZXMgdGhlc2UgY2FsbGJhY2tzIGFyZSBza2lwcGVkLCBzaW5jZSB0aGUgYGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaGAgaXMgTlVMTCwgd2hpY2ggbWVhbnMgYG5vdGlmeV9idXNgIGlzIGFsd2F5cyBmYWxzZS4gVGhlIG9ubHkgZHJpdmVyIHRoYXQgYWN0dWFsbHkgKnVzZXMqIHRoZXNlIG5ldyBjYWxsYmFja3MgaXMgdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIuXG5cbkdpdmVuIHRoYXQgdGhpcyBSZWFsdGVrIE1ESU8gYnVzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgUlRMODM4eC9SVEw5MzB4IHN3aXRjaCBTb0NzLCBhbmQgdGhlc2UgYXJlIHNwZWNpYWxpemVkIE1JUFMtYmFzZWQgaGFyZHdhcmUgY29tcG9uZW50cywgdGhleSBhcmVuJ3QgZW11bGF0ZWQgaW4gY29tbW9uIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiAgTW9yZW92ZXIsIHRoZSBkcml2ZXIncyBzdXBwcmVzc2lvbiBvZiBzeXNmcyBiaW5kaW5nIGNvbmZpcm1zIHRoYXQgaXQncyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggc3BlY2lmaWMgUmVhbHRlayBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgd2hpY2gsIGFnYWluLCBleGNsdWRlcyBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhlIGNoYW5nZXMgYXJlIGlzb2xhdGVkIHRvIGEgcGxhdGZvcm0tc3BlY2lmaWMgZHJpdmVyIChSZWFsdGVrIE90dG8gc3dpdGNoKSBhbmQgaW50cm9kdWNlIG5vLW9wIGJlaGF2aW9ycyBpbiBnZW5lcmFsLCB0aGVyZSdzIG5vIHJlYXNvbiB0byBjb25zaWRlciB0aGlzIHBhdGNoIHNlcmllcyBmdXp6YWJsZSBpbiBhbnkgc3RhbmRhcmQgc2V0dGluZy4gIFRoZSBtb2RpZmljYXRpb25zIGluIHRoZSBQSFkgY29yZSBhcmUgcGFzc2l2ZSB1bmxlc3MgdGhlIFJlYWx0ZWsgTURJTyBkcml2ZXIgaXMgcHJlc2VudCwgd2hpY2ggaXMgYSB2ZXJ5IHNwZWNpZmljIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQxNDksIk91dHB1dFRva2VucyI6MTkxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NTo1Ni42MjMyMjY0MDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBSVEw4MzgwL1JUTDgzOTAgc3VwcG9ydCBhbmQgTURJTyBwb2xsaW5nIGhhbmRsaW5nIHRvIHRoZSBSZWFsdGVrIE90dG8gTURJTyBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykgYWxvbmcgd2l0aCBoZWxwZXIgbm90aWZpY2F0aW9uIGNhbGxiYWNrcyBpbiB0aGUgY29yZSBQSFkgZGV2aWNlIGxheWVyIChkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jKS4gVGhlIGRyaXZlciBpcyBhbiBPRi1tYXRjaGVkIHBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGUgY29yZSBQSFkgYWRkaXRpb25zIGFyZSBuby1vcCBob29rcyB1bmxlc3MgdGhlIHVuZGVybHlpbmcgTURJTyBidXMgZHJpdmVyIGltcGxlbWVudHMgdGhlIGNhbGxiYWNrcywgd2hpY2ggb25seSB0aGlzIHVucmVhY2hhYmxlIGRyaXZlciBkb2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgUlRMODM4MC9SVEw4MzkwIHN1cHBvcnQgYW5kIE1ESU8gcG9sbGluZyBoYW5kbGluZyB0byB0aGUgUmVhbHRlayBPdHRvIE1ESU8gZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpIGFsb25nIHdpdGggaGVscGVyIG5vdGlmaWNhdGlvbiBjYWxsYmFja3MgaW4gdGhlIGNvcmUgUEhZIGRldmljZSBsYXllciAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYykuIFRoZSBkcml2ZXIgaXMgYW4gT0YtbWF0Y2hlZCBwbGF0Zm9ybSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIGNvcmUgUEhZIGFkZGl0aW9ucyBhcmUgbm8tb3AgaG9va3MgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIE1ESU8gYnVzIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBjYWxsYmFja3MsIHdoaWNoIG9ubHkgdGhpcyB1bnJlYWNoYWJsZSBkcml2ZXIgZG9lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU1OjU2LjYyMzI1NDM0MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqh4cm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 21:36:46 +0000 UTC FinishedAt: 2026-08-31 21:55:57 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDIxOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgUlRMODM4MC9SVEw4MzkwIHN1cHBvcnQgYW5kIE1ESU8gcG9sbGluZyBoYW5kbGluZyB0byB0aGUgUmVhbHRlayBPdHRvIE1ESU8gZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpIGFsb25nIHdpdGggaGVscGVyIG5vdGlmaWNhdGlvbiBjYWxsYmFja3MgaW4gdGhlIGNvcmUgUEhZIGRldmljZSBsYXllciAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYykuIFRoZSBkcml2ZXIgaXMgYW4gT0YtbWF0Y2hlZCBwbGF0Zm9ybSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIGNvcmUgUEhZIGFkZGl0aW9ucyBhcmUgbm8tb3AgaG9va3MgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIE1ESU8gYnVzIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBjYWxsYmFja3MsIHdoaWNoIG9ubHkgdGhpcyB1bnJlYWNoYWJsZSBkcml2ZXIgZG9lcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzOWNjYmFmYWYwYTkyZTE4MzUzODU4OWRmN2ZkMjU2YWE5MWYxMTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMjE6NTQ6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG5pbmRleCAyNzFlMDViYWU5YzU3Li42N2UwYjIzYTg0NzBlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbkBAIC00LDcgJiM0Mzs0LDcgQEBcbiAkaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sI1xuICRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuIFxuLXRpdGxlOiBSZWFsdGVrIFJUTDkzMDAgTURJTyBDb250cm9sbGVyXG4mIzQzO3RpdGxlOiBSZWFsdGVrIE90dG8gU3dpdGNoZXMgRXRoZXJuZXQgTURJTyBDb250cm9sbGVyXG4gXG4gbWFpbnRhaW5lcnM6XG4gICAtIENocmlzIFBhY2toYW0gXHUwMDNjY2hyaXMucGFja2hhbUBhbGxpZWR0ZWxlc2lzLmNvLm56XHUwMDNlXG5AQCAtMTIsNiAmIzQzOzEyLDE2IEBAIG1haW50YWluZXJzOlxuIHByb3BlcnRpZXM6XG4gICBjb21wYXRpYmxlOlxuICAgICBvbmVPZjpcbiYjNDM7ICAgICAgLSBpdGVtczpcbiYjNDM7ICAgICAgICAgIC0gZW51bTpcbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MS1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xuJiM0MzsgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw4MzgwLW1kaW9cbiYjNDM7ICAgICAgLSBpdGVtczpcbiYjNDM7ICAgICAgICAgIC0gZW51bTpcbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5Mi1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTMtbWRpb1xuJiM0MzsgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw4MzkxLW1kaW9cbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGVudW06XG4gICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmItbWRpb1xuQEAgLTI0LDYgJiM0MzszNCw4IEBAIHByb3BlcnRpZXM6XG4gICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMy1tZGlvXG4gICAgICAgICAgIC0gY29uc3Q6IHJlYWx0ZWsscnRsOTMxMS1tZGlvXG4gICAgICAgLSBlbnVtOlxuJiM0MzsgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODAtbWRpb1xuJiM0MzsgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTEtbWRpb1xuICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXG4gICAgICAgICAgIC0gcmVhbHRlayxydGw5MzExLW1kaW9cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcgYi9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcbmluZGV4IGEwNTIyOTgzOGNiNDUuLmQ0NDI3OGYyNmZhYmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1xuQEAgLTE3MiwxMSAmIzQzOzE3MiwxMSBAQCBjb25maWcgTURJT19JUFE4MDY0XG4gXHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0NcbiBcbiBjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcbi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMOTMwMCBNRElPIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4mIzQzO1x0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuIFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuIFx0aGVscFxuIFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTURJTyBpbnRlcmZhY2UgZm91bmQgaW4gdGhlIFJlYWx0ZWtcbi1cdCAgUlRMOTMwMCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbiYjNDM7XHQgIFJUTDgzeHgvUlRMOTN4eCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbiBcbiBjb25maWcgTURJT19SRUdNQVBcbiBcdHRyaXN0YXRlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG5pbmRleCBhZmQ1MmExY2Q3ZjgzLi4xMWQwNzhlZjk0MWNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbkBAIC0zNSwxMSAmIzQzOzM1LDg3IEBAXG4gICpcbiAgKiBUaGUgZHJpdmVyIHdvcmtzIG91dCB0aGUgbWFwcGluZyBiYXNlZCBvbiB0aGUgTURJTyBidXMgZGVzY3JpYmVkIGluIGRldmljZSB0cmVlIGFuZCBwaGFuZGxlcyBvblxuICAqIHRoZSBldGhlcm5ldC1wb3J0cyBwcm9wZXJ0eS5cbiYjNDM7ICpcbiYjNDM7ICogVGhlIGRldmljZXMgaGF2ZSBhIGhhcmR3YXJlIHBvbGxpbmcgdW5pdCB0aGF0IHJ1bnMgaW4gdGhlIGJhY2tncm91bmQgd2l0aG91dCBhbnkgQ1BVIGxvYWQuIEl0XG4mIzQzOyAqIGNvbnN0YW50bHkgc2NhbnMgdGhlIE1ESU8gYnVzIGFuZCB0aGUgYXR0YWNoZWQgUEhZcyBhbmQgdXBkYXRlcyB0aGUgTUFDIHN0YXR1cyByZWdpc3RlcnMuXG4mIzQzOyAqXG4mIzQzOyAqIEhvdyBkb2VzIHRoZSBwb2xsaW5nIHdvcms/XG4mIzQzOyAqXG4mIzQzOyAqIEVhY2ggZGV2aWNlIGhhcyBhIFNNSV9QT0xMX0NUUkwgcmVnaXN0ZXIuIEEgcGVyLXBvcnQgYml0bWFzayBkZWNpZGVzIGlmIHRoZSBoYXJkd2FyZSBwb2xsaW5nIG9mXG4mIzQzOyAqIHRoZSBhc3NvY2lhdGVkIGJ1cy9hZGRyZXNzIGlzIGFjdGl2ZSBvciBub3QuIFRoZSBoYXJkd2FyZSBydW5zIGEgdGlnaHQgbG9vcCBvdmVyIHRoaXMgYW5kIGZvclxuJiM0MzsgKiBlYWNoIHNldCBwb2xsaW5nIGJpdCBpdCBpc3N1ZXMgYSBzdGF0dXMgY2hlY2sgZm9yIHRoZSBQSFkuIEF0dGFjaGluZyBhIGxvZ2ljIGFuYWx5emVyIHRvIHRoZVxuJiM0MzsgKiBNRElPIGJ1cyBvZiBhbiBSVEw4MzgwIGFuZCBSVEw4MzkzIGdpdmVzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgKGluIGtlcm5lbCBub3RhdGlvbik6XG4mIzQzOyAqXG4mIzQzOyAqXHRSVEw4MzgwXHRcdFx0XHRSVEw4MzkzXG4mIzQzOyAqXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMzEsIDB4MCk7XHRwaHlfcmVhZChwaHksIDApO1xuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7XHRwaHlfcmVhZChwaHksIDEpO1xuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2MpO1x0cGh5X3JlYWQocGh5LCA0KTtcbiYjNDM7ICpcdHBoeV93cml0ZShwaHksIDEzLCAweDgwMDcpO1x0cGh5X3JlYWQocGh5LCA1KTtcbiYjNDM7ICpcdHBoeV9yZWFkKHBoeSwgMTQpO1x0XHRwaHlfcmVhZChwaHksIDYpO1xuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7XHRwaHlfcmVhZChwaHksIDkpO1xuJiM0MzsgKlx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2QpO1x0cGh5X3JlYWQocGh5LCAxMCk7XG4mIzQzOyAqXHRwaHlfd3JpdGUocGh5LCAxMywgMHg4MDA3KTtcdHBoeV9yZWFkKHBoeSwgMTUpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCAxNCk7XHRcdHBoeV93cml0ZShwaHksIDEzLCAweDcpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCA5KTtcdFx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2MpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCAxMCk7XHRcdHBoeV93cml0ZShwaHksIDEzLCAweDQwMDcpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCAxNSk7XHRcdHBoeV9yZWFkKHBoeSwgMTQpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCAwKTtcdFx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7XG4mIzQzOyAqXHRwaHlfcmVhZChwaHksIDEpO1x0XHRwaHlfd3JpdGUocGh5LCAxNCwgMHgzZCk7XG4mIzQzOyAqXHRwaHlfcmVhZChwaHksIDQpO1x0XHRwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTtcbiYjNDM7ICpcdHBoeV9yZWFkKHBoeSwgNSk7XHRcdHBoeV9yZWFkKHBoeSwgMTQpO1xuJiM0MzsgKlx0cGh5X3JlYWQocGh5LCA2KTtcbiYjNDM7ICpcbiYjNDM7ICogQWZ0ZXIgb25lIFBIWSBzdGF0dXMgaXMgcmVhZCwgdGhlIHBvbGxpbmcgZW5naW5lIGdvZXMgb3ZlciB0byB0aGUgbmV4dCBQSFkuIElmIG9uZSBidXMgaXMgZnVsbHlcbiYjNDM7ICogc2Nhbm5lZCBpdCBzd2l0Y2hlcyBvdmVyIHRvIHRoZSBuZXh0IGJ1cy4gQmFzaWNhbGx5IHRoZSBwb2xsaW5nIHN5c3RlbSBpcyBhbHdheXMgYnVzeSBhbmQgdGhlXG4mIzQzOyAqIE1BQyBzdGF0ZSBpcyB1cGRhdGVkIGluIHJlYWwtdGltZS5cbiYjNDM7ICpcbiYjNDM7ICogVGhpcyBpcyBhIGdsaW1wc2UgbG9vayBhdCB0aGUgY29tcGxleGl0eSBvZiB0aGUgcG9sbGluZyBhbmQgbGVhdmVzIG91dCB0aGUgQzQ1IGNhc2UgYW5kIHRoZSBNQUNcbiYjNDM7ICogcmVnaXN0ZXIgdXBkYXRlIGxvZ2ljIGFmdGVyd2FyZHMuIEltcG9ydGFudCB0byBub3RlOlxuJiM0MzsgKlxuJiM0MzsgKiAtIDEwMCBNQml0IGRvd25zaGlmdHMgKGJyb2tlbiBjYWJsZXMpIGFyZSBpZGVudGlmaWVkIGFuZCBwcm9wYWdhdGVkIHRvIHRoZSBNQUMgY29ycmVjdGx5XG4mIzQzOyAqIC0gQWNjZXNzIHRvIE1ESU9fQU5fRUVFX0FEViBhbmQgTURJT19BTl9FRUVfTFBBQkxFIHdvcmtzIHZpYSBDNDUgb3ZlciBDMjIuXG4mIzQzOyAqIC0gSXQgaXMgdW5jbGVhciBpZiB0aGVzZSBzZXF1ZW5jZXMgY2hhbmdlIGZvciBkaWZmZXJlbnQgUEhZcy5cbiYjNDM7ICogLSBBY2Nlc3MgdG8gUmVhbHRlayByZXNlcnZlZCByZWdpc3RlciAyNiAobGluayBzcGVlZCkgaGFzIG5vdCB5ZXQgYmVlbiBzZWVuLlxuJiM0MzsgKlxuJiM0MzsgKiBIb3cgZG9lcyBNRElPIGFjY2VzcyBmcm9tIGtlcm5lbCB3b3JrP1xuJiM0MzsgKlxuJiM0MzsgKiBXaGVuIGlzc3VpbmcgTURJTyBhY2Nlc3NlcyB2aWEgYW4gTU1JTyBiYXNlZCBpbnRlcmZhY2UgdGhlIGZpbmFsIHdyaXRlIHRvIHRoZSBjb21tYW5kIHJlZ2lzdGVyXG4mIzQzOyAqIHNldHMgYSBcJiMzNDtydW4gY29tbWFuZCBub3dcJiMzNDsgYml0LiBCZXR3ZWVuIHR3byBwb2xsaW5nIHNlcXVlbmNlcyBmb3IgZGlmZmVyZW50IFBIWXMgdGhlIGhhcmR3YXJlXG4mIzQzOyAqIGNoZWNrcyBpZiBhIHVzZXIgY29tbWFuZCBuZWVkcyB0byBydW4gYW5kIHNlbmRzIGl0IG9udG8gdGhlIGJ1cy4gQWZ0ZXJ3YXJkcyBpdCBzaW1wbHkgY29udGludWVzXG4mIzQzOyAqIGl0cyBwb2xsaW5nIHdvcmsuIEluc3BlY3RpbmcgdGhlIGNvbW1hbmQgc2VxdWVuY2UgZm9yIGEgcGFnZWQgd3JpdGUgb24gdGhlIGxvZ2ljIGFuYWx5emVyIGdpdmVzOlxuJiM0MzsgKlxuJiM0MzsgKlx0UlRMODM4MFx0XHRcdFx0UlRMODM5M1xuJiM0MzsgKlx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7ICpcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcbiYjNDM7ICpcdHBoeV93cml0ZShwaHksIHJlZywgdmFsdWUpO1x0cGh5X3dyaXRlKHBoeSwgcmVnLCB2YWx1ZSk7XG4mIzQzOyAqXHRcdFx0XHRcdHBoeV93cml0ZShwaHksIDMxLCAwKTtcbiYjNDM7ICpcbiYjNDM7ICogV2hhdCBkb2VzIHRoaXMgbWVhbj9cbiYjNDM7ICpcbiYjNDM7ICogVGhlcmUgYXJlIHNsaWdodCBkaWZmZXJlbmNlcyBpbiBwb2xsaW5nIGFuZCBQSFkgYWNjZXNzIGJldHdlZW4gdGhlIG1vZGVscyBidXQgdGhlIGNoYWxsZW5nZVxuJiM0MzsgKiBzdGF5cyB0aGUgc2FtZS4gT24gdGhlIG9uZSBoYW5kIHRoYXQgZ3JlYXRseSBzaW1wbGlmaWVzIHRoZSBNQUMgbGF5ZXIsIG9uIHRoZSBvdGhlciBoYW5kIGl0XG4mIzQzOyAqIGhhcyBzb21lIGltcGxpY2F0aW9ucyBmb3IgdGhlIGtlcm5lbCBQSFkgc3Vic3lzdGVtLlxuJiM0MzsgKlxuJiM0MzsgKiAtIFdpdGhvdXQgdGhlIHBvbGxpbmcgYW5kIGEgcHJvcGVyIE1BQyBzdGF0dXMsIHNvbWUgb2YgdGhlIGxpbmsgaGFuZGxpbmcgZmVhdHVyZXMgZG8gbm90IHdvcmsuXG4mIzQzOyAqICAgRXNwZWNpYWxseSBhbiB1bnBvcHVsYXRlZCBNQUNfTElOS19TVFMgcmVnaXN0ZXIgY2FuY2VscyBvcGVyYXRpb25zIHRvIG90aGVyIE1BQyByZWdpc3RlcnMuXG4mIzQzOyAqIC0gVGhlIFJlYWx0ZWsgcGFnZSByZWdpc3RlciAzMSBpcyBtYWdpY2FsbHkgbW9kaWZpZWQgaW4gdGhlIGJhY2tncm91bmQgc28gdGhhdCBwb2xsaW5nIHdpbGxcbiYjNDM7ICogICByZWFkIHRoZSByaWdodCBkYXRhLiBPbiB0aGUgUlRMODM4eCBwb2xsaW5nIHNpbXBseSByZXNldHMgaXQgdG8gemVyby4gT3RoZXIgZGV2aWNlcyBzZWVtXG4mIzQzOyAqICAgdG8gdHJhY2sgdGhlIHBhZ2UgYWNjZXNzIFwmIzM0O21hZ2ljYWxseVwmIzM0OyBpbiB0aGUgYmFja2dyb3VuZC5cbiYjNDM7ICogLSBBIEM0NSBvdmVyIEMyMiBrZXJuZWwgYWNjZXNzIHNlcXVlbmNlIGlzIG1vc3QgbGlrZWx5IHRvIGZhaWwgYmVjYXVzZSBjaGFuY2VzIGFyZSBoaWdoIHRoYXRcbiYjNDM7ICogICB0aGUgcG9sbGluZyBlbmdpbmUgb3ZlcndyaXRlcyByZWdpc3RlcnMgMTMvMTQgaW4gYmV0d2Vlbi5cbiYjNDM7ICogLSBQSFkgZmlybXdhcmUgbG9hZGluZyBjYW4gaGF2ZSBpc3N1ZXMuIEVzcGVjaWFsbHkgaWYgYSBQSFkgaXMgZGVzaWduZWQgdG8gZXhwZWN0IGEgY2xlYW5cbiYjNDM7ICogICBzZXF1ZW5jZSBvZiByZWdpc3RlcnMgYW5kIHZhbHVlcyB3aXRob3V0IGRldmlhdGlvbi5cbiYjNDM7ICogLSBBbiBhY2Nlc3MgdG8gb25lIFBIWSB3aWxsIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgZnJlZSBzbG90IG9mIHRoZSBwb2xsaW5nIGVuZ2luZS5cbiYjNDM7ICpcbiYjNDM7ICogQ29uY2x1c2lvbjogVGhlIFJlYWx0ZWsgTURJTyBidXMgZHJpdmVyIFBIWSBhY2Nlc3MgbXVzdCBrbm93IGFuZCBoYW5kbGUgYW55IGludGVyZmVyZW5jZSB0aGF0XG4mIzQzOyAqIGFyaXNlcyBmcm9tIHRoZSBhYm92ZSBkZXNjcmliZWQgaGFyZHdhcmUgcG9sbGluZy5cbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0bWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maW5kLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcdTAwM2VcbkBAIC01MCw2ICYjNDM7MTI2LDUwIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ21hcC5oXHUwMDNlXG4gXG4mIzQzOyNkZWZpbmUgUlRMODM4MF9OVU1fQlVTRVNcdFx0XHQxXG4mIzQzOyNkZWZpbmUgUlRMODM4MF9OVU1fUEFHRVNcdFx0XHQ0MDk2XG4mIzQzOyNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcdFx0XHQyOFxuJiM0MzsjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXHRcdFx0MHhhMTAwXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORVx0XHRCSVQoMTUpXG4mIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhhMWI4XG4mIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzFcdFx0MHhhMWJjXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSXHRcdEdFTk1BU0soMjQsIDIwKVxuJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0VcdFx0R0VOTUFTSygxOSwgMTUpXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX01BSU5fUEFHRVx0XHRHRU5NQVNLKDE0LCAzKVxuJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9XUklURVx0XHRCSVQoMilcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfUkVBRFx0XHRcdDBcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDVcdFx0QklUKDEpXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyXHRcdDBcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfRkFJTFx0XHRcdDAgLyogbm8gZmFpbCBpbmRpY2F0b3IgKi9cbiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMlx0XHQweGExYzBcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBXHRcdEdFTk1BU0soMzEsIDE2KVxuJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9EQVRBXHRcdFx0R0VOTUFTSygxNSwgMClcbiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfM1x0XHQweGExYzRcbiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9QT0xMX0NUUkxcdFx0XHQweGExN2NcbiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTFx0XHQweGExYzhcbiYjNDM7XG4mIzQzOyNkZWZpbmUgUlRMODM5MF9OVU1fQlVTRVNcdFx0XHQyXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9OVU1fUEFHRVNcdFx0XHQ4MTkyXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9OVU1fUE9SVFNcdFx0XHQ1MlxuJiM0MzsjZGVmaW5lIFJUTDgzOTBfQkNBU1RfUEhZSURfQ1RSTFx0XHQweDAzZWNcbiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19BQ0NFU1NfQ1RSTFx0XHQweDAzZGNcbiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFJcdFx0R0VOTUFTSyg5LCA1KVxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9NQUlOX1BBR0VcdFx0R0VOTUFTSygyMiwgMTApXG4mIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0ZBSUxcdFx0XHRCSVQoMSlcbiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfV1JJVEVcdFx0QklUKDMpXG4mIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1JFQURcdFx0XHQwXG4mIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1XHRcdEJJVCgyKVxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMlx0XHQwXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfQ1RSTFx0XHRcdDB4MDNlMFxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRVx0XHRHRU5NQVNLKDgsIDApXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMXHRcdDB4MDNmMFxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEFcdFx0R0VOTUFTSygzMSwgMTYpXG4mIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEFcdFx0XHRHRU5NQVNLKDE1LCAwKVxuJiM0MzsjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX01NRF9DVFJMXHRcdFx0MHgwM2Y0XG4mIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1x0XHQweDAzZTRcbiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSFx0XHQweDAzZThcbiYjNDM7I2RlZmluZSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTFx0XHQweDAzZmNcbiYjNDM7XG4gI2RlZmluZSBSVEw5MzAwX05VTV9CVVNFU1x0XHRcdDRcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFNcdFx0XHQyOFxuQEAgLTcwLDYgJiM0MzsxOTAsNyBAQFxuICNkZWZpbmUgICBSVEw5MzAwX1BIWV9DVFJMX0lOREFUQVx0XHRHRU5NQVNLKDMxLCAxNilcbiAjZGVmaW5lICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBXHRcdFx0R0VOTUFTSygxNSwgMClcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zXHRcdDB4Y2I3Y1xuJiM0MzsjZGVmaW5lIFJUTDkzMDBfU01JX1BPTExfQ1RSTFx0XHRcdDB4Y2E5MFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkxcdFx0MHhjYjgwXG4gXG4gI2RlZmluZSBSVEw5MzEwX05VTV9CVVNFU1x0XHRcdDRcbkBAIC05NSwxMiAmIzQzOzIxNiwxNiBAQFxuICNkZWZpbmUgICBSVEw5MzEwX1BIWV9DVFJMX0lOREFUQVx0XHRHRU5NQVNLKDE1LCAwKVxuICNkZWZpbmUgUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX01NRF9DVFJMXHQweDBjMThcbiAjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfQUREUl9DVFJMXHRcdDB4MGM3NFxuJiM0MzsjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMXHRcdDB4MGNjY1xuICNkZWZpbmUgUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTFx0XHQweDBjOWNcbiBcbiAjZGVmaW5lIFBIWV9DVFJMX0NNRFx0XHRcdFx0QklUKDApXG4gI2RlZmluZSBQSFlfQ1RSTF9NTURfREVWQURcdFx0XHRHRU5NQVNLKDIwLCAxNilcbiAjZGVmaW5lIFBIWV9DVFJMX01NRF9SRUdcdFx0XHRHRU5NQVNLKDE1LCAwKVxuIFxuJiM0MzsjZGVmaW5lIFJUTF9WRU5ET1JfSURcdFx0XHRcdDB4MDAxY2M4MDBcbiYjNDM7I2RlZmluZSBSVExfUEFHRV9TRUxFQ1RcdFx0XHRcdDMxXG4mIzQzO1xuICNkZWZpbmUgTUFQX0FERFJTX1BFUl9SRUdcdFx0XHQ2XG4gI2RlZmluZSBNQVBfQklUU19QRVJfQUREUlx0XHRcdDVcbiAjZGVmaW5lIE1BUF9CSVRTX1BFUl9CVVNcdFx0XHQyXG5AQCAtMTI2LDYgJiM0MzsyNTEsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4mIzQzO1x0dTE2IHBhZ2VbTUFYX1BPUlRTXTtcbiBcdHU4IHNtaV9idXNbTUFYX1BPUlRTXTtcbiBcdHU4IHNtaV9hZGRyW01BWF9QT1JUU107XG4gXHRib29sIHNtaV9idXNfaXNfYzQ1W01BWF9TTUlfQlVTU0VTXTtcbkBAIC0xNDIsNiAmIzQzOzI2OCw3IEBAIHN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xuIFx0dTggbnVtX2J1c2VzO1xuIFx0dTggbnVtX3BvcnRzO1xuIFx0dTE2IG51bV9wYWdlcztcbiYjNDM7XHR1MzIgcG9sbF9jdHJsO1xuIFx0aW50ICgqc2V0dXBfY29udHJvbGxlcikoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdik7XG4gXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuIFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuQEAgLTE3Nyw2ICYjNDM7MzA0LDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpvdHRvX2VtZGlvX2J1c190b19wcml2KHN0cnVjdCBtaWlfYnVzICpidXMpXG4gXHRyZXR1cm4gY2hhbi1cdTAwM2Vwcml2O1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgYWN0aXZlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHJlZ21hcF9hc3NpZ25fYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXBvbGxfY3RybCAmIzQzOyAocG9ydCAvIDMyKSAqIDQsXG4mIzQzO1x0XHRcdFx0ICBCSVQocG9ydCAlIDMyKSwgYWN0aXZlKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcbiB7XG5AQCAtMTg1LDkgJiM0MzszMTgsOSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0dTMyIGNtZHN0YXRlO1xuIFx0aW50IHJldDtcbiBcbi1cdC8qIERlZmVuc2l2ZSBwcmUgY2hlY2sganVzdCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIGhvcnJpYmxlIHdyb25nICovXG4mIzQzO1x0LyogRGVmZW5zaXZlIHByZSBjaGVjayBqdXN0IGluIGNhc2Ugc29tZXRoaW5nIGdvZXMgaG9ycmlibHkgd3JvbmcgKi9cbiBcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgaW5mby1cdTAwM2VjbWRfcmVncy5jMjJfZGF0YSxcbi1cdFx0XHRcdCAgICAgICBjbWRzdGF0ZSwgIShjbWRzdGF0ZSBcdTAwMjYgUEhZX0NUUkxfQ01EKSwgMTAsIDEwMDApO1xuJiM0MztcdFx0XHRcdCAgICAgICBjbWRzdGF0ZSwgIShjbWRzdGF0ZSBcdTAwMjYgUEhZX0NUUkxfQ01EKSwgMTAsIDEwMDAwKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMjI3LDcgJiM0MzszNjAsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuIFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBpbmZvLVx1MDAzZWNtZF9yZWdzLmMyMl9kYXRhLFxuLVx0XHRcdFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMCk7XG4mIzQzO1x0XHRcdFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMDApO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0yNjQsMTMgJiM0MzszOTcsMTIzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcbiBcdHJldHVybiBvdHRvX2VtZGlvX3J1bl9jbWQoYnVzLCBjbWQgfCBwcml2LVx1MDAzZWluZm8tXHUwMDNlY21kX3dyaXRlLCBjbWRfZGF0YSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4mIzQzO1x0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4mIzQzO1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuJiM0MztcdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4mIzQzO1x0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4mIzQzO1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXG4mIzQzO1x0XHQucG9ydF9tYXNrX2xvd1x0PSBCSVQocG9ydCksXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbiYjNDM7XHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4mIzQzO1x0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4mIzQzO1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4mIzQzO1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhLFxuJiM0MztcdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG4mIzQzO1x0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuJiM0MztcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuJiM0MztcdFx0XHRcdCAgRklFTERfUFJFUChQSFlfQ1RSTF9NTURfUkVHLCByZWdudW0pLFxuJiM0MztcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxuJiM0MztcdFx0LnBvcnRfbWFza19sb3dcdD0gQklUKHBvcnQpLFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuJiM0MztcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4mIzQzO1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuJiM0MztcdFx0LmV4dF9wYWdlXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLFxuJiM0MztcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbiYjNDM7XHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuJiM0MztcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4mIzQzO1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuJiM0MztcdFx0LmV4dF9wYWdlXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLFxuJiM0MztcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxuJiM0MztcdFx0LnBvcnRfbWFza19oaWdoXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXHUwMDNlXHUwMDNlIDMyKSxcbiYjNDM7XHRcdC5wb3J0X21hc2tfbG93XHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkpLFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG4mIzQzO1x0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuJiM0MztcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuJiM0MztcdFx0XHRcdCAgRklFTERfUFJFUChQSFlfQ1RSTF9NTURfUkVHLCByZWdudW0pLFxuJiM0MztcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSxcbiYjNDM7XHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuJiM0MztcdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiYjNDM7XHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSxcbiYjNDM7XHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcbiYjNDM7XHRcdC5wb3J0X21hc2tfaGlnaFx0PSAodTMyKShCSVRfVUxMKHBvcnQpIFx1MDAzZVx1MDAzZSAzMiksXG4mIzQzO1x0XHQucG9ydF9tYXNrX2xvd1x0PSAodTMyKShCSVRfVUxMKHBvcnQpKSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG4ge1xuIFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuIFx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbiBcdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1BBUktfUEFHRSwgMHgxZikgfFxuLVx0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksXG4mIzQzO1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuIFx0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcbiBcdH07XG4gXG5AQCAtMjg0LDcgJiM0Mzs1MjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sXG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiBcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4gXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcbi1cdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxuJiM0MztcdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi1cdTAwM2VwYWdlW3BvcnRdKSxcbiBcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxuIFx0XHQucG9ydF9tYXNrX2xvd1x0PSBCSVQocG9ydCksXG4gXHR9O1xuQEAgLTMyNCw3ICYjNDM7NTY3LDcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHVcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuIFx0XHQuYnJvYWRjYXN0XHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9CQ19QT1JUX0lELCBwb3J0KSxcbiBcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIFJBV19QQUdFKHByaXYpKSxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4gXHR9O1xuIFxuIFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbkBAIC0zMzYsNyAmIzQzOzU3OSw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiBcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIFJBV19QQUdFKHByaXYpKSxcbiYjNDM7XHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4gXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcbiBcdFx0LnBvcnRfbWFza19oaWdoXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXHUwMDNlXHUwMDNlIDMyKSxcbiBcdFx0LnBvcnRfbWFza19sb3dcdD0gKHUzMikoQklUX1VMTChwb3J0KSksXG5AQCAtMzc4LDI3ICYjNDM7NjIxLDUzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxuIFx0aW50IHJldCwgcG9ydDtcbiBcdHUzMiB2YWx1ZTtcbiBcbiYjNDM7XHRpZiAocmVnbnVtID09IE1JSV9NTURfQ1RSTCB8fCByZWdudW0gPT0gTUlJX01NRF9EQVRBKSB7XG4mIzQzO1x0XHRkZXZfd2Fybl9vbmNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdCAgICAgIFwmIzM0O0M0NSBvdmVyIEMyMiByZWFkIGFjY2VzcyBicm9rZW4gZHVlIHRvIHBvbGxpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XG4gXHRpZiAocG9ydCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHBvcnQ7XG4gXG4tXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaylcbiYjNDM7XHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaykge1xuJiM0MztcdFx0aWYgKHJlZ251bSA9PSBSVExfUEFHRV9TRUxFQ1QpXG4mIzQzO1x0XHRcdHJldHVybiBwcml2LVx1MDAzZXBhZ2VbcG9ydF07XG4mIzQzO1xuIFx0XHRyZXQgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlcmVhZF9jMjIoYnVzLCBwb3J0LCByZWdudW0sIFx1MDAyNnZhbHVlKTtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gcmV0ID8gcmV0IDogdmFsdWU7XG4gfVxuIFxuLXN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sXG4mIzQzO1x0XHRcdFx0dTE2IHZhbHVlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4gXHRpbnQgcmV0LCBwb3J0O1xuIFxuJiM0MztcdGlmIChyZWdudW0gPT0gTUlJX01NRF9DVFJMIHx8IHJlZ251bSA9PSBNSUlfTU1EX0RBVEEpIHtcbiYjNDM7XHRcdGRldl93YXJuX29uY2UoXHUwMDI2YnVzLVx1MDAzZWRldixcbiYjNDM7XHRcdFx0ICAgICAgXCYjMzQ7QzQ1IG92ZXIgQzIyIHdyaXRlIGFjY2VzcyBicm9rZW4gZHVlIHRvIHBvbGxpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XG4gXHRpZiAocG9ydCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHBvcnQ7XG4gXG4tXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaylcbiYjNDM7XHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaykge1xuJiM0MztcdFx0aWYgKHJlZ251bSA9PSBSVExfUEFHRV9TRUxFQ1QpIHtcbiYjNDM7XHRcdFx0aWYgKHZhbHVlIFx1MDAzZT0gUkFXX1BBR0UocHJpdikpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdFx0XHRwcml2LVx1MDAzZXBhZ2VbcG9ydF0gPSB2YWx1ZTtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRyZXQgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNld3JpdGVfYzIyKGJ1cywgcG9ydCwgcmVnbnVtLCB2YWx1ZSk7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDcxLDYgJiM0Mzs3NDAsMTUgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUEhZX1BBVENIX0RPTkUgZW5hYmxlcyBQSFkgY29udHJvbCB2aWEgU29DLiBUaGlzIGlzIHJlcXVpcmVkIGZvciBQSFkgYWNjZXNzLCBpbmNsdWRpbmdcbiYjNDM7XHQgKiBwYXRjaGluZyBhbmQgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBQSFlzIGFyZSBwcm9iZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xuQEAgLTUwNyw2ICYjNDM7Nzg1LDUxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXHUwMDNlbWRpby5hZGRyKTtcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXByaXY7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IGNoYW4tXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0aWYgKHBvcnQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdC8qIEFsbCBzdWJzZXF1ZW50IGJ1cyBvcGVyYXRpb25zIHdpbGwgZmFpbCAqL1xuJiM0MztcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O1BIWSBpcyBub3QgbWFwcGVkIHRvIGEgdmFsaWQgc3dpdGNoIHBvcnRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHBvcnQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBcJiMzNDtzeW5jXCYjMzQ7IHBhZ2UgaW4gY2FzZSBvZiBwcmV2aW91c2x5IGZhaWxlZCBhdHRhY2htZW50ICovXG4mIzQzO1x0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spXG4mIzQzO1x0XHRwcml2LVx1MDAzZXBhZ2VbcG9ydF0gPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlc21pX2J1c19pc19jNDVbY2hhbi1cdTAwM2VtZGlvX2J1c10gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFwaHlfaWRfY29tcGFyZV92ZW5kb3IocGh5ZGV2LVx1MDAzZXBoeV9pZCwgUlRMX1ZFTkRPUl9JRCkpIHtcbiYjNDM7XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtPbmx5IFJlYWx0ZWsgUEhZcyBhbGxvd2VkIG9uIEMyMiBidXNcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCB0cnVlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuJiM0MztcdGludCBwb3J0O1xuJiM0MztcbiYjNDM7XHRwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuJiM0MztcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcik7XG4mIzQzO1xuJiM0MztcdGlmIChwb3J0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKiBcJiMzNDtzeW5jXCYjMzQ7IHBhZ2UgZm9yIG5leHQgYXR0YWNobWVudCAqL1xuJiM0MztcdHNjb3BlZF9ndWFyZChtdXRleCwgXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKVxuJiM0MztcdFx0cHJpdi1cdTAwM2VwYWdlW3BvcnRdID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSkpXG4mIzQzO1x0XHRkZXZfZXJyKGJ1cy1cdTAwM2VwYXJlbnQsIFwmIzM0O2ZhaWxlZCB0byBkaXNhYmxlIHBvbGxpbmcgZm9yIHBvcnQgJWRcXG5cJiMzNDssIHBvcnQpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuIFx0XHRcdFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuIHtcbkBAIC01MjgsMTQgJiM0Mzs4NTEsMTQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXZcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRidXMtXHUwMDNlbmFtZSA9IFwmIzM0O1JlYWx0ZWsgU3dpdGNoIE1ESU8gQnVzXCYjMzQ7O1xuLVx0aWYgKHByaXYtXHUwMDNlc21pX2J1c19pc19jNDVbbWRpb19idXNdKSB7XG4tXHRcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XG4tXHRcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSBvdHRvX2VtZGlvX3dyaXRlX2M0NTtcbi1cdH0gZWxzZSB7XG4tXHRcdGJ1cy1cdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcbi1cdFx0YnVzLVx1MDAzZXdyaXRlID0gb3R0b19lbWRpb193cml0ZV9jMjI7XG4tXHR9XG4mIzQzO1x0YnVzLVx1MDAzZXJlYWRfYzQ1ID0gb3R0b19lbWRpb19yZWFkX2M0NTtcbiYjNDM7XHRidXMtXHUwMDNld3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7XG4mIzQzO1x0YnVzLVx1MDAzZXJlYWQgPSBvdHRvX2VtZGlvX3JlYWRfYzIyO1xuJiM0MztcdGJ1cy1cdTAwM2V3cml0ZSA9IG90dG9fZW1kaW9fd3JpdGVfYzIyO1xuIFx0YnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbiYjNDM7XHRidXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoO1xuJiM0MztcdGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2g7XG4mIzQzO1xuIFx0Y2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuIFx0Y2hhbi1cdTAwM2VtZGlvX2J1cyA9IG1kaW9fYnVzO1xuIFx0Y2hhbi1cdTAwM2Vwcml2ID0gcHJpdjtcbkBAIC02NTIsNiAmIzQzOzk3NSwxOSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fbWFwX3BvcnRzKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRmb3IgKGludCBwb3J0ID0gMDsgcG9ydCBcdTAwM2MgcHJpdi1cdTAwM2VpbmZvLVx1MDAzZW51bV9wb3J0czsgcG9ydCYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGVyciA9IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSk7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5AQCAtNjcxLDYgJiM0MzsxMDA3LDEwIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbiBcbiYjNDM7XHRlcnIgPSBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhwcml2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4gXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTtcbiBcbiBcdGVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7XG5AQCAtNjk2LDYgJiM0MzsxMDM2LDUxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHtcbiYjNDM7XHQuYWRkcl9tYXBfYmFzZSA9IFJUTDgzODBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuJiM0MztcdC5jbWRfZmFpbCA9IFJUTDgzODBfUEhZX0NUUkxfRkFJTCxcbiYjNDM7XHQuY21kX3JlYWQgPSBSVEw4MzgwX1BIWV9DVFJMX1JFQUQsXG4mIzQzO1x0LmNtZF93cml0ZSA9IFJUTDgzODBfUEhZX0NUUkxfV1JJVEUsXG4mIzQzO1x0LmNtZF9yZWdzID0ge1xuJiM0MztcdFx0LmMyMl9kYXRhID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEsXG4mIzQzO1x0XHQuYzQ1X2RhdGEgPSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMyxcbiYjNDM7XHRcdC5pb19kYXRhID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzIsXG4mIzQzO1x0XHQucG9ydF9tYXNrX2xvdyA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wLFxuJiM0MztcdH0sXG4mIzQzO1x0Lm51bV9idXNlcyA9IFJUTDgzODBfTlVNX0JVU0VTLFxuJiM0MztcdC5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUyxcbiYjNDM7XHQubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsXG4mIzQzO1x0LnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCxcbiYjNDM7XHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxuJiM0MztcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMixcbiYjNDM7XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG4mIzQzO1x0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIsXG4mIzQzO1x0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzOTBfaW5mbyA9IHtcbiYjNDM7XHQuY21kX2ZhaWwgPSBSVEw4MzkwX1BIWV9DVFJMX0ZBSUwsXG4mIzQzO1x0LmNtZF9yZWFkID0gUlRMODM5MF9QSFlfQ1RSTF9SRUFELFxuJiM0MztcdC5jbWRfd3JpdGUgPSBSVEw4MzkwX1BIWV9DVFJMX1dSSVRFLFxuJiM0MztcdC5jbWRfcmVncyA9IHtcbiYjNDM7XHRcdC5icm9hZGNhc3QgPSBSVEw4MzkwX0JDQVNUX1BIWUlEX0NUUkwsXG4mIzQzO1x0XHQuYzIyX2RhdGEgPSBSVEw4MzkwX1BIWVJFR19BQ0NFU1NfQ1RSTCxcbiYjNDM7XHRcdC5jNDVfZGF0YSA9IFJUTDgzOTBfUEhZUkVHX01NRF9DVFJMLFxuJiM0MztcdFx0LmV4dF9wYWdlID0gUlRMODM5MF9QSFlSRUdfQ1RSTCxcbiYjNDM7XHRcdC5pb19kYXRhID0gUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMLFxuJiM0MztcdFx0LnBvcnRfbWFza19sb3cgPSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfTE9XLFxuJiM0MztcdFx0LnBvcnRfbWFza19oaWdoID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0hJR0gsXG4mIzQzO1x0fSxcbiYjNDM7XHQubnVtX2J1c2VzID0gUlRMODM5MF9OVU1fQlVTRVMsXG4mIzQzO1x0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxuJiM0MztcdC5udW1fcG9ydHMgPSBSVEw4MzkwX05VTV9QT1JUUyxcbiYjNDM7XHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4mIzQzO1x0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxuJiM0MztcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcbiYjNDM7XHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcbiYjNDM7XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7XG4gXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuIFx0LmJ1c19tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMLFxuQEAgLTcxMSw2ICYjNDM7MTA5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuIFx0Lm51bV9idXNlcyA9IFJUTDkzMDBfTlVNX0JVU0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMDBfTlVNX1BPUlRTLFxuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMDBfTlVNX1BBR0VTLFxuJiM0MztcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4gXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxuIFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxuIFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LFxuQEAgLTczNiw2ICYjNDM7MTEyMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xuIFx0Lm51bV9idXNlcyA9IFJUTDkzMTBfTlVNX0JVU0VTLFxuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxuJiM0MztcdC5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXG5AQCAtNzQ0LDYgJiM0MzsxMTMxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvdHRvX2VtZGlvX2lkc1tdID0ge1xuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzODAtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzOTEtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzgzOTBfaW5mbyB9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsOTMwMS1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMwMF9pbmZvIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw5MzExLW1kaW9cJiMzNDssIC5kYXRhID0gXHUwMDI2b3R0b19lbWRpb185MzEwX2luZm8gfSxcbiBcdHt9XG5AQCAtNzU1LDEwICYjNDM7MTE0NCwxMSBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvdHRvX2VtZGlvX2RyaXZlciA9IHtcbiBcdC5kcml2ZXIgPSB7XG4gXHRcdC5uYW1lID0gXCYjMzQ7bWRpby1ydGw5MzAwXCYjMzQ7LFxuIFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvdHRvX2VtZGlvX2lkcyxcbiYjNDM7XHRcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcbiBcdH0sXG4gfTtcbiBcbiBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTtcbiBcbi1NT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UlRMOTMwMCBNRElPIGRyaXZlclwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtSVEw4M3h4L1JUTDkzeHggTURJTyBkcml2ZXJcJiMzNDspO1xuIE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDk0YjJlODVlMDBhMzcuLmRlNTlkODY0YjA2MDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTczNCw2ICYjNDM7MTczNCwxMDQgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbiBcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9kZXRhY2hfaW50ZXJuYWwgLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4mIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuJiM0MzsgKiBAbm90aWZ5X2J1czogd2hldGhlciB0byBub3RpZnkgdGhlIE1ESU8gYnVzIGFib3V0IHRoZSBQSFkgZGV0YWNoXG4mIzQzOyAqXG4mIzQzOyAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcbiYjNDM7ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgcGh5X2RldGFjaF9pbnRlcm5hbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIG5vdGlmeV9idXMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2RldjtcbiYjNDM7XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuJiM0MztcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWRldmxpbmspIHtcbiYjNDM7XHRcdGRldmljZV9saW5rX2RlbChwaHlkZXYtXHUwMDNlZGV2bGluayk7XG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IE5VTEw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZXN5c2ZzX2xpbmtzKSB7XG4mIzQzO1x0XHRpZiAoZGV2KVxuJiM0MztcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwmIzM0O3BoeWRldlwmIzM0Oyk7XG4mIzQzO1x0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaiwgXCYjMzQ7YXR0YWNoZWRfZGV2XCYjMzQ7KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2RldilcbiYjNDM7XHRcdHN5c2ZzX3JlbW92ZV9maWxlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLFxuJiM0MztcdFx0XHRcdCAgXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XG4mIzQzO1xuJiM0MztcdHBoeV9zdXNwZW5kKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdGlmIChub3RpZnlfYnVzIFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gpXG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gocGh5ZGV2KTtcbiYjNDM7XG4mIzQzO1x0aWYgKGRldikge1xuJiM0MztcdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4mIzQzO1xuJiM0MztcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4mIzQzO1x0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdik7XG4mIzQzO1x0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4mIzQzO1x0XHRpZiAoaHdwcm92IFx1MDAyNlx1MDAyNiBod3Byb3YtXHUwMDNlcGh5ZGV2ID09IHBoeWRldikge1xuJiM0MztcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZWh3cHJvdiwgTlVMTCk7XG4mIzQzO1x0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcbiYjNDM7XHRcdHBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gTlVMTDtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4mIzQzO1xuJiM0MztcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxuJiM0MztcdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbiYjNDM7XG4mIzQzO1x0LyogSWYgdGhlIGRldmljZSBoYWQgbm8gc3BlY2lmaWMgZHJpdmVyIGJlZm9yZSAoaS5lLiAtIGl0XG4mIzQzO1x0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4mIzQzO1x0ICogZnJvbSB0aGUgZ2VuZXJpYyBkcml2ZXIgc28gdGhhdCB0aGVyZSYjMzk7cyBhIGNoYW5jZSBhXG4mIzQzO1x0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4mIzQzO1x0XHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4mIzQzO1x0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSBwaHlkZXYgbWlnaHQgZ28gYXdheSBvbiB0aGUgcHV0X2RldmljZSgpIGJlbG93LCBzbyBhdm9pZFxuJiM0MztcdCAqIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHJlYWRpbmcgdGhlIHVuZGVybHlpbmcgYnVzIGZpcnN0LlxuJiM0MztcdCAqL1xuJiM0MztcdGJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbiYjNDM7XG4mIzQzO1x0cHV0X2RldmljZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuJiM0MztcdGlmIChkZXYpXG4mIzQzO1x0XHRuZGV2X293bmVyID0gZGV2LVx1MDAzZWRldi5wYXJlbnQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyO1xuJiM0MztcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lcilcbiYjNDM7XHRcdG1vZHVsZV9wdXQoYnVzLVx1MDAzZW93bmVyKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4mIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuJiM0MzsgKlxuJiM0MzsgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4mIzQzOyAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0LyogY2xlYW51cCBpbmNsdWRpbmcgYnVzIG5vdGlmaWNhdGlvbiAqL1xuJiM0MztcdHBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCB0cnVlKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKHBoeV9kZXRhY2gpO1xuJiM0MztcbiAvKipcbiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXG5AQCAtMTg3Niw2ICYjNDM7MTk3NCwxMiBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyb3I7XG4gXG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCkge1xuJiM0MztcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKHBoeWRldik7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRnb3RvIGVycm9yO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwaHlfcmVzdW1lKHBoeWRldik7XG4gXG4gXHQvKipcbkBAIC0xODkwLDggJiM0MzsxOTk0LDggQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRyZXR1cm4gZXJyO1xuIFxuIGVycm9yOlxuLVx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG4tXHRwaHlfZGV0YWNoKHBoeWRldik7XG4mIzQzO1x0LyogcGh5X2RldGFjaF9pbnRlcm5hbCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG4mIzQzO1x0cGh5X2RldGFjaF9pbnRlcm5hbChwaHlkZXYsIGZhbHNlKTtcbiBcdHJldHVybiBlcnI7XG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbkBAIC0xOTA2LDg2ICYjNDM7MjAxMCw2IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIH1cbiBFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbiBcbi0vKipcbi0gKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZVxuLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuLSAqXG4tICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxuLSAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cbi0gKi9cbi12b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi17XG4tXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2Rldjtcbi1cdHN0cnVjdCBtb2R1bGUgKm5kZXZfb3duZXIgPSBOVUxMO1xuLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbi1cbi1cdGlmIChwaHlkZXYtXHUwMDNlZGV2bGluaykge1xuLVx0XHRkZXZpY2VfbGlua19kZWwocGh5ZGV2LVx1MDAzZWRldmxpbmspO1xuLVx0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IE5VTEw7XG4tXHR9XG4tXG4tXHRpZiAocGh5ZGV2LVx1MDAzZXN5c2ZzX2xpbmtzKSB7XG4tXHRcdGlmIChkZXYpXG4tXHRcdFx0c3lzZnNfcmVtb3ZlX2xpbmsoXHUwMDI2ZGV2LVx1MDAzZWRldi5rb2JqLCBcJiMzNDtwaHlkZXZcJiMzNDspO1xuLVx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaiwgXCYjMzQ7YXR0YWNoZWRfZGV2XCYjMzQ7KTtcbi1cdH1cbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2Rldilcbi1cdFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmtvYmosXG4tXHRcdFx0XHQgIFx1MDAyNmRldl9hdHRyX3BoeV9zdGFuZGFsb25lLmF0dHIpO1xuLVxuLVx0cGh5X3N1c3BlbmQocGh5ZGV2KTtcbi1cdGlmIChkZXYpIHtcbi1cdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4tXG4tXHRcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxuLVx0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXG4tXHRcdCAqL1xuLVx0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuLVx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4tXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4tXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuLVx0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbi1cdFx0fVxuLVxuLVx0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xuLVx0XHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xuLVx0fVxuLVxuLVx0cGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XG4tXHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4tXG4tXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlcilcbi1cdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbi1cbi1cdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxuLVx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4tXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJiMzOTtzIGEgY2hhbmNlIGFcbi1cdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuLVx0ICovXG4tXHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbi1cdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4tXHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbi1cdH1cbi1cbi1cdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4tXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4tXG4tXHQvKlxuLVx0ICogVGhlIHBoeWRldiBtaWdodCBnbyBhd2F5IG9uIHRoZSBwdXRfZGV2aWNlKCkgYmVsb3csIHNvIGF2b2lkXG4tXHQgKiBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBieSByZWFkaW5nIHRoZSB1bmRlcmx5aW5nIGJ1cyBmaXJzdC5cbi1cdCAqL1xuLVx0YnVzID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzO1xuLVxuLVx0cHV0X2RldmljZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuLVx0aWYgKGRldilcbi1cdFx0bmRldl9vd25lciA9IGRldi1cdTAwM2VkZXYucGFyZW50LVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcjtcbi1cdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lcilcbi1cdFx0bW9kdWxlX3B1dChidXMtXHUwMDNlb3duZXIpO1xuLX1cbi1FWFBPUlRfU1lNQk9MKHBoeV9kZXRhY2gpO1xuLVxuIGludCBwaHlfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCA1ZjhkNjU4NjhlMGZmLi4zZDhhZmU2YjdmMWM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaFxuQEAgLTM3Niw2ICYjNDM7Mzc2LDI0IEBAIHN0cnVjdCBtaWlfYnVzIHtcbiBcdFx0XHQgaW50IHJlZ251bSwgdTE2IHZhbCk7XG4gXHQvKiogQHJlc2V0OiBQZXJmb3JtIGEgcmVzZXQgb2YgdGhlIGJ1cyAqL1xuIFx0aW50ICgqcmVzZXQpKHN0cnVjdCBtaWlfYnVzICpidXMpO1xuJiM0MztcdC8qKlxuJiM0MztcdCAqIEBub3RpZnlfcGh5X2F0dGFjaDogUGVyZm9ybSBwb3N0LWF0dGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcbiYjNDM7XHQgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfZGV0YWNoLiBDYWxsZWRcbiYjNDM7XHQgKiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpIHJpZ2h0IGJlZm9yZSBwaHlfcmVzdW1lKCkuIFJ1bnMgaW4gcHJvY2Vzc1xuJiM0MztcdCAqIGNvbnRleHQsIG1heSBzbGVlcCBhbmQgbWF5IGJlIGNhbGxlZCB3aXRoIFJUTkwgaGVsZC4gTXVzdCBub3RcbiYjNDM7XHQgKiBhY3F1aXJlIG9yIHJlbHkgb24gUlROTC4gUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJybm9cbiYjNDM7XHQgKiBvbiBmYWlsdXJlLiBNdXN0IHVud2luZCBpdHMgb3duIHN0YXRlIG9uIGVycm9yIGFzIGF0dGFjaG1lbnQgaXNcbiYjNDM7XHQgKiBhYm9ydGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGludCAoKm5vdGlmeV9waHlfYXR0YWNoKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjNDM7XHQvKipcbiYjNDM7XHQgKiBAbm90aWZ5X3BoeV9kZXRhY2g6IFBlcmZvcm0gcHJlLWRldGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcbiYjNDM7XHQgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfYXR0YWNoLiBDYWxsZWRcbiYjNDM7XHQgKiBpbiBwaHlfZGV0YWNoKCkgcmlnaHQgYWZ0ZXIgcGh5X3N1c3BlbmQoKS4gUnVucyBpbiBwcm9jZXNzIGNvbnRleHQsXG4mIzQzO1x0ICogbWF5IHNsZWVwIGFuZCBtYXkgYmUgY2FsbGVkIHdpdGggUlROTCBoZWxkLiBNdXN0IG5vdCBhY3F1aXJlIG9yXG4mIzQzO1x0ICogcmVseSBvbiBSVE5MLlxuJiM0MztcdCAqL1xuJiM0MztcdHZvaWQgKCpub3RpZnlfcGh5X2RldGFjaCkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gXG4gXHQvKiogQHN0YXRzOiBTdGF0aXN0aWMgY291bnRlcnMgcGVyIGRldmljZSBvbiB0aGUgYnVzICovXG4gXHRzdHJ1Y3QgbWRpb19idXNfc3RhdHMgc3RhdHNbUEhZX01BWF9BRERSXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMTo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgYWRkcyBSVEw4MzgwL1JUTDgzOTAgc3VwcG9ydCBhbmQgTURJTyBwb2xsaW5nIGhhbmRsaW5nIHRvIHRoZSBSZWFsdGVrIE90dG8gTURJTyBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykgYWxvbmcgd2l0aCBoZWxwZXIgbm90aWZpY2F0aW9uIGNhbGxiYWNrcyBpbiB0aGUgY29yZSBQSFkgZGV2aWNlIGxheWVyIChkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jKS4gVGhlIGRyaXZlciBpcyBhbiBPRi1tYXRjaGVkIHBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGUgY29yZSBQSFkgYWRkaXRpb25zIGFyZSBuby1vcCBob29rcyB1bmxlc3MgdGhlIHVuZGVybHlpbmcgTURJTyBidXMgZHJpdmVyIGltcGxlbWVudHMgdGhlIGNhbGxiYWNrcywgd2hpY2ggb25seSB0aGlzIHVucmVhY2hhYmxlIGRyaXZlciBkb2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5Y2NiYWZhZjBhOTJlMTgzNTM4NTg5ZGY3ZmQyNTZhYTkxZjExNjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAyMTo1NDo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbAppbmRleCAyNzFlMDViYWU5YzU3Li42N2UwYjIzYTg0NzBlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sCkBAIC00LDcgJiM0Mzs0LDcgQEAKICRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwjCiAkc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCMKIAotdGl0bGU6IFJlYWx0ZWsgUlRMOTMwMCBNRElPIENvbnRyb2xsZXIKJiM0Mzt0aXRsZTogUmVhbHRlayBPdHRvIFN3aXRjaGVzIEV0aGVybmV0IE1ESU8gQ29udHJvbGxlcgogCiBtYWludGFpbmVyczoKICAgLSBDaHJpcyBQYWNraGFtICZsdDtjaHJpcy5wYWNraGFtQGFsbGllZHRlbGVzaXMuY28ubnomZ3Q7CkBAIC0xMiw2ICYjNDM7MTIsMTYgQEAgbWFpbnRhaW5lcnM6CiBwcm9wZXJ0aWVzOgogICBjb21wYXRpYmxlOgogICAgIG9uZU9mOgomIzQzOyAgICAgIC0gaXRlbXM6CiYjNDM7ICAgICAgICAgIC0gZW51bToKJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgxLW1kaW8KJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgyLW1kaW8KJiM0MzsgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw4MzgwLW1kaW8KJiM0MzsgICAgICAtIGl0ZW1zOgomIzQzOyAgICAgICAgICAtIGVudW06CiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5Mi1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5My1tZGlvCiYjNDM7ICAgICAgICAgIC0gY29uc3Q6IHJlYWx0ZWsscnRsODM5MS1tZGlvCiAgICAgICAtIGl0ZW1zOgogICAgICAgICAgIC0gZW51bToKICAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDJiLW1kaW8KQEAgLTI0LDYgJiM0MzszNCw4IEBAIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEzLW1kaW8KICAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDkzMTEtbWRpbwogICAgICAgLSBlbnVtOgomIzQzOyAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MC1tZGlvCiYjNDM7ICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkxLW1kaW8KICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvCiAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMTEtbWRpbwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcgYi9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcKaW5kZXggYTA1MjI5ODM4Y2I0NS4uZDQ0Mjc4ZjI2ZmFiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZwpAQCAtMTcyLDExICYjNDM7MTcyLDExIEBAIGNvbmZpZyBNRElPX0lQUTgwNjQKIAkgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0MKIAogY29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwCi0JdHJpc3RhdGUgJiMzNDtSZWFsdGVrIFJUTDkzMDAgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydCYjMzQ7CiYjNDM7CXRyaXN0YXRlICYjMzQ7UmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydCYjMzQ7CiAJZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVAogCWhlbHAKIAkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGludGVyZmFjZSBmb3VuZCBpbiB0aGUgUmVhbHRlawotCSAgUlRMOTMwMCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy4KJiM0MzsJICBSVEw4M3h4L1JUTDkzeHggZmFtaWx5IG9mIEV0aGVybmV0IHN3aXRjaGVzIHdpdGggaW50ZWdyYXRlZCBTb0MuCiAKIGNvbmZpZyBNRElPX1JFR01BUAogCXRyaXN0YXRlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMKaW5kZXggYWZkNTJhMWNkN2Y4My4uMTFkMDc4ZWY5NDFjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYwpAQCAtMzUsMTEgJiM0MzszNSw4NyBAQAogICoKICAqIFRoZSBkcml2ZXIgd29ya3Mgb3V0IHRoZSBtYXBwaW5nIGJhc2VkIG9uIHRoZSBNRElPIGJ1cyBkZXNjcmliZWQgaW4gZGV2aWNlIHRyZWUgYW5kIHBoYW5kbGVzIG9uCiAgKiB0aGUgZXRoZXJuZXQtcG9ydHMgcHJvcGVydHkuCiYjNDM7ICoKJiM0MzsgKiBUaGUgZGV2aWNlcyBoYXZlIGEgaGFyZHdhcmUgcG9sbGluZyB1bml0IHRoYXQgcnVucyBpbiB0aGUgYmFja2dyb3VuZCB3aXRob3V0IGFueSBDUFUgbG9hZC4gSXQKJiM0MzsgKiBjb25zdGFudGx5IHNjYW5zIHRoZSBNRElPIGJ1cyBhbmQgdGhlIGF0dGFjaGVkIFBIWXMgYW5kIHVwZGF0ZXMgdGhlIE1BQyBzdGF0dXMgcmVnaXN0ZXJzLgomIzQzOyAqCiYjNDM7ICogSG93IGRvZXMgdGhlIHBvbGxpbmcgd29yaz8KJiM0MzsgKgomIzQzOyAqIEVhY2ggZGV2aWNlIGhhcyBhIFNNSV9QT0xMX0NUUkwgcmVnaXN0ZXIuIEEgcGVyLXBvcnQgYml0bWFzayBkZWNpZGVzIGlmIHRoZSBoYXJkd2FyZSBwb2xsaW5nIG9mCiYjNDM7ICogdGhlIGFzc29jaWF0ZWQgYnVzL2FkZHJlc3MgaXMgYWN0aXZlIG9yIG5vdC4gVGhlIGhhcmR3YXJlIHJ1bnMgYSB0aWdodCBsb29wIG92ZXIgdGhpcyBhbmQgZm9yCiYjNDM7ICogZWFjaCBzZXQgcG9sbGluZyBiaXQgaXQgaXNzdWVzIGEgc3RhdHVzIGNoZWNrIGZvciB0aGUgUEhZLiBBdHRhY2hpbmcgYSBsb2dpYyBhbmFseXplciB0byB0aGUKJiM0MzsgKiBNRElPIGJ1cyBvZiBhbiBSVEw4MzgwIGFuZCBSVEw4MzkzIGdpdmVzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgKGluIGtlcm5lbCBub3RhdGlvbik6CiYjNDM7ICoKJiM0MzsgKglSVEw4MzgwCQkJCVJUTDgzOTMKJiM0MzsgKgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7ICoJcGh5X3dyaXRlKHBoeSwgMzEsIDB4MCk7CXBoeV9yZWFkKHBoeSwgMCk7CiYjNDM7ICoJcGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7CXBoeV9yZWFkKHBoeSwgMSk7CiYjNDM7ICoJcGh5X3dyaXRlKHBoeSwgMTQsIDB4M2MpOwlwaHlfcmVhZChwaHksIDQpOwomIzQzOyAqCXBoeV93cml0ZShwaHksIDEzLCAweDgwMDcpOwlwaHlfcmVhZChwaHksIDUpOwomIzQzOyAqCXBoeV9yZWFkKHBoeSwgMTQpOwkJcGh5X3JlYWQocGh5LCA2KTsKJiM0MzsgKglwaHlfd3JpdGUocGh5LCAxMywgMHg3KTsJcGh5X3JlYWQocGh5LCA5KTsKJiM0MzsgKglwaHlfd3JpdGUocGh5LCAxNCwgMHgzZCk7CXBoeV9yZWFkKHBoeSwgMTApOwomIzQzOyAqCXBoeV93cml0ZShwaHksIDEzLCAweDgwMDcpOwlwaHlfcmVhZChwaHksIDE1KTsKJiM0MzsgKglwaHlfcmVhZChwaHksIDE0KTsJCXBoeV93cml0ZShwaHksIDEzLCAweDcpOwomIzQzOyAqCXBoeV9yZWFkKHBoeSwgOSk7CQlwaHlfd3JpdGUocGh5LCAxNCwgMHgzYyk7CiYjNDM7ICoJcGh5X3JlYWQocGh5LCAxMCk7CQlwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTsKJiM0MzsgKglwaHlfcmVhZChwaHksIDE1KTsJCXBoeV9yZWFkKHBoeSwgMTQpOwomIzQzOyAqCXBoeV9yZWFkKHBoeSwgMCk7CQlwaHlfd3JpdGUocGh5LCAxMywgMHg3KTsKJiM0MzsgKglwaHlfcmVhZChwaHksIDEpOwkJcGh5X3dyaXRlKHBoeSwgMTQsIDB4M2QpOwomIzQzOyAqCXBoeV9yZWFkKHBoeSwgNCk7CQlwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTsKJiM0MzsgKglwaHlfcmVhZChwaHksIDUpOwkJcGh5X3JlYWQocGh5LCAxNCk7CiYjNDM7ICoJcGh5X3JlYWQocGh5LCA2KTsKJiM0MzsgKgomIzQzOyAqIEFmdGVyIG9uZSBQSFkgc3RhdHVzIGlzIHJlYWQsIHRoZSBwb2xsaW5nIGVuZ2luZSBnb2VzIG92ZXIgdG8gdGhlIG5leHQgUEhZLiBJZiBvbmUgYnVzIGlzIGZ1bGx5CiYjNDM7ICogc2Nhbm5lZCBpdCBzd2l0Y2hlcyBvdmVyIHRvIHRoZSBuZXh0IGJ1cy4gQmFzaWNhbGx5IHRoZSBwb2xsaW5nIHN5c3RlbSBpcyBhbHdheXMgYnVzeSBhbmQgdGhlCiYjNDM7ICogTUFDIHN0YXRlIGlzIHVwZGF0ZWQgaW4gcmVhbC10aW1lLgomIzQzOyAqCiYjNDM7ICogVGhpcyBpcyBhIGdsaW1wc2UgbG9vayBhdCB0aGUgY29tcGxleGl0eSBvZiB0aGUgcG9sbGluZyBhbmQgbGVhdmVzIG91dCB0aGUgQzQ1IGNhc2UgYW5kIHRoZSBNQUMKJiM0MzsgKiByZWdpc3RlciB1cGRhdGUgbG9naWMgYWZ0ZXJ3YXJkcy4gSW1wb3J0YW50IHRvIG5vdGU6CiYjNDM7ICoKJiM0MzsgKiAtIDEwMCBNQml0IGRvd25zaGlmdHMgKGJyb2tlbiBjYWJsZXMpIGFyZSBpZGVudGlmaWVkIGFuZCBwcm9wYWdhdGVkIHRvIHRoZSBNQUMgY29ycmVjdGx5CiYjNDM7ICogLSBBY2Nlc3MgdG8gTURJT19BTl9FRUVfQURWIGFuZCBNRElPX0FOX0VFRV9MUEFCTEUgd29ya3MgdmlhIEM0NSBvdmVyIEMyMi4KJiM0MzsgKiAtIEl0IGlzIHVuY2xlYXIgaWYgdGhlc2Ugc2VxdWVuY2VzIGNoYW5nZSBmb3IgZGlmZmVyZW50IFBIWXMuCiYjNDM7ICogLSBBY2Nlc3MgdG8gUmVhbHRlayByZXNlcnZlZCByZWdpc3RlciAyNiAobGluayBzcGVlZCkgaGFzIG5vdCB5ZXQgYmVlbiBzZWVuLgomIzQzOyAqCiYjNDM7ICogSG93IGRvZXMgTURJTyBhY2Nlc3MgZnJvbSBrZXJuZWwgd29yaz8KJiM0MzsgKgomIzQzOyAqIFdoZW4gaXNzdWluZyBNRElPIGFjY2Vzc2VzIHZpYSBhbiBNTUlPIGJhc2VkIGludGVyZmFjZSB0aGUgZmluYWwgd3JpdGUgdG8gdGhlIGNvbW1hbmQgcmVnaXN0ZXIKJiM0MzsgKiBzZXRzIGEgJiMzNDtydW4gY29tbWFuZCBub3cmIzM0OyBiaXQuIEJldHdlZW4gdHdvIHBvbGxpbmcgc2VxdWVuY2VzIGZvciBkaWZmZXJlbnQgUEhZcyB0aGUgaGFyZHdhcmUKJiM0MzsgKiBjaGVja3MgaWYgYSB1c2VyIGNvbW1hbmQgbmVlZHMgdG8gcnVuIGFuZCBzZW5kcyBpdCBvbnRvIHRoZSBidXMuIEFmdGVyd2FyZHMgaXQgc2ltcGx5IGNvbnRpbnVlcwomIzQzOyAqIGl0cyBwb2xsaW5nIHdvcmsuIEluc3BlY3RpbmcgdGhlIGNvbW1hbmQgc2VxdWVuY2UgZm9yIGEgcGFnZWQgd3JpdGUgb24gdGhlIGxvZ2ljIGFuYWx5emVyIGdpdmVzOgomIzQzOyAqCiYjNDM7ICoJUlRMODM4MAkJCQlSVEw4MzkzCiYjNDM7ICoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyAqCXBoeV93cml0ZShwaHksIDMxLCBwYWdlKTsJcGh5X3dyaXRlKHBoeSwgMzEsIHBhZ2UpOwomIzQzOyAqCXBoeV93cml0ZShwaHksIHJlZywgdmFsdWUpOwlwaHlfd3JpdGUocGh5LCByZWcsIHZhbHVlKTsKJiM0MzsgKgkJCQkJcGh5X3dyaXRlKHBoeSwgMzEsIDApOwomIzQzOyAqCiYjNDM7ICogV2hhdCBkb2VzIHRoaXMgbWVhbj8KJiM0MzsgKgomIzQzOyAqIFRoZXJlIGFyZSBzbGlnaHQgZGlmZmVyZW5jZXMgaW4gcG9sbGluZyBhbmQgUEhZIGFjY2VzcyBiZXR3ZWVuIHRoZSBtb2RlbHMgYnV0IHRoZSBjaGFsbGVuZ2UKJiM0MzsgKiBzdGF5cyB0aGUgc2FtZS4gT24gdGhlIG9uZSBoYW5kIHRoYXQgZ3JlYXRseSBzaW1wbGlmaWVzIHRoZSBNQUMgbGF5ZXIsIG9uIHRoZSBvdGhlciBoYW5kIGl0CiYjNDM7ICogaGFzIHNvbWUgaW1wbGljYXRpb25zIGZvciB0aGUga2VybmVsIFBIWSBzdWJzeXN0ZW0uCiYjNDM7ICoKJiM0MzsgKiAtIFdpdGhvdXQgdGhlIHBvbGxpbmcgYW5kIGEgcHJvcGVyIE1BQyBzdGF0dXMsIHNvbWUgb2YgdGhlIGxpbmsgaGFuZGxpbmcgZmVhdHVyZXMgZG8gbm90IHdvcmsuCiYjNDM7ICogICBFc3BlY2lhbGx5IGFuIHVucG9wdWxhdGVkIE1BQ19MSU5LX1NUUyByZWdpc3RlciBjYW5jZWxzIG9wZXJhdGlvbnMgdG8gb3RoZXIgTUFDIHJlZ2lzdGVycy4KJiM0MzsgKiAtIFRoZSBSZWFsdGVrIHBhZ2UgcmVnaXN0ZXIgMzEgaXMgbWFnaWNhbGx5IG1vZGlmaWVkIGluIHRoZSBiYWNrZ3JvdW5kIHNvIHRoYXQgcG9sbGluZyB3aWxsCiYjNDM7ICogICByZWFkIHRoZSByaWdodCBkYXRhLiBPbiB0aGUgUlRMODM4eCBwb2xsaW5nIHNpbXBseSByZXNldHMgaXQgdG8gemVyby4gT3RoZXIgZGV2aWNlcyBzZWVtCiYjNDM7ICogICB0byB0cmFjayB0aGUgcGFnZSBhY2Nlc3MgJiMzNDttYWdpY2FsbHkmIzM0OyBpbiB0aGUgYmFja2dyb3VuZC4KJiM0MzsgKiAtIEEgQzQ1IG92ZXIgQzIyIGtlcm5lbCBhY2Nlc3Mgc2VxdWVuY2UgaXMgbW9zdCBsaWtlbHkgdG8gZmFpbCBiZWNhdXNlIGNoYW5jZXMgYXJlIGhpZ2ggdGhhdAomIzQzOyAqICAgdGhlIHBvbGxpbmcgZW5naW5lIG92ZXJ3cml0ZXMgcmVnaXN0ZXJzIDEzLzE0IGluIGJldHdlZW4uCiYjNDM7ICogLSBQSFkgZmlybXdhcmUgbG9hZGluZyBjYW4gaGF2ZSBpc3N1ZXMuIEVzcGVjaWFsbHkgaWYgYSBQSFkgaXMgZGVzaWduZWQgdG8gZXhwZWN0IGEgY2xlYW4KJiM0MzsgKiAgIHNlcXVlbmNlIG9mIHJlZ2lzdGVycyBhbmQgdmFsdWVzIHdpdGhvdXQgZGV2aWF0aW9uLgomIzQzOyAqIC0gQW4gYWNjZXNzIHRvIG9uZSBQSFkgd2lsbCBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IGZyZWUgc2xvdCBvZiB0aGUgcG9sbGluZyBlbmdpbmUuCiYjNDM7ICoKJiM0MzsgKiBDb25jbHVzaW9uOiBUaGUgUmVhbHRlayBNRElPIGJ1cyBkcml2ZXIgUEhZIGFjY2VzcyBtdXN0IGtub3cgYW5kIGhhbmRsZSBhbnkgaW50ZXJmZXJlbmNlIHRoYXQKJiM0MzsgKiBhcmlzZXMgZnJvbSB0aGUgYWJvdmUgZGVzY3JpYmVkIGhhcmR3YXJlIHBvbGxpbmcuCiAgKi8KIAogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdGZpZWxkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYml0bWFwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYml0cy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9maW5kLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKQEAgLTUwLDYgJiM0MzsxMjYsNTAgQEAKICNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZ21hcC5oJmd0OwogCiYjNDM7I2RlZmluZSBSVEw4MzgwX05VTV9CVVNFUwkJCTEKJiM0MzsjZGVmaW5lIFJUTDgzODBfTlVNX1BBR0VTCQkJNDA5NgomIzQzOyNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFMJCQkyOAomIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkwJCQkweGExMDAKJiM0MzsjZGVmaW5lICAgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkUJCUJJVCgxNSkKJiM0MzsjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wCQkweGExYjgKJiM0MzsjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xCQkweGExYmMKJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUgkJR0VOTUFTSygyNCwgMjApCiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfUEFSS19QQUdFCQlHRU5NQVNLKDE5LCAxNSkKJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UJCUdFTk1BU0soMTQsIDMpCiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfV1JJVEUJCUJJVCgyKQomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1JFQUQJCQkwCiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUJCUJJVCgxKQomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyCQkwCiYjNDM7I2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfRkFJTAkJCTAgLyogbm8gZmFpbCBpbmRpY2F0b3IgKi8KJiM0MzsjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8yCQkweGExYzAKJiM0MzsjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEJCUdFTk1BU0soMzEsIDE2KQomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEJCQlHRU5NQVNLKDE1LCAwKQomIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzMJCTB4YTFjNAomIzQzOyNkZWZpbmUgUlRMODM4MF9TTUlfUE9MTF9DVFJMCQkJMHhhMTdjCiYjNDM7I2RlZmluZSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTAkJMHhhMWM4CiYjNDM7CiYjNDM7I2RlZmluZSBSVEw4MzkwX05VTV9CVVNFUwkJCTIKJiM0MzsjZGVmaW5lIFJUTDgzOTBfTlVNX1BBR0VTCQkJODE5MgomIzQzOyNkZWZpbmUgUlRMODM5MF9OVU1fUE9SVFMJCQk1MgomIzQzOyNkZWZpbmUgUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMCQkweDAzZWMKJiM0MzsjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX0FDQ0VTU19DVFJMCQkweDAzZGMKJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUgkJR0VOTUFTSyg5LCA1KQomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRQkJR0VOTUFTSygyMiwgMTApCiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfRkFJTAkJCUJJVCgxKQomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1dSSVRFCQlCSVQoMykKJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9SRUFECQkJMAomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1CQlCSVQoMikKJiM0MzsjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMgkJMAomIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfQ1RSTAkJCTB4MDNlMAomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0VYVF9QQUdFCQlHRU5NQVNLKDgsIDApCiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19EQVRBX0NUUkwJCTB4MDNmMAomIzQzOyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0lOREFUQQkJR0VOTUFTSygzMSwgMTYpCiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfREFUQQkJCUdFTk1BU0soMTUsIDApCiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTAkJCTB4MDNmNAomIzQzOyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPVwkJMHgwM2U0CiYjNDM7I2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSAkJMHgwM2U4CiYjNDM7I2RlZmluZSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTAkJMHgwM2ZjCiYjNDM7CiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTCQkJNAogI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFMJCQkyOApAQCAtNzAsNiAmIzQzOzE5MCw3IEBACiAjZGVmaW5lICAgUlRMOTMwMF9QSFlfQ1RSTF9JTkRBVEEJCUdFTk1BU0soMzEsIDE2KQogI2RlZmluZSAgIFJUTDkzMDBfUEhZX0NUUkxfREFUQQkJCUdFTk1BU0soMTUsIDApCiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zCQkweGNiN2MKJiM0MzsjZGVmaW5lIFJUTDkzMDBfU01JX1BPTExfQ1RSTAkJCTB4Y2E5MAogI2RlZmluZSBSVEw5MzAwX1NNSV9QT1JUMF81X0FERFJfQ1RSTAkJMHhjYjgwCiAKICNkZWZpbmUgUlRMOTMxMF9OVU1fQlVTRVMJCQk0CkBAIC05NSwxMiAmIzQzOzIxNiwxNiBAQAogI2RlZmluZSAgIFJUTDkzMTBfUEhZX0NUUkxfSU5EQVRBCQlHRU5NQVNLKDE1LCAwKQogI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfTU1EX0NUUkwJMHgwYzE4CiAjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfQUREUl9DVFJMCQkweDBjNzQKJiM0MzsjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMCQkweDBjY2MKICNkZWZpbmUgUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTAkJMHgwYzljCiAKICNkZWZpbmUgUEhZX0NUUkxfQ01ECQkJCUJJVCgwKQogI2RlZmluZSBQSFlfQ1RSTF9NTURfREVWQUQJCQlHRU5NQVNLKDIwLCAxNikKICNkZWZpbmUgUEhZX0NUUkxfTU1EX1JFRwkJCUdFTk1BU0soMTUsIDApCiAKJiM0MzsjZGVmaW5lIFJUTF9WRU5ET1JfSUQJCQkJMHgwMDFjYzgwMAomIzQzOyNkZWZpbmUgUlRMX1BBR0VfU0VMRUNUCQkJCTMxCiYjNDM7CiAjZGVmaW5lIE1BUF9BRERSU19QRVJfUkVHCQkJNgogI2RlZmluZSBNQVBfQklUU19QRVJfQUREUgkJCTUKICNkZWZpbmUgTUFQX0JJVFNfUEVSX0JVUwkJCTIKQEAgLTEyNiw2ICYjNDM7MjUxLDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7CiAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwogCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqLwogCURFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpOwomIzQzOwl1MTYgcGFnZVtNQVhfUE9SVFNdOwogCXU4IHNtaV9idXNbTUFYX1BPUlRTXTsKIAl1OCBzbWlfYWRkcltNQVhfUE9SVFNdOwogCWJvb2wgc21pX2J1c19pc19jNDVbTUFYX1NNSV9CVVNTRVNdOwpAQCAtMTQyLDYgJiM0MzsyNjgsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHsKIAl1OCBudW1fYnVzZXM7CiAJdTggbnVtX3BvcnRzOwogCXUxNiBudW1fcGFnZXM7CiYjNDM7CXUzMiBwb2xsX2N0cmw7CiAJaW50ICgqc2V0dXBfY29udHJvbGxlcikoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdik7CiAJaW50ICgqcmVhZF9jMjIpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTsKIAlpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7CkBAIC0xNzcsNiAmIzQzOzMwNCwxMiBAQCBzdGF0aWMgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqb3R0b19lbWRpb19idXNfdG9fcHJpdihzdHJ1Y3QgbWlpX2J1cyAqYnVzKQogCXJldHVybiBjaGFuLSZndDtwcml2OwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgYWN0aXZlKQomIzQzO3sKJiM0MzsJcmV0dXJuIHJlZ21hcF9hc3NpZ25fYml0cyhwcml2LSZndDtyZWdtYXAsIHByaXYtJmd0O2luZm8tJmd0O3BvbGxfY3RybCAmIzQzOyAocG9ydCAvIDMyKSAqIDQsCiYjNDM7CQkJCSAgQklUKHBvcnQgJSAzMiksIGFjdGl2ZSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCwKIAkJCSAgICAgIHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSkKIHsKQEAgLTE4NSw5ICYjNDM7MzE4LDkgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCwKIAl1MzIgY21kc3RhdGU7CiAJaW50IHJldDsKIAotCS8qIERlZmVuc2l2ZSBwcmUgY2hlY2sganVzdCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIGhvcnJpYmxlIHdyb25nICovCiYjNDM7CS8qIERlZmVuc2l2ZSBwcmUgY2hlY2sganVzdCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIGhvcnJpYmx5IHdyb25nICovCiAJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgaW5mby0mZ3Q7Y21kX3JlZ3MuYzIyX2RhdGEsCi0JCQkJICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlICZhbXA7IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwKTsKJiM0MzsJCQkJICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlICZhbXA7IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwMCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMjI3LDcgJiM0MzszNjAsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLAogCQlyZXR1cm4gcmV0OwogCiAJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgaW5mby0mZ3Q7Y21kX3JlZ3MuYzIyX2RhdGEsCi0JCQkJICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlICZhbXA7IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwKTsKJiM0MzsJCQkJICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlICZhbXA7IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwMCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMjY0LDEzICYjNDM7Mzk3LDEyMyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsCiAJcmV0dXJuIG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtJmd0O2luZm8tJmd0O2NtZF93cml0ZSwgY21kX2RhdGEpOwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1BBUktfUEFHRSwgMHgxZikgfAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtJmd0O3BhZ2VbcG9ydF0pLAomIzQzOwkJLmlvX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCAmYW1wO2NtZF9kYXRhLAomIzQzOwkJCQkgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1BBUktfUEFHRSwgMHgxZikgfAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtJmd0O3BhZ2VbcG9ydF0pLAomIzQzOwkJLmlvX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksCiYjNDM7CQkucG9ydF9tYXNrX2xvdwk9IEJJVChwb3J0KSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgJmFtcDtjbWRfZGF0YSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LAomIzQzOwkJCQkgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKQomIzQzO3sKJiM0MzsJc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7CiYjNDM7CQkuYzQ1X2RhdGEJPSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHwKJiM0MzsJCQkJICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksCiYjNDM7CQkuaW9fZGF0YQk9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLAomIzQzOwl9OwomIzQzOwomIzQzOwlyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsICZhbXA7Y21kX2RhdGEsCiYjNDM7CQkJCSAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsCiYjNDM7CQkJCSAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jNDVfZGF0YQk9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSwKJiM0MzsJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLAomIzQzOwkJLnBvcnRfbWFza19sb3cJPSBCSVQocG9ydCksCiYjNDM7CX07CiYjNDM7CiYjNDM7CXJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsICZhbXA7Y21kX2RhdGEpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0gewomIzQzOwkJLmMyMl9kYXRhCT0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHwKJiM0MzsJCQkJICBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LSZndDtwYWdlW3BvcnRdKSwKJiM0MzsJCS5leHRfcGFnZQk9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLAomIzQzOwkJLmlvX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCAmYW1wO2NtZF9kYXRhLAomIzQzOwkJCQkgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi0mZ3Q7cGFnZVtwb3J0XSksCiYjNDM7CQkuZXh0X3BhZ2UJPSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0UsIDB4MWZmKSwKJiM0MzsJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLAomIzQzOwkJLnBvcnRfbWFza19oaWdoCT0gKHUzMikoQklUX1VMTChwb3J0KSAmZ3Q7Jmd0OyAzMiksCiYjNDM7CQkucG9ydF9tYXNrX2xvdwk9ICh1MzIpKEJJVF9VTEwocG9ydCkpLAomIzQzOwl9OwomIzQzOwomIzQzOwlyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCAmYW1wO2NtZF9kYXRhKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsCiYjNDM7CQkJCSAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHsKJiM0MzsJCS5jNDVfZGF0YQk9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSwKJiM0MzsJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksCiYjNDM7CX07CiYjNDM7CiYjNDM7CXJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgJmFtcDtjbWRfZGF0YSwKJiM0MzsJCQkJICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwKJiM0MzsJCQkJICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0gewomIzQzOwkJLmM0NV9kYXRhCT0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8CiYjNDM7CQkJCSAgRklFTERfUFJFUChQSFlfQ1RSTF9NTURfUkVHLCByZWdudW0pLAomIzQzOwkJLmlvX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksCiYjNDM7CQkucG9ydF9tYXNrX2hpZ2gJPSAodTMyKShCSVRfVUxMKHBvcnQpICZndDsmZ3Q7IDMyKSwKJiM0MzsJCS5wb3J0X21hc2tfbG93CT0gKHUzMikoQklUX1VMTChwb3J0KSksCiYjNDM7CX07CiYjNDM7CiYjNDM7CXJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DNDUsICZhbXA7Y21kX2RhdGEpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKQogewogCXN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7CiAJc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7CiAJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiAJCQkJICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8Ci0JCQkJICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksCiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi0mZ3Q7cGFnZVtwb3J0XSksCiAJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksCiAJfTsKIApAQCAtMjg0LDcgJiM0Mzs1MjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sCiAJc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7CiAJCS5jMjJfZGF0YQk9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8CiAJCQkJICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8Ci0JCQkJICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksCiYjNDM7CQkJCSAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi0mZ3Q7cGFnZVtwb3J0XSksCiAJCS5pb19kYXRhCT0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLAogCQkucG9ydF9tYXNrX2xvdwk9IEJJVChwb3J0KSwKIAl9OwpAQCAtMzI0LDcgJiM0Mzs1NjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdQogCXN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0gewogCQkuYnJvYWRjYXN0CT0gRklFTERfUFJFUChSVEw5MzEwX0JDX1BPUlRfSUQsIHBvcnQpLAogCQkuYzIyX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfAotCQkJCSAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtJmd0O3BhZ2VbcG9ydF0pLAogCX07CiAKIAlyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DMjIsICZhbXA7Y21kX2RhdGEsCkBAIC0zMzYsNyAmIzQzOzU3OSw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwKIAlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwogCXN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0gewogCQkuYzIyX2RhdGEJPSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfAotCQkJCSAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLAomIzQzOwkJCQkgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtJmd0O3BhZ2VbcG9ydF0pLAogCQkuaW9fZGF0YQk9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSwKIAkJLnBvcnRfbWFza19oaWdoCT0gKHUzMikoQklUX1VMTChwb3J0KSAmZ3Q7Jmd0OyAzMiksCiAJCS5wb3J0X21hc2tfbG93CT0gKHUzMikoQklUX1VMTChwb3J0KSksCkBAIC0zNzgsMjcgJiM0Mzs2MjEsNTMgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pCiAJaW50IHJldCwgcG9ydDsKIAl1MzIgdmFsdWU7CiAKJiM0MzsJaWYgKHJlZ251bSA9PSBNSUlfTU1EX0NUUkwgfHwgcmVnbnVtID09IE1JSV9NTURfREFUQSkgewomIzQzOwkJZGV2X3dhcm5fb25jZSgmYW1wO2J1cy0mZ3Q7ZGV2LAomIzQzOwkJCSAgICAgICYjMzQ7QzQ1IG92ZXIgQzIyIHJlYWQgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwl9CiYjNDM7CiAJcG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpOwogCWlmIChwb3J0ICZsdDsgMCkKIAkJcmV0dXJuIHBvcnQ7CiAKLQlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7cHJpdi0mZ3Q7bG9jaykKJiM0MzsJc2NvcGVkX2d1YXJkKG11dGV4LCAmYW1wO3ByaXYtJmd0O2xvY2spIHsKJiM0MzsJCWlmIChyZWdudW0gPT0gUlRMX1BBR0VfU0VMRUNUKQomIzQzOwkJCXJldHVybiBwcml2LSZndDtwYWdlW3BvcnRdOwomIzQzOwogCQlyZXQgPSBwcml2LSZndDtpbmZvLSZndDtyZWFkX2MyMihidXMsIHBvcnQsIHJlZ251bSwgJmFtcDt2YWx1ZSk7CiYjNDM7CX0KIAogCXJldHVybiByZXQgPyByZXQgOiB2YWx1ZTsKIH0KIAotc3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLAomIzQzOwkJCQl1MTYgdmFsdWUpCiB7CiAJc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTsKIAlpbnQgcmV0LCBwb3J0OwogCiYjNDM7CWlmIChyZWdudW0gPT0gTUlJX01NRF9DVFJMIHx8IHJlZ251bSA9PSBNSUlfTU1EX0RBVEEpIHsKJiM0MzsJCWRldl93YXJuX29uY2UoJmFtcDtidXMtJmd0O2RldiwKJiM0MzsJCQkgICAgICAmIzM0O0M0NSBvdmVyIEMyMiB3cml0ZSBhY2Nlc3MgYnJva2VuIGR1ZSB0byBwb2xsaW5nXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKIAlwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7CiAJaWYgKHBvcnQgJmx0OyAwKQogCQlyZXR1cm4gcG9ydDsKIAotCXNjb3BlZF9ndWFyZChtdXRleCwgJmFtcDtwcml2LSZndDtsb2NrKQomIzQzOwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7cHJpdi0mZ3Q7bG9jaykgewomIzQzOwkJaWYgKHJlZ251bSA9PSBSVExfUEFHRV9TRUxFQ1QpIHsKJiM0MzsJCQlpZiAodmFsdWUgJmd0Oz0gUkFXX1BBR0UocHJpdikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwkJCXByaXYtJmd0O3BhZ2VbcG9ydF0gPSB2YWx1ZTsKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCX0KJiM0MzsKIAkJcmV0ID0gcHJpdi0mZ3Q7aW5mby0mZ3Q7d3JpdGVfYzIyKGJ1cywgcG9ydCwgcmVnbnVtLCB2YWx1ZSk7CiYjNDM7CX0KIAogCXJldHVybiByZXQ7CiB9CkBAIC00NzEsNiAmIzQzOzc0MCwxNSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CS8qCiYjNDM7CSAqIFBIWV9QQVRDSF9ET05FIGVuYWJsZXMgUEhZIGNvbnRyb2wgdmlhIFNvQy4gVGhpcyBpcyByZXF1aXJlZCBmb3IgUEhZIGFjY2VzcywgaW5jbHVkaW5nCiYjNDM7CSAqIHBhdGNoaW5nIGFuZCBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIFBIWXMgYXJlIHByb2JlZC4KJiM0MzsJICovCiYjNDM7CXJldHVybiByZWdtYXBfc2V0X2JpdHMocHJpdi0mZ3Q7cmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCwgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkUpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIHsKIAl1MzIgZ2xiX2N0cmxfbWFzayA9IDAsIGdsYl9jdHJsX3ZhbCA9IDA7CkBAIC01MDcsNiAmIzQzOzc4NSw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWludCBwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtJmd0O21kaW8uYnVzLCBwaHlkZXYtJmd0O21kaW8uYWRkcik7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtwcml2OwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gY2hhbi0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJaWYgKHBvcnQgJmx0OyAwKSB7CiYjNDM7CQkvKiBBbGwgc3Vic2VxdWVudCBidXMgb3BlcmF0aW9ucyB3aWxsIGZhaWwgKi8KJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O1BIWSBpcyBub3QgbWFwcGVkIHRvIGEgdmFsaWQgc3dpdGNoIHBvcnRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBwb3J0OwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qICYjMzQ7c3luYyYjMzQ7IHBhZ2UgaW4gY2FzZSBvZiBwcmV2aW91c2x5IGZhaWxlZCBhdHRhY2htZW50ICovCiYjNDM7CXNjb3BlZF9ndWFyZChtdXRleCwgJmFtcDtwcml2LSZndDtsb2NrKQomIzQzOwkJcHJpdi0mZ3Q7cGFnZVtwb3J0XSA9IDA7CiYjNDM7CiYjNDM7CWlmICghcHJpdi0mZ3Q7c21pX2J1c19pc19jNDVbY2hhbi0mZ3Q7bWRpb19idXNdICZhbXA7JmFtcDsKJiM0MzsJICAgICFwaHlfaWRfY29tcGFyZV92ZW5kb3IocGh5ZGV2LSZndDtwaHlfaWQsIFJUTF9WRU5ET1JfSUQpKSB7CiYjNDM7CQlwaHlkZXZfZXJyKHBoeWRldiwgJiMzNDtPbmx5IFJlYWx0ZWsgUEhZcyBhbGxvd2VkIG9uIEMyMiBidXNcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIHRydWUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LSZndDttZGlvLmJ1czsKJiM0MzsJc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjsKJiM0MzsJaW50IHBvcnQ7CiYjNDM7CiYjNDM7CXByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KHBoeWRldi0mZ3Q7bWRpby5idXMpOwomIzQzOwlwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtJmd0O21kaW8uYnVzLCBwaHlkZXYtJmd0O21kaW8uYWRkcik7CiYjNDM7CiYjNDM7CWlmIChwb3J0ICZsdDsgMCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJLyogJiMzNDtzeW5jJiMzNDsgcGFnZSBmb3IgbmV4dCBhdHRhY2htZW50ICovCiYjNDM7CXNjb3BlZF9ndWFyZChtdXRleCwgJmFtcDtwcml2LSZndDtsb2NrKQomIzQzOwkJcHJpdi0mZ3Q7cGFnZVtwb3J0XSA9IDA7CiYjNDM7CiYjNDM7CWlmIChvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgZmFsc2UpKQomIzQzOwkJZGV2X2VycihidXMtJmd0O3BhcmVudCwgJiMzNDtmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXG4mIzM0OywgcG9ydCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsCiAJCQkJIHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKQogewpAQCAtNTI4LDE0ICYjNDM7ODUxLDE0IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2CiAJCXJldHVybiAtRU5PTUVNOwogCiAJYnVzLSZndDtuYW1lID0gJiMzNDtSZWFsdGVrIFN3aXRjaCBNRElPIEJ1cyYjMzQ7OwotCWlmIChwcml2LSZndDtzbWlfYnVzX2lzX2M0NVttZGlvX2J1c10pIHsKLQkJYnVzLSZndDtyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7Ci0JCWJ1cy0mZ3Q7d3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7Ci0JfSBlbHNlIHsKLQkJYnVzLSZndDtyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjsKLQkJYnVzLSZndDt3cml0ZSA9IG90dG9fZW1kaW9fd3JpdGVfYzIyOwotCX0KJiM0MzsJYnVzLSZndDtyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7CiYjNDM7CWJ1cy0mZ3Q7d3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7CiYjNDM7CWJ1cy0mZ3Q7cmVhZCA9IG90dG9fZW1kaW9fcmVhZF9jMjI7CiYjNDM7CWJ1cy0mZ3Q7d3JpdGUgPSBvdHRvX2VtZGlvX3dyaXRlX2MyMjsKIAlidXMtJmd0O3BhcmVudCA9IGRldjsKJiM0MzsJYnVzLSZndDtub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7CiYjNDM7CWJ1cy0mZ3Q7bm90aWZ5X3BoeV9kZXRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoOwomIzQzOwogCWNoYW4gPSBidXMtJmd0O3ByaXY7CiAJY2hhbi0mZ3Q7bWRpb19idXMgPSBtZGlvX2J1czsKIAljaGFuLSZndDtwcml2ID0gcHJpdjsKQEAgLTY1Miw2ICYjNDM7OTc1LDE5IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19tYXBfcG9ydHMoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBlcnI7CiB9CiAKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlmb3IgKGludCBwb3J0ID0gMDsgcG9ydCAmbHQ7IHByaXYtJmd0O2luZm8tJmd0O251bV9wb3J0czsgcG9ydCYjNDM7JiM0MzspIHsKJiM0MzsJCWVyciA9IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CkBAIC02NzEsNiAmIzQzOzEwMDcsMTAgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKElTX0VSUihwcml2LSZndDtyZWdtYXApKQogCQlyZXR1cm4gUFRSX0VSUihwcml2LSZndDtyZWdtYXApOwogCiYjNDM7CWVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTsKIAogCWVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7CkBAIC02OTYsNiAmIzQzOzEwMzYsNTEgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHsKJiM0MzsJLmFkZHJfbWFwX2Jhc2UgPSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCwKJiM0MzsJLmNtZF9mYWlsID0gUlRMODM4MF9QSFlfQ1RSTF9GQUlMLAomIzQzOwkuY21kX3JlYWQgPSBSVEw4MzgwX1BIWV9DVFJMX1JFQUQsCiYjNDM7CS5jbWRfd3JpdGUgPSBSVEw4MzgwX1BIWV9DVFJMX1dSSVRFLAomIzQzOwkuY21kX3JlZ3MgPSB7CiYjNDM7CQkuYzIyX2RhdGEgPSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMSwKJiM0MzsJCS5jNDVfZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zLAomIzQzOwkJLmlvX2RhdGEgPSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMiwKJiM0MzsJCS5wb3J0X21hc2tfbG93ID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzAsCiYjNDM7CX0sCiYjNDM7CS5udW1fYnVzZXMgPSBSVEw4MzgwX05VTV9CVVNFUywKJiM0MzsJLm51bV9wYWdlcyA9IFJUTDgzODBfTlVNX1BBR0VTLAomIzQzOwkubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsCiYjNDM7CS5wb2xsX2N0cmwgPSBSVEw4MzgwX1NNSV9QT0xMX0NUUkwsCiYjNDM7CS5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsCiYjNDM7CS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMiwKJiM0MzsJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1LAomIzQzOwkud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMiwKJiM0MzsJLndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzOTBfaW5mbyA9IHsKJiM0MzsJLmNtZF9mYWlsID0gUlRMODM5MF9QSFlfQ1RSTF9GQUlMLAomIzQzOwkuY21kX3JlYWQgPSBSVEw4MzkwX1BIWV9DVFJMX1JFQUQsCiYjNDM7CS5jbWRfd3JpdGUgPSBSVEw4MzkwX1BIWV9DVFJMX1dSSVRFLAomIzQzOwkuY21kX3JlZ3MgPSB7CiYjNDM7CQkuYnJvYWRjYXN0ID0gUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMLAomIzQzOwkJLmMyMl9kYXRhID0gUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkwsCiYjNDM7CQkuYzQ1X2RhdGEgPSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTCwKJiM0MzsJCS5leHRfcGFnZSA9IFJUTDgzOTBfUEhZUkVHX0NUUkwsCiYjNDM7CQkuaW9fZGF0YSA9IFJUTDgzOTBfUEhZUkVHX0RBVEFfQ1RSTCwKJiM0MzsJCS5wb3J0X21hc2tfbG93ID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPVywKJiM0MzsJCS5wb3J0X21hc2tfaGlnaCA9IFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdILAomIzQzOwl9LAomIzQzOwkubnVtX2J1c2VzID0gUlRMODM5MF9OVU1fQlVTRVMsCiYjNDM7CS5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUywKJiM0MzsJLm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLAomIzQzOwkucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsCiYjNDM7CS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMiwKJiM0MzsJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1LAomIzQzOwkud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMiwKJiM0MzsJLndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0gewogCS5hZGRyX21hcF9iYXNlID0gUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsCiAJLmJ1c19tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMLApAQCAtNzExLDYgJiM0MzsxMDk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7CiAJLm51bV9idXNlcyA9IFJUTDkzMDBfTlVNX0JVU0VTLAogCS5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUywKIAkubnVtX3BhZ2VzID0gUlRMOTMwMF9OVU1fUEFHRVMsCiYjNDM7CS5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsCiAJLnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlciwKIAkucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsCiAJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LApAQCAtNzM2LDYgJiM0MzsxMTIyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7CiAJLm51bV9idXNlcyA9IFJUTDkzMTBfTlVNX0JVU0VTLAogCS5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUywKIAkubnVtX3BvcnRzID0gUlRMOTMxMF9OVU1fUE9SVFMsCiYjNDM7CS5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCwKIAkuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLAogCS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMiwKIAkucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsCkBAIC03NDQsNiAmIzQzOzExMzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHsKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG90dG9fZW1kaW9faWRzW10gPSB7CiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3JlYWx0ZWsscnRsODM4MC1tZGlvJiMzNDssIC5kYXRhID0gJmFtcDtvdHRvX2VtZGlvXzgzODBfaW5mbyB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtyZWFsdGVrLHJ0bDgzOTEtbWRpbyYjMzQ7LCAuZGF0YSA9ICZhbXA7b3R0b19lbWRpb184MzkwX2luZm8gfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDtyZWFsdGVrLHJ0bDkzMDEtbWRpbyYjMzQ7LCAuZGF0YSA9ICZhbXA7b3R0b19lbWRpb185MzAwX2luZm8gfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDtyZWFsdGVrLHJ0bDkzMTEtbWRpbyYjMzQ7LCAuZGF0YSA9ICZhbXA7b3R0b19lbWRpb185MzEwX2luZm8gfSwKIAl7fQpAQCAtNzU1LDEwICYjNDM7MTE0NCwxMSBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvdHRvX2VtZGlvX2RyaXZlciA9IHsKIAkuZHJpdmVyID0gewogCQkubmFtZSA9ICYjMzQ7bWRpby1ydGw5MzAwJiMzNDssCiAJCS5vZl9tYXRjaF90YWJsZSA9IG90dG9fZW1kaW9faWRzLAomIzQzOwkJLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLAogCX0sCiB9OwogCiBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTsKIAotTU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7UlRMOTMwMCBNRElPIGRyaXZlciYjMzQ7KTsKJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtSVEw4M3h4L1JUTDkzeHggTURJTyBkcml2ZXImIzM0Oyk7CiBNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLmRlNTlkODY0YjA2MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTczNCw2ICYjNDM7MTczNCwxMDQgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydikKIAlyZXR1cm4gcGh5ZHJ2LSZndDtjb25maWdfaW50ciAmYW1wOyZhbXA7IHBoeWRydi0mZ3Q7aGFuZGxlX2ludGVycnVwdDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHBoeV9kZXRhY2hfaW50ZXJuYWwgLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlCiYjNDM7ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0CiYjNDM7ICogQG5vdGlmeV9idXM6IHdoZXRoZXIgdG8gbm90aWZ5IHRoZSBNRElPIGJ1cyBhYm91dCB0aGUgUEhZIGRldGFjaAomIzQzOyAqCiYjNDM7ICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeQomIzQzOyAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfZGV0YWNoX2ludGVybmFsKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgbm90aWZ5X2J1cykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtJmd0O2F0dGFjaGVkX2RldjsKJiM0MzsJc3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7CiYjNDM7CXN0cnVjdCBtaWlfYnVzICpidXM7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2RldmxpbmspIHsKJiM0MzsJCWRldmljZV9saW5rX2RlbChwaHlkZXYtJmd0O2RldmxpbmspOwomIzQzOwkJcGh5ZGV2LSZndDtkZXZsaW5rID0gTlVMTDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDtzeXNmc19saW5rcykgewomIzQzOwkJaWYgKGRldikKJiM0MzsJCQlzeXNmc19yZW1vdmVfbGluaygmYW1wO2Rldi0mZ3Q7ZGV2LmtvYmosICYjMzQ7cGh5ZGV2JiMzNDspOwomIzQzOwkJc3lzZnNfcmVtb3ZlX2xpbmsoJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2LmtvYmosICYjMzQ7YXR0YWNoZWRfZGV2JiMzNDspOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghcGh5ZGV2LSZndDthdHRhY2hlZF9kZXYpCiYjNDM7CQlzeXNmc19yZW1vdmVfZmlsZSgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYua29iaiwKJiM0MzsJCQkJICAmYW1wO2Rldl9hdHRyX3BoeV9zdGFuZGFsb25lLmF0dHIpOwomIzQzOwomIzQzOwlwaHlfc3VzcGVuZChwaHlkZXYpOwomIzQzOwomIzQzOwlpZiAobm90aWZ5X2J1cyAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O25vdGlmeV9waHlfZGV0YWNoKQomIzQzOwkJcGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7bm90aWZ5X3BoeV9kZXRhY2gocGh5ZGV2KTsKJiM0MzsKJiM0MzsJaWYgKGRldikgewomIzQzOwkJc3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7CiYjNDM7CiYjNDM7CQkvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXQKJiM0MzsJCSAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkKJiM0MzsJCSAqLwomIzQzOwkJaHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O2h3cHJvdik7CiYjNDM7CQkvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovCiYjNDM7CQlpZiAoaHdwcm92ICZhbXA7JmFtcDsgaHdwcm92LSZndDtwaHlkZXYgPT0gcGh5ZGV2KSB7CiYjNDM7CQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7aHdwcm92LCBOVUxMKTsKJiM0MzsJCQlrZnJlZV9yY3UoaHdwcm92LCByY3VfaGVhZCk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlwaHlkZXYtJmd0O2F0dGFjaGVkX2Rldi0mZ3Q7cGh5ZGV2ID0gTlVMTDsKJiM0MzsJCXBoeWRldi0mZ3Q7YXR0YWNoZWRfZGV2ID0gTlVMTDsKJiM0MzsJCXBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcGh5ZGV2LSZndDtwaHlfbGlua19jaGFuZ2UgPSBOVUxMOwomIzQzOwlwaHlkZXYtJmd0O3BoeWxpbmsgPSBOVUxMOwomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDttZGlvLmRldi5kcml2ZXIpCiYjNDM7CQltb2R1bGVfcHV0KHBoeWRldi0mZ3Q7bWRpby5kZXYuZHJpdmVyLSZndDtvd25lcik7CiYjNDM7CiYjNDM7CS8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdAomIzQzOwkgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2UKJiM0MzsJICogZnJvbSB0aGUgZ2VuZXJpYyBkcml2ZXIgc28gdGhhdCB0aGVyZSYjMzk7cyBhIGNoYW5jZSBhCiYjNDM7CSAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZAomIzQzOwkgKi8KJiM0MzsJaWYgKHBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbikgewomIzQzOwkJZGV2aWNlX3JlbGVhc2VfZHJpdmVyKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldik7CiYjNDM7CQlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovCiYjNDM7CXBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogVGhlIHBoeWRldiBtaWdodCBnbyBhd2F5IG9uIHRoZSBwdXRfZGV2aWNlKCkgYmVsb3csIHNvIGF2b2lkCiYjNDM7CSAqIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHJlYWRpbmcgdGhlIHVuZGVybHlpbmcgYnVzIGZpcnN0LgomIzQzOwkgKi8KJiM0MzsJYnVzID0gcGh5ZGV2LSZndDttZGlvLmJ1czsKJiM0MzsKJiM0MzsJcHV0X2RldmljZSgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwomIzQzOwlpZiAoZGV2KQomIzQzOwkJbmRldl9vd25lciA9IGRldi0mZ3Q7ZGV2LnBhcmVudC0mZ3Q7ZHJpdmVyLSZndDtvd25lcjsKJiM0MzsJaWYgKG5kZXZfb3duZXIgIT0gYnVzLSZndDtvd25lcikKJiM0MzsJCW1vZHVsZV9wdXQoYnVzLSZndDtvd25lcik7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlCiYjNDM7ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0CiYjNDM7ICoKJiM0MzsgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5CiYjNDM7ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLgomIzQzOyAqLwomIzQzO3ZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJLyogY2xlYW51cCBpbmNsdWRpbmcgYnVzIG5vdGlmaWNhdGlvbiAqLwomIzQzOwlwaHlfZGV0YWNoX2ludGVybmFsKHBoeWRldiwgdHJ1ZSk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0wocGh5X2RldGFjaCk7CiYjNDM7CiAvKioKICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXIKICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaApAQCAtMTg3Niw2ICYjNDM7MTk3NCwxMiBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAlpZiAoZXJyKQogCQlnb3RvIGVycm9yOwogCiYjNDM7CWlmIChwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtub3RpZnlfcGh5X2F0dGFjaCkgewomIzQzOwkJZXJyID0gcGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7bm90aWZ5X3BoeV9hdHRhY2gocGh5ZGV2KTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJZ290byBlcnJvcjsKJiM0MzsJfQomIzQzOwogCXBoeV9yZXN1bWUocGh5ZGV2KTsKIAogCS8qKgpAQCAtMTg5MCw4ICYjNDM7MTk5NCw4IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCXJldHVybiBlcnI7CiAKIGVycm9yOgotCS8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqLwotCXBoeV9kZXRhY2gocGh5ZGV2KTsKJiM0MzsJLyogcGh5X2RldGFjaF9pbnRlcm5hbCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovCiYjNDM7CXBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCBmYWxzZSk7CiAJcmV0dXJuIGVycjsKIAogZXJyb3JfbW9kdWxlX3B1dDoKQEAgLTE5MDYsODYgJiM0MzsyMDEwLDYgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiB9CiBFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTsKIAotLyoqCi0gKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZQotICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0Ci0gKgotICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeQotICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLgotICovCi12b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKLXsKLQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcGh5ZGV2LSZndDthdHRhY2hlZF9kZXY7Ci0Jc3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7Ci0Jc3RydWN0IG1paV9idXMgKmJ1czsKLQotCWlmIChwaHlkZXYtJmd0O2RldmxpbmspIHsKLQkJZGV2aWNlX2xpbmtfZGVsKHBoeWRldi0mZ3Q7ZGV2bGluayk7Ci0JCXBoeWRldi0mZ3Q7ZGV2bGluayA9IE5VTEw7Ci0JfQotCi0JaWYgKHBoeWRldi0mZ3Q7c3lzZnNfbGlua3MpIHsKLQkJaWYgKGRldikKLQkJCXN5c2ZzX3JlbW92ZV9saW5rKCZhbXA7ZGV2LSZndDtkZXYua29iaiwgJiMzNDtwaHlkZXYmIzM0Oyk7Ci0JCXN5c2ZzX3JlbW92ZV9saW5rKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldi5rb2JqLCAmIzM0O2F0dGFjaGVkX2RldiYjMzQ7KTsKLQl9Ci0KLQlpZiAoIXBoeWRldi0mZ3Q7YXR0YWNoZWRfZGV2KQotCQlzeXNmc19yZW1vdmVfZmlsZSgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYua29iaiwKLQkJCQkgICZhbXA7ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7Ci0KLQlwaHlfc3VzcGVuZChwaHlkZXYpOwotCWlmIChkZXYpIHsKLQkJc3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7Ci0KLQkJLyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0Ci0JCSAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkKLQkJICovCi0JCWh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LSZndDtod3Byb3YpOwotCQkvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovCi0JCWlmIChod3Byb3YgJmFtcDsmYW1wOyBod3Byb3YtJmd0O3BoeWRldiA9PSBwaHlkZXYpIHsKLQkJCXJjdV9hc3NpZ25fcG9pbnRlcihkZXYtJmd0O2h3cHJvdiwgTlVMTCk7Ci0JCQlrZnJlZV9yY3UoaHdwcm92LCByY3VfaGVhZCk7Ci0JCX0KLQotCQlwaHlkZXYtJmd0O2F0dGFjaGVkX2Rldi0mZ3Q7cGh5ZGV2ID0gTlVMTDsKLQkJcGh5ZGV2LSZndDthdHRhY2hlZF9kZXYgPSBOVUxMOwotCQlwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpOwotCX0KLQotCXBoeWRldi0mZ3Q7cGh5X2xpbmtfY2hhbmdlID0gTlVMTDsKLQlwaHlkZXYtJmd0O3BoeWxpbmsgPSBOVUxMOwotCi0JaWYgKHBoeWRldi0mZ3Q7bWRpby5kZXYuZHJpdmVyKQotCQltb2R1bGVfcHV0KHBoeWRldi0mZ3Q7bWRpby5kZXYuZHJpdmVyLSZndDtvd25lcik7Ci0KLQkvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXQKLQkgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2UKLQkgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJiMzOTtzIGEgY2hhbmNlIGEKLQkgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWQKLQkgKi8KLQlpZiAocGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuKSB7Ci0JCWRldmljZV9yZWxlYXNlX2RyaXZlcigmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwotCQlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwotCX0KLQotCS8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovCi0JcGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpOwotCi0JLyoKLQkgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWQKLQkgKiBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBieSByZWFkaW5nIHRoZSB1bmRlcmx5aW5nIGJ1cyBmaXJzdC4KLQkgKi8KLQlidXMgPSBwaHlkZXYtJmd0O21kaW8uYnVzOwotCi0JcHV0X2RldmljZSgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwotCWlmIChkZXYpCi0JCW5kZXZfb3duZXIgPSBkZXYtJmd0O2Rldi5wYXJlbnQtJmd0O2RyaXZlci0mZ3Q7b3duZXI7Ci0JaWYgKG5kZXZfb3duZXIgIT0gYnVzLSZndDtvd25lcikKLQkJbW9kdWxlX3B1dChidXMtJmd0O293bmVyKTsKLX0KLUVYUE9SVF9TWU1CT0wocGh5X2RldGFjaCk7Ci0KIGludCBwaHlfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwaHlkZXYtJmd0O2F0dGFjaGVkX2RldjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oCmluZGV4IDVmOGQ2NTg2OGUwZmYuLjNkOGFmZTZiN2YxYzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaApAQCAtMzc2LDYgJiM0MzszNzYsMjQgQEAgc3RydWN0IG1paV9idXMgewogCQkJIGludCByZWdudW0sIHUxNiB2YWwpOwogCS8qKiBAcmVzZXQ6IFBlcmZvcm0gYSByZXNldCBvZiB0aGUgYnVzICovCiAJaW50ICgqcmVzZXQpKHN0cnVjdCBtaWlfYnVzICpidXMpOwomIzQzOwkvKioKJiM0MzsJICogQG5vdGlmeV9waHlfYXR0YWNoOiBQZXJmb3JtIHBvc3QtYXR0YWNoIGhhbmRsaW5nIGZvciBNRElPIGJ1cwomIzQzOwkgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfZGV0YWNoLiBDYWxsZWQKJiM0MzsJICogaW4gcGh5X2F0dGFjaF9kaXJlY3QoKSByaWdodCBiZWZvcmUgcGh5X3Jlc3VtZSgpLiBSdW5zIGluIHByb2Nlc3MKJiM0MzsJICogY29udGV4dCwgbWF5IHNsZWVwIGFuZCBtYXkgYmUgY2FsbGVkIHdpdGggUlROTCBoZWxkLiBNdXN0IG5vdAomIzQzOwkgKiBhY3F1aXJlIG9yIHJlbHkgb24gUlROTC4gUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJybm8KJiM0MzsJICogb24gZmFpbHVyZS4gTXVzdCB1bndpbmQgaXRzIG93biBzdGF0ZSBvbiBlcnJvciBhcyBhdHRhY2htZW50IGlzCiYjNDM7CSAqIGFib3J0ZWQuCiYjNDM7CSAqLwomIzQzOwlpbnQgKCpub3RpZnlfcGh5X2F0dGFjaCkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiYjNDM7CS8qKgomIzQzOwkgKiBAbm90aWZ5X3BoeV9kZXRhY2g6IFBlcmZvcm0gcHJlLWRldGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXMKJiM0MzsJICogZHJpdmVycy4gT3B0aW9uYWwgYW5kIGluZGVwZW5kZW50IG9mIEBub3RpZnlfcGh5X2F0dGFjaC4gQ2FsbGVkCiYjNDM7CSAqIGluIHBoeV9kZXRhY2goKSByaWdodCBhZnRlciBwaHlfc3VzcGVuZCgpLiBSdW5zIGluIHByb2Nlc3MgY29udGV4dCwKJiM0MzsJICogbWF5IHNsZWVwIGFuZCBtYXkgYmUgY2FsbGVkIHdpdGggUlROTCBoZWxkLiBNdXN0IG5vdCBhY3F1aXJlIG9yCiYjNDM7CSAqIHJlbHkgb24gUlROTC4KJiM0MzsJICovCiYjNDM7CXZvaWQgKCpub3RpZnlfcGh5X2RldGFjaCkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiAKIAkvKiogQHN0YXRzOiBTdGF0aXN0aWMgY291bnRlcnMgcGVyIGRldmljZSBvbiB0aGUgYnVzICovCiAJc3RydWN0IG1kaW9fYnVzX3N0YXRzIHN0YXRzW1BIWV9NQVhfQUREUl07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTM3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUEhZIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIHNlcmllcy4gVGhlIGZpbGVzIGltcGFjdGVkIGFyZTogYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbGAsIGBkcml2ZXJzL25ldC9tZGlvL0tjb25maWdgLCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCwgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvcGh5LmhgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb3JlIFBIWSBjb2RlIGNoYW5nZXMsIHNwZWNpZmljYWxseSBpbiBgcGh5X2RldmljZS5jYCBhbmQgYGluY2x1ZGUvbGludXgvcGh5LmhgLgoKSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgaW50cm9kdWNpbmcgY2FsbGJhY2tzLCBgbm90aWZ5X3BoeV9hdHRhY2hgIGFuZCBgbm90aWZ5X3BoeV9kZXRhY2hgLCB0byB0aGUgYHN0cnVjdCBtaWlfYnVzYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgYHBoeV9hdHRhY2hfZGlyZWN0KClgIG5vdyBjYWxscyBgYnVzLSZndDtub3RpZnlfcGh5X2F0dGFjaChwaHlkZXYpYCwgYW5kIGBwaHlfZGV0YWNoKClgIGNhbGxzIGBidXMtJmd0O25vdGlmeV9waHlfZGV0YWNoKHBoeWRldilgIHZpYSB0aGUgbmV3bHkgcmVmYWN0b3JlZCBgcGh5X2RldGFjaF9pbnRlcm5hbCgpYC4gVGhpcyBpcyBhIGNsZWFyIHNpZ25hbCB0aGF0IHRoZXJlJiMzOTtzIGEgbmV3IGludGVyYWN0aW9uIGxheWVyIGZvciBQSFkgYXR0YWNoL2RldGFjaCBldmVudHMuCgpOb3csIHBlZWtpbmcgaW50byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCwgSSBzZWUgc3VwcG9ydCBmb3IgUlRMODM4MCBhbmQgUlRMODM5MCBNRElPIGNvbnRyb2xsZXJzLCBhbG9uZyB3aXRoIGltcGxlbWVudGF0aW9ucyBmb3IgYG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2hgIGFuZCBgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaGAuIFRoZXkgYWxzbyBhZGRlZCBwb2xsaW5nIGNvbnRyb2wgbG9naWMgZm9yIFJlYWx0ZWsgc3dpdGNoZXMuIFRoaXMgbG9va3Mgc3BlY2lmaWMgdG8gdGhlc2UgUmVhbHRlayBTb0NzLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgbmV3IGNhbGxiYWNrIG1lY2hhbmlzbSBleGlzdCBvbmx5IGZvciBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2A/IElzIHRoaXMgYSBkcml2ZXIgdGhhdCYjMzk7cyBvbmx5IGdvaW5nIHRvIHdvcmsgb24gUmVhbHRlayBiYXNlZCBzeXN0ZW1zLCBvciBjYW4gaXQgYmUgdXNlZCBlbHNld2hlcmU/CgpEaXZpbmcgZGVlcGVyLCBJIHNlZSB0aGF0IGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYCBhcmUgY2VudHJhbCBQSFkgc3Vic3lzdGVtIGZ1bmN0aW9ucy4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGFjcm9zcyBuZXR3b3JraW5nLiBTbywgdGhpcyByZWZhY3RvcmluZyAqbXVzdCogYmUgY29yZSwgYW5kIHRoZSBjYWxsYmFja3MgYXJlIHByb2JhYmx5IGFkZGVkIHRvIGVuYWJsZSBicm9hZGVyIHN1cHBvcnQuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBvdGhlciBkcml2ZXJzIHdpbGwgdXNlIHRoZXNlIG5ldyBjYWxsYmFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIG90aGVyIGRyaXZlcnMgc2V0IHRoZXNlIGNhbGxiYWNrcy4gSWYgbm8gb3RoZXIgZHJpdmVyIHNldHMgYGJ1cy0mZ3Q7bm90aWZ5X3BoeV9hdHRhY2hgIGJlc2lkZXMgdGhlIFJlYWx0ZWsgZHJpdmVyLCB0aGVuIHRoaXMgZW50aXJlIGNoYW5nZSBpcyBvbmx5IHVzZWZ1bCBmb3IgUmVhbHRlayBzeXN0ZW1zLgoKTGV0JiMzOTtzIGNoZWNrIGlmIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBpcyBldmVuIHBvc3NpYmxlIHRvIHRlc3Qgb3V0c2lkZSBhIHNwZWNpZmljIFNvQy4gSSYjMzk7bGwgc2VhcmNoIGZvciBgQ09ORklHX01ESU9fUkVBTFRFS19SVEw5MzAwYCBvciBgTUFDSF9SRUFMVEVLX1JUTGAgdG8gdmVyaWZ5IGlmIEkgY2FuIHJ1biB0aGlzIHdpdGggUUVNVSBvciBHQ0UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDSF9SRUFMVEVLX1JUTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvS2NvbmZpZz02ODE9Y29uZmlnIFJBTElOS1xuLS1cbmFyY2gvbWlwcy9LY29uZmlnLTY5OC1cbmFyY2gvbWlwcy9LY29uZmlnOjY5OTpjb25maWcgTUFDSF9SRUFMVEVLX1JUTFxuYXJjaC9taXBzL0tjb25maWctNzAwLVx0Ym9vbCBcJiMzNDtSZWFsdGVrIFJUTDgzOHgvUlRMODM5eCBiYXNlZCBtYWNoaW5lc1wmIzM0O1xuLS1cbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGU6MjpkdGItJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdCYjNDM7PSBjaXNjb19zZzIyMC0yNi5kdGJcbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlOjM6ZHRiLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHQmIzQzOz0gY2FtZW8tcnRsOTMwMmMtMngtcnRsODIyNC0yeGdlLmR0YlxuLS1cbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19WSVJUX0JPQVJEX1JBTkNIVSlcdFx0JiM0Mzs9IGJvYXJkLXJhbmNodS5vXG5hcmNoL21pcHMvZ2VuZXJpYy9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdFx0JiM0Mzs9IGJvYXJkLXJlYWx0ZWsub1xuLS1cbmRyaXZlcnMvZ3Bpby9LY29uZmlnPTYyNT1jb25maWcgR1BJT19SRUFMVEVLX09UVE9cbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgT3R0byBHUElPIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyNzpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyODpcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxuZHJpdmVycy9ncGlvL0tjb25maWctNjI5LVx0c2VsZWN0IEdQSU9fR0VORVJJQ1xuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnPTExMDM9Y29uZmlnIEkyQ19SVEw5MzAwXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw5MzAwIEkyQyBjb250cm9sbGVyXCYjMzQ7XG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZzoxMTA1Olx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNi1cdGhlbHBcbi0tXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9MTMwPW9iai0kKENPTkZJR19TTDI4Q1BMRF9JTlRDKVx0XHQmIzQzOz0gaXJxLXNsMjhjcGxkLm9cbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZToxMzE6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHRcdCYjNDM7PSBpcnEtcmVhbHRlay1ydGwub1xuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlLTEzMi1vYmotJChDT05GSUdfV1BDTTQ1MF9BSUMpXHRcdCYjNDM7PSBpcnEtd3BjbTQ1MC1haWMub1xuLS1cbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZz02ND1jb25maWcgTVREX05BTkRfRUNDX1JFQUxURUtcbi0tXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWctNjYtICAgICAgICBkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnOjY3OiAgICAgICAgZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnLTY4LSAgICAgICAgc2VsZWN0IE1URF9OQU5EX0VDQ1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNzQ9Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE3NjpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzctXHRoZWxwXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZz05MTY9Y29uZmlnIFNQSV9SRUFMVEVLX1NOQU5EXG5kcml2ZXJzL3NwaS9LY29uZmlnLTkxNy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgU1BJLU5BTkQgRmxhc2ggQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy9zcGkvS2NvbmZpZzo5MTg6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3NwaS9LY29uZmlnLTkxOS1cdHNlbGVjdCBSRUdNQVBcbi0tXG5kcml2ZXJzL3NwaS9NYWtlZmlsZT0xMzE9b2JqLSQoQ09ORklHX1NQSV9SQjRYWClcdFx0XHQmIzQzOz0gc3BpLXJiNHh4Lm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdFx0JiM0Mzs9IHNwaS1yZWFsdGVrLXJ0bC5vXG5kcml2ZXJzL3NwaS9NYWtlZmlsZS0xMzMtb2JqLSQoQ09ORklHX1NQSV9SRUFMVEVLX1NOQU5EKVx0XHQmIzQzOz0gc3BpLXJlYWx0ZWstcnRsLXNuYW5kLm9cbi0tXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc9MTExMz1jb25maWcgUkVBTFRFS19PVFRPX1dEVFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIE90dG8gTUlQUyB3YXRjaGRvZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExNTpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE2LVx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4tLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTgtXHRzZWxlY3QgUkVHTUFQX01NSU9cbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTE5Olx0ZGVmYXVsdCBNQUNIX1JFQUxURUtfUlRMXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTAxNQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUEhZIERldGFjaG1lbnQgYW5kIEF0dGFjaG1lbnQgaW4gdGhlIFJlYWx0ZWsgUlRMOTMwMCBjb250ZXh0KioKCk9rYXksIHNvIGBNRElPX1JFQUxURUtfUlRMOTMwMGAgcmVsYXRlcyB0byB0aGUgTUlQUyBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4IFNvQ3MsIHNwZWNpZmljYWxseSBmb3IgdGhlIGVtYmVkZGVkIGBNQUNIX1JFQUxURUtfUlRMYCBib2FyZHMuIEdvdCBpdC4gQnV0IGhvbGQgb24sIHRoZSBjb3JlIFBIWSBjaGFuZ2Vz4oCmIFRoYXQmIzM5O3MgdGhlIGtleS4gTGV0JiMzOTtzIGRlbHZlIGludG8gd2hhdCYjMzk7cyBhbHRlcmVkIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuCgpSaWdodCwgYHBoeV9kZXRhY2hfaW50ZXJuYWxgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbi4gSXQgaGFuZGxlcyB0aGUgYWN0dWFsIGRldGFjaG1lbnQgb2YgdGhlIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIGRyaXZlci4gVGhlIGFkZGVkIGBub3RpZnlfYnVzYCBwYXJhbWV0ZXIgaXMgaW50ZXJlc3Rpbmc7IGl0IGRlY2lkZXMgd2hldGhlciB0byB0ZWxsIHRoZSBNRElPIGJ1cyBhYm91dCB0aGUgZGV0YWNobWVudC4gQW5kIGhleSwgdGhlcmUmIzM5O3MgYHBoeV9kZXRhY2hgLCBhIHdyYXBwZXIgdGhhdCBhbHdheXMgbm90aWZpZXMgdGhlIGJ1cy4gT2theSwgYG5vdGlmeV9waHlfZGV0YWNoYCBpdCBpcy4KClRoZSBjb2RlIHNob3dzIHRoYXQgYHBoeV9kZXRhY2hfaW50ZXJuYWxgIHdpbGwgY2FsbCBhIGJ1cyBzcGVjaWZpYyBgbm90aWZ5X3BoeV9kZXRhY2hgIGNhbGxiYWNrIGlmIGBub3RpZnlfYnVzYCBpcyBzZXQgdG8gdHJ1ZSBhbmQgdGhlIGJ1cyBoYXMgaW1wbGVtZW50ZWQgYSBzcGVjaWZpYyBjYWxsYmFjay4gVGhlIHNhbWUgaXMgdHJ1ZSBmb3IgYHBoeV9hdHRhY2hfaW50ZXJuYWxgIHdoaWNoIGNhbGxzIGBub3RpZnlfcGh5X2F0dGFjaGAgaWYgdGhlIGJ1cyBoYXMgYSBjYWxsYmFjayBkZWZpbmVkLiBNYWtlcyBzZW5zZS4KCkJ1dCBoZXJlJiMzOTtzIHRoZSBidXJuaW5nIHF1ZXN0aW9uOiBJcyBlaXRoZXIgYG5vdGlmeV9waHlfYXR0YWNoYCBvciBgbm90aWZ5X3BoeV9kZXRhY2hgIGFjdHVhbGx5ICp1c2VkKiBhbnl3aGVyZSBlbHNlPyBNeSBndXQgdGVsbHMgbWUgdGhpcyBjb3VsZCBiZSBhIG5ldywgb3IgdW5kZXJ1dGlsaXplZCwgaW50ZXJmYWNlLiBUaW1lIHRvIHJ1biBhIGBncmVwYCBzZWFyY2ggYWNyb3NzIHRoZSBlbnRpcmUgY29kZWJhc2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBhbnN3ZXIgYXMgdG8gd2hldGhlciBhbnkgb3RoZXIgZHJpdmVycyBsZXZlcmFnZSB0aGVzZSBuZXcgY2FsbGJhY2sgZnVuY3Rpb25zLCBvciBpZiB0aGlzIGlzIGlzb2xhdGVkIHRvIHRoZSBSZWFsdGVrIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25vdGlmeV9waHlfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vc2NzaS9saWJzYXMucnN0PTE4OT1UaGUgZXZlbnQgaW50ZXJmYWNlOjpcbi0tXG5Eb2N1bWVudGF0aW9uL3Njc2kvbGlic2FzLnJzdC0xOTItXHR2b2lkIHNhc19ub3RpZnlfcG9ydF9ldmVudChzdHJ1Y3Qgc2FzX3BoeSAqLCBlbnVtIHBvcnRfZXZlbnQsIGdmcF90KTtcbkRvY3VtZW50YXRpb24vc2NzaS9saWJzYXMucnN0OjE5MzpcdHZvaWQgc2FzX25vdGlmeV9waHlfZXZlbnQoc3RydWN0IHNhc19waHkgKiwgZW51bSBwaHlfZXZlbnQsIGdmcF90KTtcbkRvY3VtZW50YXRpb24vc2NzaS9saWJzYXMucnN0LTE5NC1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zY3NpL2xpYnNhcy5yc3Q9MTcwPW51bV9waHlzXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vc2NzaS9saWJzYXMucnN0LTE3OS1cdHZvaWQgc2FzX25vdGlmeV9wb3J0X2V2ZW50KHN0cnVjdCBzYXNfcGh5ICosIGVudW0gcG9ydF9ldmVudCwgZ2ZwX3QpO1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vc2NzaS9saWJzYXMucnN0OjE4MDpcdHZvaWQgc2FzX25vdGlmeV9waHlfZXZlbnQoc3RydWN0IHNhc19waHkgKiwgZW51bSBwaHlfZXZlbnQsIGdmcF90KTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3Njc2kvbGlic2FzLnJzdC0xODEtXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jPTc3Mj1zdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4Ny1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3ODg6c3RhdGljIGludCBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzg5LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODEyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgxMzpzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODE0LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM9ODMzPXN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NTgtXHRidXMtXHUwMDNlcGFyZW50ID0gZGV2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1OTpcdGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODYwOlx0YnVzLVx1MDAzZW5vdGlmeV9waHlfZGV0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NjEtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzQ1PXN0YXRpYyB2b2lkIHBoeV9kZXRhY2hfaW50ZXJuYWwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBub3RpZnlfYnVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2Ny1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTc2ODpcdGlmIChub3RpZnlfYnVzIFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3Njk6XHRcdHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzcwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTg1MD1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5NzYtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5Nzc6XHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5Nzg6XHRcdGVyciA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2Vub3RpZnlfcGh5X2F0dGFjaChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTc5LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmM9Njc9c3RhdGljIHZvaWQgYXNkX3BoeV9ldmVudF90YXNrbGV0KHN0cnVjdCBhc2RfYXNjYiAqYXNjYixcbi0tXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTgyLVx0XHRzYXNfcGh5X2Rpc2Nvbm5lY3RlZChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSk7XG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jOjgzOlx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCxcbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmMtODQtXHRcdFx0XHQgICAgIEdGUF9BVE9NSUMpO1xuLS1cbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmMtOTEtXHRcdFx0ICAgIHBoeV9pZCwgcGh5LVx1MDAzZXNhc19waHkubGlua3JhdGUsIHBoeS1cdTAwM2VzYXNfcGh5Lmlwcm90byk7XG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jOjkyOlx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTkzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTk2LVx0XHRhc2RfdHVybl9sZWQoYXNkX2hhLCBwaHlfaWQsIDEpO1xuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYzo5NzpcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfU1BJTlVQX0hPTEQsXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTk4LVx0XHRcdFx0ICAgICBHRlBfQVRPTUlDKTtcbi0tXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTEwNS1cdFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHkpO1xuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYzoxMDY6XHRcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9FUlJPUiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTEwNy1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzLmg9NjgzPWV4dGVybiB2b2lkIGhpc2lfc2FzX3BoeV9vb2JfcmVhZHkoc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgaW50IHBoeV9ubyk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXMuaDo2ODQ6ZXh0ZXJuIGJvb2wgaGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgaGlzaV9zYXNfcGh5ICpwaHksXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXMuaC02ODUtXHRcdFx0XHRlbnVtIGhpc2lfc2FzX3BoeV9ldmVudCBldmVudCk7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz02NDk9c3RhdGljIHZvaWQgaGlzaV9zYXNfYnl0ZXNfZG1hZWQoc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgaW50IHBoeV9ubyxcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTY1Ny1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6NjU4Olx0c2FzX25vdGlmeV9waHlfZXZlbnQoc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgZ2ZwX2ZsYWdzKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtNjU5LVxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM9OTM5PXN0YXRpYyB2b2lkIGhpc2lfc2FzX3BoeXVwX3dvcmtfY29tbW9uKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayxcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTk2Mi1cdFx0XHRzZXRfYml0KFNBU19ERVZfR09ORSwgXHUwMDI2cG9ydF9kZXYtXHUwMDNlc3RhdGUpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYzo5NjM6XHRcdFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtOTY0LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jPTk5OT1zdGF0aWMgY29uc3Qgd29ya19mdW5jX3QgaGlzaV9zYXNfcGh5ZV9mbnNbSElTSV9QSFlFU19OVU1dID0ge1xuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMTAwNC1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTAwNTpib29sIGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQoc3RydWN0IGhpc2lfc2FzX3BoeSAqcGh5LFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xMDA2LVx0XHRcdFx0ZW51bSBoaXNpX3Nhc19waHlfZXZlbnQgZXZlbnQpXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xMDE0LX1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTAxNTpFWFBPUlRfU1lNQk9MX0dQTChoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMTAxNi1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM9MTAxNz1zdGF0aWMgdm9pZCBoaXNpX3Nhc193YWl0X3BoeXVwX3RpbWVkb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMTAyNC1cdGRldl93YXJuKGRldiwgXCYjMzQ7cGh5JWQgd2FpdCBwaHl1cCB0aW1lb3V0LCBpc3N1aW5nIGxpbmsgcmVzZXRcXG5cJiMzNDssIHBoeV9ubyk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jOjEwMjU6XHRoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgSElTSV9QSFlFX0xJTktfUkVTRVQpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xMDI2LX1cbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jPTE0Mzc9c3RhdGljIHZvaWQgaGlzaV9zYXNfcmVzY2FuX3RvcG9sb2d5KHN0cnVjdCBoaXNpX2hiYSAqaGlzaV9oYmEsIHUzMiBzdGF0ZSlcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTE0NzMtXHRcdFx0aWYgKHN0YXRlIFx1MDAyNiBCSVQocGh5X25vKSlcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTQ3NDpcdFx0XHRcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xNDc1LVx0XHRcdFx0XHRcdFx0ICBISVNJX1BIWUVfTElOS19SRVNFVCk7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz0yMTAyPXZvaWQgaGlzaV9zYXNfcGh5X2Rvd24oc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgaW50IHBoeV9ubywgaW50IHJkeSxcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTIxMjEtXHRcdC8qIFBoeSBkb3duIGFuZCBub3QgcmVhZHkgKi9cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MjEyMjpcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCwgZ2ZwX2ZsYWdzKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMjEyMy1cdFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoc2FzX3BoeSk7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YxX2h3LmM9MTMxNT1zdGF0aWMgaXJxcmV0dXJuX3QgaW50X3BoeXVwX3YxX2h3KGludCBpcnFfbm8sIHZvaWQgKnApXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YxX2h3LmMtMTM3Ni1cdFx0XHRTQVNfUFJPVE9DT0xfU01QO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YxX2h3LmM6MTM3NzpcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfUEhZX1VQKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192MV9ody5jLTEzNzgtZW5kOlxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jPTI2NDY9c3RhdGljIGludCBwaHlfdXBfdjJfaHcoaW50IHBoeV9ubywgc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSlcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0yNzA3LVx0fVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM6MjcwODpcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfUEhZX1VQKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTI3MDktZW5kOlxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jPTI4NjQ9c3RhdGljIGlycXJldHVybl90IGludF9jaG5sX2ludF92Ml9odyhpbnQgaXJxX25vLCB2b2lkICpwKVxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTI5MTEtXHRcdFx0XHRcdCBwaHlfbm8pO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM6MjkxMjpcdFx0XHRcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmMtMjkxMy1cdFx0XHRcdFx0XHRISVNJX1BIWUVfTElOS19SRVNFVCk7XG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM9MzE5OD1zdGF0aWMgaXJxcmV0dXJuX3Qgc2F0YV9pbnRfdjJfaHcoaW50IGlycV9ubywgdm9pZCAqcClcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0zMjM1LVx0XHRcdCBmaXMtXHUwMDNlc3RhdHVzKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjMyMzY6XHRcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0zMjM3LVx0XHRyZXMgPSBJUlFfTk9ORTtcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0zMjgxLVx0cGh5LVx1MDAzZWlkZW50aWZ5LnRhcmdldF9wb3J0X3Byb3RvY29scyA9IFNBU19QUk9UT0NPTF9TQVRBO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM6MzI4MjpcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfUEhZX1VQKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTMyODMtXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmM9MTU4Mj1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5X3VwX3YzX2h3KGludCBwaHlfbm8sIHN0cnVjdCBoaXNpX2hiYSAqaGlzaV9oYmEpXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTYyMS1cdFx0XHRcdCBwaHlfbm8sIGZpcy1cdTAwM2VzdGF0dXMpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmM6MTYyMjpcdFx0XHRoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgSElTSV9QSFlFX0xJTktfUkVTRVQpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTYyMy1cdFx0XHRyZXMgPSBJUlFfTk9ORTtcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xNjc4LVx0cG1fcnVudGltZV9nZXRfbm9yZXN1bWUoZGV2KTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE2Nzk6XHRyZXMgPSBoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgSElTSV9QSFlFX1BIWV9VUF9QTSk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xNjgwLVx0aWYgKCFyZXMpXG4tLVxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmM9MTg4Nz1zdGF0aWMgdm9pZCBoYW5kbGVfY2hsX2ludDJfdjNfaHcoc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgaW50IHBoeV9ubylcbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTA2LVx0XHRkZXZfd2FybihkZXYsIFwmIzM0O3BoeSVkIGlkZW50aWZ5IHRpbWVvdXRcXG5cJiMzNDssIHBoeV9ubyk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYzoxOTA3Olx0XHRoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgSElTSV9QSFlFX0xJTktfUkVTRVQpO1xuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTkwOC1cdH1cbi0tXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTE2LVx0XHRpZiAocmVnX3ZhbHVlIFx1MDAyNiBCSVQoTElOS19SRVNFVF9USU1FT1VUX09GRikpXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYzoxOTE3Olx0XHRcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTE4LVx0fVxuLS1cbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE5NDgtXHRcdGlmIChyYylcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE5NDk6XHRcdFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE5NTAtXHR9XG4tLVxuZHJpdmVycy9zY3NpL2lzY2kvcG9ydC5jPTI0MD1zdGF0aWMgdm9pZCBpc2NpX3BvcnRfbGlua19kb3duKHN0cnVjdCBpc2NpX2hvc3QgKmlzY2lfaG9zdCxcbi0tXG5kcml2ZXJzL3Njc2kvaXNjaS9wb3J0LmMtMjczLVx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoXHUwMDI2aXNjaV9waHktXHUwMDNlc2FzX3BoeSk7XG5kcml2ZXJzL3Njc2kvaXNjaS9wb3J0LmM6Mjc0Olx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2aXNjaV9waHktXHUwMDNlc2FzX3BoeSxcbmRyaXZlcnMvc2NzaS9pc2NpL3BvcnQuYy0yNzUtXHRcdFx0ICAgICBQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfQVRPTUlDKTtcbi0tXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19ldmVudC5jPTE4OT1FWFBPUlRfU1lNQk9MX0dQTChzYXNfbm90aWZ5X3BvcnRfZXZlbnQpO1xuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYy0xOTAtXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19ldmVudC5jOjE5MTp2b2lkIHNhc19ub3RpZnlfcGh5X2V2ZW50KHN0cnVjdCBhc2Rfc2FzX3BoeSAqcGh5LCBlbnVtIHBoeV9ldmVudCBldmVudCxcbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V2ZW50LmMtMTkyLVx0XHRcdCAgZ2ZwX3QgZ2ZwX2ZsYWdzKVxuLS1cbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V2ZW50LmMtMjE1LX1cbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V2ZW50LmM6MjE2OkVYUE9SVF9TWU1CT0xfR1BMKHNhc19ub3RpZnlfcGh5X2V2ZW50KTtcbi0tXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmM9NDEzPXZvaWQgc2FzX3Jlc3VtZV9oYShzdHJ1Y3Qgc2FzX2hhX3N0cnVjdCAqaGEpXG4tLVxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jLTQ1MC1cdFx0XHRkZXZfd2FybihcdTAwMjZwaHktXHUwMDNlcGh5LVx1MDAzZWRldiwgXCYjMzQ7cmVzdW1lIHRpbWVvdXRcXG5cJiMzNDspO1xuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jOjQ1MTpcdFx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIFBIWUVfUkVTVU1FX1RJTUVPVVQsXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMtNDUyLVx0XHRcdFx0XHQgICAgIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2luaXQuYz02Mzg9c3RydWN0IGFzZF9zYXNfZXZlbnQgKnNhc19hbGxvY19ldmVudChzdHJ1Y3QgYXNkX3Nhc19waHkgKnBoeSxcbi0tXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMtNjU2LVx0XHRcdFx0XHQgIHBoeS1cdTAwM2VpZCk7XG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmM6NjU3Olx0XHRcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBQSFlFX1NIVVRET1dOLFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jLTY1OC1cdFx0XHRcdFx0XHQgICAgIGdmcF9mbGFncyk7XG4tLVxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jPTIxMD1zdGF0aWMgdm9pZCBtdnNfYnl0ZXNfZG1hZWQoc3RydWN0IG12c19pbmZvICptdmksIGludCBpLCBnZnBfdCBnZnBfZmxhZ3MpXG4tLVxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTIyMi1cbmRyaXZlcnMvc2NzaS9tdnNhcy9tdl9zYXMuYzoyMjM6XHRzYXNfbm90aWZ5X3BoeV9ldmVudChzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBnZnBfZmxhZ3MpO1xuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTIyNC1cbi0tXG5kcml2ZXJzL3Njc2kvbXZzYXMvbXZfc2FzLmM9MTY5ND1zdGF0aWMgdm9pZCBtdnNfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTE3MTQtXHRcdFx0XHRtdnNfcGh5X2Rpc2Nvbm5lY3RlZChwaHkpO1xuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jOjE3MTU6XHRcdFx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChzYXNfcGh5LFxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTE3MTYtXHRcdFx0XHRcdFBIWUVfTE9TU19PRl9TSUdOQUwsIEdGUF9BVE9NSUMpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jPTMxMDU9aHdfZXZlbnRfc2FzX3BoeV91cChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTMxNjMtXHRwaHktXHUwMDNlc2FzX3BoeS5vb2JfbW9kZSA9IFNBU19PT0JfTU9ERTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jOjMxNjQ6XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zMTY1LVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2cGh5LVx1MDAzZXNhc19waHkuZnJhbWVfcmN2ZF9sb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM9MzE4Mj1od19ldmVudF9zYXRhX3BoeV91cChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTMyMDgtXHRwaHktXHUwMDNlc2FzX3BoeS5vb2JfbW9kZSA9IFNBVEFfT09CX01PREU7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYzozMjA5Olx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfT09CX0RPTkUsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzIxMC1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LmZyYW1lX3JjdmRfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jPTM1MDE9c3RhdGljIGludCBtcGlfaHdfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTQ5LVx0XHRwbTgwMDFfZGJnKHBtODAwMV9oYSwgTVNHLCBcJiMzNDtIV19FVkVOVF9TQVRBX1NQSU5VUF9IT0xEXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jOjM1NTA6XHRcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LCBQSFlFX1NQSU5VUF9IT0xELFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzU1MS1cdFx0XHRHRlBfQVRPTUlDKTtcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTU0LVx0XHRwbTgwMDFfZGJnKHBtODAwMV9oYSwgTVNHLCBcJiMzNDtIV19FVkVOVF9QSFlfRE9XTlxcblwmIzM0Oyk7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYzozNTU1Olx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTM1NTYtXHRcdFx0R0ZQX0FUT01JQyk7XG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzU4My1cdFx0cGh5LVx1MDAzZXBoeV9hdHRhY2hlZCA9IDA7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYzozNTg0Olx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRVJST1IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzU4NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmM9MjI1PWludCBwbTgwMDFfcGh5X2NvbnRyb2woc3RydWN0IGFzZF9zYXNfcGh5ICpzYXNfcGh5LCBlbnVtIHBoeV9mdW5jIGZ1bmMsXG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmMtMjkyLVx0XHRcdFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHkpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmM6MjkzOlx0XHRcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuYy0yOTQtXHRcdFx0XHRcdFBIWUVfTE9TU19PRl9TSUdOQUwsIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5jLTMwMC1cdFx0XHRcdHNhc19waHlfZGlzY29ubmVjdGVkKFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5KTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5jOjMwMTpcdFx0XHRcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmMtMzAyLVx0XHRcdFx0XHRQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zMTg2PWh3X2V2ZW50X3Nhc19waHlfdXAoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjQ3LVx0cGh5LVx1MDAzZXNhc19waHkub29iX21vZGUgPSBTQVNfT09CX01PREU7XG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozMjQ4Olx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfT09CX0RPTkUsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzI0OS1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LmZyYW1lX3JjdmRfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jPTMyNjY9aHdfZXZlbnRfc2F0YV9waHlfdXAoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjk2LVx0cGh5LVx1MDAzZXNhc19waHkub29iX21vZGUgPSBTQVRBX09PQl9NT0RFO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzI5NzpcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTMyOTgtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZwaHktXHUwMDNlc2FzX3BoeS5mcmFtZV9yY3ZkX2xvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zMzE1PWh3X2V2ZW50X3BoeV9kb3duKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpXG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzM4Ni1cdGlmIChwb3J0X3NhdGEgXHUwMDI2XHUwMDI2IChwb3J0c3RhdGUgIT0gUE9SVF9JTl9SRVNFVCkpXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozMzg3Olx0XHRzYXNfbm90aWZ5X3BoeV9ldmVudChcdTAwMjZwaHktXHUwMDNlc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTMzODgtXHRcdFx0XHRHRlBfQVRPTUlDKTtcbi0tXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zNDU0PXN0YXRpYyBpbnQgbXBpX2h3X2V2ZW50KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpXG4tLVxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzQ5Mi1cdFx0XHQgICBwaHlfaWQsIHBvcnRfaWQpO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzQ5MzpcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfU1BJTlVQX0hPTEQsXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zNDk0LVx0XHRcdEdGUF9BVE9NSUMpO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM1MjYtXHRcdHBoeS1cdTAwM2VwaHlfYXR0YWNoZWQgPSAwO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzUyNzpcdFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXHUwMDI2cGh5LVx1MDAzZXNhc19waHksIFBIWUVfT09CX0VSUk9SLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM1MjgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM2NDItXHRcdFx0XHRwaHkgPSBcdTAwMjZwbTgwMDFfaGEtXHUwMDNlcGh5W2ldO1xuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzY0MzpcdFx0XHRcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFx1MDAyNnBoeS1cdTAwM2VzYXNfcGh5LFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzY0NC1cdFx0XHRcdFx0UEhZRV9MT1NTX09GX1NJR05BTCwgR0ZQX0FUT01JQyk7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0zNjM9c3RydWN0IG1paV9idXMge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMzc5LVx0LyoqXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjM4MDpcdCAqIEBub3RpZnlfcGh5X2F0dGFjaDogUGVyZm9ybSBwb3N0LWF0dGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzgxOlx0ICogZHJpdmVycy4gT3B0aW9uYWwgYW5kIGluZGVwZW5kZW50IG9mIEBub3RpZnlfcGh5X2RldGFjaC4gQ2FsbGVkXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTM4Mi1cdCAqIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkgcmlnaHQgYmVmb3JlIHBoeV9yZXN1bWUoKS4gUnVucyBpbiBwcm9jZXNzXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0zODctXHQgKi9cbmluY2x1ZGUvbGludXgvcGh5Lmg6Mzg4Olx0aW50ICgqbm90aWZ5X3BoeV9hdHRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuaW5jbHVkZS9saW51eC9waHkuaC0zODktXHQvKipcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzkwOlx0ICogQG5vdGlmeV9waHlfZGV0YWNoOiBQZXJmb3JtIHByZS1kZXRhY2ggaGFuZGxpbmcgZm9yIE1ESU8gYnVzXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjM5MTpcdCAqIGRyaXZlcnMuIE9wdGlvbmFsIGFuZCBpbmRlcGVuZGVudCBvZiBAbm90aWZ5X3BoeV9hdHRhY2guIENhbGxlZFxuaW5jbHVkZS9saW51eC9waHkuaC0zOTItXHQgKiBpbiBwaHlfZGV0YWNoKCkgcmlnaHQgYWZ0ZXIgcGh5X3N1c3BlbmQoKS4gUnVucyBpbiBwcm9jZXNzIGNvbnRleHQsXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0zOTUtXHQgKi9cbmluY2x1ZGUvbGludXgvcGh5Lmg6Mzk2Olx0dm9pZCAoKm5vdGlmeV9waHlfZGV0YWNoKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmluY2x1ZGUvbGludXgvcGh5LmgtMzk3LVxuLS1cbmluY2x1ZGUvc2NzaS9saWJzYXMuaD03Mjk9dm9pZCBzYXNfbm90aWZ5X3BvcnRfZXZlbnQoc3RydWN0IGFzZF9zYXNfcGh5ICpwaHksIGVudW0gcG9ydF9ldmVudCBldmVudCxcbmluY2x1ZGUvc2NzaS9saWJzYXMuaC03MzAtXHRcdFx0ICAgZ2ZwX3QgZ2ZwX2ZsYWdzKTtcbmluY2x1ZGUvc2NzaS9saWJzYXMuaDo3MzE6dm9pZCBzYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgYXNkX3Nhc19waHkgKnBoeSwgZW51bSBwaHlfZXZlbnQgZXZlbnQsXG5pbmNsdWRlL3Njc2kvbGlic2FzLmgtNzMyLVx0XHRcdCAgIGdmcF90IGdmcF9mbGFncyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5OTcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQSFkgQXR0YWNobWVudC9EZXRhY2htZW50IE5vdGlmaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGBub3RpZnlfcGh5X2F0dGFjaGAgYW5kIGBub3RpZnlfcGh5X2RldGFjaGAgZnVuY3Rpb25zLiBJIGtub3cgdGhleSYjMzk7cmUgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9waHkuaGAgYW5kIHVzZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIFBIWSBmcmFtZXdvcmssIGdvb2QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hvJiMzOTtzIGFjdHVhbGx5ICp1c2luZyogdGhlbS4KClRoZSB0cmFjZSBsZWFkcyBtZSB0byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYC4gQWgsIHJpZ2h0LCB0aGUgUmVhbHRlayBNRElPIGRyaXZlci4gQnV0Li4uIGlzIHRoaXMgc3BlY2lmaWMgdG8ganVzdCB0aGUgUmVhbHRlayBNSVBTIGhhcmR3YXJlPyBUaGF0JiMzOTtzIHdoYXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQuIEkgY2FuJiMzOTt0IGp1c3QgYXNzdW1lIGl0JiMzOTtzIGJyb2FkbHkgYXBwbGljYWJsZS4KCkkmIzM5O3ZlIGdvdCB0byBkZXRlcm1pbmUgaWYgdGhpcyBkcml2ZXIgaXMgdGlnaHRseSBjb3VwbGVkIHRvIGEgcGFydGljdWxhciBTb0MsIG9yIGlmIGl0JiMzOTtzIG1vcmUgZ2VuZXJpYy4gSXMgaXQgYm91bmQgdG8gc29tZXRoaW5nIHNwZWNpZmljLCBvciBpcyB0aGVyZSBhIGJyb2FkZXIgY29udGV4dCBJJiMzOTttIG1pc3Npbmc/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGNvZGUgaXRzZWxmIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZywgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkLCBhbmQgd2hhdCBoYXJkd2FyZSBpdCYjMzk7cyBleHBlY3RpbmcgdG8gc2VlLiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3R0b19lbWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjM3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjIzODpzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjM5LVx0dTMyIGMyMl9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNDgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjQ5OnN0cnVjdCBvdHRvX2VtZGlvX3ByaXYge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI1MDpcdGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjUxLVx0c3RydWN0IHJlZ21hcCAqcmVnbWFwO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjYxOnN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI2Mi1cdHUzMiBhZGRyX21hcF9iYXNlO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjYtXHR1MzIgY21kX3dyaXRlO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI2NzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9yZWdzO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI2OC1cdHU4IG51bV9idXNlcztcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjcxLVx0dTMyIHBvbGxfY3RybDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNzI6XHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzMtXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjc5OnN0cnVjdCBvdHRvX2VtZGlvX2NoYW4ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4MDpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjgxLVx0dTggbWRpb19idXM7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI4My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyODQ6c3RhdGljIGludCBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjg1LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyODY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjg3Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODgtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjk5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMwMDpzdGF0aWMgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqb3R0b19lbWRpb19idXNfdG9fcHJpdihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwMS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzAyOlx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwMy1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzA2LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMwNzpzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCBpbnQgcG9ydCwgYm9vbCBhY3RpdmUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzA4LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzEyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxMzpzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxNDpcdFx0XHQgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE1LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMTY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxNzpcdGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gKmluZm8gPSBwcml2LVx1MDAzZWluZm87XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE4LVx0dTMyIGNtZHN0YXRlO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNjktXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzcwOnN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3MTpcdFx0XHQgICAgICAgc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhLCB1MzIgbWFzaywgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNzIte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3MzpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc0LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc2LVx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3NzpcdHJldCA9IG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXHUwMDNlaW5mby1cdTAwM2VjbWRfcmVhZCwgY21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM3OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4OS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTA6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM5MTpcdFx0XHRcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zOTIte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM5MzpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzk0LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zOTYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzk3Olx0cmV0dXJuIG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXHUwMDNlaW5mby1cdTAwM2VjbWRfd3JpdGUsIGNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zOTgtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM5OS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDA6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDAxLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDI6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQwMzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNC1cdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwOS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTA6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxMS1cdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDE0OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxNS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDE2Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTc6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTgtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDI1Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQyNi19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDI3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQyODpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjktXHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzMC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDMxOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDMyLVx0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzNi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Mzc6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzOC1cdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDQxOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDItXHRcdFx0XHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0My17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDQ0Olx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDQ1LVx0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NTE6XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDUyLX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDU0OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1NS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDU2Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NTc6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTgtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDY0Olx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjUtXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDY3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ2ODpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00Njkte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3MDpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDcxOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDcyLVx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDc5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ4MDpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODEtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4Mi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0ODM6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDg0LVx0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODUte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ4NjpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4Ny1cdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDkyOlx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTMtXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDk1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ5NjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDk3LVx0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTgte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ5OTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwMC1cdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTA3Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwOC19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTA5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxMDpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MTEte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxMjpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTEzOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE0LVx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyMDpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTIxLVx0XHRcdFx0ICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyMy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MjQ6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTI1LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MjY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyNzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyOC1cdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MzU6XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTM2LX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MzctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTM4OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzOS1cdFx0XHRcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQwLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NDE6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDItXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ2LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0NzpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ4LVx0XHRcdFx0ICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NTE6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1Mi1cdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTUzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NTQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NTUtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU2MTpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NjItfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjQ6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTY1LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU2NzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2OC1cdFx0LmJyb2FkY2FzdFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3Mi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzM6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3NC1cdFx0XHRcdCAgIFJUTDkzMTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTc3OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3OC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTc5Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODA6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODEtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTg4Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4OS19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTkwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU5MTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01OTItXHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU5My17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTk0Olx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk1LVx0XHQuYnJvYWRjYXN0XHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9CQ19QT1JUX0lELCBwb3J0KSxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYwMDpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjAxLVx0XHRcdFx0ICAgUlRMOTMxMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MDQ6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwNS1cdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA2LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MDc6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MDgtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYxNTpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MTYtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxNy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTg6c3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE5LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MjA6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyMS1cdGludCByZXQsIHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyOS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MzA6XHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjMxLVx0aWYgKHBvcnQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY0My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NDQ6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY0NS1cdFx0XHRcdHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NDYte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY0NzpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjQ4LVx0aW50IHJldCwgcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjU1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY1NjpcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KGJ1cywgcGh5X2lkKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NTctXHRpZiAocG9ydCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjc0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY3NTpzdGF0aWMgaW50IG90dG9fZW1kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY3Ni17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njc3Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NzgtXHRpbnQgcmV0LCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjgxOlx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY4Mi1cdGlmIChwb3J0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjkxOnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTItXHRcdFx0XHRpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTMte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY5NDpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjk1LVx0aW50IHJldCwgcG9ydDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njk3Olx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY5OC1cdGlmIChwb3J0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzA3OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsIHUzMiBiYXNlLCB1MzIgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDgtXHRcdFx0XHQgICAgdTMyIHZhbHNfcGVyX3JlZywgdTMyIGJpdHNfcGVyX3ZhbCwgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MTYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzE3OnN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcxOC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzE5Olx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbyA9IHByaXYtXHUwMDNlaW5mbztcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjAtXHR1MzIgcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzI0LVx0XHRpZiAoaW5mby1cdTAwM2VidXNfbWFwX2Jhc2UpIHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MjU6XHRcdFx0cmV0ID0gb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHByaXYsIGluZm8tXHUwMDNlYnVzX21hcF9iYXNlLCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyNi1cdFx0XHRcdFx0XHQgICAgICAgTUFQX0JVU0VTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9CVVMsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczMS1cdFx0aWYgKGluZm8tXHUwMDNlYWRkcl9tYXBfYmFzZSkge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjczMjpcdFx0XHRyZXQgPSBvdHRvX2VtZGlvX3dyaXRlX21hcHBpbmcocHJpdiwgaW5mby1cdTAwM2VhZGRyX21hcF9iYXNlLCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczMy1cdFx0XHRcdFx0XHQgICAgICAgTUFQX0FERFJTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9BRERSLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NDItXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzQzOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NDQte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzUyOnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTMte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NzEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzcyOnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NzMte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03ODctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Nzg4OnN0YXRpYyBpbnQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4OS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzkwOlx0aW50IHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzkxOlx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc5MjpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBjaGFuLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzkzLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDktXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODEwOlx0cmV0dXJuIG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCB0cnVlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MTEtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxMi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTM6c3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODE1LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTY6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNy1cdGludCBwb3J0O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxOC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTk6XHRwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgyMDpcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODIxLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MjgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODI5Olx0aWYgKG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSkpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODMwLVx0XHRkZXZfZXJyKGJ1cy1cdTAwM2VwYXJlbnQsIFwmIzM0O2ZhaWxlZCB0byBkaXNhYmxlIHBvbGxpbmcgZm9yIHBvcnQgJWRcXG5cJiMzNDssIHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MzItXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODMzOnN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgzNC1cdFx0XHRcdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MzUte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgzNjpcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM3LVx0c3RydWN0IG1paV9idXMgKmJ1cztcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODUzLVx0YnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtSZWFsdGVrIFN3aXRjaCBNRElPIEJ1c1wmIzM0OztcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTQ6XHRidXMtXHUwMDNlcmVhZF9jNDUgPSBvdHRvX2VtZGlvX3JlYWRfYzQ1O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1NTpcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSBvdHRvX2VtZGlvX3dyaXRlX2M0NTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTY6XHRidXMtXHUwMDNlcmVhZCA9IG90dG9fZW1kaW9fcmVhZF9jMjI7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODU3Olx0YnVzLVx1MDAzZXdyaXRlID0gb3R0b19lbWRpb193cml0ZV9jMjI7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODU4LVx0YnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTk6XHRidXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg2MDpcdGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2g7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODYxLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NzQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODc1OnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKm90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4pXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODc2LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODkzLSAqL1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg5NDpzdGF0aWMgaW50IG90dG9fZW1kaW9fbWFwX3BvcnRzKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04OTUte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg5Ni1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHNfZG4sICpwaHlfZG4sICpidXNfZG4sICpjdHJsX2RuO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg5NzpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04OTgtXHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQgPSBkZXYtXHUwMDNlcGFyZW50O1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05MTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTE1Olx0XHRidXNfZG4gPSBvdHRvX2VtZGlvX2dldF9idXNfbm9kZShwaHlfZG4pO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkxNi1cdFx0aWYgKCFidXNfZG4pXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3Ny1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Nzg6c3RhdGljIGludCBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3OS17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk4Mi1cdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFx1MDAzYyBwcml2LVx1MDAzZWluZm8tXHUwMDNlbnVtX3BvcnRzOyBwb3J0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjk4MzpcdFx0ZXJyID0gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05ODQtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5OTE6c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTkyLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05OTMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5OTQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5NS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMDktXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTAxMDpcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMTEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDE1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMTY6XHRlcnIgPSBvdHRvX2VtZGlvX21hcF9wb3J0cyhkZXYpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMTctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDE5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMjA6XHRlcnIgPSBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHByaXYpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMjEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDMwLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDMxOlx0XHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDMyLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDM4LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMzk6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA0MC1cdC5hZGRyX21hcF9iYXNlID0gUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNTMtXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTQ6XHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTU6XHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1NjpcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDU3Olx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1ODpcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzQ1LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNTktfTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDYwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjE6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA2Mi1cdC5jbWRfZmFpbCA9IFJUTDgzOTBfUEhZX0NUUkxfRkFJTCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA3Ny1cdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDc4Olx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNzk6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA4MDpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwODE6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDgyLX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA4My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDg0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODUtXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDk5LVx0LnBvbGxfY3RybCA9IFJUTDkzMDBfU01JX1BPTExfQ1RSTCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTAwOlx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTAxOlx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDI6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEwMzpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDQ6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb185MzAwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTA1LX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEwNi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTA3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMDgtXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMTBfU01JX1BPUlRfQUREUl9DVFJMLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTI1LVx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMjY6XHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMjc6XHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEyODpcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTI5Olx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzMDpcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzQ1LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMzEtfTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTMyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb3R0b19lbWRpb19pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM0Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsODM4MC1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fODM4MF9pbmZvIH0sXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzNTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzOTEtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzgzOTBfaW5mbyB9LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzY6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw5MzAxLW1kaW9cJiMzNDssIC5kYXRhID0gXHUwMDI2b3R0b19lbWRpb185MzAwX2luZm8gfSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM3Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsOTMxMS1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMxMF9pbmZvIH0sXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzOC1cdHt9XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzOS19O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNDA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb3R0b19lbWRpb19pZHMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNDEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE0MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvdHRvX2VtZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTQzOlx0LnByb2JlID0gb3R0b19lbWRpb19wcm9iZSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTQ0LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTQ1LVx0XHQubmFtZSA9IFwmIzM0O21kaW8tcnRsOTMwMFwmIzM0OyxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTQ2Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvdHRvX2VtZGlvX2lkcyxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTQ3LVx0XHQuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNTAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTUyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTQ5CgkJCQkJCQlvdXRwdXQ6IDE5MQoJCQkJCQkJdGhvdWdodHM6IDI3MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgUEhZIERyaXZlciBDaGFuZ2VzIGZvciBSZWFsdGVrIE90dG8gU29DIFN1cHBvcnQqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaXNzZWN0aW5nIHRoaXMgcGF0Y2ggc2VyaWVzIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGluIGl0cyBpbXBsaWNhdGlvbnMuIFRoZSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIHN1cHBvcnQgZm9yIFJlYWx0ZWsmIzM5O3MgT3R0byBTb0Mgc3dpdGNoZXMsIHNwZWNpZmljYWxseSB0aGUgUlRMODM4eC9SVEw4Mzl4L1JUTDkzMHggc2VyaWVzLiBUaGUgY29kZSBjaGFuZ2VzIHJldm9sdmUgYXJvdW5kIGludGVncmF0aW5nIGEgbmV3IE1ESU8gYnVzIGRyaXZlciAoYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgKSB0aGF0JiMzOTtzIE9GLW9ubHksIG1lYW5pbmcgaXQgcmVsaWVzIG9uIGRldmljZSB0cmVlIGJpbmRpbmdzIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyAoYG90dG9fZW1kaW9fZHJpdmVyYCkuIEltcG9ydGFudGx5LCBgb3R0b19lbWRpb19kcml2ZXIuZHJpdmVyLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBtZWFucyB0aGUgdXN1YWwgc3lzZnMgYmluZGluZyB3b24mIzM5O3QgZXZlbiB3b3JrLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIHRoZSBQSFkgZGV2aWNlIGNvcmUgKGBwaHlfZGV2aWNlLmNgKSB3aGVyZSBuZXcgYG5vdGlmeV9waHlfYXR0YWNoYCBhbmQgYG5vdGlmeV9waHlfZGV0YWNoYCBjYWxsYmFja3MgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBNRElPIGJ1cyBpbnRlcmZhY2UuICBIb3dldmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsLCBpbiAqZXZlcnkqIHN0YW5kYXJkIG5ldHdvcmsgZHJpdmVyIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50IChsaWtlIFFFTVUgb3IgR0NFKSwgdGhlc2UgY2FsbGJhY2tzIGFyZSBuZXZlciBpbXBsZW1lbnRlZC4gVGhlIGNoZWNrcyB1c2luZyB0aG9zZSBjYWxsYmFja3MgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgYHBoeV9kZXRhY2hfaW50ZXJuYWxgIGVmZmVjdGl2ZWx5IGJlY29tZSBuby1vcHMuIEZvciBhbnkgc3RhbmRhcmQgTURJTyBidXMsIHRob3NlIHBvaW50ZXJzIGFyZSBOVUxMIGFuZCB0aGUgY29uZGl0aW9ucyBgaWYgKHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O25vdGlmeV9waHlfYXR0YWNoKWAgYW5kIGBpZiAobm90aWZ5X2J1cyAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O25vdGlmeV9waHlfZGV0YWNoKWAgYXJlIHNpbXBseSBieXBhc3NlZC4gVGhlIGVycm9yIHBhdGggdHdlYWtzIGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgcmVkaXJlY3QgdG8gYHBoeV9kZXRhY2hfaW50ZXJuYWxgIHdpdGggYG5vdGlmeV9idXNgIHNldCB0byBmYWxzZSwgd2hpY2ggZnVydGhlciBlbnN1cmVzIHRoZXNlIGNhbGxiYWNrcyBhcmUgc2tpcHBlZCwgc2luY2UgdGhlIGBidXMtJmd0O25vdGlmeV9waHlfZGV0YWNoYCBpcyBOVUxMLCB3aGljaCBtZWFucyBgbm90aWZ5X2J1c2AgaXMgYWx3YXlzIGZhbHNlLiBUaGUgb25seSBkcml2ZXIgdGhhdCBhY3R1YWxseSAqdXNlcyogdGhlc2UgbmV3IGNhbGxiYWNrcyBpcyB0aGUgYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGRyaXZlci4KCkdpdmVuIHRoYXQgdGhpcyBSZWFsdGVrIE1ESU8gYnVzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgUlRMODM4eC9SVEw5MzB4IHN3aXRjaCBTb0NzLCBhbmQgdGhlc2UgYXJlIHNwZWNpYWxpemVkIE1JUFMtYmFzZWQgaGFyZHdhcmUgY29tcG9uZW50cywgdGhleSBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIGNvbW1vbiB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gIE1vcmVvdmVyLCB0aGUgZHJpdmVyJiMzOTtzIHN1cHByZXNzaW9uIG9mIHN5c2ZzIGJpbmRpbmcgY29uZmlybXMgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggc3BlY2lmaWMgUmVhbHRlayBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgd2hpY2gsIGFnYWluLCBleGNsdWRlcyBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpUaGVyZWZvcmUsIHNpbmNlIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBhIHBsYXRmb3JtLXNwZWNpZmljIGRyaXZlciAoUmVhbHRlayBPdHRvIHN3aXRjaCkgYW5kIGludHJvZHVjZSBuby1vcCBiZWhhdmlvcnMgaW4gZ2VuZXJhbCwgdGhlcmUmIzM5O3Mgbm8gcmVhc29uIHRvIGNvbnNpZGVyIHRoaXMgcGF0Y2ggc2VyaWVzIGZ1enphYmxlIGluIGFueSBzdGFuZGFyZCBzZXR0aW5nLiAgVGhlIG1vZGlmaWNhdGlvbnMgaW4gdGhlIFBIWSBjb3JlIGFyZSBwYXNzaXZlIHVubGVzcyB0aGUgUmVhbHRlayBNRElPIGRyaXZlciBpcyBwcmVzZW50LCB3aGljaCBpcyBhIHZlcnkgc3BlY2lmaWMgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIFJUTDgzODAvUlRMODM5MCBzdXBwb3J0IGFuZCBNRElPIHBvbGxpbmcgaGFuZGxpbmcgdG8gdGhlIFJlYWx0ZWsgT3R0byBNRElPIGRyaXZlciAoZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jKSBhbG9uZyB3aXRoIGhlbHBlciBub3RpZmljYXRpb24gY2FsbGJhY2tzIGluIHRoZSBjb3JlIFBIWSBkZXZpY2UgbGF5ZXIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLiBUaGUgZHJpdmVyIGlzIGFuIE9GLW1hdGNoZWQgcGxhdGZvcm0gZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBzd2l0Y2ggU29DcyAoTUFDSF9SRUFMVEVLX1JUTCkgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZSBjb3JlIFBIWSBhZGRpdGlvbnMgYXJlIG5vLW9wIGhvb2tzIHVubGVzcyB0aGUgdW5kZXJseWluZyBNRElPIGJ1cyBkcml2ZXIgaW1wbGVtZW50cyB0aGUgY2FsbGJhY2tzLCB3aGljaCBvbmx5IHRoaXMgdW5yZWFjaGFibGUgZHJpdmVyIGRvZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgYWRkcyBSVEw4MzgwL1JUTDgzOTAgc3VwcG9ydCBhbmQgTURJTyBwb2xsaW5nIGhhbmRsaW5nIHRvIHRoZSBSZWFsdGVrIE90dG8gTURJTyBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykgYWxvbmcgd2l0aCBoZWxwZXIgbm90aWZpY2F0aW9uIGNhbGxiYWNrcyBpbiB0aGUgY29yZSBQSFkgZGV2aWNlIGxheWVyIChkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jKS4gVGhlIGRyaXZlciBpcyBhbiBPRi1tYXRjaGVkIHBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGUgY29yZSBQSFkgYWRkaXRpb25zIGFyZSBuby1vcCBob29rcyB1bmxlc3MgdGhlIHVuZGVybHlpbmcgTURJTyBidXMgZHJpdmVyIGltcGxlbWVudHMgdGhlIGNhbGxiYWNrcywgd2hpY2ggb25seSB0aGlzIHVucmVhY2hhYmxlIGRyaXZlciBkb2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjE6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU0OjU5LjkxODAyNjgyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzA1MjM4MzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgUlRMODM4MC9SVEw4MzkwIHN1cHBvcnQgYW5kIE1ESU8gcG9sbGluZyBoYW5kbGluZyB0byB0aGUgUmVhbHRlayBPdHRvIE1ESU8gZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpIGFsb25nIHdpdGggaGVscGVyIG5vdGlmaWNhdGlvbiBjYWxsYmFja3MgaW4gdGhlIGNvcmUgUEhZIGRldmljZSBsYXllciAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYykuIFRoZSBkcml2ZXIgaXMgYW4gT0YtbWF0Y2hlZCBwbGF0Zm9ybSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIGNvcmUgUEhZIGFkZGl0aW9ucyBhcmUgbm8tb3AgaG9va3MgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIE1ESU8gYnVzIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBjYWxsYmFja3MsIHdoaWNoIG9ubHkgdGhpcyB1bnJlYWNoYWJsZSBkcml2ZXIgZG9lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU0OjU5LjkxODAzMTE0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwNzEyMTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzljY2JhZmFmMGE5MmUxODM1Mzg1ODlkZjdmZDI1NmFhOTFmMTE2MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMTo1NDo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG5pbmRleCAyNzFlMDViYWU5YzU3Li42N2UwYjIzYTg0NzBlIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxcbkBAIC00LDcgKzQsNyBAQFxcbiAkaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sI1xcbiAkc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4gXFxuLXRpdGxlOiBSZWFsdGVrIFJUTDkzMDAgTURJTyBDb250cm9sbGVyXFxuK3RpdGxlOiBSZWFsdGVrIE90dG8gU3dpdGNoZXMgRXRoZXJuZXQgTURJTyBDb250cm9sbGVyXFxuIFxcbiBtYWludGFpbmVyczpcXG4gICAtIENocmlzIFBhY2toYW0gXFx1MDAzY2NocmlzLnBhY2toYW1AYWxsaWVkdGVsZXNpcy5jby5uelxcdTAwM2VcXG5AQCAtMTIsNiArMTIsMTYgQEAgbWFpbnRhaW5lcnM6XFxuIHByb3BlcnRpZXM6XFxuICAgY29tcGF0aWJsZTpcXG4gICAgIG9uZU9mOlxcbisgICAgICAtIGl0ZW1zOlxcbisgICAgICAgICAgLSBlbnVtOlxcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgxLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4Mi1tZGlvXFxuKyAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDgzODAtbWRpb1xcbisgICAgICAtIGl0ZW1zOlxcbisgICAgICAgICAgLSBlbnVtOlxcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkyLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5My1tZGlvXFxuKyAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDgzOTEtbWRpb1xcbiAgICAgICAtIGl0ZW1zOlxcbiAgICAgICAgICAgLSBlbnVtOlxcbiAgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAyYi1tZGlvXFxuQEAgLTI0LDYgKzM0LDggQEAgcHJvcGVydGllczpcXG4gICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMy1tZGlvXFxuICAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDkzMTEtbWRpb1xcbiAgICAgICAtIGVudW06XFxuKyAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MC1tZGlvXFxuKyAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5MS1tZGlvXFxuICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXFxuICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMS1tZGlvXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcgYi9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcXG5pbmRleCBhMDUyMjk4MzhjYjQ1Li5kNDQyNzhmMjZmYWJlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1xcbkBAIC0xNzIsMTEgKzE3MiwxMSBAQCBjb25maWcgTURJT19JUFE4MDY0XFxuIFxcdCAgaW50ZXJmYWNlIHVuaXRzIG9mIHRoZSBJUFE4MDY0IFNvQ1xcbiBcXG4gY29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXFxuLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDkzMDAgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4rXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuIFxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG4gXFx0aGVscFxcbiBcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGludGVyZmFjZSBmb3VuZCBpbiB0aGUgUmVhbHRla1xcbi1cXHQgIFJUTDkzMDAgZmFtaWx5IG9mIEV0aGVybmV0IHN3aXRjaGVzIHdpdGggaW50ZWdyYXRlZCBTb0MuXFxuK1xcdCAgUlRMODN4eC9SVEw5M3h4IGZhbWlseSBvZiBFdGhlcm5ldCBzd2l0Y2hlcyB3aXRoIGludGVncmF0ZWQgU29DLlxcbiBcXG4gY29uZmlnIE1ESU9fUkVHTUFQXFxuIFxcdHRyaXN0YXRlXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xcbmluZGV4IGFmZDUyYTFjZDdmODMuLjExZDA3OGVmOTQxY2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXFxuQEAgLTM1LDExICszNSw4NyBAQFxcbiAgKlxcbiAgKiBUaGUgZHJpdmVyIHdvcmtzIG91dCB0aGUgbWFwcGluZyBiYXNlZCBvbiB0aGUgTURJTyBidXMgZGVzY3JpYmVkIGluIGRldmljZSB0cmVlIGFuZCBwaGFuZGxlcyBvblxcbiAgKiB0aGUgZXRoZXJuZXQtcG9ydHMgcHJvcGVydHkuXFxuKyAqXFxuKyAqIFRoZSBkZXZpY2VzIGhhdmUgYSBoYXJkd2FyZSBwb2xsaW5nIHVuaXQgdGhhdCBydW5zIGluIHRoZSBiYWNrZ3JvdW5kIHdpdGhvdXQgYW55IENQVSBsb2FkLiBJdFxcbisgKiBjb25zdGFudGx5IHNjYW5zIHRoZSBNRElPIGJ1cyBhbmQgdGhlIGF0dGFjaGVkIFBIWXMgYW5kIHVwZGF0ZXMgdGhlIE1BQyBzdGF0dXMgcmVnaXN0ZXJzLlxcbisgKlxcbisgKiBIb3cgZG9lcyB0aGUgcG9sbGluZyB3b3JrP1xcbisgKlxcbisgKiBFYWNoIGRldmljZSBoYXMgYSBTTUlfUE9MTF9DVFJMIHJlZ2lzdGVyLiBBIHBlci1wb3J0IGJpdG1hc2sgZGVjaWRlcyBpZiB0aGUgaGFyZHdhcmUgcG9sbGluZyBvZlxcbisgKiB0aGUgYXNzb2NpYXRlZCBidXMvYWRkcmVzcyBpcyBhY3RpdmUgb3Igbm90LiBUaGUgaGFyZHdhcmUgcnVucyBhIHRpZ2h0IGxvb3Agb3ZlciB0aGlzIGFuZCBmb3JcXG4rICogZWFjaCBzZXQgcG9sbGluZyBiaXQgaXQgaXNzdWVzIGEgc3RhdHVzIGNoZWNrIGZvciB0aGUgUEhZLiBBdHRhY2hpbmcgYSBsb2dpYyBhbmFseXplciB0byB0aGVcXG4rICogTURJTyBidXMgb2YgYW4gUlRMODM4MCBhbmQgUlRMODM5MyBnaXZlcyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIChpbiBrZXJuZWwgbm90YXRpb24pOlxcbisgKlxcbisgKlxcdFJUTDgzODBcXHRcXHRcXHRcXHRSVEw4MzkzXFxuKyAqXFx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyAqXFx0cGh5X3dyaXRlKHBoeSwgMzEsIDB4MCk7XFx0cGh5X3JlYWQocGh5LCAwKTtcXG4rICpcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg3KTtcXHRwaHlfcmVhZChwaHksIDEpO1xcbisgKlxcdHBoeV93cml0ZShwaHksIDE0LCAweDNjKTtcXHRwaHlfcmVhZChwaHksIDQpO1xcbisgKlxcdHBoeV93cml0ZShwaHksIDEzLCAweDgwMDcpO1xcdHBoeV9yZWFkKHBoeSwgNSk7XFxuKyAqXFx0cGh5X3JlYWQocGh5LCAxNCk7XFx0XFx0cGh5X3JlYWQocGh5LCA2KTtcXG4rICpcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg3KTtcXHRwaHlfcmVhZChwaHksIDkpO1xcbisgKlxcdHBoeV93cml0ZShwaHksIDE0LCAweDNkKTtcXHRwaHlfcmVhZChwaHksIDEwKTtcXG4rICpcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg4MDA3KTtcXHRwaHlfcmVhZChwaHksIDE1KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDE0KTtcXHRcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg3KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDkpO1xcdFxcdHBoeV93cml0ZShwaHksIDE0LCAweDNjKTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDEwKTtcXHRcXHRwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDE1KTtcXHRcXHRwaHlfcmVhZChwaHksIDE0KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDApO1xcdFxcdHBoeV93cml0ZShwaHksIDEzLCAweDcpO1xcbisgKlxcdHBoeV9yZWFkKHBoeSwgMSk7XFx0XFx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2QpO1xcbisgKlxcdHBoeV9yZWFkKHBoeSwgNCk7XFx0XFx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4NDAwNyk7XFxuKyAqXFx0cGh5X3JlYWQocGh5LCA1KTtcXHRcXHRwaHlfcmVhZChwaHksIDE0KTtcXG4rICpcXHRwaHlfcmVhZChwaHksIDYpO1xcbisgKlxcbisgKiBBZnRlciBvbmUgUEhZIHN0YXR1cyBpcyByZWFkLCB0aGUgcG9sbGluZyBlbmdpbmUgZ29lcyBvdmVyIHRvIHRoZSBuZXh0IFBIWS4gSWYgb25lIGJ1cyBpcyBmdWxseVxcbisgKiBzY2FubmVkIGl0IHN3aXRjaGVzIG92ZXIgdG8gdGhlIG5leHQgYnVzLiBCYXNpY2FsbHkgdGhlIHBvbGxpbmcgc3lzdGVtIGlzIGFsd2F5cyBidXN5IGFuZCB0aGVcXG4rICogTUFDIHN0YXRlIGlzIHVwZGF0ZWQgaW4gcmVhbC10aW1lLlxcbisgKlxcbisgKiBUaGlzIGlzIGEgZ2xpbXBzZSBsb29rIGF0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSBwb2xsaW5nIGFuZCBsZWF2ZXMgb3V0IHRoZSBDNDUgY2FzZSBhbmQgdGhlIE1BQ1xcbisgKiByZWdpc3RlciB1cGRhdGUgbG9naWMgYWZ0ZXJ3YXJkcy4gSW1wb3J0YW50IHRvIG5vdGU6XFxuKyAqXFxuKyAqIC0gMTAwIE1CaXQgZG93bnNoaWZ0cyAoYnJva2VuIGNhYmxlcykgYXJlIGlkZW50aWZpZWQgYW5kIHByb3BhZ2F0ZWQgdG8gdGhlIE1BQyBjb3JyZWN0bHlcXG4rICogLSBBY2Nlc3MgdG8gTURJT19BTl9FRUVfQURWIGFuZCBNRElPX0FOX0VFRV9MUEFCTEUgd29ya3MgdmlhIEM0NSBvdmVyIEMyMi5cXG4rICogLSBJdCBpcyB1bmNsZWFyIGlmIHRoZXNlIHNlcXVlbmNlcyBjaGFuZ2UgZm9yIGRpZmZlcmVudCBQSFlzLlxcbisgKiAtIEFjY2VzcyB0byBSZWFsdGVrIHJlc2VydmVkIHJlZ2lzdGVyIDI2IChsaW5rIHNwZWVkKSBoYXMgbm90IHlldCBiZWVuIHNlZW4uXFxuKyAqXFxuKyAqIEhvdyBkb2VzIE1ESU8gYWNjZXNzIGZyb20ga2VybmVsIHdvcms/XFxuKyAqXFxuKyAqIFdoZW4gaXNzdWluZyBNRElPIGFjY2Vzc2VzIHZpYSBhbiBNTUlPIGJhc2VkIGludGVyZmFjZSB0aGUgZmluYWwgd3JpdGUgdG8gdGhlIGNvbW1hbmQgcmVnaXN0ZXJcXG4rICogc2V0cyBhIFxcXCJydW4gY29tbWFuZCBub3dcXFwiIGJpdC4gQmV0d2VlbiB0d28gcG9sbGluZyBzZXF1ZW5jZXMgZm9yIGRpZmZlcmVudCBQSFlzIHRoZSBoYXJkd2FyZVxcbisgKiBjaGVja3MgaWYgYSB1c2VyIGNvbW1hbmQgbmVlZHMgdG8gcnVuIGFuZCBzZW5kcyBpdCBvbnRvIHRoZSBidXMuIEFmdGVyd2FyZHMgaXQgc2ltcGx5IGNvbnRpbnVlc1xcbisgKiBpdHMgcG9sbGluZyB3b3JrLiBJbnNwZWN0aW5nIHRoZSBjb21tYW5kIHNlcXVlbmNlIGZvciBhIHBhZ2VkIHdyaXRlIG9uIHRoZSBsb2dpYyBhbmFseXplciBnaXZlczpcXG4rICpcXG4rICpcXHRSVEw4MzgwXFx0XFx0XFx0XFx0UlRMODM5M1xcbisgKlxcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisgKlxcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcXHRwaHlfd3JpdGUocGh5LCAzMSwgcGFnZSk7XFxuKyAqXFx0cGh5X3dyaXRlKHBoeSwgcmVnLCB2YWx1ZSk7XFx0cGh5X3dyaXRlKHBoeSwgcmVnLCB2YWx1ZSk7XFxuKyAqXFx0XFx0XFx0XFx0XFx0cGh5X3dyaXRlKHBoeSwgMzEsIDApO1xcbisgKlxcbisgKiBXaGF0IGRvZXMgdGhpcyBtZWFuP1xcbisgKlxcbisgKiBUaGVyZSBhcmUgc2xpZ2h0IGRpZmZlcmVuY2VzIGluIHBvbGxpbmcgYW5kIFBIWSBhY2Nlc3MgYmV0d2VlbiB0aGUgbW9kZWxzIGJ1dCB0aGUgY2hhbGxlbmdlXFxuKyAqIHN0YXlzIHRoZSBzYW1lLiBPbiB0aGUgb25lIGhhbmQgdGhhdCBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIE1BQyBsYXllciwgb24gdGhlIG90aGVyIGhhbmQgaXRcXG4rICogaGFzIHNvbWUgaW1wbGljYXRpb25zIGZvciB0aGUga2VybmVsIFBIWSBzdWJzeXN0ZW0uXFxuKyAqXFxuKyAqIC0gV2l0aG91dCB0aGUgcG9sbGluZyBhbmQgYSBwcm9wZXIgTUFDIHN0YXR1cywgc29tZSBvZiB0aGUgbGluayBoYW5kbGluZyBmZWF0dXJlcyBkbyBub3Qgd29yay5cXG4rICogICBFc3BlY2lhbGx5IGFuIHVucG9wdWxhdGVkIE1BQ19MSU5LX1NUUyByZWdpc3RlciBjYW5jZWxzIG9wZXJhdGlvbnMgdG8gb3RoZXIgTUFDIHJlZ2lzdGVycy5cXG4rICogLSBUaGUgUmVhbHRlayBwYWdlIHJlZ2lzdGVyIDMxIGlzIG1hZ2ljYWxseSBtb2RpZmllZCBpbiB0aGUgYmFja2dyb3VuZCBzbyB0aGF0IHBvbGxpbmcgd2lsbFxcbisgKiAgIHJlYWQgdGhlIHJpZ2h0IGRhdGEuIE9uIHRoZSBSVEw4Mzh4IHBvbGxpbmcgc2ltcGx5IHJlc2V0cyBpdCB0byB6ZXJvLiBPdGhlciBkZXZpY2VzIHNlZW1cXG4rICogICB0byB0cmFjayB0aGUgcGFnZSBhY2Nlc3MgXFxcIm1hZ2ljYWxseVxcXCIgaW4gdGhlIGJhY2tncm91bmQuXFxuKyAqIC0gQSBDNDUgb3ZlciBDMjIga2VybmVsIGFjY2VzcyBzZXF1ZW5jZSBpcyBtb3N0IGxpa2VseSB0byBmYWlsIGJlY2F1c2UgY2hhbmNlcyBhcmUgaGlnaCB0aGF0XFxuKyAqICAgdGhlIHBvbGxpbmcgZW5naW5lIG92ZXJ3cml0ZXMgcmVnaXN0ZXJzIDEzLzE0IGluIGJldHdlZW4uXFxuKyAqIC0gUEhZIGZpcm13YXJlIGxvYWRpbmcgY2FuIGhhdmUgaXNzdWVzLiBFc3BlY2lhbGx5IGlmIGEgUEhZIGlzIGRlc2lnbmVkIHRvIGV4cGVjdCBhIGNsZWFuXFxuKyAqICAgc2VxdWVuY2Ugb2YgcmVnaXN0ZXJzIGFuZCB2YWx1ZXMgd2l0aG91dCBkZXZpYXRpb24uXFxuKyAqIC0gQW4gYWNjZXNzIHRvIG9uZSBQSFkgd2lsbCBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IGZyZWUgc2xvdCBvZiB0aGUgcG9sbGluZyBlbmdpbmUuXFxuKyAqXFxuKyAqIENvbmNsdXNpb246IFRoZSBSZWFsdGVrIE1ESU8gYnVzIGRyaXZlciBQSFkgYWNjZXNzIG11c3Qga25vdyBhbmQgaGFuZGxlIGFueSBpbnRlcmZlcmVuY2UgdGhhdFxcbisgKiBhcmlzZXMgZnJvbSB0aGUgYWJvdmUgZGVzY3JpYmVkIGhhcmR3YXJlIHBvbGxpbmcuXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRtYXAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdHMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZmluZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXFx1MDAzZVxcbkBAIC01MCw2ICsxMjYsNTAgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gXFxuKyNkZWZpbmUgUlRMODM4MF9OVU1fQlVTRVNcXHRcXHRcXHQxXFxuKyNkZWZpbmUgUlRMODM4MF9OVU1fUEFHRVNcXHRcXHRcXHQ0MDk2XFxuKyNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcXHRcXHRcXHQyOFxcbisjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXFx0XFx0XFx0MHhhMTAwXFxuKyNkZWZpbmUgICBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORVxcdFxcdEJJVCgxNSlcXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFxcdFxcdDB4YTFiOFxcbisjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXFx0XFx0MHhhMWJjXFxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSXFx0XFx0R0VOTUFTSygyNCwgMjApXFxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1BBUktfUEFHRVxcdFxcdEdFTk1BU0soMTksIDE1KVxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0VcXHRcXHRHRU5NQVNLKDE0LCAzKVxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9XUklURVxcdFxcdEJJVCgyKVxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9SRUFEXFx0XFx0XFx0MFxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0M0NVxcdFxcdEJJVCgxKVxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMlxcdFxcdDBcXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfRkFJTFxcdFxcdFxcdDAgLyogbm8gZmFpbCBpbmRpY2F0b3IgKi9cXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMlxcdFxcdDB4YTFjMFxcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEFcXHRcXHRHRU5NQVNLKDMxLCAxNilcXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfREFUQVxcdFxcdFxcdEdFTk1BU0soMTUsIDApXFxuKyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzNcXHRcXHQweGExYzRcXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9QT0xMX0NUUkxcXHRcXHRcXHQweGExN2NcXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTFxcdFxcdDB4YTFjOFxcbitcXG4rI2RlZmluZSBSVEw4MzkwX05VTV9CVVNFU1xcdFxcdFxcdDJcXG4rI2RlZmluZSBSVEw4MzkwX05VTV9QQUdFU1xcdFxcdFxcdDgxOTJcXG4rI2RlZmluZSBSVEw4MzkwX05VTV9QT1JUU1xcdFxcdFxcdDUyXFxuKyNkZWZpbmUgUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMXFx0XFx0MHgwM2VjXFxuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkxcXHRcXHQweDAzZGNcXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFJcXHRcXHRHRU5NQVNLKDksIDUpXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRVxcdFxcdEdFTk1BU0soMjIsIDEwKVxcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9GQUlMXFx0XFx0XFx0QklUKDEpXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1dSSVRFXFx0XFx0QklUKDMpXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1JFQURcXHRcXHRcXHQwXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1XFx0XFx0QklUKDIpXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyXFx0XFx0MFxcbisjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX0NUUkxcXHRcXHRcXHQweDAzZTBcXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0VcXHRcXHRHRU5NQVNLKDgsIDApXFxuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMXFx0XFx0MHgwM2YwXFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0lOREFUQVxcdFxcdEdFTk1BU0soMzEsIDE2KVxcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBXFx0XFx0XFx0R0VOTUFTSygxNSwgMClcXG4rI2RlZmluZSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTFxcdFxcdFxcdDB4MDNmNFxcbisjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1dcXHRcXHQweDAzZTRcXG4rI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSFxcdFxcdDB4MDNlOFxcbisjZGVmaW5lIFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMXFx0XFx0MHgwM2ZjXFxuK1xcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXFx0XFx0XFx0NFxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BBR0VTXFx0XFx0XFx0NDA5NlxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BPUlRTXFx0XFx0XFx0MjhcXG5AQCAtNzAsNiArMTkwLDcgQEBcXG4gI2RlZmluZSAgIFJUTDkzMDBfUEhZX0NUUkxfSU5EQVRBXFx0XFx0R0VOTUFTSygzMSwgMTYpXFxuICNkZWZpbmUgICBSVEw5MzAwX1BIWV9DVFJMX0RBVEFcXHRcXHRcXHRHRU5NQVNLKDE1LCAwKVxcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zXFx0XFx0MHhjYjdjXFxuKyNkZWZpbmUgUlRMOTMwMF9TTUlfUE9MTF9DVFJMXFx0XFx0XFx0MHhjYTkwXFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkxcXHRcXHQweGNiODBcXG4gXFxuICNkZWZpbmUgUlRMOTMxMF9OVU1fQlVTRVNcXHRcXHRcXHQ0XFxuQEAgLTk1LDEyICsyMTYsMTYgQEBcXG4gI2RlZmluZSAgIFJUTDkzMTBfUEhZX0NUUkxfSU5EQVRBXFx0XFx0R0VOTUFTSygxNSwgMClcXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfTU1EX0NUUkxcXHQweDBjMThcXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9QT1JUX0FERFJfQ1RSTFxcdFxcdDB4MGM3NFxcbisjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMXFx0XFx0MHgwY2NjXFxuICNkZWZpbmUgUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTFxcdFxcdDB4MGM5Y1xcbiBcXG4gI2RlZmluZSBQSFlfQ1RSTF9DTURcXHRcXHRcXHRcXHRCSVQoMClcXG4gI2RlZmluZSBQSFlfQ1RSTF9NTURfREVWQURcXHRcXHRcXHRHRU5NQVNLKDIwLCAxNilcXG4gI2RlZmluZSBQSFlfQ1RSTF9NTURfUkVHXFx0XFx0XFx0R0VOTUFTSygxNSwgMClcXG4gXFxuKyNkZWZpbmUgUlRMX1ZFTkRPUl9JRFxcdFxcdFxcdFxcdDB4MDAxY2M4MDBcXG4rI2RlZmluZSBSVExfUEFHRV9TRUxFQ1RcXHRcXHRcXHRcXHQzMVxcbitcXG4gI2RlZmluZSBNQVBfQUREUlNfUEVSX1JFR1xcdFxcdFxcdDZcXG4gI2RlZmluZSBNQVBfQklUU19QRVJfQUREUlxcdFxcdFxcdDVcXG4gI2RlZmluZSBNQVBfQklUU19QRVJfQlVTXFx0XFx0XFx0MlxcbkBAIC0xMjYsNiArMjUxLDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7XFxuIFxcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcXG4gXFx0c3RydWN0IG11dGV4IGxvY2s7IC8qIHByb3RlY3QgSFcgYWNjZXNzICovXFxuIFxcdERFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpO1xcbitcXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xcbiBcXHR1OCBzbWlfYnVzW01BWF9QT1JUU107XFxuIFxcdHU4IHNtaV9hZGRyW01BWF9QT1JUU107XFxuIFxcdGJvb2wgc21pX2J1c19pc19jNDVbTUFYX1NNSV9CVVNTRVNdO1xcbkBAIC0xNDIsNiArMjY4LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7XFxuIFxcdHU4IG51bV9idXNlcztcXG4gXFx0dTggbnVtX3BvcnRzO1xcbiBcXHR1MTYgbnVtX3BhZ2VzO1xcbitcXHR1MzIgcG9sbF9jdHJsO1xcbiBcXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcXG4gXFx0aW50ICgqcmVhZF9jMjIpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTtcXG4gXFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xcbkBAIC0xNzcsNiArMzA0LDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpvdHRvX2VtZGlvX2J1c190b19wcml2KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIFxcdHJldHVybiBjaGFuLVxcdTAwM2Vwcml2O1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCBpbnQgcG9ydCwgYm9vbCBhY3RpdmUpXFxuK3tcXG4rXFx0cmV0dXJuIHJlZ21hcF9hc3NpZ25fYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZXBvbGxfY3RybCArIChwb3J0IC8gMzIpICogNCxcXG4rXFx0XFx0XFx0XFx0ICBCSVQocG9ydCAlIDMyKSwgYWN0aXZlKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhKVxcbiB7XFxuQEAgLTE4NSw5ICszMTgsOSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxcbiBcXHR1MzIgY21kc3RhdGU7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHQvKiBEZWZlbnNpdmUgcHJlIGNoZWNrIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyBob3JyaWJsZSB3cm9uZyAqL1xcbitcXHQvKiBEZWZlbnNpdmUgcHJlIGNoZWNrIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyBob3JyaWJseSB3cm9uZyAqL1xcbiBcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBpbmZvLVxcdTAwM2VjbWRfcmVncy5jMjJfZGF0YSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFxcdTAwMjYgUEhZX0NUUkxfQ01EKSwgMTAsIDEwMDApO1xcbitcXHRcXHRcXHRcXHQgICAgICAgY21kc3RhdGUsICEoY21kc3RhdGUgXFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMDApO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMjI3LDcgKzM2MCw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19ydW5fY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbiBcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBpbmZvLVxcdTAwM2VjbWRfcmVncy5jMjJfZGF0YSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFxcdTAwMjYgUEhZX0NUUkxfQ01EKSwgMTAsIDEwMDApO1xcbitcXHRcXHRcXHRcXHQgICAgICAgY21kc3RhdGUsICEoY21kc3RhdGUgXFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMDApO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMjY0LDEzICszOTcsMTIzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG4gXFx0cmV0dXJuIG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZWNtZF93cml0ZSwgY21kX2RhdGEpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4rXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcXG4rXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVxcdTAwM2VwYWdlW3BvcnRdKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuK1xcdFxcdFxcdFxcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4rXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcXG4rXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVxcdTAwM2VwYWdlW3BvcnRdKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcXG4rXFx0XFx0LnBvcnRfbWFza19sb3dcXHQ9IEJJVChwb3J0KSxcXG4rXFx0fTtcXG4rXFxuK1xcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbitcXHRcXHRcXHRcXHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbitcXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEsXFxuK1xcdFxcdFxcdFxcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuK1xcdFxcdFxcdFxcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuK3tcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuK1xcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuK1xcdFxcdFxcdFxcdCAgRklFTERfUFJFUChQSFlfQ1RSTF9NTURfUkVHLCByZWdudW0pLFxcbitcXHRcXHQuaW9fZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxcbitcXHRcXHQucG9ydF9tYXNrX2xvd1xcdD0gQklUKHBvcnQpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuK3tcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuK1xcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4rXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVxcdTAwM2VwYWdlW3BvcnRdKSxcXG4rXFx0XFx0LmV4dF9wYWdlXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0UsIDB4MWZmKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuK1xcdFxcdFxcdFxcdCAgIFJUTDgzOTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4rXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0pLFxcbitcXHRcXHQuZXh0X3BhZ2VcXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLFxcbitcXHRcXHQuaW9fZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxcbitcXHRcXHQucG9ydF9tYXNrX2hpZ2hcXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXFx1MDAzZVxcdTAwM2UgMzIpLFxcbitcXHRcXHQucG9ydF9tYXNrX2xvd1xcdD0gKHUzMikoQklUX1VMTChwb3J0KSksXFxuK1xcdH07XFxuK1xcbitcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG4rXFx0XFx0XFx0XFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4rXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4rXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXFxuK1xcdFxcdC5pb19kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcXG4rXFx0fTtcXG4rXFxuK1xcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhLFxcbitcXHRcXHRcXHRcXHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbitcXHRcXHRcXHRcXHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbitcXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX1JFRywgcmVnbnVtKSxcXG4rXFx0XFx0LmlvX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcXG4rXFx0XFx0LnBvcnRfbWFza19oaWdoXFx0PSAodTMyKShCSVRfVUxMKHBvcnQpIFxcdTAwM2VcXHUwMDNlIDMyKSxcXG4rXFx0XFx0LnBvcnRfbWFza19sb3dcXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkpLFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuIHtcXG4gXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4gXFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuIFxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4gXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8XFxuLVxcdFxcdFxcdFxcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0pLFxcbiBcXHRcXHQuaW9fZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksXFxuIFxcdH07XFxuIFxcbkBAIC0yODQsNyArNTI3LDcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxcbiBcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4gXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbiBcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcXG4tXFx0XFx0XFx0XFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksXFxuK1xcdFxcdFxcdFxcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi1cXHUwMDNlcGFnZVtwb3J0XSksXFxuIFxcdFxcdC5pb19kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXFxuIFxcdFxcdC5wb3J0X21hc2tfbG93XFx0PSBCSVQocG9ydCksXFxuIFxcdH07XFxuQEAgLTMyNCw3ICs1NjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdVxcbiBcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG4gXFx0XFx0LmJyb2FkY2FzdFxcdD0gRklFTERfUFJFUChSVEw5MzEwX0JDX1BPUlRfSUQsIHBvcnQpLFxcbiBcXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLVxcdFxcdFxcdFxcdCAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0pLFxcbiBcXHR9O1xcbiBcXG4gXFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuQEAgLTMzNiw3ICs1NzksNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sXFxuIFxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuIFxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbiBcXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLVxcdFxcdFxcdFxcdCAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxcbitcXHRcXHRcXHRcXHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0pLFxcbiBcXHRcXHQuaW9fZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxcbiBcXHRcXHQucG9ydF9tYXNrX2hpZ2hcXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXFx1MDAzZVxcdTAwM2UgMzIpLFxcbiBcXHRcXHQucG9ydF9tYXNrX2xvd1xcdD0gKHUzMikoQklUX1VMTChwb3J0KSksXFxuQEAgLTM3OCwyNyArNjIxLDUzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxcbiBcXHRpbnQgcmV0LCBwb3J0O1xcbiBcXHR1MzIgdmFsdWU7XFxuIFxcbitcXHRpZiAocmVnbnVtID09IE1JSV9NTURfQ1RSTCB8fCByZWdudW0gPT0gTUlJX01NRF9EQVRBKSB7XFxuK1xcdFxcdGRldl93YXJuX29uY2UoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgICAgICBcXFwiQzQ1IG92ZXIgQzIyIHJlYWQgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4gXFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbiBcXHRpZiAocG9ydCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBwb3J0O1xcbiBcXG4tXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaylcXG4rXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaykge1xcbitcXHRcXHRpZiAocmVnbnVtID09IFJUTF9QQUdFX1NFTEVDVClcXG4rXFx0XFx0XFx0cmV0dXJuIHByaXYtXFx1MDAzZXBhZ2VbcG9ydF07XFxuK1xcbiBcXHRcXHRyZXQgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VyZWFkX2MyMihidXMsIHBvcnQsIHJlZ251bSwgXFx1MDAyNnZhbHVlKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHJldCA/IHJldCA6IHZhbHVlO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxcbitcXHRcXHRcXHRcXHR1MTYgdmFsdWUpXFxuIHtcXG4gXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4gXFx0aW50IHJldCwgcG9ydDtcXG4gXFxuK1xcdGlmIChyZWdudW0gPT0gTUlJX01NRF9DVFJMIHx8IHJlZ251bSA9PSBNSUlfTU1EX0RBVEEpIHtcXG4rXFx0XFx0ZGV2X3dhcm5fb25jZShcXHUwMDI2YnVzLVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdCAgICAgIFxcXCJDNDUgb3ZlciBDMjIgd3JpdGUgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4gXFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbiBcXHRpZiAocG9ydCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBwb3J0O1xcbiBcXG4tXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaylcXG4rXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaykge1xcbitcXHRcXHRpZiAocmVnbnVtID09IFJUTF9QQUdFX1NFTEVDVCkge1xcbitcXHRcXHRcXHRpZiAodmFsdWUgXFx1MDAzZT0gUkFXX1BBR0UocHJpdikpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFnZVtwb3J0XSA9IHZhbHVlO1xcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0cmV0ID0gcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNld3JpdGVfYzIyKGJ1cywgcG9ydCwgcmVnbnVtLCB2YWx1ZSk7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtNDcxLDYgKzc0MCwxNSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4re1xcbitcXHQvKlxcbitcXHQgKiBQSFlfUEFUQ0hfRE9ORSBlbmFibGVzIFBIWSBjb250cm9sIHZpYSBTb0MuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIFBIWSBhY2Nlc3MsIGluY2x1ZGluZ1xcbitcXHQgKiBwYXRjaGluZyBhbmQgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBQSFlzIGFyZSBwcm9iZWQuXFxuK1xcdCAqL1xcbitcXHRyZXR1cm4gcmVnbWFwX3NldF9iaXRzKHByaXYtXFx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbiB7XFxuIFxcdHUzMiBnbGJfY3RybF9tYXNrID0gMCwgZ2xiX2N0cmxfdmFsID0gMDtcXG5AQCAtNTA3LDYgKzc4NSw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpbnQgcG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQocGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHIpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlcHJpdjtcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IGNoYW4tXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAocG9ydCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0LyogQWxsIHN1YnNlcXVlbnQgYnVzIG9wZXJhdGlvbnMgd2lsbCBmYWlsICovXFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiUEhZIGlzIG5vdCBtYXBwZWQgdG8gYSB2YWxpZCBzd2l0Y2ggcG9ydFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiBwb3J0O1xcbitcXHR9XFxuK1xcbitcXHQvKiBcXFwic3luY1xcXCIgcGFnZSBpbiBjYXNlIG9mIHByZXZpb3VzbHkgZmFpbGVkIGF0dGFjaG1lbnQgKi9cXG4rXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaylcXG4rXFx0XFx0cHJpdi1cXHUwMDNlcGFnZVtwb3J0XSA9IDA7XFxuK1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZXNtaV9idXNfaXNfYzQ1W2NoYW4tXFx1MDAzZW1kaW9fYnVzXSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIXBoeV9pZF9jb21wYXJlX3ZlbmRvcihwaHlkZXYtXFx1MDAzZXBoeV9pZCwgUlRMX1ZFTkRPUl9JRCkpIHtcXG4rXFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJPbmx5IFJlYWx0ZWsgUEhZcyBhbGxvd2VkIG9uIEMyMiBidXNcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgdHJ1ZSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcXG4rXFx0aW50IHBvcnQ7XFxuK1xcbitcXHRwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihwaHlkZXYtXFx1MDAzZW1kaW8uYnVzKTtcXG4rXFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQocGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHIpO1xcbitcXG4rXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHQvKiBcXFwic3luY1xcXCIgcGFnZSBmb3IgbmV4dCBhdHRhY2htZW50ICovXFxuK1xcdHNjb3BlZF9ndWFyZChtdXRleCwgXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spXFxuK1xcdFxcdHByaXYtXFx1MDAzZXBhZ2VbcG9ydF0gPSAwO1xcbitcXG4rXFx0aWYgKG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSkpXFxuK1xcdFxcdGRldl9lcnIoYnVzLVxcdTAwM2VwYXJlbnQsIFxcXCJmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSlcXG4ge1xcbkBAIC01MjgsMTQgKzg1MSwxNCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdGJ1cy1cXHUwMDNlbmFtZSA9IFxcXCJSZWFsdGVrIFN3aXRjaCBNRElPIEJ1c1xcXCI7XFxuLVxcdGlmIChwcml2LVxcdTAwM2VzbWlfYnVzX2lzX2M0NVttZGlvX2J1c10pIHtcXG4tXFx0XFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XFxuLVxcdFxcdGJ1cy1cXHUwMDNld3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdGJ1cy1cXHUwMDNlcmVhZCA9IG90dG9fZW1kaW9fcmVhZF9jMjI7XFxuLVxcdFxcdGJ1cy1cXHUwMDNld3JpdGUgPSBvdHRvX2VtZGlvX3dyaXRlX2MyMjtcXG4tXFx0fVxcbitcXHRidXMtXFx1MDAzZXJlYWRfYzQ1ID0gb3R0b19lbWRpb19yZWFkX2M0NTtcXG4rXFx0YnVzLVxcdTAwM2V3cml0ZV9jNDUgPSBvdHRvX2VtZGlvX3dyaXRlX2M0NTtcXG4rXFx0YnVzLVxcdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcXG4rXFx0YnVzLVxcdTAwM2V3cml0ZSA9IG90dG9fZW1kaW9fd3JpdGVfYzIyO1xcbiBcXHRidXMtXFx1MDAzZXBhcmVudCA9IGRldjtcXG4rXFx0YnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7XFxuK1xcdGJ1cy1cXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoO1xcbitcXG4gXFx0Y2hhbiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG4gXFx0Y2hhbi1cXHUwMDNlbWRpb19idXMgPSBtZGlvX2J1cztcXG4gXFx0Y2hhbi1cXHUwMDNlcHJpdiA9IHByaXY7XFxuQEAgLTY1Miw2ICs5NzUsMTkgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb19pbml0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4re1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0Zm9yIChpbnQgcG9ydCA9IDA7IHBvcnQgXFx1MDAzYyBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VudW1fcG9ydHM7IHBvcnQrKykge1xcbitcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgZmFsc2UpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5AQCAtNjcxLDYgKzEwMDcsMTAgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVnbWFwKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cXHUwMDNlcmVnbWFwKTtcXG4gXFxuK1xcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4gXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7XFxuIFxcbiBcXHRlcnIgPSBvdHRvX2VtZGlvX21hcF9wb3J0cyhkZXYpO1xcbkBAIC02OTYsNiArMTAzNiw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xcbitcXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDgzODBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxcbitcXHQuY21kX2ZhaWwgPSBSVEw4MzgwX1BIWV9DVFJMX0ZBSUwsXFxuK1xcdC5jbWRfcmVhZCA9IFJUTDgzODBfUEhZX0NUUkxfUkVBRCxcXG4rXFx0LmNtZF93cml0ZSA9IFJUTDgzODBfUEhZX0NUUkxfV1JJVEUsXFxuK1xcdC5jbWRfcmVncyA9IHtcXG4rXFx0XFx0LmMyMl9kYXRhID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEsXFxuK1xcdFxcdC5jNDVfZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zLFxcbitcXHRcXHQuaW9fZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8yLFxcbitcXHRcXHQucG9ydF9tYXNrX2xvdyA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wLFxcbitcXHR9LFxcbitcXHQubnVtX2J1c2VzID0gUlRMODM4MF9OVU1fQlVTRVMsXFxuK1xcdC5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUyxcXG4rXFx0Lm51bV9wb3J0cyA9IFJUTDgzODBfTlVNX1BPUlRTLFxcbitcXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxcbitcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxcbitcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXFxuK1xcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcXG4rXFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIsXFxuK1xcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzQ1LFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XFxuK1xcdC5jbWRfZmFpbCA9IFJUTDgzOTBfUEhZX0NUUkxfRkFJTCxcXG4rXFx0LmNtZF9yZWFkID0gUlRMODM5MF9QSFlfQ1RSTF9SRUFELFxcbitcXHQuY21kX3dyaXRlID0gUlRMODM5MF9QSFlfQ1RSTF9XUklURSxcXG4rXFx0LmNtZF9yZWdzID0ge1xcbitcXHRcXHQuYnJvYWRjYXN0ID0gUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMLFxcbitcXHRcXHQuYzIyX2RhdGEgPSBSVEw4MzkwX1BIWVJFR19BQ0NFU1NfQ1RSTCxcXG4rXFx0XFx0LmM0NV9kYXRhID0gUlRMODM5MF9QSFlSRUdfTU1EX0NUUkwsXFxuK1xcdFxcdC5leHRfcGFnZSA9IFJUTDgzOTBfUEhZUkVHX0NUUkwsXFxuK1xcdFxcdC5pb19kYXRhID0gUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMLFxcbitcXHRcXHQucG9ydF9tYXNrX2xvdyA9IFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1csXFxuK1xcdFxcdC5wb3J0X21hc2tfaGlnaCA9IFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdILFxcbitcXHR9LFxcbitcXHQubnVtX2J1c2VzID0gUlRMODM5MF9OVU1fQlVTRVMsXFxuK1xcdC5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUyxcXG4rXFx0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxcbitcXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXFxuK1xcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMixcXG4rXFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1LFxcbitcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcXG4rXFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUsXFxuK307XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcXG4gXFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw5MzAwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcXG4gXFx0LmJ1c19tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMLFxcbkBAIC03MTEsNiArMTA5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xcbiBcXHQubnVtX2J1c2VzID0gUlRMOTMwMF9OVU1fQlVTRVMsXFxuIFxcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcXG4gXFx0Lm51bV9wYWdlcyA9IFJUTDkzMDBfTlVNX1BBR0VTLFxcbitcXHQucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLFxcbiBcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcXG5AQCAtNzM2LDYgKzExMjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcXG4gXFx0Lm51bV9idXNlcyA9IFJUTDkzMTBfTlVNX0JVU0VTLFxcbiBcXHQubnVtX3BhZ2VzID0gUlRMOTMxMF9OVU1fUEFHRVMsXFxuIFxcdC5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUyxcXG4rXFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxcbiBcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcXG5AQCAtNzQ0LDYgKzExMzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG90dG9fZW1kaW9faWRzW10gPSB7XFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzgwLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlYWx0ZWsscnRsODM5MS1tZGlvXFxcIiwgLmRhdGEgPSBcXHUwMDI2b3R0b19lbWRpb184MzkwX2luZm8gfSxcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZWFsdGVrLHJ0bDkzMDEtbWRpb1xcXCIsIC5kYXRhID0gXFx1MDAyNm90dG9fZW1kaW9fOTMwMF9pbmZvIH0sXFxuIFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzExLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxcbiBcXHR7fVxcbkBAIC03NTUsMTAgKzExNDQsMTEgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb3R0b19lbWRpb19kcml2ZXIgPSB7XFxuIFxcdC5kcml2ZXIgPSB7XFxuIFxcdFxcdC5uYW1lID0gXFxcIm1kaW8tcnRsOTMwMFxcXCIsXFxuIFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG90dG9fZW1kaW9faWRzLFxcbitcXHRcXHQuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsXFxuIFxcdH0sXFxuIH07XFxuIFxcbiBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTtcXG4gXFxuLU1PRFVMRV9ERVNDUklQVElPTihcXFwiUlRMOTMwMCBNRElPIGRyaXZlclxcXCIpO1xcbitNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlJUTDgzeHgvUlRMOTN4eCBNRElPIGRyaXZlclxcXCIpO1xcbiBNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uZGU1OWQ4NjRiMDYwOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzM0LDYgKzE3MzQsMTA0IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXFxuIFxcdHJldHVybiBwaHlkcnYtXFx1MDAzZWNvbmZpZ19pbnRyIFxcdTAwMjZcXHUwMDI2IHBoeWRydi1cXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIHBoeV9kZXRhY2hfaW50ZXJuYWwgLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuKyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbisgKiBAbm90aWZ5X2J1czogd2hldGhlciB0byBub3RpZnkgdGhlIE1ESU8gYnVzIGFib3V0IHRoZSBQSFkgZGV0YWNoXFxuKyAqXFxuKyAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcXG4rICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgcGh5X2RldGFjaF9pbnRlcm5hbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIG5vdGlmeV9idXMpXFxuK3tcXG4rXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2O1xcbitcXHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcXG4rXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4rXFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZWRldmxpbmspIHtcXG4rXFx0XFx0ZGV2aWNlX2xpbmtfZGVsKHBoeWRldi1cXHUwMDNlZGV2bGluayk7XFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IE5VTEw7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZXN5c2ZzX2xpbmtzKSB7XFxuK1xcdFxcdGlmIChkZXYpXFxuK1xcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZkZXYtXFx1MDAzZWRldi5rb2JqLCBcXFwicGh5ZGV2XFxcIik7XFxuK1xcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosIFxcXCJhdHRhY2hlZF9kZXZcXFwiKTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldilcXG4rXFx0XFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYua29iaixcXG4rXFx0XFx0XFx0XFx0ICBcXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XFxuK1xcbitcXHRwaHlfc3VzcGVuZChwaHlkZXYpO1xcbitcXG4rXFx0aWYgKG5vdGlmeV9idXMgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZW5vdGlmeV9waHlfZGV0YWNoKHBoeWRldik7XFxuK1xcbitcXHRpZiAoZGV2KSB7XFxuK1xcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xcbitcXG4rXFx0XFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XFxuK1xcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcXG4rXFx0XFx0ICovXFxuK1xcdFxcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YpO1xcbitcXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuK1xcdFxcdGlmIChod3Byb3YgXFx1MDAyNlxcdTAwMjYgaHdwcm92LVxcdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XFxuK1xcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZWh3cHJvdiwgTlVMTCk7XFxuK1xcdFxcdFxcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcXG4rXFx0XFx0cGh5X2xpbmtfdG9wb19kZWxfcGh5KGRldiwgcGh5ZGV2KTtcXG4rXFx0fVxcbitcXG4rXFx0cGh5ZGV2LVxcdTAwM2VwaHlfbGlua19jaGFuZ2UgPSBOVUxMO1xcbitcXHRwaHlkZXYtXFx1MDAzZXBoeWxpbmsgPSBOVUxMO1xcbitcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxcbitcXHRcXHRtb2R1bGVfcHV0KHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyLVxcdTAwM2Vvd25lcik7XFxuK1xcbitcXHQvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXRcXG4rXFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXFxuK1xcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUncyBhIGNoYW5jZSBhXFxuK1xcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxcbitcXHQgKi9cXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xcbitcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYpO1xcbitcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbitcXHR9XFxuK1xcbitcXHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbitcXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWRcXG4rXFx0ICogYSB1c2UtYWZ0ZXItZnJlZSBidWcgYnkgcmVhZGluZyB0aGUgdW5kZXJseWluZyBidXMgZmlyc3QuXFxuK1xcdCAqL1xcbitcXHRidXMgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzO1xcbitcXG4rXFx0cHV0X2RldmljZShcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuK1xcdGlmIChkZXYpXFxuK1xcdFxcdG5kZXZfb3duZXIgPSBkZXYtXFx1MDAzZWRldi5wYXJlbnQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXI7XFxuK1xcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuK1xcdFxcdG1vZHVsZV9wdXQoYnVzLVxcdTAwM2Vvd25lcik7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZVxcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4rICpcXG4rICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxcbisgKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXFxuKyAqL1xcbit2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHQvKiBjbGVhbnVwIGluY2x1ZGluZyBidXMgbm90aWZpY2F0aW9uICovXFxuK1xcdHBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCB0cnVlKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MKHBoeV9kZXRhY2gpO1xcbitcXG4gLyoqXFxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuQEAgLTE4NzYsNiArMTk3NCwxMiBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBlcnJvcjtcXG4gXFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCkge1xcbitcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaChwaHlkZXYpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRnb3RvIGVycm9yO1xcbitcXHR9XFxuK1xcbiBcXHRwaHlfcmVzdW1lKHBoeWRldik7XFxuIFxcbiBcXHQvKipcXG5AQCAtMTg5MCw4ICsxOTk0LDggQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIFxcdHJldHVybiBlcnI7XFxuIFxcbiBlcnJvcjpcXG4tXFx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXFxuLVxcdHBoeV9kZXRhY2gocGh5ZGV2KTtcXG4rXFx0LyogcGh5X2RldGFjaF9pbnRlcm5hbCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXFxuK1xcdHBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCBmYWxzZSk7XFxuIFxcdHJldHVybiBlcnI7XFxuIFxcbiBlcnJvcl9tb2R1bGVfcHV0OlxcbkBAIC0xOTA2LDg2ICsyMDEwLDYgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIH1cXG4gRVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoX2RpcmVjdCk7XFxuIFxcbi0vKipcXG4tICogcGh5X2RldGFjaCAtIGRldGFjaCBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2VcXG4tICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuLSAqXFxuLSAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcXG4tICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxcbi0gKi9cXG4tdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLXtcXG4tXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2O1xcbi1cXHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcXG4tXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4tXFxuLVxcdGlmIChwaHlkZXYtXFx1MDAzZWRldmxpbmspIHtcXG4tXFx0XFx0ZGV2aWNlX2xpbmtfZGVsKHBoeWRldi1cXHUwMDNlZGV2bGluayk7XFxuLVxcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IE5VTEw7XFxuLVxcdH1cXG4tXFxuLVxcdGlmIChwaHlkZXYtXFx1MDAzZXN5c2ZzX2xpbmtzKSB7XFxuLVxcdFxcdGlmIChkZXYpXFxuLVxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZkZXYtXFx1MDAzZWRldi5rb2JqLCBcXFwicGh5ZGV2XFxcIik7XFxuLVxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosIFxcXCJhdHRhY2hlZF9kZXZcXFwiKTtcXG4tXFx0fVxcbi1cXG4tXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldilcXG4tXFx0XFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYua29iaixcXG4tXFx0XFx0XFx0XFx0ICBcXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XFxuLVxcbi1cXHRwaHlfc3VzcGVuZChwaHlkZXYpO1xcbi1cXHRpZiAoZGV2KSB7XFxuLVxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xcbi1cXG4tXFx0XFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XFxuLVxcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcXG4tXFx0XFx0ICovXFxuLVxcdFxcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YpO1xcbi1cXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuLVxcdFxcdGlmIChod3Byb3YgXFx1MDAyNlxcdTAwMjYgaHdwcm92LVxcdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XFxuLVxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZWh3cHJvdiwgTlVMTCk7XFxuLVxcdFxcdFxcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcXG4tXFx0XFx0fVxcbi1cXG4tXFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuLVxcdFxcdHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcXG4tXFx0XFx0cGh5X2xpbmtfdG9wb19kZWxfcGh5KGRldiwgcGh5ZGV2KTtcXG4tXFx0fVxcbi1cXG4tXFx0cGh5ZGV2LVxcdTAwM2VwaHlfbGlua19jaGFuZ2UgPSBOVUxMO1xcbi1cXHRwaHlkZXYtXFx1MDAzZXBoeWxpbmsgPSBOVUxMO1xcbi1cXG4tXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxcbi1cXHRcXHRtb2R1bGVfcHV0KHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyLVxcdTAwM2Vvd25lcik7XFxuLVxcbi1cXHQvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXRcXG4tXFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXFxuLVxcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUncyBhIGNoYW5jZSBhXFxuLVxcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxcbi1cXHQgKi9cXG4tXFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xcbi1cXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYpO1xcbi1cXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbi1cXHR9XFxuLVxcbi1cXHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbi1cXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XFxuLVxcbi1cXHQvKlxcbi1cXHQgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWRcXG4tXFx0ICogYSB1c2UtYWZ0ZXItZnJlZSBidWcgYnkgcmVhZGluZyB0aGUgdW5kZXJseWluZyBidXMgZmlyc3QuXFxuLVxcdCAqL1xcbi1cXHRidXMgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzO1xcbi1cXG4tXFx0cHV0X2RldmljZShcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuLVxcdGlmIChkZXYpXFxuLVxcdFxcdG5kZXZfb3duZXIgPSBkZXYtXFx1MDAzZWRldi5wYXJlbnQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXI7XFxuLVxcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuLVxcdFxcdG1vZHVsZV9wdXQoYnVzLVxcdTAwM2Vvd25lcik7XFxuLX1cXG4tRVhQT1JUX1NZTUJPTChwaHlfZGV0YWNoKTtcXG4tXFxuIGludCBwaHlfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5pbmRleCA1ZjhkNjU4NjhlMGZmLi4zZDhhZmU2YjdmMWM1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXFxuQEAgLTM3Niw2ICszNzYsMjQgQEAgc3RydWN0IG1paV9idXMge1xcbiBcXHRcXHRcXHQgaW50IHJlZ251bSwgdTE2IHZhbCk7XFxuIFxcdC8qKiBAcmVzZXQ6IFBlcmZvcm0gYSByZXNldCBvZiB0aGUgYnVzICovXFxuIFxcdGludCAoKnJlc2V0KShzdHJ1Y3QgbWlpX2J1cyAqYnVzKTtcXG4rXFx0LyoqXFxuK1xcdCAqIEBub3RpZnlfcGh5X2F0dGFjaDogUGVyZm9ybSBwb3N0LWF0dGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcXG4rXFx0ICogZHJpdmVycy4gT3B0aW9uYWwgYW5kIGluZGVwZW5kZW50IG9mIEBub3RpZnlfcGh5X2RldGFjaC4gQ2FsbGVkXFxuK1xcdCAqIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkgcmlnaHQgYmVmb3JlIHBoeV9yZXN1bWUoKS4gUnVucyBpbiBwcm9jZXNzXFxuK1xcdCAqIGNvbnRleHQsIG1heSBzbGVlcCBhbmQgbWF5IGJlIGNhbGxlZCB3aXRoIFJUTkwgaGVsZC4gTXVzdCBub3RcXG4rXFx0ICogYWNxdWlyZSBvciByZWx5IG9uIFJUTkwuIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm5vXFxuK1xcdCAqIG9uIGZhaWx1cmUuIE11c3QgdW53aW5kIGl0cyBvd24gc3RhdGUgb24gZXJyb3IgYXMgYXR0YWNobWVudCBpc1xcbitcXHQgKiBhYm9ydGVkLlxcbitcXHQgKi9cXG4rXFx0aW50ICgqbm90aWZ5X3BoeV9hdHRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbitcXHQvKipcXG4rXFx0ICogQG5vdGlmeV9waHlfZGV0YWNoOiBQZXJmb3JtIHByZS1kZXRhY2ggaGFuZGxpbmcgZm9yIE1ESU8gYnVzXFxuK1xcdCAqIGRyaXZlcnMuIE9wdGlvbmFsIGFuZCBpbmRlcGVuZGVudCBvZiBAbm90aWZ5X3BoeV9hdHRhY2guIENhbGxlZFxcbitcXHQgKiBpbiBwaHlfZGV0YWNoKCkgcmlnaHQgYWZ0ZXIgcGh5X3N1c3BlbmQoKS4gUnVucyBpbiBwcm9jZXNzIGNvbnRleHQsXFxuK1xcdCAqIG1heSBzbGVlcCBhbmQgbWF5IGJlIGNhbGxlZCB3aXRoIFJUTkwgaGVsZC4gTXVzdCBub3QgYWNxdWlyZSBvclxcbitcXHQgKiByZWx5IG9uIFJUTkwuXFxuK1xcdCAqL1xcbitcXHR2b2lkICgqbm90aWZ5X3BoeV9kZXRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbiBcXG4gXFx0LyoqIEBzdGF0czogU3RhdGlzdGljIGNvdW50ZXJzIHBlciBkZXZpY2Ugb24gdGhlIGJ1cyAqL1xcbiBcXHRzdHJ1Y3QgbWRpb19idXNfc3RhdHMgc3RhdHNbUEhZX01BWF9BRERSXTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjE6NTU6MDAuNTA5MzgwODcyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NjExMzg3MTc1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgUlRMODM4MC9SVEw4MzkwIHN1cHBvcnQgYW5kIE1ESU8gcG9sbGluZyBoYW5kbGluZyB0byB0aGUgUmVhbHRlayBPdHRvIE1ESU8gZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpIGFsb25nIHdpdGggaGVscGVyIG5vdGlmaWNhdGlvbiBjYWxsYmFja3MgaW4gdGhlIGNvcmUgUEhZIGRldmljZSBsYXllciAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYykuIFRoZSBkcml2ZXIgaXMgYW4gT0YtbWF0Y2hlZCBwbGF0Zm9ybSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIGNvcmUgUEhZIGFkZGl0aW9ucyBhcmUgbm8tb3AgaG9va3MgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIE1ESU8gYnVzIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBjYWxsYmFja3MsIHdoaWNoIG9ubHkgdGhpcyB1bnJlYWNoYWJsZSBkcml2ZXIgZG9lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM5Y2NiYWZhZjBhOTJlMTgzNTM4NTg5ZGY3ZmQyNTZhYTkxZjExNjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMTo1NDo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuaW5kZXggMjcxZTA1YmFlOWM1Ny4uNjdlMGIyM2E4NDcwZSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG5AQCAtNCw3ICs0LDcgQEBcbiAkaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sI1xuICRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuIFxuLXRpdGxlOiBSZWFsdGVrIFJUTDkzMDAgTURJTyBDb250cm9sbGVyXG4rdGl0bGU6IFJlYWx0ZWsgT3R0byBTd2l0Y2hlcyBFdGhlcm5ldCBNRElPIENvbnRyb2xsZXJcbiBcbiBtYWludGFpbmVyczpcbiAgIC0gQ2hyaXMgUGFja2hhbSBcdTAwM2NjaHJpcy5wYWNraGFtQGFsbGllZHRlbGVzaXMuY28ubnpcdTAwM2VcbkBAIC0xMiw2ICsxMiwxNiBAQCBtYWludGFpbmVyczpcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbiAgICAgb25lT2Y6XG4rICAgICAgLSBpdGVtczpcbisgICAgICAgICAgLSBlbnVtOlxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODEtbWRpb1xuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xuKyAgICAgICAgICAtIGNvbnN0OiByZWFsdGVrLHJ0bDgzODAtbWRpb1xuKyAgICAgIC0gaXRlbXM6XG4rICAgICAgICAgIC0gZW51bTpcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkyLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkzLW1kaW9cbisgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw4MzkxLW1kaW9cbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGVudW06XG4gICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmItbWRpb1xuQEAgLTI0LDYgKzM0LDggQEAgcHJvcGVydGllczpcbiAgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEzLW1kaW9cbiAgICAgICAgICAgLSBjb25zdDogcmVhbHRlayxydGw5MzExLW1kaW9cbiAgICAgICAtIGVudW06XG4rICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgwLW1kaW9cbisgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTEtbWRpb1xuICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXG4gICAgICAgICAgIC0gcmVhbHRlayxydGw5MzExLW1kaW9cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWcgYi9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcbmluZGV4IGEwNTIyOTgzOGNiNDUuLmQ0NDI3OGYyNmZhYmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL0tjb25maWdcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1xuQEAgLTE3MiwxMSArMTcyLDExIEBAIGNvbmZpZyBNRElPX0lQUTgwNjRcbiBcdCAgaW50ZXJmYWNlIHVuaXRzIG9mIHRoZSBJUFE4MDY0IFNvQ1xuIFxuIGNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxuLVx0dHJpc3RhdGUgXCJSZWFsdGVrIFJUTDkzMDAgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwiXG4rXHR0cmlzdGF0ZSBcIlJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcIlxuIFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuIFx0aGVscFxuIFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTURJTyBpbnRlcmZhY2UgZm91bmQgaW4gdGhlIFJlYWx0ZWtcbi1cdCAgUlRMOTMwMCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbitcdCAgUlRMODN4eC9SVEw5M3h4IGZhbWlseSBvZiBFdGhlcm5ldCBzd2l0Y2hlcyB3aXRoIGludGVncmF0ZWQgU29DLlxuIFxuIGNvbmZpZyBNRElPX1JFR01BUFxuIFx0dHJpc3RhdGVcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbmluZGV4IGFmZDUyYTFjZDdmODMuLjExZDA3OGVmOTQxY2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xuQEAgLTM1LDExICszNSw4NyBAQFxuICAqXG4gICogVGhlIGRyaXZlciB3b3JrcyBvdXQgdGhlIG1hcHBpbmcgYmFzZWQgb24gdGhlIE1ESU8gYnVzIGRlc2NyaWJlZCBpbiBkZXZpY2UgdHJlZSBhbmQgcGhhbmRsZXMgb25cbiAgKiB0aGUgZXRoZXJuZXQtcG9ydHMgcHJvcGVydHkuXG4rICpcbisgKiBUaGUgZGV2aWNlcyBoYXZlIGEgaGFyZHdhcmUgcG9sbGluZyB1bml0IHRoYXQgcnVucyBpbiB0aGUgYmFja2dyb3VuZCB3aXRob3V0IGFueSBDUFUgbG9hZC4gSXRcbisgKiBjb25zdGFudGx5IHNjYW5zIHRoZSBNRElPIGJ1cyBhbmQgdGhlIGF0dGFjaGVkIFBIWXMgYW5kIHVwZGF0ZXMgdGhlIE1BQyBzdGF0dXMgcmVnaXN0ZXJzLlxuKyAqXG4rICogSG93IGRvZXMgdGhlIHBvbGxpbmcgd29yaz9cbisgKlxuKyAqIEVhY2ggZGV2aWNlIGhhcyBhIFNNSV9QT0xMX0NUUkwgcmVnaXN0ZXIuIEEgcGVyLXBvcnQgYml0bWFzayBkZWNpZGVzIGlmIHRoZSBoYXJkd2FyZSBwb2xsaW5nIG9mXG4rICogdGhlIGFzc29jaWF0ZWQgYnVzL2FkZHJlc3MgaXMgYWN0aXZlIG9yIG5vdC4gVGhlIGhhcmR3YXJlIHJ1bnMgYSB0aWdodCBsb29wIG92ZXIgdGhpcyBhbmQgZm9yXG4rICogZWFjaCBzZXQgcG9sbGluZyBiaXQgaXQgaXNzdWVzIGEgc3RhdHVzIGNoZWNrIGZvciB0aGUgUEhZLiBBdHRhY2hpbmcgYSBsb2dpYyBhbmFseXplciB0byB0aGVcbisgKiBNRElPIGJ1cyBvZiBhbiBSVEw4MzgwIGFuZCBSVEw4MzkzIGdpdmVzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgKGluIGtlcm5lbCBub3RhdGlvbik6XG4rICpcbisgKlx0UlRMODM4MFx0XHRcdFx0UlRMODM5M1xuKyAqXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyAqXHRwaHlfd3JpdGUocGh5LCAzMSwgMHgwKTtcdHBoeV9yZWFkKHBoeSwgMCk7XG4rICpcdHBoeV93cml0ZShwaHksIDEzLCAweDcpO1x0cGh5X3JlYWQocGh5LCAxKTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2MpO1x0cGh5X3JlYWQocGh5LCA0KTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4ODAwNyk7XHRwaHlfcmVhZChwaHksIDUpO1xuKyAqXHRwaHlfcmVhZChwaHksIDE0KTtcdFx0cGh5X3JlYWQocGh5LCA2KTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4Nyk7XHRwaHlfcmVhZChwaHksIDkpO1xuKyAqXHRwaHlfd3JpdGUocGh5LCAxNCwgMHgzZCk7XHRwaHlfcmVhZChwaHksIDEwKTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgMTMsIDB4ODAwNyk7XHRwaHlfcmVhZChwaHksIDE1KTtcbisgKlx0cGh5X3JlYWQocGh5LCAxNCk7XHRcdHBoeV93cml0ZShwaHksIDEzLCAweDcpO1xuKyAqXHRwaHlfcmVhZChwaHksIDkpO1x0XHRwaHlfd3JpdGUocGh5LCAxNCwgMHgzYyk7XG4rICpcdHBoeV9yZWFkKHBoeSwgMTApO1x0XHRwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTtcbisgKlx0cGh5X3JlYWQocGh5LCAxNSk7XHRcdHBoeV9yZWFkKHBoeSwgMTQpO1xuKyAqXHRwaHlfcmVhZChwaHksIDApO1x0XHRwaHlfd3JpdGUocGh5LCAxMywgMHg3KTtcbisgKlx0cGh5X3JlYWQocGh5LCAxKTtcdFx0cGh5X3dyaXRlKHBoeSwgMTQsIDB4M2QpO1xuKyAqXHRwaHlfcmVhZChwaHksIDQpO1x0XHRwaHlfd3JpdGUocGh5LCAxMywgMHg0MDA3KTtcbisgKlx0cGh5X3JlYWQocGh5LCA1KTtcdFx0cGh5X3JlYWQocGh5LCAxNCk7XG4rICpcdHBoeV9yZWFkKHBoeSwgNik7XG4rICpcbisgKiBBZnRlciBvbmUgUEhZIHN0YXR1cyBpcyByZWFkLCB0aGUgcG9sbGluZyBlbmdpbmUgZ29lcyBvdmVyIHRvIHRoZSBuZXh0IFBIWS4gSWYgb25lIGJ1cyBpcyBmdWxseVxuKyAqIHNjYW5uZWQgaXQgc3dpdGNoZXMgb3ZlciB0byB0aGUgbmV4dCBidXMuIEJhc2ljYWxseSB0aGUgcG9sbGluZyBzeXN0ZW0gaXMgYWx3YXlzIGJ1c3kgYW5kIHRoZVxuKyAqIE1BQyBzdGF0ZSBpcyB1cGRhdGVkIGluIHJlYWwtdGltZS5cbisgKlxuKyAqIFRoaXMgaXMgYSBnbGltcHNlIGxvb2sgYXQgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHBvbGxpbmcgYW5kIGxlYXZlcyBvdXQgdGhlIEM0NSBjYXNlIGFuZCB0aGUgTUFDXG4rICogcmVnaXN0ZXIgdXBkYXRlIGxvZ2ljIGFmdGVyd2FyZHMuIEltcG9ydGFudCB0byBub3RlOlxuKyAqXG4rICogLSAxMDAgTUJpdCBkb3duc2hpZnRzIChicm9rZW4gY2FibGVzKSBhcmUgaWRlbnRpZmllZCBhbmQgcHJvcGFnYXRlZCB0byB0aGUgTUFDIGNvcnJlY3RseVxuKyAqIC0gQWNjZXNzIHRvIE1ESU9fQU5fRUVFX0FEViBhbmQgTURJT19BTl9FRUVfTFBBQkxFIHdvcmtzIHZpYSBDNDUgb3ZlciBDMjIuXG4rICogLSBJdCBpcyB1bmNsZWFyIGlmIHRoZXNlIHNlcXVlbmNlcyBjaGFuZ2UgZm9yIGRpZmZlcmVudCBQSFlzLlxuKyAqIC0gQWNjZXNzIHRvIFJlYWx0ZWsgcmVzZXJ2ZWQgcmVnaXN0ZXIgMjYgKGxpbmsgc3BlZWQpIGhhcyBub3QgeWV0IGJlZW4gc2Vlbi5cbisgKlxuKyAqIEhvdyBkb2VzIE1ESU8gYWNjZXNzIGZyb20ga2VybmVsIHdvcms/XG4rICpcbisgKiBXaGVuIGlzc3VpbmcgTURJTyBhY2Nlc3NlcyB2aWEgYW4gTU1JTyBiYXNlZCBpbnRlcmZhY2UgdGhlIGZpbmFsIHdyaXRlIHRvIHRoZSBjb21tYW5kIHJlZ2lzdGVyXG4rICogc2V0cyBhIFwicnVuIGNvbW1hbmQgbm93XCIgYml0LiBCZXR3ZWVuIHR3byBwb2xsaW5nIHNlcXVlbmNlcyBmb3IgZGlmZmVyZW50IFBIWXMgdGhlIGhhcmR3YXJlXG4rICogY2hlY2tzIGlmIGEgdXNlciBjb21tYW5kIG5lZWRzIHRvIHJ1biBhbmQgc2VuZHMgaXQgb250byB0aGUgYnVzLiBBZnRlcndhcmRzIGl0IHNpbXBseSBjb250aW51ZXNcbisgKiBpdHMgcG9sbGluZyB3b3JrLiBJbnNwZWN0aW5nIHRoZSBjb21tYW5kIHNlcXVlbmNlIGZvciBhIHBhZ2VkIHdyaXRlIG9uIHRoZSBsb2dpYyBhbmFseXplciBnaXZlczpcbisgKlxuKyAqXHRSVEw4MzgwXHRcdFx0XHRSVEw4MzkzXG4rICpcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rICpcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcdHBoeV93cml0ZShwaHksIDMxLCBwYWdlKTtcbisgKlx0cGh5X3dyaXRlKHBoeSwgcmVnLCB2YWx1ZSk7XHRwaHlfd3JpdGUocGh5LCByZWcsIHZhbHVlKTtcbisgKlx0XHRcdFx0XHRwaHlfd3JpdGUocGh5LCAzMSwgMCk7XG4rICpcbisgKiBXaGF0IGRvZXMgdGhpcyBtZWFuP1xuKyAqXG4rICogVGhlcmUgYXJlIHNsaWdodCBkaWZmZXJlbmNlcyBpbiBwb2xsaW5nIGFuZCBQSFkgYWNjZXNzIGJldHdlZW4gdGhlIG1vZGVscyBidXQgdGhlIGNoYWxsZW5nZVxuKyAqIHN0YXlzIHRoZSBzYW1lLiBPbiB0aGUgb25lIGhhbmQgdGhhdCBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIE1BQyBsYXllciwgb24gdGhlIG90aGVyIGhhbmQgaXRcbisgKiBoYXMgc29tZSBpbXBsaWNhdGlvbnMgZm9yIHRoZSBrZXJuZWwgUEhZIHN1YnN5c3RlbS5cbisgKlxuKyAqIC0gV2l0aG91dCB0aGUgcG9sbGluZyBhbmQgYSBwcm9wZXIgTUFDIHN0YXR1cywgc29tZSBvZiB0aGUgbGluayBoYW5kbGluZyBmZWF0dXJlcyBkbyBub3Qgd29yay5cbisgKiAgIEVzcGVjaWFsbHkgYW4gdW5wb3B1bGF0ZWQgTUFDX0xJTktfU1RTIHJlZ2lzdGVyIGNhbmNlbHMgb3BlcmF0aW9ucyB0byBvdGhlciBNQUMgcmVnaXN0ZXJzLlxuKyAqIC0gVGhlIFJlYWx0ZWsgcGFnZSByZWdpc3RlciAzMSBpcyBtYWdpY2FsbHkgbW9kaWZpZWQgaW4gdGhlIGJhY2tncm91bmQgc28gdGhhdCBwb2xsaW5nIHdpbGxcbisgKiAgIHJlYWQgdGhlIHJpZ2h0IGRhdGEuIE9uIHRoZSBSVEw4Mzh4IHBvbGxpbmcgc2ltcGx5IHJlc2V0cyBpdCB0byB6ZXJvLiBPdGhlciBkZXZpY2VzIHNlZW1cbisgKiAgIHRvIHRyYWNrIHRoZSBwYWdlIGFjY2VzcyBcIm1hZ2ljYWxseVwiIGluIHRoZSBiYWNrZ3JvdW5kLlxuKyAqIC0gQSBDNDUgb3ZlciBDMjIga2VybmVsIGFjY2VzcyBzZXF1ZW5jZSBpcyBtb3N0IGxpa2VseSB0byBmYWlsIGJlY2F1c2UgY2hhbmNlcyBhcmUgaGlnaCB0aGF0XG4rICogICB0aGUgcG9sbGluZyBlbmdpbmUgb3ZlcndyaXRlcyByZWdpc3RlcnMgMTMvMTQgaW4gYmV0d2Vlbi5cbisgKiAtIFBIWSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBoYXZlIGlzc3Vlcy4gRXNwZWNpYWxseSBpZiBhIFBIWSBpcyBkZXNpZ25lZCB0byBleHBlY3QgYSBjbGVhblxuKyAqICAgc2VxdWVuY2Ugb2YgcmVnaXN0ZXJzIGFuZCB2YWx1ZXMgd2l0aG91dCBkZXZpYXRpb24uXG4rICogLSBBbiBhY2Nlc3MgdG8gb25lIFBIWSB3aWxsIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgZnJlZSBzbG90IG9mIHRoZSBwb2xsaW5nIGVuZ2luZS5cbisgKlxuKyAqIENvbmNsdXNpb246IFRoZSBSZWFsdGVrIE1ESU8gYnVzIGRyaXZlciBQSFkgYWNjZXNzIG11c3Qga25vdyBhbmQgaGFuZGxlIGFueSBpbnRlcmZlcmVuY2UgdGhhdFxuKyAqIGFyaXNlcyBmcm9tIHRoZSBhYm92ZSBkZXNjcmliZWQgaGFyZHdhcmUgcG9sbGluZy5cbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0bWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZpbmQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21mZC9zeXNjb24uaFx1MDAzZVxuQEAgLTUwLDYgKzEyNiw1MCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuIFxuKyNkZWZpbmUgUlRMODM4MF9OVU1fQlVTRVNcdFx0XHQxXG4rI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFU1x0XHRcdDQwOTZcbisjZGVmaW5lIFJUTDgzODBfTlVNX1BPUlRTXHRcdFx0MjhcbisjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXHRcdFx0MHhhMTAwXG4rI2RlZmluZSAgIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FXHRcdEJJVCgxNSlcbisjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wXHRcdDB4YTFiOFxuKyNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzFcdFx0MHhhMWJjXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFJcdFx0R0VOTUFTSygyNCwgMjApXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfUEFSS19QQUdFXHRcdEdFTk1BU0soMTksIDE1KVxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX01BSU5fUEFHRVx0XHRHRU5NQVNLKDE0LCAzKVxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1dSSVRFXHRcdEJJVCgyKVxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX1JFQURcdFx0XHQwXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDVcdFx0QklUKDEpXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjJcdFx0MFxuKyNkZWZpbmUgICBSVEw4MzgwX1BIWV9DVFJMX0ZBSUxcdFx0XHQwIC8qIG5vIGZhaWwgaW5kaWNhdG9yICovXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMlx0XHQweGExYzBcbisjZGVmaW5lICAgUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEFcdFx0R0VOTUFTSygzMSwgMTYpXG4rI2RlZmluZSAgIFJUTDgzODBfUEhZX0NUUkxfREFUQVx0XHRcdEdFTk1BU0soMTUsIDApXG4rI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfM1x0XHQweGExYzRcbisjZGVmaW5lIFJUTDgzODBfU01JX1BPTExfQ1RSTFx0XHRcdDB4YTE3Y1xuKyNkZWZpbmUgUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkxcdFx0MHhhMWM4XG4rXG4rI2RlZmluZSBSVEw4MzkwX05VTV9CVVNFU1x0XHRcdDJcbisjZGVmaW5lIFJUTDgzOTBfTlVNX1BBR0VTXHRcdFx0ODE5MlxuKyNkZWZpbmUgUlRMODM5MF9OVU1fUE9SVFNcdFx0XHQ1MlxuKyNkZWZpbmUgUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMXHRcdDB4MDNlY1xuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkxcdFx0MHgwM2RjXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFJcdFx0R0VOTUFTSyg5LCA1KVxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRVx0XHRHRU5NQVNLKDIyLCAxMClcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9GQUlMXHRcdFx0QklUKDEpXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfV1JJVEVcdFx0QklUKDMpXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfUkVBRFx0XHRcdDBcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NVx0XHRCSVQoMilcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMlx0XHQwXG4rI2RlZmluZSBSVEw4MzkwX1BIWVJFR19DVFJMXHRcdFx0MHgwM2UwXG4rI2RlZmluZSAgIFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0VcdFx0R0VOTUFTSyg4LCAwKVxuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfREFUQV9DVFJMXHRcdDB4MDNmMFxuKyNkZWZpbmUgICBSVEw4MzkwX1BIWV9DVFJMX0lOREFUQVx0XHRHRU5NQVNLKDMxLCAxNilcbisjZGVmaW5lICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBXHRcdFx0R0VOTUFTSygxNSwgMClcbisjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX01NRF9DVFJMXHRcdFx0MHgwM2Y0XG4rI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfTE9XXHRcdDB4MDNlNFxuKyNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0hJR0hcdFx0MHgwM2U4XG4rI2RlZmluZSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTFx0XHQweDAzZmNcbitcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUEFHRVNcdFx0XHQ0MDk2XG4gI2RlZmluZSBSVEw5MzAwX05VTV9QT1JUU1x0XHRcdDI4XG5AQCAtNzAsNiArMTkwLDcgQEBcbiAjZGVmaW5lICAgUlRMOTMwMF9QSFlfQ1RSTF9JTkRBVEFcdFx0R0VOTUFTSygzMSwgMTYpXG4gI2RlZmluZSAgIFJUTDkzMDBfUEhZX0NUUkxfREFUQVx0XHRcdEdFTk1BU0soMTUsIDApXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfM1x0XHQweGNiN2NcbisjZGVmaW5lIFJUTDkzMDBfU01JX1BPTExfQ1RSTFx0XHRcdDB4Y2E5MFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkxcdFx0MHhjYjgwXG4gXG4gI2RlZmluZSBSVEw5MzEwX05VTV9CVVNFU1x0XHRcdDRcbkBAIC05NSwxMiArMjE2LDE2IEBAXG4gI2RlZmluZSAgIFJUTDkzMTBfUEhZX0NUUkxfSU5EQVRBXHRcdEdFTk1BU0soMTUsIDApXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfTU1EX0NUUkxcdDB4MGMxOFxuICNkZWZpbmUgUlRMOTMxMF9TTUlfUE9SVF9BRERSX0NUUkxcdFx0MHgwYzc0XG4rI2RlZmluZSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTFx0XHQweDBjY2NcbiAjZGVmaW5lIFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19TRUxcdFx0MHgwYzljXG4gXG4gI2RlZmluZSBQSFlfQ1RSTF9DTURcdFx0XHRcdEJJVCgwKVxuICNkZWZpbmUgUEhZX0NUUkxfTU1EX0RFVkFEXHRcdFx0R0VOTUFTSygyMCwgMTYpXG4gI2RlZmluZSBQSFlfQ1RSTF9NTURfUkVHXHRcdFx0R0VOTUFTSygxNSwgMClcbiBcbisjZGVmaW5lIFJUTF9WRU5ET1JfSURcdFx0XHRcdDB4MDAxY2M4MDBcbisjZGVmaW5lIFJUTF9QQUdFX1NFTEVDVFx0XHRcdFx0MzFcbitcbiAjZGVmaW5lIE1BUF9BRERSU19QRVJfUkVHXHRcdFx0NlxuICNkZWZpbmUgTUFQX0JJVFNfUEVSX0FERFJcdFx0XHQ1XG4gI2RlZmluZSBNQVBfQklUU19QRVJfQlVTXHRcdFx0MlxuQEAgLTEyNiw2ICsyNTEsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4rXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xuIFx0dTggc21pX2J1c1tNQVhfUE9SVFNdO1xuIFx0dTggc21pX2FkZHJbTUFYX1BPUlRTXTtcbiBcdGJvb2wgc21pX2J1c19pc19jNDVbTUFYX1NNSV9CVVNTRVNdO1xuQEAgLTE0Miw2ICsyNjgsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHtcbiBcdHU4IG51bV9idXNlcztcbiBcdHU4IG51bV9wb3J0cztcbiBcdHUxNiBudW1fcGFnZXM7XG4rXHR1MzIgcG9sbF9jdHJsO1xuIFx0aW50ICgqc2V0dXBfY29udHJvbGxlcikoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdik7XG4gXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuIFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuQEAgLTE3Nyw2ICszMDQsMTIgQEAgc3RhdGljIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKm90dG9fZW1kaW9fYnVzX3RvX3ByaXYoc3RydWN0IG1paV9idXMgKmJ1cylcbiBcdHJldHVybiBjaGFuLVx1MDAzZXByaXY7XG4gfVxuIFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsIGludCBwb3J0LCBib29sIGFjdGl2ZSlcbit7XG4rXHRyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBwcml2LVx1MDAzZWluZm8tXHUwMDNlcG9sbF9jdHJsICsgKHBvcnQgLyAzMikgKiA0LFxuK1x0XHRcdFx0ICBCSVQocG9ydCAlIDMyKSwgYWN0aXZlKTtcbit9XG4rXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEpXG4ge1xuQEAgLTE4NSw5ICszMTgsOSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0dTMyIGNtZHN0YXRlO1xuIFx0aW50IHJldDtcbiBcbi1cdC8qIERlZmVuc2l2ZSBwcmUgY2hlY2sganVzdCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIGhvcnJpYmxlIHdyb25nICovXG4rXHQvKiBEZWZlbnNpdmUgcHJlIGNoZWNrIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyBob3JyaWJseSB3cm9uZyAqL1xuIFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBpbmZvLVx1MDAzZWNtZF9yZWdzLmMyMl9kYXRhLFxuLVx0XHRcdFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMCk7XG4rXHRcdFx0XHQgICAgICAgY21kc3RhdGUsICEoY21kc3RhdGUgXHUwMDI2IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwMCk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTIyNyw3ICszNjAsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuIFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBpbmZvLVx1MDAzZWNtZF9yZWdzLmMyMl9kYXRhLFxuLVx0XHRcdFx0ICAgICAgIGNtZHN0YXRlLCAhKGNtZHN0YXRlIFx1MDAyNiBQSFlfQ1RSTF9DTUQpLCAxMCwgMTAwMCk7XG4rXHRcdFx0XHQgICAgICAgY21kc3RhdGUsICEoY21kc3RhdGUgXHUwMDI2IFBIWV9DVFJMX0NNRCksIDEwLCAxMDAwMCk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTI2NCwxMyArMzk3LDEyMyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsXG4gXHRyZXR1cm4gb3R0b19lbWRpb19ydW5fY21kKGJ1cywgY21kIHwgcHJpdi1cdTAwM2VpbmZvLVx1MDAzZWNtZF93cml0ZSwgY21kX2RhdGEpO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1x0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4rXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8XG4rXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxuK1x0fTtcbitcbitcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEsXG4rXHRcdFx0XHQgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbit9XG4rXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG4re1xuK1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbitcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuK1x0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbitcdFx0XHRcdCAgRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1BBUktfUEFHRSwgMHgxZikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuK1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXG4rXHRcdC5wb3J0X21hc2tfbG93XHQ9IEJJVChwb3J0KSxcbitcdH07XG4rXG4rXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuK1x0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxuK1x0fTtcbitcbitcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG4rXHRcdFx0XHQgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbit9XG4rXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuK1x0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcbitcdFx0LnBvcnRfbWFza19sb3dcdD0gQklUKHBvcnQpLFxuK1x0fTtcbitcbitcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbit9XG4rXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG4re1xuK1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbitcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuK1x0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbitcdFx0XHRcdCAgRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi1cdTAwM2VwYWdlW3BvcnRdKSxcbitcdFx0LmV4dF9wYWdlXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9FWFRfUEFHRSwgMHgxZmYpLFxuK1x0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfSU5EQVRBLCBwb3J0KSxcbitcdH07XG4rXG4rXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuK1x0XHRcdFx0ICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuK3tcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4rXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4rXHRcdC5leHRfcGFnZVx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfRVhUX1BBR0UsIDB4MWZmKSxcbitcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX0lOREFUQSwgdmFsdWUpLFxuK1x0XHQucG9ydF9tYXNrX2hpZ2hcdD0gKHUzMikoQklUX1VMTChwb3J0KSBcdTAwM2VcdTAwM2UgMzIpLFxuK1x0XHQucG9ydF9tYXNrX2xvd1x0PSAodTMyKShCSVRfVUxMKHBvcnQpKSxcbitcdH07XG4rXG4rXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuK1x0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHBvcnQpLFxuK1x0fTtcbitcbitcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG4rXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbit9XG4rXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuK1x0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbitcdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9SRUcsIHJlZ251bSksXG4rXHRcdC5pb19kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9JTkRBVEEsIHZhbHVlKSxcbitcdFx0LnBvcnRfbWFza19oaWdoXHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkgXHUwMDNlXHUwMDNlIDMyKSxcbitcdFx0LnBvcnRfbWFza19sb3dcdD0gKHUzMikoQklUX1VMTChwb3J0KSksXG4rXHR9O1xuK1xuK1x0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEpO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbiB7XG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuIFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG4gXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuIFx0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUEFSS19QQUdFLCAweDFmKSB8XG4tXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIFJBV19QQUdFKHByaXYpKSxcbitcdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgcHJpdi1cdTAwM2VwYWdlW3BvcnRdKSxcbiBcdFx0LmlvX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX0lOREFUQSwgcG9ydCksXG4gXHR9O1xuIFxuQEAgLTI4NCw3ICs1MjcsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sXG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiBcdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4gXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9QQVJLX1BBR0UsIDB4MWYpIHxcbi1cdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuIFx0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXG4gXHRcdC5wb3J0X21hc2tfbG93XHQ9IEJJVChwb3J0KSxcbiBcdH07XG5AQCAtMzI0LDcgKzU2Nyw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1XG4gXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbiBcdFx0LmJyb2FkY2FzdFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXG4gXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLVx0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBSQVdfUEFHRShwcml2KSksXG4rXHRcdFx0XHQgIEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9NQUlOX1BBR0UsIHByaXYtXHUwMDNlcGFnZVtwb3J0XSksXG4gXHR9O1xuIFxuIFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbkBAIC0zMzYsNyArNTc5LDcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuIFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuIFx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi1cdFx0XHRcdCAgRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX01BSU5fUEFHRSwgUkFXX1BBR0UocHJpdikpLFxuK1x0XHRcdFx0ICBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfTUFJTl9QQUdFLCBwcml2LVx1MDAzZXBhZ2VbcG9ydF0pLFxuIFx0XHQuaW9fZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfSU5EQVRBLCB2YWx1ZSksXG4gXHRcdC5wb3J0X21hc2tfaGlnaFx0PSAodTMyKShCSVRfVUxMKHBvcnQpIFx1MDAzZVx1MDAzZSAzMiksXG4gXHRcdC5wb3J0X21hc2tfbG93XHQ9ICh1MzIpKEJJVF9VTEwocG9ydCkpLFxuQEAgLTM3OCwyNyArNjIxLDUzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxuIFx0aW50IHJldCwgcG9ydDtcbiBcdHUzMiB2YWx1ZTtcbiBcbitcdGlmIChyZWdudW0gPT0gTUlJX01NRF9DVFJMIHx8IHJlZ251bSA9PSBNSUlfTU1EX0RBVEEpIHtcbitcdFx0ZGV2X3dhcm5fb25jZShcdTAwMjZidXMtXHUwMDNlZGV2LFxuK1x0XHRcdCAgICAgIFwiQzQ1IG92ZXIgQzIyIHJlYWQgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuIFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuIFx0aWYgKHBvcnQgXHUwMDNjIDApXG4gXHRcdHJldHVybiBwb3J0O1xuIFxuLVx0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spXG4rXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaykge1xuK1x0XHRpZiAocmVnbnVtID09IFJUTF9QQUdFX1NFTEVDVClcbitcdFx0XHRyZXR1cm4gcHJpdi1cdTAwM2VwYWdlW3BvcnRdO1xuK1xuIFx0XHRyZXQgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlcmVhZF9jMjIoYnVzLCBwb3J0LCByZWdudW0sIFx1MDAyNnZhbHVlKTtcbitcdH1cbiBcbiBcdHJldHVybiByZXQgPyByZXQgOiB2YWx1ZTtcbiB9XG4gXG4tc3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG4rc3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxuK1x0XHRcdFx0dTE2IHZhbHVlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4gXHRpbnQgcmV0LCBwb3J0O1xuIFxuK1x0aWYgKHJlZ251bSA9PSBNSUlfTU1EX0NUUkwgfHwgcmVnbnVtID09IE1JSV9NTURfREFUQSkge1xuK1x0XHRkZXZfd2Fybl9vbmNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYsXG4rXHRcdFx0ICAgICAgXCJDNDUgb3ZlciBDMjIgd3JpdGUgYWNjZXNzIGJyb2tlbiBkdWUgdG8gcG9sbGluZ1xcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuIFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuIFx0aWYgKHBvcnQgXHUwMDNjIDApXG4gXHRcdHJldHVybiBwb3J0O1xuIFxuLVx0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spXG4rXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNnByaXYtXHUwMDNlbG9jaykge1xuK1x0XHRpZiAocmVnbnVtID09IFJUTF9QQUdFX1NFTEVDVCkge1xuK1x0XHRcdGlmICh2YWx1ZSBcdTAwM2U9IFJBV19QQUdFKHByaXYpKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRcdFx0cHJpdi1cdTAwM2VwYWdlW3BvcnRdID0gdmFsdWU7XG4rXHRcdFx0cmV0dXJuIDA7XG4rXHRcdH1cbitcbiBcdFx0cmV0ID0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXdyaXRlX2MyMihidXMsIHBvcnQsIHJlZ251bSwgdmFsdWUpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDcxLDYgKzc0MCwxNSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4re1xuK1x0LypcbitcdCAqIFBIWV9QQVRDSF9ET05FIGVuYWJsZXMgUEhZIGNvbnRyb2wgdmlhIFNvQy4gVGhpcyBpcyByZXF1aXJlZCBmb3IgUEhZIGFjY2VzcywgaW5jbHVkaW5nXG4rXHQgKiBwYXRjaGluZyBhbmQgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBQSFlzIGFyZSBwcm9iZWQuXG4rXHQgKi9cbitcdHJldHVybiByZWdtYXBfc2V0X2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiB7XG4gXHR1MzIgZ2xiX2N0cmxfbWFzayA9IDAsIGdsYl9jdHJsX3ZhbCA9IDA7XG5AQCAtNTA3LDYgKzc4NSw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0aW50IHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cdTAwM2VtZGlvLmJ1cywgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcik7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gY2hhbi1cdTAwM2Vwcml2O1xuK1xuK1x0aWYgKHBvcnQgXHUwMDNjIDApIHtcbitcdFx0LyogQWxsIHN1YnNlcXVlbnQgYnVzIG9wZXJhdGlvbnMgd2lsbCBmYWlsICovXG4rXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcIlBIWSBpcyBub3QgbWFwcGVkIHRvIGEgdmFsaWQgc3dpdGNoIHBvcnRcXG5cIik7XG4rXHRcdHJldHVybiBwb3J0O1xuK1x0fVxuK1xuK1x0LyogXCJzeW5jXCIgcGFnZSBpbiBjYXNlIG9mIHByZXZpb3VzbHkgZmFpbGVkIGF0dGFjaG1lbnQgKi9cbitcdHNjb3BlZF9ndWFyZChtdXRleCwgXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKVxuK1x0XHRwcml2LVx1MDAzZXBhZ2VbcG9ydF0gPSAwO1xuK1xuK1x0aWYgKCFwcml2LVx1MDAzZXNtaV9idXNfaXNfYzQ1W2NoYW4tXHUwMDNlbWRpb19idXNdIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFwaHlfaWRfY29tcGFyZV92ZW5kb3IocGh5ZGV2LVx1MDAzZXBoeV9pZCwgUlRMX1ZFTkRPUl9JRCkpIHtcbitcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwiT25seSBSZWFsdGVrIFBIWXMgYWxsb3dlZCBvbiBDMjIgYnVzXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4rXG4rXHRyZXR1cm4gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIHRydWUpO1xuK31cbitcbitzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XG4rXHRpbnQgcG9ydDtcbitcbitcdHByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KHBoeWRldi1cdTAwM2VtZGlvLmJ1cyk7XG4rXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIpO1xuK1xuK1x0aWYgKHBvcnQgXHUwMDNjIDApXG4rXHRcdHJldHVybjtcbitcbitcdC8qIFwic3luY1wiIHBhZ2UgZm9yIG5leHQgYXR0YWNobWVudCAqL1xuK1x0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spXG4rXHRcdHByaXYtXHUwMDNlcGFnZVtwb3J0XSA9IDA7XG4rXG4rXHRpZiAob3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKSlcbitcdFx0ZGV2X2VycihidXMtXHUwMDNlcGFyZW50LCBcImZhaWxlZCB0byBkaXNhYmxlIHBvbGxpbmcgZm9yIHBvcnQgJWRcXG5cIiwgcG9ydCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuIFx0XHRcdFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuIHtcbkBAIC01MjgsMTQgKzg1MSwxNCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGJ1cy1cdTAwM2VuYW1lID0gXCJSZWFsdGVrIFN3aXRjaCBNRElPIEJ1c1wiO1xuLVx0aWYgKHByaXYtXHUwMDNlc21pX2J1c19pc19jNDVbbWRpb19idXNdKSB7XG4tXHRcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XG4tXHRcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSBvdHRvX2VtZGlvX3dyaXRlX2M0NTtcbi1cdH0gZWxzZSB7XG4tXHRcdGJ1cy1cdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcbi1cdFx0YnVzLVx1MDAzZXdyaXRlID0gb3R0b19lbWRpb193cml0ZV9jMjI7XG4tXHR9XG4rXHRidXMtXHUwMDNlcmVhZF9jNDUgPSBvdHRvX2VtZGlvX3JlYWRfYzQ1O1xuK1x0YnVzLVx1MDAzZXdyaXRlX2M0NSA9IG90dG9fZW1kaW9fd3JpdGVfYzQ1O1xuK1x0YnVzLVx1MDAzZXJlYWQgPSBvdHRvX2VtZGlvX3JlYWRfYzIyO1xuK1x0YnVzLVx1MDAzZXdyaXRlID0gb3R0b19lbWRpb193cml0ZV9jMjI7XG4gXHRidXMtXHUwMDNlcGFyZW50ID0gZGV2O1xuK1x0YnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaDtcbitcdGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2g7XG4rXG4gXHRjaGFuID0gYnVzLVx1MDAzZXByaXY7XG4gXHRjaGFuLVx1MDAzZW1kaW9fYnVzID0gbWRpb19idXM7XG4gXHRjaGFuLVx1MDAzZXByaXYgPSBwcml2O1xuQEAgLTY1Miw2ICs5NzUsMTkgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4re1xuK1x0aW50IGVycjtcbitcbitcdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFx1MDAzYyBwcml2LVx1MDAzZWluZm8tXHUwMDNlbnVtX3BvcnRzOyBwb3J0KyspIHtcbitcdFx0ZXJyID0gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIHtcbiBcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuQEAgLTY3MSw2ICsxMDA3LDEwIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbiBcbitcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbiBcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpO1xuIFxuIFx0ZXJyID0gb3R0b19lbWRpb19tYXBfcG9ydHMoZGV2KTtcbkBAIC02OTYsNiArMTAzNiw1MSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHtcbitcdC5hZGRyX21hcF9iYXNlID0gUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXG4rXHQuY21kX2ZhaWwgPSBSVEw4MzgwX1BIWV9DVFJMX0ZBSUwsXG4rXHQuY21kX3JlYWQgPSBSVEw4MzgwX1BIWV9DVFJMX1JFQUQsXG4rXHQuY21kX3dyaXRlID0gUlRMODM4MF9QSFlfQ1RSTF9XUklURSxcbitcdC5jbWRfcmVncyA9IHtcbitcdFx0LmMyMl9kYXRhID0gUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEsXG4rXHRcdC5jNDVfZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8zLFxuK1x0XHQuaW9fZGF0YSA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8yLFxuK1x0XHQucG9ydF9tYXNrX2xvdyA9IFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wLFxuK1x0fSxcbitcdC5udW1fYnVzZXMgPSBSVEw4MzgwX05VTV9CVVNFUyxcbitcdC5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUyxcbitcdC5udW1fcG9ydHMgPSBSVEw4MzgwX05VTV9QT1JUUyxcbitcdC5wb2xsX2N0cmwgPSBSVEw4MzgwX1NNSV9QT0xMX0NUUkwsXG4rXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxuK1x0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLFxuK1x0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1LFxuK1x0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIsXG4rXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NSxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xuK1x0LmNtZF9mYWlsID0gUlRMODM5MF9QSFlfQ1RSTF9GQUlMLFxuK1x0LmNtZF9yZWFkID0gUlRMODM5MF9QSFlfQ1RSTF9SRUFELFxuK1x0LmNtZF93cml0ZSA9IFJUTDgzOTBfUEhZX0NUUkxfV1JJVEUsXG4rXHQuY21kX3JlZ3MgPSB7XG4rXHRcdC5icm9hZGNhc3QgPSBSVEw4MzkwX0JDQVNUX1BIWUlEX0NUUkwsXG4rXHRcdC5jMjJfZGF0YSA9IFJUTDgzOTBfUEhZUkVHX0FDQ0VTU19DVFJMLFxuK1x0XHQuYzQ1X2RhdGEgPSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTCxcbitcdFx0LmV4dF9wYWdlID0gUlRMODM5MF9QSFlSRUdfQ1RSTCxcbitcdFx0LmlvX2RhdGEgPSBSVEw4MzkwX1BIWVJFR19EQVRBX0NUUkwsXG4rXHRcdC5wb3J0X21hc2tfbG93ID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPVyxcbitcdFx0LnBvcnRfbWFza19oaWdoID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0hJR0gsXG4rXHR9LFxuK1x0Lm51bV9idXNlcyA9IFJUTDgzOTBfTlVNX0JVU0VTLFxuK1x0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxuK1x0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxuK1x0LnBvbGxfY3RybCA9IFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuK1x0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxuK1x0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1LFxuK1x0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIsXG4rXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuIFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw5MzAwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcbiBcdC5idXNfbWFwX2Jhc2UgPSBSVEw5MzAwX1NNSV9QT1JUMF8xNV9QT0xMSU5HX1NFTCxcbkBAIC03MTEsNiArMTA5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuIFx0Lm51bV9idXNlcyA9IFJUTDkzMDBfTlVNX0JVU0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMDBfTlVNX1BPUlRTLFxuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMDBfTlVNX1BBR0VTLFxuK1x0LnBvbGxfY3RybCA9IFJUTDkzMDBfU01JX1BPTExfQ1RSTCxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsXG5AQCAtNzM2LDYgKzExMjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcbiBcdC5udW1fYnVzZXMgPSBSVEw5MzEwX05VTV9CVVNFUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUyxcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUyxcbitcdC5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXG5AQCAtNzQ0LDYgKzExMzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG90dG9fZW1kaW9faWRzW10gPSB7XG4rXHR7IC5jb21wYXRpYmxlID0gXCJyZWFsdGVrLHJ0bDgzODAtbWRpb1wiLCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fODM4MF9pbmZvIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJyZWFsdGVrLHJ0bDgzOTEtbWRpb1wiLCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fODM5MF9pbmZvIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCJyZWFsdGVrLHJ0bDkzMDEtbWRpb1wiLCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMwMF9pbmZvIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCJyZWFsdGVrLHJ0bDkzMTEtbWRpb1wiLCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMxMF9pbmZvIH0sXG4gXHR7fVxuQEAgLTc1NSwxMCArMTE0NCwxMSBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvdHRvX2VtZGlvX2RyaXZlciA9IHtcbiBcdC5kcml2ZXIgPSB7XG4gXHRcdC5uYW1lID0gXCJtZGlvLXJ0bDkzMDBcIixcbiBcdFx0Lm9mX21hdGNoX3RhYmxlID0gb3R0b19lbWRpb19pZHMsXG4rXHRcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcbiBcdH0sXG4gfTtcbiBcbiBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG90dG9fZW1kaW9fZHJpdmVyKTtcbiBcbi1NT0RVTEVfREVTQ1JJUFRJT04oXCJSVEw5MzAwIE1ESU8gZHJpdmVyXCIpO1xuK01PRFVMRV9ERVNDUklQVElPTihcIlJUTDgzeHgvUlRMOTN4eCBNRElPIGRyaXZlclwiKTtcbiBNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uZGU1OWQ4NjRiMDYwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzM0LDYgKzE3MzQsMTA0IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbiB9XG4gXG4rLyoqXG4rICogcGh5X2RldGFjaF9pbnRlcm5hbCAtIGRldGFjaCBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2VcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbisgKiBAbm90aWZ5X2J1czogd2hldGhlciB0byBub3RpZnkgdGhlIE1ESU8gYnVzIGFib3V0IHRoZSBQSFkgZGV0YWNoXG4rICpcbisgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4rICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuKyAqL1xuK3N0YXRpYyB2b2lkIHBoeV9kZXRhY2hfaW50ZXJuYWwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBub3RpZnlfYnVzKVxuK3tcbitcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2O1xuK1x0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XG4rXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuK1xuK1x0aWYgKHBoeWRldi1cdTAwM2VkZXZsaW5rKSB7XG4rXHRcdGRldmljZV9saW5rX2RlbChwaHlkZXYtXHUwMDNlZGV2bGluayk7XG4rXHRcdHBoeWRldi1cdTAwM2VkZXZsaW5rID0gTlVMTDtcbitcdH1cbitcbitcdGlmIChwaHlkZXYtXHUwMDNlc3lzZnNfbGlua3MpIHtcbitcdFx0aWYgKGRldilcbitcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwicGh5ZGV2XCIpO1xuK1x0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaiwgXCJhdHRhY2hlZF9kZXZcIik7XG4rXHR9XG4rXG4rXHRpZiAoIXBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYpXG4rXHRcdHN5c2ZzX3JlbW92ZV9maWxlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLFxuK1x0XHRcdFx0ICBcdTAwMjZkZXZfYXR0cl9waHlfc3RhbmRhbG9uZS5hdHRyKTtcbitcbitcdHBoeV9zdXNwZW5kKHBoeWRldik7XG4rXG4rXHRpZiAobm90aWZ5X2J1cyBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZW5vdGlmeV9waHlfZGV0YWNoKVxuK1x0XHRwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gocGh5ZGV2KTtcbitcbitcdGlmIChkZXYpIHtcbitcdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4rXG4rXHRcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxuK1x0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXG4rXHRcdCAqL1xuK1x0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuK1x0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4rXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4rXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuK1x0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbitcdFx0fVxuK1xuK1x0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4rXHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xuK1x0XHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xuK1x0fVxuK1xuK1x0cGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XG4rXHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4rXG4rXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlcilcbitcdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcbitcdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxuK1x0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4rXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3MgYSBjaGFuY2UgYVxuK1x0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4rXHQgKi9cbitcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuK1x0XHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbitcdFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuK1x0fVxuK1xuK1x0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbitcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbitcbitcdC8qXG4rXHQgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWRcbitcdCAqIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHJlYWRpbmcgdGhlIHVuZGVybHlpbmcgYnVzIGZpcnN0LlxuK1x0ICovXG4rXHRidXMgPSBwaHlkZXYtXHUwMDNlbWRpby5idXM7XG4rXG4rXHRwdXRfZGV2aWNlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4rXHRpZiAoZGV2KVxuK1x0XHRuZGV2X293bmVyID0gZGV2LVx1MDAzZWRldi5wYXJlbnQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyO1xuK1x0aWYgKG5kZXZfb3duZXIgIT0gYnVzLVx1MDAzZW93bmVyKVxuK1x0XHRtb2R1bGVfcHV0KGJ1cy1cdTAwM2Vvd25lcik7XG4rfVxuK1xuKy8qKlxuKyAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4rICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4rICpcbisgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4rICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuKyAqL1xuK3ZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdC8qIGNsZWFudXAgaW5jbHVkaW5nIGJ1cyBub3RpZmljYXRpb24gKi9cbitcdHBoeV9kZXRhY2hfaW50ZXJuYWwocGh5ZGV2LCB0cnVlKTtcbit9XG4rRVhQT1JUX1NZTUJPTChwaHlfZGV0YWNoKTtcbitcbiAvKipcbiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXG5AQCAtMTg3Niw2ICsxOTc0LDEyIEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJvcjtcbiBcbitcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2gpIHtcbitcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKHBoeWRldik7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0Z290byBlcnJvcjtcbitcdH1cbitcbiBcdHBoeV9yZXN1bWUocGh5ZGV2KTtcbiBcbiBcdC8qKlxuQEAgLTE4OTAsOCArMTk5NCw4IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0cmV0dXJuIGVycjtcbiBcbiBlcnJvcjpcbi1cdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xuLVx0cGh5X2RldGFjaChwaHlkZXYpO1xuK1x0LyogcGh5X2RldGFjaF9pbnRlcm5hbCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG4rXHRwaHlfZGV0YWNoX2ludGVybmFsKHBoeWRldiwgZmFsc2UpO1xuIFx0cmV0dXJuIGVycjtcbiBcbiBlcnJvcl9tb2R1bGVfcHV0OlxuQEAgLTE5MDYsODYgKzIwMTAsNiBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiB9XG4gRVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoX2RpcmVjdCk7XG4gXG4tLyoqXG4tICogcGh5X2RldGFjaCAtIGRldGFjaCBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2Vcbi0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0gKlxuLSAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcbi0gKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXG4tICovXG4tdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXY7XG4tXHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbi1cdHN0cnVjdCBtaWlfYnVzICpidXM7XG4tXG4tXHRpZiAocGh5ZGV2LVx1MDAzZWRldmxpbmspIHtcbi1cdFx0ZGV2aWNlX2xpbmtfZGVsKHBoeWRldi1cdTAwM2VkZXZsaW5rKTtcbi1cdFx0cGh5ZGV2LVx1MDAzZWRldmxpbmsgPSBOVUxMO1xuLVx0fVxuLVxuLVx0aWYgKHBoeWRldi1cdTAwM2VzeXNmc19saW5rcykge1xuLVx0XHRpZiAoZGV2KVxuLVx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNmRldi1cdTAwM2VkZXYua29iaiwgXCJwaHlkZXZcIik7XG4tXHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLCBcImF0dGFjaGVkX2RldlwiKTtcbi1cdH1cbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2Rldilcbi1cdFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmtvYmosXG4tXHRcdFx0XHQgIFx1MDAyNmRldl9hdHRyX3BoeV9zdGFuZGFsb25lLmF0dHIpO1xuLVxuLVx0cGh5X3N1c3BlbmQocGh5ZGV2KTtcbi1cdGlmIChkZXYpIHtcbi1cdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4tXG4tXHRcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxuLVx0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXG4tXHRcdCAqL1xuLVx0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuLVx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4tXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4tXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuLVx0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbi1cdFx0fVxuLVxuLVx0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xuLVx0XHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xuLVx0fVxuLVxuLVx0cGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XG4tXHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4tXG4tXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlcilcbi1cdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbi1cbi1cdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxuLVx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4tXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3MgYSBjaGFuY2UgYVxuLVx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4tXHQgKi9cbi1cdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuLVx0XHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbi1cdFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuLVx0fVxuLVxuLVx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbi1cdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbi1cbi1cdC8qXG4tXHQgKiBUaGUgcGh5ZGV2IG1pZ2h0IGdvIGF3YXkgb24gdGhlIHB1dF9kZXZpY2UoKSBiZWxvdywgc28gYXZvaWRcbi1cdCAqIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHJlYWRpbmcgdGhlIHVuZGVybHlpbmcgYnVzIGZpcnN0LlxuLVx0ICovXG4tXHRidXMgPSBwaHlkZXYtXHUwMDNlbWRpby5idXM7XG4tXG4tXHRwdXRfZGV2aWNlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4tXHRpZiAoZGV2KVxuLVx0XHRuZGV2X293bmVyID0gZGV2LVx1MDAzZWRldi5wYXJlbnQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyO1xuLVx0aWYgKG5kZXZfb3duZXIgIT0gYnVzLVx1MDAzZW93bmVyKVxuLVx0XHRtb2R1bGVfcHV0KGJ1cy1cdTAwM2Vvd25lcik7XG4tfVxuLUVYUE9SVF9TWU1CT0wocGh5X2RldGFjaCk7XG4tXG4gaW50IHBoeV9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXY7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcbmluZGV4IDVmOGQ2NTg2OGUwZmYuLjNkOGFmZTZiN2YxYzUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMzc2LDYgKzM3NiwyNCBAQCBzdHJ1Y3QgbWlpX2J1cyB7XG4gXHRcdFx0IGludCByZWdudW0sIHUxNiB2YWwpO1xuIFx0LyoqIEByZXNldDogUGVyZm9ybSBhIHJlc2V0IG9mIHRoZSBidXMgKi9cbiBcdGludCAoKnJlc2V0KShzdHJ1Y3QgbWlpX2J1cyAqYnVzKTtcbitcdC8qKlxuK1x0ICogQG5vdGlmeV9waHlfYXR0YWNoOiBQZXJmb3JtIHBvc3QtYXR0YWNoIGhhbmRsaW5nIGZvciBNRElPIGJ1c1xuK1x0ICogZHJpdmVycy4gT3B0aW9uYWwgYW5kIGluZGVwZW5kZW50IG9mIEBub3RpZnlfcGh5X2RldGFjaC4gQ2FsbGVkXG4rXHQgKiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpIHJpZ2h0IGJlZm9yZSBwaHlfcmVzdW1lKCkuIFJ1bnMgaW4gcHJvY2Vzc1xuK1x0ICogY29udGV4dCwgbWF5IHNsZWVwIGFuZCBtYXkgYmUgY2FsbGVkIHdpdGggUlROTCBoZWxkLiBNdXN0IG5vdFxuK1x0ICogYWNxdWlyZSBvciByZWx5IG9uIFJUTkwuIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm5vXG4rXHQgKiBvbiBmYWlsdXJlLiBNdXN0IHVud2luZCBpdHMgb3duIHN0YXRlIG9uIGVycm9yIGFzIGF0dGFjaG1lbnQgaXNcbitcdCAqIGFib3J0ZWQuXG4rXHQgKi9cbitcdGludCAoKm5vdGlmeV9waHlfYXR0YWNoKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbitcdC8qKlxuK1x0ICogQG5vdGlmeV9waHlfZGV0YWNoOiBQZXJmb3JtIHByZS1kZXRhY2ggaGFuZGxpbmcgZm9yIE1ESU8gYnVzXG4rXHQgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfYXR0YWNoLiBDYWxsZWRcbitcdCAqIGluIHBoeV9kZXRhY2goKSByaWdodCBhZnRlciBwaHlfc3VzcGVuZCgpLiBSdW5zIGluIHByb2Nlc3MgY29udGV4dCxcbitcdCAqIG1heSBzbGVlcCBhbmQgbWF5IGJlIGNhbGxlZCB3aXRoIFJUTkwgaGVsZC4gTXVzdCBub3QgYWNxdWlyZSBvclxuK1x0ICogcmVseSBvbiBSVE5MLlxuK1x0ICovXG4rXHR2b2lkICgqbm90aWZ5X3BoeV9kZXRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIFxuIFx0LyoqIEBzdGF0czogU3RhdGlzdGljIGNvdW50ZXJzIHBlciBkZXZpY2Ugb24gdGhlIGJ1cyAqL1xuIFx0c3RydWN0IG1kaW9fYnVzX3N0YXRzIHN0YXRzW1BIWV9NQVhfQUREUl07XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NTowMC41MDkzODIxOTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NjM0NTc3Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUEhZIFN1YnN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBzZXJpZXMuIFRoZSBmaWxlcyBpbXBhY3RlZCBhcmU6IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxgLCBgZHJpdmVycy9uZXQvbWRpby9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AsIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L3BoeS5oYC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29yZSBQSFkgY29kZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgaW4gYHBoeV9kZXZpY2UuY2AgYW5kIGBpbmNsdWRlL2xpbnV4L3BoeS5oYC5cblxuSXQgbG9va3MgbGlrZSB3ZSdyZSBpbnRyb2R1Y2luZyBjYWxsYmFja3MsIGBub3RpZnlfcGh5X2F0dGFjaGAgYW5kIGBub3RpZnlfcGh5X2RldGFjaGAsIHRvIHRoZSBgc3RydWN0IG1paV9idXNgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBgcGh5X2F0dGFjaF9kaXJlY3QoKWAgbm93IGNhbGxzIGBidXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2gocGh5ZGV2KWAsIGFuZCBgcGh5X2RldGFjaCgpYCBjYWxscyBgYnVzLVx1MDAzZW5vdGlmeV9waHlfZGV0YWNoKHBoeWRldilgIHZpYSB0aGUgbmV3bHkgcmVmYWN0b3JlZCBgcGh5X2RldGFjaF9pbnRlcm5hbCgpYC4gVGhpcyBpcyBhIGNsZWFyIHNpZ25hbCB0aGF0IHRoZXJlJ3MgYSBuZXcgaW50ZXJhY3Rpb24gbGF5ZXIgZm9yIFBIWSBhdHRhY2gvZGV0YWNoIGV2ZW50cy5cblxuTm93LCBwZWVraW5nIGludG8gYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AsIEkgc2VlIHN1cHBvcnQgZm9yIFJUTDgzODAgYW5kIFJUTDgzOTAgTURJTyBjb250cm9sbGVycywgYWxvbmcgd2l0aCBpbXBsZW1lbnRhdGlvbnMgZm9yIGBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoYCBhbmQgYG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2hgLiBUaGV5IGFsc28gYWRkZWQgcG9sbGluZyBjb250cm9sIGxvZ2ljIGZvciBSZWFsdGVrIHN3aXRjaGVzLiBUaGlzIGxvb2tzIHNwZWNpZmljIHRvIHRoZXNlIFJlYWx0ZWsgU29Dcy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgbmV3IGNhbGxiYWNrIG1lY2hhbmlzbSBleGlzdCBvbmx5IGZvciBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2A/IElzIHRoaXMgYSBkcml2ZXIgdGhhdCdzIG9ubHkgZ29pbmcgdG8gd29yayBvbiBSZWFsdGVrIGJhc2VkIHN5c3RlbXMsIG9yIGNhbiBpdCBiZSB1c2VkIGVsc2V3aGVyZT9cblxuRGl2aW5nIGRlZXBlciwgSSBzZWUgdGhhdCBgcGh5X2F0dGFjaF9kaXJlY3RgIGFuZCBgcGh5X2RldGFjaGAgYXJlIGNlbnRyYWwgUEhZIHN1YnN5c3RlbSBmdW5jdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBhY3Jvc3MgbmV0d29ya2luZy4gU28sIHRoaXMgcmVmYWN0b3JpbmcgKm11c3QqIGJlIGNvcmUsIGFuZCB0aGUgY2FsbGJhY2tzIGFyZSBwcm9iYWJseSBhZGRlZCB0byBlbmFibGUgYnJvYWRlciBzdXBwb3J0LlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBvdGhlciBkcml2ZXJzIHdpbGwgdXNlIHRoZXNlIG5ldyBjYWxsYmFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIG90aGVyIGRyaXZlcnMgc2V0IHRoZXNlIGNhbGxiYWNrcy4gSWYgbm8gb3RoZXIgZHJpdmVyIHNldHMgYGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2F0dGFjaGAgYmVzaWRlcyB0aGUgUmVhbHRlayBkcml2ZXIsIHRoZW4gdGhpcyBlbnRpcmUgY2hhbmdlIGlzIG9ubHkgdXNlZnVsIGZvciBSZWFsdGVrIHN5c3RlbXMuXG5cbkxldCdzIGNoZWNrIGlmIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBpcyBldmVuIHBvc3NpYmxlIHRvIHRlc3Qgb3V0c2lkZSBhIHNwZWNpZmljIFNvQy4gSSdsbCBzZWFyY2ggZm9yIGBDT05GSUdfTURJT19SRUFMVEVLX1JUTDkzMDBgIG9yIGBNQUNIX1JFQUxURUtfUlRMYCB0byB2ZXJpZnkgaWYgSSBjYW4gcnVuIHRoaXMgd2l0aCBRRU1VIG9yIEdDRS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1MzcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NTowOC4xNDM5NjMxNjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NzE4MjA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUNIX1JFQUxURUtfUlRMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9LY29uZmlnPTY4MT1jb25maWcgUkFMSU5LXFxuLS1cXG5hcmNoL21pcHMvS2NvbmZpZy02OTgtXFxuYXJjaC9taXBzL0tjb25maWc6Njk5OmNvbmZpZyBNQUNIX1JFQUxURUtfUlRMXFxuYXJjaC9taXBzL0tjb25maWctNzAwLVxcdGJvb2wgXFxcIlJlYWx0ZWsgUlRMODM4eC9SVEw4Mzl4IGJhc2VkIG1hY2hpbmVzXFxcIlxcbi0tXFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGU6MjpkdGItJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcXHQrPSBjaXNjb19zZzIyMC0yNi5kdGJcXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZTozOmR0Yi0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdCs9IGNhbWVvLXJ0bDkzMDJjLTJ4LXJ0bDgyMjQtMnhnZS5kdGJcXG4tLVxcbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19WSVJUX0JPQVJEX1JBTkNIVSlcXHRcXHQrPSBib2FyZC1yYW5jaHUub1xcbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IGJvYXJkLXJlYWx0ZWsub1xcbi0tXFxuZHJpdmVycy9ncGlvL0tjb25maWc9NjI1PWNvbmZpZyBHUElPX1JFQUxURUtfT1RUT1xcbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBPdHRvIEdQSU8gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2dwaW8vS2NvbmZpZzo2Mjc6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyODpcXHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcXG5kcml2ZXJzL2dwaW8vS2NvbmZpZy02MjktXFx0c2VsZWN0IEdQSU9fR0VORVJJQ1xcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc9MTEwMz1jb25maWcgSTJDX1JUTDkzMDBcXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDkzMDAgSTJDIGNvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc6MTEwNTpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9MTMwPW9iai0kKENPTkZJR19TTDI4Q1BMRF9JTlRDKVxcdFxcdCs9IGlycS1zbDI4Y3BsZC5vXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlOjEzMTpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcXHRcXHQrPSBpcnEtcmVhbHRlay1ydGwub1xcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0xMzItb2JqLSQoQ09ORklHX1dQQ000NTBfQUlDKVxcdFxcdCs9IGlycS13cGNtNDUwLWFpYy5vXFxuLS1cXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWc9NjQ9Y29uZmlnIE1URF9OQU5EX0VDQ19SRUFMVEVLXFxuLS1cXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWctNjYtICAgICAgICBkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnOjY3OiAgICAgICAgZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZy02OC0gICAgICAgIHNlbGVjdCBNVERfTkFORF9FQ0NcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNzQ9Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3NS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTc2OlxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvc3BpL0tjb25maWc9OTE2PWNvbmZpZyBTUElfUkVBTFRFS19TTkFORFxcbmRyaXZlcnMvc3BpL0tjb25maWctOTE3LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFNQSS1OQU5EIEZsYXNoIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy9zcGkvS2NvbmZpZzo5MTg6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvc3BpL0tjb25maWctOTE5LVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvc3BpL01ha2VmaWxlPTEzMT1vYmotJChDT05GSUdfU1BJX1JCNFhYKVxcdFxcdFxcdCs9IHNwaS1yYjR4eC5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU6MTMyOm9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IHNwaS1yZWFsdGVrLXJ0bC5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGUtMTMzLW9iai0kKENPTkZJR19TUElfUkVBTFRFS19TTkFORClcXHRcXHQrPSBzcGktcmVhbHRlay1ydGwtc25hbmQub1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTExMTM9Y29uZmlnIFJFQUxURUtfT1RUT19XRFRcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExNC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBPdHRvIE1JUFMgd2F0Y2hkb2cgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExNTpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTYtXFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExOC1cXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExOTpcXHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU1OjEwLjMyMTE1MDkzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg5OTcxODEyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBEZXRhY2htZW50IGFuZCBBdHRhY2htZW50IGluIHRoZSBSZWFsdGVrIFJUTDkzMDAgY29udGV4dCoqXG5cbk9rYXksIHNvIGBNRElPX1JFQUxURUtfUlRMOTMwMGAgcmVsYXRlcyB0byB0aGUgTUlQUyBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4IFNvQ3MsIHNwZWNpZmljYWxseSBmb3IgdGhlIGVtYmVkZGVkIGBNQUNIX1JFQUxURUtfUlRMYCBib2FyZHMuIEdvdCBpdC4gQnV0IGhvbGQgb24sIHRoZSBjb3JlIFBIWSBjaGFuZ2Vz4oCmIFRoYXQncyB0aGUga2V5LiBMZXQncyBkZWx2ZSBpbnRvIHdoYXQncyBhbHRlcmVkIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuXG5cblJpZ2h0LCBgcGh5X2RldGFjaF9pbnRlcm5hbGAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uLiBJdCBoYW5kbGVzIHRoZSBhY3R1YWwgZGV0YWNobWVudCBvZiB0aGUgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgZHJpdmVyLiBUaGUgYWRkZWQgYG5vdGlmeV9idXNgIHBhcmFtZXRlciBpcyBpbnRlcmVzdGluZzsgaXQgZGVjaWRlcyB3aGV0aGVyIHRvIHRlbGwgdGhlIE1ESU8gYnVzIGFib3V0IHRoZSBkZXRhY2htZW50LiBBbmQgaGV5LCB0aGVyZSdzIGBwaHlfZGV0YWNoYCwgYSB3cmFwcGVyIHRoYXQgYWx3YXlzIG5vdGlmaWVzIHRoZSBidXMuIE9rYXksIGBub3RpZnlfcGh5X2RldGFjaGAgaXQgaXMuXG5cblRoZSBjb2RlIHNob3dzIHRoYXQgYHBoeV9kZXRhY2hfaW50ZXJuYWxgIHdpbGwgY2FsbCBhIGJ1cyBzcGVjaWZpYyBgbm90aWZ5X3BoeV9kZXRhY2hgIGNhbGxiYWNrIGlmIGBub3RpZnlfYnVzYCBpcyBzZXQgdG8gdHJ1ZSBhbmQgdGhlIGJ1cyBoYXMgaW1wbGVtZW50ZWQgYSBzcGVjaWZpYyBjYWxsYmFjay4gVGhlIHNhbWUgaXMgdHJ1ZSBmb3IgYHBoeV9hdHRhY2hfaW50ZXJuYWxgIHdoaWNoIGNhbGxzIGBub3RpZnlfcGh5X2F0dGFjaGAgaWYgdGhlIGJ1cyBoYXMgYSBjYWxsYmFjayBkZWZpbmVkLiBNYWtlcyBzZW5zZS5cblxuQnV0IGhlcmUncyB0aGUgYnVybmluZyBxdWVzdGlvbjogSXMgZWl0aGVyIGBub3RpZnlfcGh5X2F0dGFjaGAgb3IgYG5vdGlmeV9waHlfZGV0YWNoYCBhY3R1YWxseSAqdXNlZCogYW55d2hlcmUgZWxzZT8gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgY291bGQgYmUgYSBuZXcsIG9yIHVuZGVydXRpbGl6ZWQsIGludGVyZmFjZS4gVGltZSB0byBydW4gYSBgZ3JlcGAgc2VhcmNoIGFjcm9zcyB0aGUgZW50aXJlIGNvZGViYXNlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgcXVpY2sgYW5zd2VyIGFzIHRvIHdoZXRoZXIgYW55IG90aGVyIGRyaXZlcnMgbGV2ZXJhZ2UgdGhlc2UgbmV3IGNhbGxiYWNrIGZ1bmN0aW9ucywgb3IgaWYgdGhpcyBpcyBpc29sYXRlZCB0byB0aGUgUmVhbHRlayBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwMTUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjE6NTU6MTkuMzE4MzM0NDAxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzc0NTY5NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm90aWZ5X3BoeV9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9zY3NpL2xpYnNhcy5yc3Q9MTg5PVRoZSBldmVudCBpbnRlcmZhY2U6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zY3NpL2xpYnNhcy5yc3QtMTkyLVxcdHZvaWQgc2FzX25vdGlmeV9wb3J0X2V2ZW50KHN0cnVjdCBzYXNfcGh5ICosIGVudW0gcG9ydF9ldmVudCwgZ2ZwX3QpO1xcbkRvY3VtZW50YXRpb24vc2NzaS9saWJzYXMucnN0OjE5MzpcXHR2b2lkIHNhc19ub3RpZnlfcGh5X2V2ZW50KHN0cnVjdCBzYXNfcGh5ICosIGVudW0gcGh5X2V2ZW50LCBnZnBfdCk7XFxuRG9jdW1lbnRhdGlvbi9zY3NpL2xpYnNhcy5yc3QtMTk0LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vc2NzaS9saWJzYXMucnN0PTE3MD1udW1fcGh5c1xcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vc2NzaS9saWJzYXMucnN0LTE3OS1cXHR2b2lkIHNhc19ub3RpZnlfcG9ydF9ldmVudChzdHJ1Y3Qgc2FzX3BoeSAqLCBlbnVtIHBvcnRfZXZlbnQsIGdmcF90KTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zY3NpL2xpYnNhcy5yc3Q6MTgwOlxcdHZvaWQgc2FzX25vdGlmeV9waHlfZXZlbnQoc3RydWN0IHNhc19waHkgKiwgZW51bSBwaHlfZXZlbnQsIGdmcF90KTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zY3NpL2xpYnNhcy5yc3QtMTgxLVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jPTc3Mj1zdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzg3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3ODg6c3RhdGljIGludCBvdHRvX2VtZGlvX25vdGlmeV9waHlfYXR0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODEyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTM6c3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jPTgzMz1zdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NTgtXFx0YnVzLVxcdTAwM2VwYXJlbnQgPSBkZXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1OTpcXHRidXMtXFx1MDAzZW5vdGlmeV9waHlfYXR0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODYwOlxcdGJ1cy1cXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NjEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3NDU9c3RhdGljIHZvaWQgcGh5X2RldGFjaF9pbnRlcm5hbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIG5vdGlmeV9idXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NjctXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNzY4OlxcdGlmIChub3RpZnlfYnVzIFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZW5vdGlmeV9waHlfZGV0YWNoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTc2OTpcXHRcXHRwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vub3RpZnlfcGh5X2RldGFjaChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTg1MD1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTk3Ni1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5Nzc6XFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTc4OlxcdFxcdGVyciA9IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZW5vdGlmeV9waHlfYXR0YWNoKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTc5LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jPTY3PXN0YXRpYyB2b2lkIGFzZF9waHlfZXZlbnRfdGFza2xldChzdHJ1Y3QgYXNkX2FzY2IgKmFzY2IsXFxuLS1cXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTgyLVxcdFxcdHNhc19waHlfZGlzY29ubmVjdGVkKFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHkpO1xcbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmM6ODM6XFx0XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCxcXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTg0LVxcdFxcdFxcdFxcdCAgICAgR0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTkxLVxcdFxcdFxcdCAgICBwaHlfaWQsIHBoeS1cXHUwMDNlc2FzX3BoeS5saW5rcmF0ZSwgcGh5LVxcdTAwM2VzYXNfcGh5Lmlwcm90byk7XFxuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYzo5MjpcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTkzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYy05Ni1cXHRcXHRhc2RfdHVybl9sZWQoYXNkX2hhLCBwaHlfaWQsIDEpO1xcbmRyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfc2NiLmM6OTc6XFx0XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9TUElOVVBfSE9MRCxcXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTk4LVxcdFxcdFxcdFxcdCAgICAgR0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jLTEwNS1cXHRcXHRzYXNfcGh5X2Rpc2Nvbm5lY3RlZChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5KTtcXG5kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3NjYi5jOjEwNjpcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9FUlJPUiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9zY2IuYy0xMDctXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXMuaD02ODM9ZXh0ZXJuIHZvaWQgaGlzaV9zYXNfcGh5X29vYl9yZWFkeShzdHJ1Y3QgaGlzaV9oYmEgKmhpc2lfaGJhLCBpbnQgcGh5X25vKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXMuaDo2ODQ6ZXh0ZXJuIGJvb2wgaGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgaGlzaV9zYXNfcGh5ICpwaHksXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzLmgtNjg1LVxcdFxcdFxcdFxcdGVudW0gaGlzaV9zYXNfcGh5X2V2ZW50IGV2ZW50KTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM9NjQ5PXN0YXRpYyB2b2lkIGhpc2lfc2FzX2J5dGVzX2RtYWVkKHN0cnVjdCBoaXNpX2hiYSAqaGlzaV9oYmEsIGludCBwaHlfbm8sXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTY1Ny1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jOjY1ODpcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBnZnBfZmxhZ3MpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtNjU5LVxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz05Mzk9c3RhdGljIHZvaWQgaGlzaV9zYXNfcGh5dXBfd29ya19jb21tb24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrLFxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy05NjItXFx0XFx0XFx0c2V0X2JpdChTQVNfREVWX0dPTkUsIFxcdTAwMjZwb3J0X2Rldi1cXHUwMDNlc3RhdGUpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6OTYzOlxcdFxcdFxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy05NjQtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz05OTk9c3RhdGljIGNvbnN0IHdvcmtfZnVuY190IGhpc2lfc2FzX3BoeWVfZm5zW0hJU0lfUEhZRVNfTlVNXSA9IHtcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmMtMTAwNC1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jOjEwMDU6Ym9vbCBoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHN0cnVjdCBoaXNpX3Nhc19waHkgKnBoeSxcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTEwMDYtXFx0XFx0XFx0XFx0ZW51bSBoaXNpX3Nhc19waHlfZXZlbnQgZXZlbnQpXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTEwMTQtfVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTAxNTpFWFBPUlRfU1lNQk9MX0dQTChoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTEwMTYtXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYz0xMDE3PXN0YXRpYyB2b2lkIGhpc2lfc2FzX3dhaXRfcGh5dXBfdGltZWRvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTEwMjQtXFx0ZGV2X3dhcm4oZGV2LCBcXFwicGh5JWQgd2FpdCBwaHl1cCB0aW1lb3V0LCBpc3N1aW5nIGxpbmsgcmVzZXRcXFxcblxcXCIsIHBoeV9ubyk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYzoxMDI1OlxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xMDI2LX1cXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM9MTQzNz1zdGF0aWMgdm9pZCBoaXNpX3Nhc19yZXNjYW5fdG9wb2xvZ3koc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSwgdTMyIHN0YXRlKVxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0xNDczLVxcdFxcdFxcdGlmIChzdGF0ZSBcXHUwMDI2IEJJVChwaHlfbm8pKVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc19tYWluLmM6MTQ3NDpcXHRcXHRcXHRcXHRoaXNpX3Nhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSxcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTE0NzUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jPTIxMDI9dm9pZCBoaXNpX3Nhc19waHlfZG93bihzdHJ1Y3QgaGlzaV9oYmEgKmhpc2lfaGJhLCBpbnQgcGh5X25vLCBpbnQgcmR5LFxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX21haW4uYy0yMTIxLVxcdFxcdC8qIFBoeSBkb3duIGFuZCBub3QgcmVhZHkgKi9cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jOjIxMjI6XFx0XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoc2FzX3BoeSwgUEhZRV9MT1NTX09GX1NJR05BTCwgZ2ZwX2ZsYWdzKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfbWFpbi5jLTIxMjMtXFx0XFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoc2FzX3BoeSk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjFfaHcuYz0xMzE1PXN0YXRpYyBpcnFyZXR1cm5fdCBpbnRfcGh5dXBfdjFfaHcoaW50IGlycV9ubywgdm9pZCAqcClcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192MV9ody5jLTEzNzYtXFx0XFx0XFx0U0FTX1BST1RPQ09MX1NNUDtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjFfaHcuYzoxMzc3OlxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfUEhZX1VQKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjFfaHcuYy0xMzc4LWVuZDpcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jPTI2NDY9c3RhdGljIGludCBwaHlfdXBfdjJfaHcoaW50IHBoeV9ubywgc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSlcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTI3MDctXFx0fVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjI3MDg6XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9QSFlfVVApO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTI3MDktZW5kOlxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmM9Mjg2ND1zdGF0aWMgaXJxcmV0dXJuX3QgaW50X2NobmxfaW50X3YyX2h3KGludCBpcnFfbm8sIHZvaWQgKnApXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0yOTExLVxcdFxcdFxcdFxcdFxcdCBwaHlfbm8pO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjI5MTI6XFx0XFx0XFx0XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmMtMjkxMy1cXHRcXHRcXHRcXHRcXHRcXHRISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYz0zMTk4PXN0YXRpYyBpcnFyZXR1cm5fdCBzYXRhX2ludF92Ml9odyhpbnQgaXJxX25vLCB2b2lkICpwKVxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmMtMzIzNS1cXHRcXHRcXHQgZmlzLVxcdTAwM2VzdGF0dXMpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjMyMzY6XFx0XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjJfaHcuYy0zMjM3LVxcdFxcdHJlcyA9IElSUV9OT05FO1xcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YyX2h3LmMtMzI4MS1cXHRwaHktXFx1MDAzZWlkZW50aWZ5LnRhcmdldF9wb3J0X3Byb3RvY29scyA9IFNBU19QUk9UT0NPTF9TQVRBO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jOjMyODI6XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9QSFlfVVApO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192Ml9ody5jLTMyODMtXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYz0xNTgyPXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlfdXBfdjNfaHcoaW50IHBoeV9ubywgc3RydWN0IGhpc2lfaGJhICpoaXNpX2hiYSlcXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE2MjEtXFx0XFx0XFx0XFx0IHBoeV9ubywgZmlzLVxcdTAwM2VzdGF0dXMpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE2MjI6XFx0XFx0XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xNjIzLVxcdFxcdFxcdHJlcyA9IElSUV9OT05FO1xcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTY3OC1cXHRwbV9ydW50aW1lX2dldF9ub3Jlc3VtZShkZXYpO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE2Nzk6XFx0cmVzID0gaGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9QSFlfVVBfUE0pO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE2ODAtXFx0aWYgKCFyZXMpXFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYz0xODg3PXN0YXRpYyB2b2lkIGhhbmRsZV9jaGxfaW50Ml92M19odyhzdHJ1Y3QgaGlzaV9oYmEgKmhpc2lfaGJhLCBpbnQgcGh5X25vKVxcbi0tXFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTkwNi1cXHRcXHRkZXZfd2FybihkZXYsIFxcXCJwaHklZCBpZGVudGlmeSB0aW1lb3V0XFxcXG5cXFwiLCBwaHlfbm8pO1xcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jOjE5MDc6XFx0XFx0aGlzaV9zYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIEhJU0lfUEhZRV9MSU5LX1JFU0VUKTtcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTA4LVxcdH1cXG4tLVxcbmRyaXZlcnMvc2NzaS9oaXNpX3Nhcy9oaXNpX3Nhc192M19ody5jLTE5MTYtXFx0XFx0aWYgKHJlZ192YWx1ZSBcXHUwMDI2IEJJVChMSU5LX1JFU0VUX1RJTUVPVVRfT0ZGKSlcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYzoxOTE3OlxcdFxcdFxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTkxOC1cXHR9XFxuLS1cXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYy0xOTQ4LVxcdFxcdGlmIChyYylcXG5kcml2ZXJzL3Njc2kvaGlzaV9zYXMvaGlzaV9zYXNfdjNfaHcuYzoxOTQ5OlxcdFxcdFxcdGhpc2lfc2FzX25vdGlmeV9waHlfZXZlbnQocGh5LCBISVNJX1BIWUVfTElOS19SRVNFVCk7XFxuZHJpdmVycy9zY3NpL2hpc2lfc2FzL2hpc2lfc2FzX3YzX2h3LmMtMTk1MC1cXHR9XFxuLS1cXG5kcml2ZXJzL3Njc2kvaXNjaS9wb3J0LmM9MjQwPXN0YXRpYyB2b2lkIGlzY2lfcG9ydF9saW5rX2Rvd24oc3RydWN0IGlzY2lfaG9zdCAqaXNjaV9ob3N0LFxcbi0tXFxuZHJpdmVycy9zY3NpL2lzY2kvcG9ydC5jLTI3My1cXHRzYXNfcGh5X2Rpc2Nvbm5lY3RlZChcXHUwMDI2aXNjaV9waHktXFx1MDAzZXNhc19waHkpO1xcbmRyaXZlcnMvc2NzaS9pc2NpL3BvcnQuYzoyNzQ6XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNmlzY2lfcGh5LVxcdTAwM2VzYXNfcGh5LFxcbmRyaXZlcnMvc2NzaS9pc2NpL3BvcnQuYy0yNzUtXFx0XFx0XFx0ICAgICBQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfQVRPTUlDKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V2ZW50LmM9MTg5PUVYUE9SVF9TWU1CT0xfR1BMKHNhc19ub3RpZnlfcG9ydF9ldmVudCk7XFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYy0xOTAtXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYzoxOTE6dm9pZCBzYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgYXNkX3Nhc19waHkgKnBoeSwgZW51bSBwaHlfZXZlbnQgZXZlbnQsXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYy0xOTItXFx0XFx0XFx0ICBnZnBfdCBnZnBfZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19ldmVudC5jLTIxNS19XFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYzoyMTY6RVhQT1JUX1NZTUJPTF9HUEwoc2FzX25vdGlmeV9waHlfZXZlbnQpO1xcbi0tXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jPTQxMz12b2lkIHNhc19yZXN1bWVfaGEoc3RydWN0IHNhc19oYV9zdHJ1Y3QgKmhhKVxcbi0tXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jLTQ1MC1cXHRcXHRcXHRkZXZfd2FybihcXHUwMDI2cGh5LVxcdTAwM2VwaHktXFx1MDAzZWRldiwgXFxcInJlc3VtZSB0aW1lb3V0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmM6NDUxOlxcdFxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KHBoeSwgUEhZRV9SRVNVTUVfVElNRU9VVCxcXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMtNDUyLVxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmM9NjM4PXN0cnVjdCBhc2Rfc2FzX2V2ZW50ICpzYXNfYWxsb2NfZXZlbnQoc3RydWN0IGFzZF9zYXNfcGh5ICpwaHksXFxuLS1cXG5kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMtNjU2LVxcdFxcdFxcdFxcdFxcdCAgcGh5LVxcdTAwM2VpZCk7XFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jOjY1NzpcXHRcXHRcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChwaHksIFBIWUVfU0hVVERPV04sXFxuZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jLTY1OC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGdmcF9mbGFncyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvbXZzYXMvbXZfc2FzLmM9MjEwPXN0YXRpYyB2b2lkIG12c19ieXRlc19kbWFlZChzdHJ1Y3QgbXZzX2luZm8gKm12aSwgaW50IGksIGdmcF90IGdmcF9mbGFncylcXG4tLVxcbmRyaXZlcnMvc2NzaS9tdnNhcy9tdl9zYXMuYy0yMjItXFxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jOjIyMzpcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBnZnBfZmxhZ3MpO1xcbmRyaXZlcnMvc2NzaS9tdnNhcy9tdl9zYXMuYy0yMjQtXFxuLS1cXG5kcml2ZXJzL3Njc2kvbXZzYXMvbXZfc2FzLmM9MTY5ND1zdGF0aWMgdm9pZCBtdnNfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3Njc2kvbXZzYXMvbXZfc2FzLmMtMTcxNC1cXHRcXHRcXHRcXHRtdnNfcGh5X2Rpc2Nvbm5lY3RlZChwaHkpO1xcbmRyaXZlcnMvc2NzaS9tdnNhcy9tdl9zYXMuYzoxNzE1OlxcdFxcdFxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KHNhc19waHksXFxuZHJpdmVycy9zY3NpL212c2FzL212X3Nhcy5jLTE3MTYtXFx0XFx0XFx0XFx0XFx0UEhZRV9MT1NTX09GX1NJR05BTCwgR0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYz0zMTA1PWh3X2V2ZW50X3Nhc19waHlfdXAoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTMxNjMtXFx0cGh5LVxcdTAwM2VzYXNfcGh5Lm9vYl9tb2RlID0gU0FTX09PQl9NT0RFO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jOjMxNjQ6XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzE2NS1cXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LmZyYW1lX3JjdmRfbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM9MzE4Mj1od19ldmVudF9zYXRhX3BoeV91cChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzIwOC1cXHRwaHktXFx1MDAzZXNhc19waHkub29iX21vZGUgPSBTQVRBX09PQl9NT0RFO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jOjMyMDk6XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRE9ORSwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzIxMC1cXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LmZyYW1lX3JjdmRfbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM9MzUwMT1zdGF0aWMgaW50IG1waV9od19ldmVudChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMtMzU0OS1cXHRcXHRwbTgwMDFfZGJnKHBtODAwMV9oYSwgTVNHLCBcXFwiSFdfRVZFTlRfU0FUQV9TUElOVVBfSE9MRFxcXFxuXFxcIik7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM6MzU1MDpcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX1NQSU5VUF9IT0xELFxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTM1NTEtXFx0XFx0XFx0R0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTU0LVxcdFxcdHBtODAwMV9kYmcocG04MDAxX2hhLCBNU0csIFxcXCJIV19FVkVOVF9QSFlfRE9XTlxcXFxuXFxcIik7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmM6MzU1NTpcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX0xPU1NfT0ZfU0lHTkFMLFxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jLTM1NTYtXFx0XFx0XFx0R0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTgzLVxcdFxcdHBoeS1cXHUwMDNlcGh5X2F0dGFjaGVkID0gMDtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYzozNTg0OlxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksIFBIWUVfT09CX0VSUk9SLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYy0zNTg1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmM9MjI1PWludCBwbTgwMDFfcGh5X2NvbnRyb2woc3RydWN0IGFzZF9zYXNfcGh5ICpzYXNfcGh5LCBlbnVtIHBoeV9mdW5jIGZ1bmMsXFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuYy0yOTItXFx0XFx0XFx0XFx0c2FzX3BoeV9kaXNjb25uZWN0ZWQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSk7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmM6MjkzOlxcdFxcdFxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmMtMjk0LVxcdFxcdFxcdFxcdFxcdFBIWUVfTE9TU19PRl9TSUdOQUwsIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmMtMzAwLVxcdFxcdFxcdFxcdHNhc19waHlfZGlzY29ubmVjdGVkKFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHkpO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5jOjMwMTpcXHRcXHRcXHRcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LFxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5jLTMwMi1cXHRcXHRcXHRcXHRcXHRQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jPTMxODY9aHdfZXZlbnRfc2FzX3BoeV91cChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKVxcbi0tXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzI0Ny1cXHRwaHktXFx1MDAzZXNhc19waHkub29iX21vZGUgPSBTQVNfT09CX01PREU7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzI0ODpcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjQ5LVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHkuZnJhbWVfcmN2ZF9sb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zMjY2PWh3X2V2ZW50X3NhdGFfcGh5X3VwKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpXFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjk2LVxcdHBoeS1cXHUwMDNlc2FzX3BoeS5vb2JfbW9kZSA9IFNBVEFfT09CX01PREU7XFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmM6MzI5NzpcXHRzYXNfbm90aWZ5X3BoeV9ldmVudChcXHUwMDI2cGh5LVxcdTAwM2VzYXNfcGh5LCBQSFlFX09PQl9ET05FLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMjk4LVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHkuZnJhbWVfcmN2ZF9sb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYz0zMzE1PWh3X2V2ZW50X3BoeV9kb3duKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpXFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zMzg2LVxcdGlmIChwb3J0X3NhdGEgXFx1MDAyNlxcdTAwMjYgKHBvcnRzdGF0ZSAhPSBQT1JUX0lOX1JFU0VUKSlcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozMzg3OlxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksIFBIWUVfTE9TU19PRl9TSUdOQUwsXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzM4OC1cXHRcXHRcXHRcXHRHRlBfQVRPTUlDKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jPTM0NTQ9c3RhdGljIGludCBtcGlfaHdfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYilcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM0OTItXFx0XFx0XFx0ICAgcGh5X2lkLCBwb3J0X2lkKTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozNDkzOlxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksIFBIWUVfU1BJTlVQX0hPTEQsXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzQ5NC1cXHRcXHRcXHRHRlBfQVRPTUlDKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM1MjYtXFx0XFx0cGh5LVxcdTAwM2VwaHlfYXR0YWNoZWQgPSAwO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jOjM1Mjc6XFx0XFx0c2FzX25vdGlmeV9waHlfZXZlbnQoXFx1MDAyNnBoeS1cXHUwMDNlc2FzX3BoeSwgUEhZRV9PT0JfRVJST1IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MHh4X2h3aS5jLTM1MjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYy0zNjQyLVxcdFxcdFxcdFxcdHBoeSA9IFxcdTAwMjZwbTgwMDFfaGEtXFx1MDAzZXBoeVtpXTtcXG5kcml2ZXJzL3Njc2kvcG04MDAxL3BtODB4eF9od2kuYzozNjQzOlxcdFxcdFxcdFxcdHNhc19ub3RpZnlfcGh5X2V2ZW50KFxcdTAwMjZwaHktXFx1MDAzZXNhc19waHksXFxuZHJpdmVycy9zY3NpL3BtODAwMS9wbTgweHhfaHdpLmMtMzY0NC1cXHRcXHRcXHRcXHRcXHRQSFlFX0xPU1NfT0ZfU0lHTkFMLCBHRlBfQVRPTUlDKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MzYzPXN0cnVjdCBtaWlfYnVzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMzc5LVxcdC8qKlxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzgwOlxcdCAqIEBub3RpZnlfcGh5X2F0dGFjaDogUGVyZm9ybSBwb3N0LWF0dGFjaCBoYW5kbGluZyBmb3IgTURJTyBidXNcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjM4MTpcXHQgKiBkcml2ZXJzLiBPcHRpb25hbCBhbmQgaW5kZXBlbmRlbnQgb2YgQG5vdGlmeV9waHlfZGV0YWNoLiBDYWxsZWRcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTM4Mi1cXHQgKiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpIHJpZ2h0IGJlZm9yZSBwaHlfcmVzdW1lKCkuIFJ1bnMgaW4gcHJvY2Vzc1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0zODctXFx0ICovXFxuaW5jbHVkZS9saW51eC9waHkuaDozODg6XFx0aW50ICgqbm90aWZ5X3BoeV9hdHRhY2gpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtMzg5LVxcdC8qKlxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzkwOlxcdCAqIEBub3RpZnlfcGh5X2RldGFjaDogUGVyZm9ybSBwcmUtZGV0YWNoIGhhbmRsaW5nIGZvciBNRElPIGJ1c1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MzkxOlxcdCAqIGRyaXZlcnMuIE9wdGlvbmFsIGFuZCBpbmRlcGVuZGVudCBvZiBAbm90aWZ5X3BoeV9hdHRhY2guIENhbGxlZFxcbmluY2x1ZGUvbGludXgvcGh5LmgtMzkyLVxcdCAqIGluIHBoeV9kZXRhY2goKSByaWdodCBhZnRlciBwaHlfc3VzcGVuZCgpLiBSdW5zIGluIHByb2Nlc3MgY29udGV4dCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMzk1LVxcdCAqL1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6Mzk2OlxcdHZvaWQgKCpub3RpZnlfcGh5X2RldGFjaCkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuaW5jbHVkZS9saW51eC9waHkuaC0zOTctXFxuLS1cXG5pbmNsdWRlL3Njc2kvbGlic2FzLmg9NzI5PXZvaWQgc2FzX25vdGlmeV9wb3J0X2V2ZW50KHN0cnVjdCBhc2Rfc2FzX3BoeSAqcGh5LCBlbnVtIHBvcnRfZXZlbnQgZXZlbnQsXFxuaW5jbHVkZS9zY3NpL2xpYnNhcy5oLTczMC1cXHRcXHRcXHQgICBnZnBfdCBnZnBfZmxhZ3MpO1xcbmluY2x1ZGUvc2NzaS9saWJzYXMuaDo3MzE6dm9pZCBzYXNfbm90aWZ5X3BoeV9ldmVudChzdHJ1Y3QgYXNkX3Nhc19waHkgKnBoeSwgZW51bSBwaHlfZXZlbnQgZXZlbnQsXFxuaW5jbHVkZS9zY3NpL2xpYnNhcy5oLTczMi1cXHRcXHRcXHQgICBnZnBfdCBnZnBfZmxhZ3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NToyMS41NTU4MDI3OTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTMxMTgwMTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFBIWSBBdHRhY2htZW50L0RldGFjaG1lbnQgTm90aWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGBub3RpZnlfcGh5X2F0dGFjaGAgYW5kIGBub3RpZnlfcGh5X2RldGFjaGAgZnVuY3Rpb25zLiBJIGtub3cgdGhleSdyZSBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L3BoeS5oYCBhbmQgdXNlZCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFRoYXQncyB0aGUgY29yZSBQSFkgZnJhbWV3b3JrLCBnb29kLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdobydzIGFjdHVhbGx5ICp1c2luZyogdGhlbS5cblxuVGhlIHRyYWNlIGxlYWRzIG1lIHRvIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgLiBBaCwgcmlnaHQsIHRoZSBSZWFsdGVrIE1ESU8gZHJpdmVyLiBCdXQuLi4gaXMgdGhpcyBzcGVjaWZpYyB0byBqdXN0IHRoZSBSZWFsdGVrIE1JUFMgaGFyZHdhcmU/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LiBJIGNhbid0IGp1c3QgYXNzdW1lIGl0J3MgYnJvYWRseSBhcHBsaWNhYmxlLlxuXG5JJ3ZlIGdvdCB0byBkZXRlcm1pbmUgaWYgdGhpcyBkcml2ZXIgaXMgdGlnaHRseSBjb3VwbGVkIHRvIGEgcGFydGljdWxhciBTb0MsIG9yIGlmIGl0J3MgbW9yZSBnZW5lcmljLiBJcyBpdCBib3VuZCB0byBzb21ldGhpbmcgc3BlY2lmaWMsIG9yIGlzIHRoZXJlIGEgYnJvYWRlciBjb250ZXh0IEknbSBtaXNzaW5nPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBjb2RlIGl0c2VsZiBhbmQgc2VlIHdoYXQgaXQncyBkb2luZywgaG93IGl0J3MgaW5pdGlhbGl6ZWQsIGFuZCB3aGF0IGhhcmR3YXJlIGl0J3MgZXhwZWN0aW5nIHRvIHNlZS4gVGltZSB0byBkaXZlIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk5NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NTozNi44Njc2MDk0OTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ1ODEwMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm90dG9fZW1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yMzctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjIzODpzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTIzOS1cXHR1MzIgYzIyX2RhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjQ4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNDk6c3RydWN0IG90dG9fZW1kaW9fcHJpdiB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI1MDpcXHRjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvICppbmZvO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNTEtXFx0c3RydWN0IHJlZ21hcCAqcmVnbWFwO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI2MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjYxOnN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjItXFx0dTMyIGFkZHJfbWFwX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjY2LVxcdHUzMiBjbWRfd3JpdGU7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI2NzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfcmVncztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjY4LVxcdHU4IG51bV9idXNlcztcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzEtXFx0dTMyIHBvbGxfY3RybDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjcyOlxcdGludCAoKnNldHVwX2NvbnRyb2xsZXIpKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzMtXFx0aW50ICgqcmVhZF9jMjIpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI3OTpzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjgwOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI4MS1cXHR1OCBtZGlvX2J1cztcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4NDpzdGF0aWMgaW50IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZClcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjg1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjg2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4NzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODgtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjk5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMDA6c3RhdGljIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKm90dG9fZW1kaW9fYnVzX3RvX3ByaXYoc3RydWN0IG1paV9idXMgKmJ1cylcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzAxLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzAyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zMDYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMwNzpzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCBpbnQgcG9ydCwgYm9vbCBhY3RpdmUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwOC17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzEyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMTM6c3RhdGljIGludCBvdHRvX2VtZGlvX3J1bl9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzE0OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzE2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxNzpcXHRjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvICppbmZvID0gcHJpdi1cXHUwMDNlaW5mbztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE4LVxcdHUzMiBjbWRzdGF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNjktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3MDpzdGF0aWMgaW50IG90dG9fZW1kaW9fcmVhZF9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzcxOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEsIHUzMiBtYXNrLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNzIte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozNzM6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc0LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc2LVxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozNzc6XFx0cmV0ID0gb3R0b19lbWRpb19ydW5fY21kKGJ1cywgY21kIHwgcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlY21kX3JlYWQsIGNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzg5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTA6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTE6XFx0XFx0XFx0XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zOTIte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTM6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzk0LVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzk3OlxcdHJldHVybiBvdHRvX2VtZGlvX3J1bl9jbWQoYnVzLCBjbWQgfCBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VjbWRfd3JpdGUsIGNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzk4LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzk5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDA6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwMS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQwMjpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDM6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNC1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDA5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTA6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxMS1cXHRcXHRcXHRcXHQgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQxNDpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDE1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDE2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQxNzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDE4LVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzgwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQyNTpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjYtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQyODpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDI5LVxcdFxcdFxcdFxcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzMC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQzMTpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDMyLVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDM2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Mzc6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzOC1cXHRcXHRcXHRcXHQgICBSVEw4MzgwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ0MTpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0Mi1cXHRcXHRcXHRcXHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDMte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NDQ6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0NS1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDUxOlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1Mi19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1My1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDU0OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTUte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NTY6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDU3OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTgtXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ2My1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDY0OlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjUtXFx0XFx0XFx0XFx0ICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDY3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Njg6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ2OS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3MDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NzE6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ3Mi1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM5MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDc5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0ODA6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDgxLX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDgyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0ODM6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4NC1cXHRcXHRcXHRcXHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODUte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0ODY6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4Ny1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ5MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDkyOlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTMtXFx0XFx0XFx0XFx0ICAgUlRMODM5MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDk1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0OTY6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTctXFx0XFx0XFx0XFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDk4LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDk5OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDAtXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwNzpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDgtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxMDpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTExLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTEyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxMzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE0LVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MTktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyMDpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTIxLVxcdFxcdFxcdFxcdCAgIFJUTDkzMDBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyMy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTI0OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MjUte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MjY6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTI3OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MjgtXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDkzMDBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTM1OlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNi19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTM4OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MzktXFx0XFx0XFx0XFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQwLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTQxOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDItXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0NzpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ4LVxcdFxcdFxcdFxcdCAgIFJUTDkzMDBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTUxOnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTUyLVxcdFxcdFxcdFxcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU1NDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTU1LVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjE6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYyLX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYzLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjQ6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2NS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU2NjpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1Njc6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2OC1cXHRcXHQuYnJvYWRjYXN0XFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTcyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzM6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3NC1cXHRcXHRcXHRcXHQgICBSVEw5MzEwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU3NzpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTc4LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTc5OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU4MDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTgxLVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzEwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU4ODpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODktfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01OTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU5MTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTkyLVxcdFxcdFxcdFxcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU5My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU5NDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk1LVxcdFxcdC5icm9hZGNhc3RcXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9CQ19QT1JUX0lELCBwb3J0KSxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01OTktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYwMDpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjAxLVxcdFxcdFxcdFxcdCAgIFJUTDkzMTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjA0OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA1LVxcdFxcdFxcdFxcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwNi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYwNzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA4LVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTU6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE2LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTg6c3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxOS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYyMDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MjEtXFx0aW50IHJldCwgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MjktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYzMDpcXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYzMS1cXHRpZiAocG9ydCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjQzLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NDQ6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NDUtXFx0XFx0XFx0XFx0dTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NDYte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NDc6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjQ4LVxcdGludCByZXQsIHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjU1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NTY6XFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NTctXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY3NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njc1OnN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY3Ni17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY3NzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NzgtXFx0aW50IHJldCwgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY4MTpcXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY4Mi1cXHRpZiAocG9ydCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjkwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2OTE6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTItXFx0XFx0XFx0XFx0aW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY5My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY5NDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTUtXFx0aW50IHJldCwgcG9ydDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjk2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2OTc6XFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTgtXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcwNi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzA3OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsIHUzMiBiYXNlLCB1MzIgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzA4LVxcdFxcdFxcdFxcdCAgICB1MzIgdmFsc19wZXJfcmVnLCB1MzIgYml0c19wZXJfdmFsLCB1MzIgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzE2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MTc6c3RhdGljIGludCBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcxOC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjcxOTpcXHRjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvICppbmZvID0gcHJpdi1cXHUwMDNlaW5mbztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzIwLVxcdHUzMiBwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyNC1cXHRcXHRpZiAoaW5mby1cXHUwMDNlYnVzX21hcF9iYXNlKSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjcyNTpcXHRcXHRcXHRyZXQgPSBvdHRvX2VtZGlvX3dyaXRlX21hcHBpbmcocHJpdiwgaW5mby1cXHUwMDNlYnVzX21hcF9iYXNlLCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE1BUF9CVVNFU19QRVJfUkVHLCBNQVBfQklUU19QRVJfQlVTLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczMS1cXHRcXHRpZiAoaW5mby1cXHUwMDNlYWRkcl9tYXBfYmFzZSkge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MzI6XFx0XFx0XFx0cmV0ID0gb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHByaXYsIGluZm8tXFx1MDAzZWFkZHJfbWFwX2Jhc2UsIHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgTUFQX0FERFJTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9BRERSLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc0Mi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzQzOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc1MjpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc1My17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzcxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NzI6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NzMte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4Ny1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Nzg4OnN0YXRpYyBpbnQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03ODkte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3OTA6XFx0aW50IHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzkxOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3OTI6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IGNoYW4tXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc5My1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgxMDpcXHRyZXR1cm4gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MTEtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MTItXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgxMzpzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNS1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODE2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgxNy1cXHRpbnQgcG9ydDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODE4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MTk6XFx0cHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYocGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgyMDpcXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MjgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgyOTpcXHRpZiAob3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODMwLVxcdFxcdGRldl9lcnIoYnVzLVxcdTAwM2VwYXJlbnQsIFxcXCJmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MzItXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgzMzpzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM0LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODM2OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgzNy1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg1My1cXHRidXMtXFx1MDAzZW5hbWUgPSBcXFwiUmVhbHRlayBTd2l0Y2ggTURJTyBCdXNcXFwiO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTQ6XFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1NTpcXHRidXMtXFx1MDAzZXdyaXRlX2M0NSA9IG90dG9fZW1kaW9fd3JpdGVfYzQ1O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTY6XFx0YnVzLVxcdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODU3OlxcdGJ1cy1cXHUwMDNld3JpdGUgPSBvdHRvX2VtZGlvX3dyaXRlX2MyMjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODU4LVxcdGJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTk6XFx0YnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg2MDpcXHRidXMtXFx1MDAzZW5vdGlmeV9waHlfZGV0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODYxLVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg3NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODc1OnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKm90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4pXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODkzLSAqL1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4OTQ6c3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg5NS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg5Ni1cXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzX2RuLCAqcGh5X2RuLCAqYnVzX2RuLCAqY3RybF9kbjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODk3OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODk4LVxcdHN0cnVjdCBkZXZpY2UgKnBhcmVudCA9IGRldi1cXHUwMDNlcGFyZW50O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkxNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTE1OlxcdFxcdGJ1c19kbiA9IG90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHBoeV9kbik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkxNi1cXHRcXHRpZiAoIWJ1c19kbilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05NzctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjk3ODpzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3OS17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTgyLVxcdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFxcdTAwM2MgcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlbnVtX3BvcnRzOyBwb3J0KyspIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTgzOlxcdFxcdGVyciA9IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk4NC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTkxOnN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05OTIte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05OTMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTk0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5NS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMDktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMTA6XFx0ZXJyID0gb3R0b19lbWRpb19pbml0X3BvbGxpbmcocHJpdik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMTEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDE1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDE2OlxcdGVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDE5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDIwOlxcdGVyciA9IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3kocHJpdik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMjEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDMwLVxcdGRldmljZV9mb3JfZWFjaF9jaGlsZF9ub2RlX3Njb3BlZChkZXYsIGNoaWxkKSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwMzE6XFx0XFx0ZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwMzItXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDM4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDM5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDQwLVxcdC5hZGRyX21hcF9iYXNlID0gUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1My1cXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDU0OlxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTU6XFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDU2OlxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1NzpcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1ODpcXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1OS19O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDYwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDYxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDYyLVxcdC5jbWRfZmFpbCA9IFJUTDgzOTBfUEhZX0NUUkxfRkFJTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDc3LVxcdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA3ODpcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNzk6XFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDgwOlxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDgxOlxcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDgyLX07XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODUtXFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw5MzAwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDk5LVxcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDA6XFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEwMTpcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDI6XFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTAzOlxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTA0OlxcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzQ1LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTA1LX07XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMDYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDc6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMDgtXFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw5MzEwX1NNSV9QT1JUX0FERFJfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTI1LVxcdC5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEyNjpcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTI3OlxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEyODpcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMjk6XFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzA6XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMzEtfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzMi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzMzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvdHRvX2VtZGlvX2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM0OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzgwLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzkxLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzOTBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM2OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzAxLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMDBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM3OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzExLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTM4LVxcdHt9XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMzktfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE0MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvdHRvX2VtZGlvX2lkcyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNDEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNDI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb3R0b19lbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNDM6XFx0LnByb2JlID0gb3R0b19lbWRpb19wcm9iZSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE0NC1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTQ1LVxcdFxcdC5uYW1lID0gXFxcIm1kaW8tcnRsOTMwMFxcXCIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNDY6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gb3R0b19lbWRpb19pZHMsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNDctXFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihvdHRvX2VtZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNTItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU1OjM3LjUxMzQ0MzI5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5MTA5NzgwNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFBIWSBEcml2ZXIgQ2hhbmdlcyBmb3IgUmVhbHRlayBPdHRvIFNvQyBTdXBwb3J0KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpc3NlY3RpbmcgdGhpcyBwYXRjaCBzZXJpZXMgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgaW4gaXRzIGltcGxpY2F0aW9ucy4gVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyB0aGUgYWRkaXRpb24gb2Ygc3VwcG9ydCBmb3IgUmVhbHRlaydzIE90dG8gU29DIHN3aXRjaGVzLCBzcGVjaWZpY2FsbHkgdGhlIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4IHNlcmllcy4gVGhlIGNvZGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCBpbnRlZ3JhdGluZyBhIG5ldyBNRElPIGJ1cyBkcml2ZXIgKGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCkgdGhhdCdzIE9GLW9ubHksIG1lYW5pbmcgaXQgcmVsaWVzIG9uIGRldmljZSB0cmVlIGJpbmRpbmdzIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyAoYG90dG9fZW1kaW9fZHJpdmVyYCkuIEltcG9ydGFudGx5LCBgb3R0b19lbWRpb19kcml2ZXIuZHJpdmVyLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBtZWFucyB0aGUgdXN1YWwgc3lzZnMgYmluZGluZyB3b24ndCBldmVuIHdvcmsuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiB0aGUgUEhZIGRldmljZSBjb3JlIChgcGh5X2RldmljZS5jYCkgd2hlcmUgbmV3IGBub3RpZnlfcGh5X2F0dGFjaGAgYW5kIGBub3RpZnlfcGh5X2RldGFjaGAgY2FsbGJhY2tzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgTURJTyBidXMgaW50ZXJmYWNlLiAgSG93ZXZlciwgYW5kIHRoaXMgaXMgY3J1Y2lhbCwgaW4gKmV2ZXJ5KiBzdGFuZGFyZCBuZXR3b3JrIGRyaXZlciBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCAobGlrZSBRRU1VIG9yIEdDRSksIHRoZXNlIGNhbGxiYWNrcyBhcmUgbmV2ZXIgaW1wbGVtZW50ZWQuIFRoZSBjaGVja3MgdXNpbmcgdGhvc2UgY2FsbGJhY2tzIGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoX2ludGVybmFsYCBlZmZlY3RpdmVseSBiZWNvbWUgbm8tb3BzLiBGb3IgYW55IHN0YW5kYXJkIE1ESU8gYnVzLCB0aG9zZSBwb2ludGVycyBhcmUgTlVMTCBhbmQgdGhlIGNvbmRpdGlvbnMgYGlmIChwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9hdHRhY2gpYCBhbmQgYGlmIChub3RpZnlfYnVzIFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2gpYCBhcmUgc2ltcGx5IGJ5cGFzc2VkLiBUaGUgZXJyb3IgcGF0aCB0d2Vha3MgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCByZWRpcmVjdCB0byBgcGh5X2RldGFjaF9pbnRlcm5hbGAgd2l0aCBgbm90aWZ5X2J1c2Agc2V0IHRvIGZhbHNlLCB3aGljaCBmdXJ0aGVyIGVuc3VyZXMgdGhlc2UgY2FsbGJhY2tzIGFyZSBza2lwcGVkLCBzaW5jZSB0aGUgYGJ1cy1cdTAwM2Vub3RpZnlfcGh5X2RldGFjaGAgaXMgTlVMTCwgd2hpY2ggbWVhbnMgYG5vdGlmeV9idXNgIGlzIGFsd2F5cyBmYWxzZS4gVGhlIG9ubHkgZHJpdmVyIHRoYXQgYWN0dWFsbHkgKnVzZXMqIHRoZXNlIG5ldyBjYWxsYmFja3MgaXMgdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIuXG5cbkdpdmVuIHRoYXQgdGhpcyBSZWFsdGVrIE1ESU8gYnVzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgUlRMODM4eC9SVEw5MzB4IHN3aXRjaCBTb0NzLCBhbmQgdGhlc2UgYXJlIHNwZWNpYWxpemVkIE1JUFMtYmFzZWQgaGFyZHdhcmUgY29tcG9uZW50cywgdGhleSBhcmVuJ3QgZW11bGF0ZWQgaW4gY29tbW9uIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiAgTW9yZW92ZXIsIHRoZSBkcml2ZXIncyBzdXBwcmVzc2lvbiBvZiBzeXNmcyBiaW5kaW5nIGNvbmZpcm1zIHRoYXQgaXQncyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggc3BlY2lmaWMgUmVhbHRlayBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgd2hpY2gsIGFnYWluLCBleGNsdWRlcyBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhlIGNoYW5nZXMgYXJlIGlzb2xhdGVkIHRvIGEgcGxhdGZvcm0tc3BlY2lmaWMgZHJpdmVyIChSZWFsdGVrIE90dG8gc3dpdGNoKSBhbmQgaW50cm9kdWNlIG5vLW9wIGJlaGF2aW9ycyBpbiBnZW5lcmFsLCB0aGVyZSdzIG5vIHJlYXNvbiB0byBjb25zaWRlciB0aGlzIHBhdGNoIHNlcmllcyBmdXp6YWJsZSBpbiBhbnkgc3RhbmRhcmQgc2V0dGluZy4gIFRoZSBtb2RpZmljYXRpb25zIGluIHRoZSBQSFkgY29yZSBhcmUgcGFzc2l2ZSB1bmxlc3MgdGhlIFJlYWx0ZWsgTURJTyBkcml2ZXIgaXMgcHJlc2VudCwgd2hpY2ggaXMgYSB2ZXJ5IHNwZWNpZmljIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQxNDksIk91dHB1dFRva2VucyI6MTkxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMTo1NTo1Ni42MjMyMjY0MDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBSVEw4MzgwL1JUTDgzOTAgc3VwcG9ydCBhbmQgTURJTyBwb2xsaW5nIGhhbmRsaW5nIHRvIHRoZSBSZWFsdGVrIE90dG8gTURJTyBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykgYWxvbmcgd2l0aCBoZWxwZXIgbm90aWZpY2F0aW9uIGNhbGxiYWNrcyBpbiB0aGUgY29yZSBQSFkgZGV2aWNlIGxheWVyIChkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jKS4gVGhlIGRyaXZlciBpcyBhbiBPRi1tYXRjaGVkIHBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGUgY29yZSBQSFkgYWRkaXRpb25zIGFyZSBuby1vcCBob29rcyB1bmxlc3MgdGhlIHVuZGVybHlpbmcgTURJTyBidXMgZHJpdmVyIGltcGxlbWVudHMgdGhlIGNhbGxiYWNrcywgd2hpY2ggb25seSB0aGlzIHVucmVhY2hhYmxlIGRyaXZlciBkb2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgUlRMODM4MC9SVEw4MzkwIHN1cHBvcnQgYW5kIE1ESU8gcG9sbGluZyBoYW5kbGluZyB0byB0aGUgUmVhbHRlayBPdHRvIE1ESU8gZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpIGFsb25nIHdpdGggaGVscGVyIG5vdGlmaWNhdGlvbiBjYWxsYmFja3MgaW4gdGhlIGNvcmUgUEhZIGRldmljZSBsYXllciAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYykuIFRoZSBkcml2ZXIgaXMgYW4gT0YtbWF0Y2hlZCBwbGF0Zm9ybSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIGNvcmUgUEhZIGFkZGl0aW9ucyBhcmUgbm8tb3AgaG9va3MgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIE1ESU8gYnVzIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBjYWxsYmFja3MsIHdoaWNoIG9ubHkgdGhpcyB1bnJlYWNoYWJsZSBkcml2ZXIgZG9lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIxOjU1OjU2LjYyMzI1NDM0MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqh4cm[1] Phase: Running StartedAt: 2026-08-31 21:56:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqh4cm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 21:56:07 +0000 UTC FinishedAt: 2026-08-31 21:56:13 +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,}