Name: series-workflowmqmq9 Phase: Succeeded StartedAt: 2026-09-02 21:43:24 +0000 UTC FinishedAt: 2026-09-02 23:39:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[0] Phase: Succeeded StartedAt: 2026-09-02 21:43:24 +0000 UTC FinishedAt: 2026-09-02 21:59:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 21:43:24 +0000 UTC FinishedAt: 2026-09-02 21:59:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3ba13f5e7180c034b0a1ef7e052fb780856b134e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "PHYLINK", "USB_LAN78XX", "USB_NET_AX8817X", "NET_DSA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3ba13f5e7180c034b0a1ef7e052fb780856b134e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "PHYLINK", "USB_LAN78XX", "USB_NET_AX8817X", "NET_DSA" ], "series_id": "015e48f6-eb4f-482f-a7aa-32fd5d59fe00" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_attach_direct", "phy_detach", "phylink_connect_phy", "phylink_disconnect_phy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtORVRfRFNBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gdGhlIFBIWSBhbmQgcGh5bGluayBzdWJzeXN0ZW1zLiBTcGVjaWZpY2FsbHksIGl0IHJlc3RvcmVzIHRoZSBQSFkgSVJRIGNvbmZpZ3VyYXRpb24gdXBvbiBkZXRhY2htZW50L2Vycm9yIGZvciBnZW5lcmljIFBIWSBkcml2ZXJzIGFuZCBlbnN1cmVzIHRoYXQgcGh5bGluayBzdGF0ZSBpcyBwcm9wZXJseSBjbGVhcmVkIGlmIHBoeSBicmluZ3VwIGZhaWxzLlxuXG5UaGVzZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBrZXJuZWwtaW50ZXJuYWwgcG9pbnRlcnMsIGJvb2xlYW4gc3RhdGUgZmxhZ3MsIGFuZCBtdXRleCBsb2NraW5nLiBUaGVyZSBhcmUgbm8gYWxsb2NhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBkYXRhLCBhbmQgbm8gZGF0YSB0cmFuc2ZlcnJlZCB0byB1c2VyIHNwYWNlIChubyBjb3B5X3RvX3VzZXIsIG5ldGxpbmsgbWVzc2FnZXMsIGlvY3RscywgZXRjLikuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyBsb2NraW5nIG9yIHVzZS1hZnRlci1mcmVlL05VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGRldGVjdGVkIGJ5IExPQ0tERVAgb3IgS0FTQU4sIG5vdCBLTVNBTi4gSGVuY2UsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBlcnJvciB1bndpbmRpbmcgaW4gUEhZTElCIGFuZCBQSFlMSU5LIHN1YnN5c3RlbXM6IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgc3RhdGUgdmlhIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IHdoZW4gcGh5bGlua19icmluZ3VwX3BoeSBmYWlscyBpbiBwaHlsaW5rLmMuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gRXRoZXJuZXQgUEhZIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMWFkY2QzY2MwMzc1NzlkZDVlNzExMjU1MmU1ODA0ZjBmNjkxYjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uMjBmYzI5MzU1ZjYwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzM0LDYgJiM0MzsxNzM0LDE3IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbiB9XG4gXG4mIzQzOy8qIFVuZG8gdGhlIFBIWV9QT0xMIHRoYXQgcGh5X3Byb2JlKCkgc2V0cyB3aGVuIGEgZHJpdmVyIHdpdGhvdXRcbiYjNDM7ICogaW50ZXJydXB0IGNhbGxiYWNrcyBiaW5kcy4gVGhlIGJpbmQgY3ljbGUgbmV2ZXIgd3JpdGVzIGJ1cy1cdTAwM2VpcnFbXSxcbiYjNDM7ICogc28gdGhlIHRhYmxlIHN0aWxsIGhvbGRzIHRoZSBwcmUtYmluZCB2YWx1ZTsgYW55dGhpbmcgZWxzZSB0aGUgUEhZXG4mIzQzOyAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2VpcnEgPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlaXJxW3BoeWRldi1cdTAwM2VtZGlvLmFkZHJdO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbkBAIC0xODk2LDYgJiM0MzsxOTA3LDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbiBcdG1vZHVsZV9wdXQoZC1cdTAwM2Vkcml2ZXItXHUwMDNlb3duZXIpO1xuJiM0MztcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdGQtXHUwMDNlZHJpdmVyID0gTlVMTDtcbiBlcnJvcl9wdXRfZGV2aWNlOlxuQEAgLTE5NjUsNiAmIzQzOzE5NzcsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuIFx0ICovXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbiYjNDM7XHRcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4gXHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNWI4ZTk1NjkwMmZiNS4uYTU1ZTRhNjQwMjhmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbiYjNDM7LyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtXHUwMDNlcGh5ZGV2X211dGV4LiAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4mIzQzO3tcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuJiM0MztcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4mIzQzO1x0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiAmIzQzOzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuIFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbiBcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4mIzQzO1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMzQ3LDE1ICYjNDM7MjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXHRwaHkgPSBwbC1cdTAwM2VwaHlkZXY7XG4tXHRpZiAocGh5KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi1cdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbi1cdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHR9XG4mIzQzO1x0aWYgKHBoeSlcbiYjNDM7XHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXG4gXHRpZiAocGh5KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BIWUxJTksmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O05FVF9EU0EmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfZGV0YWNoJiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19kaXNjb25uZWN0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBlcnJvciB1bndpbmRpbmcgaW4gUEhZTElCIGFuZCBQSFlMSU5LIHN1YnN5c3RlbXM6IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgc3RhdGUgdmlhIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IHdoZW4gcGh5bGlua19icmluZ3VwX3BoeSBmYWlscyBpbiBwaHlsaW5rLmMuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gRXRoZXJuZXQgUEhZIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwMWFkY2QzY2MwMzc1NzlkZDVlNzExMjU1MmU1ODA0ZjBmNjkxYjU5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLjIwZmMyOTM1NWY2MGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTczNCw2ICYjNDM7MTczNCwxNyBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwogfQogCiYjNDM7LyogVW5kbyB0aGUgUEhZX1BPTEwgdGhhdCBwaHlfcHJvYmUoKSBzZXRzIHdoZW4gYSBkcml2ZXIgd2l0aG91dAomIzQzOyAqIGludGVycnVwdCBjYWxsYmFja3MgYmluZHMuIFRoZSBiaW5kIGN5Y2xlIG5ldmVyIHdyaXRlcyBidXMtJmd0O2lycVtdLAomIzQzOyAqIHNvIHRoZSB0YWJsZSBzdGlsbCBob2xkcyB0aGUgcHJlLWJpbmQgdmFsdWU7IGFueXRoaW5nIGVsc2UgdGhlIFBIWQomIzQzOyAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7aXJxID09IFBIWV9QT0xMKQomIzQzOwkJcGh5ZGV2LSZndDtpcnEgPSBwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtpcnFbcGh5ZGV2LSZndDttZGlvLmFkZHJdOwomIzQzO30KJiM0MzsKIC8qKgogICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlcgogICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoCkBAIC0xODk2LDYgJiM0MzsxOTA3LDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAKIGVycm9yX21vZHVsZV9wdXQ6CiAJbW9kdWxlX3B1dChkLSZndDtkcml2ZXItJmd0O293bmVyKTsKJiM0MzsJcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpOwogCXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbiA9IDA7CiAJZC0mZ3Q7ZHJpdmVyID0gTlVMTDsKIGVycm9yX3B1dF9kZXZpY2U6CkBAIC0xOTY1LDYgJiM0MzsxOTc3LDcgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkCiAJICovCiAJaWYgKHBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbikgewomIzQzOwkJcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpOwogCQlkZXZpY2VfcmVsZWFzZV9kcml2ZXIoJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2KTsKIAkJcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuID0gMDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCA1YjhlOTU2OTAyZmI1Li5hNTVlNGE2NDAyOGZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKQEAgLTIwODMsNiAmIzQzOzIwODMsMTggQEAgc3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJcmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpOwogfQogCiYjNDM7LyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtJmd0O3BoeWRldl9tdXRleC4gKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7CiYjNDM7CXBsLSZndDtwaHlkZXYgPSBOVUxMOwomIzQzOwlwbC0mZ3Q7cGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTsKJiM0MzsJcGwtJmd0O21hY190eF9jbGtfc3RvcCA9IGZhbHNlOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwaHktJmd0O2xvY2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJCQkgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKQEAgLTIxOTcsNiAmIzQzOzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAlpZiAocmV0ID09IDAgJmFtcDsmYW1wOyBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpCiAJCXBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpOwogCiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKJiM0MzsJCXBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yMzQ3LDE1ICYjNDM7MjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpCiAKIAltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiAJcGh5ID0gcGwtJmd0O3BoeWRldjsKLQlpZiAocGh5KSB7Ci0JCW11dGV4X2xvY2soJmFtcDtwaHktJmd0O2xvY2spOwotCQltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKLQkJcGwtJmd0O3BoeWRldiA9IE5VTEw7Ci0JCXBsLSZndDtwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlOwotCQlwbC0mZ3Q7bWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7Ci0JCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7Ci0JCW11dGV4X3VubG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7Ci0JfQomIzQzOwlpZiAocGh5KQomIzQzOwkJcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiAKIAlpZiAocGh5KSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgdGhpcyBwYXRjaCBmb3IgZnV6emluZyBvcHBvcnR1bml0aWVzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBmdW5jdGlvbmFsIGNoYW5nZXMgYXJlIGJlaW5nIGludHJvZHVjZWQgYW5kIHdoZXJlIHRoZXkgYXJlIGhhcHBlbmluZy4gVGhlbiwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFuZCB0YXJnZXQgc3ltYm9scyBmb3IgZWZmZWN0aXZlIGZ1enppbmcuCgpMb29raW5nIGF0IHRoZSBwYXRjaCBpdHNlbGYsIGl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBTcGVjaWZpY2FsbHksIEkgc2VlOgoKKiAgIEluIGBwaHlfZGV2aWNlLmNgLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAuIEl0IHNlZW1zIHRvIGJlIHJlc3RvcmluZyB0aGUgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gKGBwaHlkZXYtJmd0O2lycWApIHVuZGVyIHNwZWNpZmljIGVycm9yIGNvbmRpdGlvbnMgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgYHBoeV9kZXRhY2hgLiBUaGlzIGlzIGEgY2FuZGlkYXRlLCBidXQgdGhlIGNvbmRpdGlvbnMgYXJlIGEgYml0IHNwZWNpZmljLgoqICAgSW4gYHBoeWxpbmsuY2AsIHdlJiMzOTt2ZSBnb3QgYSBuZXcgaGVscGVyIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgZXh0cmFjdGVkIGZyb20gYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLiBBbmQsIHRoaXMgaGVscGVyIGlzIHVzZWQgZm9yIGVycm9yIGhhbmRsaW5nIGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YC4gVGhpcyBzZWVtcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IGludm9sdmVzIGNsZWFyaW5nIHRoZSBwaHlkZXYsIGFuZCBlcnJvciBjb25kaXRpb25zIGFyZSBwcmltZSBmdXp6aW5nIHRhcmdldHMuCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2UgUEhZIGRldmljZXMgYW5kIHBoeWxpbmsgc3RydWN0dXJlcyBjYW4gYmUgbWFuaXB1bGF0ZWQsIHJlYWNoZWQsIG9yIHRyaWdnZXJlZCBmcm9tIHVzZXIgc3BhY2Ugb3IgdGhyb3VnaCBuZXR3b3JrIGludGVyYWN0aW9ucywgb3IgaWYgdGhleSBhcmUgcHVyZWx5IGludGVybmFsIGtlcm5lbCBjb21wb25lbnRzLiBDYW4gSSB0cmlnZ2VyIHRoZXNlIGNvZGUgcGF0aHMgdGhyb3VnaCBuZXR3b3JrIG5ldGRldmljZXMsIHZpcnR1YWwgZGV2aWNlcywgb3Igb3RoZXIgdXNlci1zcGFjZSBtZWNoYW5pc21zPyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZXNlIG1vZHVsZXMgYXJlIHVzZWQuCgpTbywgbGV0IG1lIGNoZWNrIHRoZSBgS2NvbmZpZ2AgaW4gYGRyaXZlcnMvbmV0L3BoeWAgdG8gZ2V0IGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCB0byByZWFjaCB0aGVzZSBwYXJ0cyBvZiB0aGUgY29kZS4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsZXJzIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgZWFzeSB3YXkgdG8gcmVhY2ggdGhlbS4gVGhpcyBpcyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdG8gY29uc3RydWN0IGEgZ29vZCBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai1cXCRcXChDT05GSUdfLipQSFkuKlxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE2PWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICYjNDM7PSBvcGVuX2FsbGlhbmNlX2hlbHBlcnMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE3LVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19QSFlMSUIpXHRcdCYjNDM7PSBtZGlvX2J1cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BIWUxJTkspXHRcdCYjNDM7PSBwaHlsaW5rLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbGlicGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19kZXZyZXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19QSFlfUEFDS0FHRSlcdCYjNDM7PSBwaHlfcGFja2FnZS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMjMtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORykgJiM0Mzs9IG1paV90aW1lc3RhbXBlci5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMjUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTI4PW9iai15XHRcdFx0XHQmIzQzOz0gJChzZnAtb2JqLXkpICQoc2ZwLW9iai1tKVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTI5LVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19BRElOX1BIWSlcdFx0JiM0Mzs9IGFkaW4ub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19BRElOMTEwMF9QSFkpXHQmIzQzOz0gYWRpbjExMDAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19BRElOMTE0MF9QSFkpXHQmIzQzOz0gYWRpbjExNDAtcGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfQUlSX0FOODgwMV9QSFkpXHQmIzQzOz0gYWlyX2FuODgwMS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0FJUl9FTjg4MTFIX1BIWSkgICAmIzQzOz0gYWlyX2VuODgxMWgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19BSVJfTkVUX1BIWUxJQilcdCYjNDM7PSBhaXJfcGh5X2xpYi5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FNRF9QSFkpXHRcdCYjNDM7PSBhbWQub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19BTUNDX1FUMjAyNV9QSFkpXHQmIzQzOz0gcXQyMDI1Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQVFVQU5USUFfUEhZKVx0JiM0Mzs9IGFxdWFudGlhL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19BUzIxWFhYX1BIWSlcdCYjNDM7PSBhczIxeHh4Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS00MC1pZmRlZiBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0MTogIG9iai0kKENPTkZJR19BWDg4Nzk2Ql9QSFkpXHQmIzQzOz0gYXg4ODc5NmJfcnVzdC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNDItZWxzZVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQzOiAgb2JqLSQoQ09ORklHX0FYODg3OTZCX1BIWSlcdCYjNDM7PSBheDg4Nzk2Yi5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNDQtZW5kaWZcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQkNNNTQxNDBfUEhZKVx0JiM0Mzs9IGJjbTU0MTQwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfQkNNNjNYWF9QSFkpXHQmIzQzOz0gYmNtNjN4eC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDc6b2JqLSQoQ09ORklHX0JDTTdYWFhfUEhZKVx0JiM0Mzs9IGJjbTd4eHgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19CQ004NDg4MV9QSFkpXHQmIzQzOz0gYmNtODQ4ODEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19CQ004N1hYX1BIWSlcdCYjNDM7PSBiY204N3h4Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfQkNNX0NZR05VU19QSFkpXHQmIzQzOz0gYmNtLWN5Z251cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZTElCKVx0JiM0Mzs9IGJjbS1waHktbGliLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfQkNNX05FVF9QSFlQVFApXHQmIzQzOz0gYmNtLXBoeS1wdHAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19CUk9BRENPTV9QSFkpXHQmIzQzOz0gYnJvYWRjb20ub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19DSUNBREFfUEhZKVx0JiM0Mzs9IGNpY2FkYS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX0NPUlRJTkFfUEhZKVx0JiM0Mzs9IGNvcnRpbmEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU2Om9iai0kKENPTkZJR19EQVA4MjExUl9QSFkpXHQmIzQzOz0gZGFwODIxMXIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU3Om9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcdCYjNDM7PSBkYXZpY29tLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQmIzQzOz0gZHA4MzY0MC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVx0JiM0Mzs9IGRwODM4MjIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcdCYjNDM7PSBkcDgzODQ4Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfRFA4Mzg2N19QSFkpXHQmIzQzOz0gZHA4Mzg2Ny5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjI6b2JqLSQoQ09ORklHX0RQODM4NjlfUEhZKVx0JiM0Mzs9IGRwODM4Njkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19EUDgzVEM4MTFfUEhZKVx0JiM0Mzs9IGRwODN0YzgxMS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0RQODNURDUxMF9QSFkpXHQmIzQzOz0gZHA4M3RkNTEwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2NTpvYmotJChDT05GSUdfRFA4M1RHNzIwX1BIWSlcdCYjNDM7PSBkcDgzdGc3MjAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19GSVhFRF9QSFkpXHRcdCYjNDM7PSBmaXhlZF9waHkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY3Om9iai0kKENPTkZJR19JQ1BMVVNfUEhZKVx0JiM0Mzs9IGljcGx1cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Njg6b2JqLSQoQ09ORklHX0lOVEVMX1hXQVlfUEhZKVx0JiM0Mzs9IGludGVsLXh3YXkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY5Om9iai0kKENPTkZJR19MU0lfRVQxMDExQ19QSFkpXHQmIzQzOz0gZXQxMDExYy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzA6b2JqLSQoQ09ORklHX0xYVF9QSFkpXHRcdCYjNDM7PSBseHQub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjcxOm9iai0kKENPTkZJR19NQVJWRUxMXzEwR19QSFkpXHQmIzQzOz0gbWFydmVsbDEwZy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzI6b2JqLSQoQ09ORklHX01BUlZFTExfUEhZKVx0JiM0Mzs9IG1hcnZlbGwub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjczOm9iai0kKENPTkZJR19NQVJWRUxMXzg4UTJYWFhfUEhZKVx0JiM0Mzs9IG1hcnZlbGwtODhxMnh4eC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzQ6b2JqLSQoQ09ORklHX01BUlZFTExfODhYMjIyMl9QSFkpXHQmIzQzOz0gbWFydmVsbC04OHgyMjIyLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3NTpvYmotJChDT05GSUdfTUFYTElORUFSX0dQSFkpXHQmIzQzOz0gbXhsLWdweS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzY6b2JqLSQoQ09ORklHX01BWExJTkVBUl84NjExMF9QSFkpXHQmIzQzOz0gbXhsLTg2MTEwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS03Ny1vYmoteVx0XHRcdFx0JiM0Mzs9IG1lZGlhdGVrL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjc4Om9iai0kKENPTkZJR19NRVNPTl9HWExfUEhZKVx0JiM0Mzs9IG1lc29uLWd4bC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX01JQ1JFTF9QSFkpXHQmIzQzOz0gbWljcmVsLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MDpvYmotJChDT05GSUdfTUlDUk9DSElQX1BIWSlcdCYjNDM7PSBtaWNyb2NoaXAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19NSUNST0NISVBfUEhZX1JEU19QVFApXHQmIzQzOz0gbWljcm9jaGlwX3Jkc19wdHAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFfUEhZKVx0JiM0Mzs9IG1pY3JvY2hpcF90MS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMVNfUEhZKSAmIzQzOz0gbWljcm9jaGlwX3Qxcy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODQ6b2JqLSQoQ09ORklHX01JQ1JPU0VNSV9QSFkpXHQmIzQzOz0gbXNjYy9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4NTpvYmotJChDT05GSUdfTU9UT1JDT01NX1BIWSlcdCYjNDM7PSBtb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg2Om9iai0kKENPTkZJR19OQVRJT05BTF9QSFkpXHQmIzQzOz0gbmF0aW9uYWwub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg3Om9iai0kKENPTkZJR19OQ04yNjAwMF9QSFkpXHQmIzQzOz0gbmNuMjYwMDAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg4LW54cC1jNDUtdGphLW9ianNcdFx0JiM0Mzs9IG54cC1jNDUtdGphMTF4eC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTkxPWVuZGlmXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTI6b2JqLSQoQ09ORklHX05YUF9DNDVfVEpBMTFYWF9QSFkpXHQmIzQzOz0gbnhwLWM0NS10amEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjkzOm9iai0kKENPTkZJR19OWFBfQ0JUWF9QSFkpXHQmIzQzOz0gbnhwLWNidHgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk0Om9iai0kKENPTkZJR19OWFBfVEpBMTFYWF9QSFkpXHQmIzQzOz0gbnhwLXRqYTExeHgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk1LW9iai15XHRcdFx0XHQmIzQzOz0gcWNvbS9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5NjpvYmotJChDT05GSUdfUVNFTUlfUEhZKVx0XHQmIzQzOz0gcXNlbWkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk3Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcdCYjNDM7PSByZWFsdGVrL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcdCYjNDM7PSB1UEQ2MDYyMC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTk6b2JqLSQoQ09ORklHX1JPQ0tDSElQX1BIWSlcdCYjNDM7PSByb2NrY2hpcC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTAwOm9iai0kKENPTkZJR19TTVNDX1BIWSlcdFx0JiM0Mzs9IHNtc2Mub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTEwMS1vYmotJChDT05GSUdfU1RFMTBYUClcdFx0JiM0Mzs9IHN0ZTEwWHAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjEwMjpvYmotJChDT05GSUdfVEVSQU5FVElDU19QSFkpXHQmIzQzOz0gdGVyYW5ldGljcy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTAzOm9iai0kKENPTkZJR19WSVRFU1NFX1BIWSlcdCYjNDM7PSB2aXRlc3NlLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xMDQtb2JqLSQoQ09ORklHX1hJTElOWF9HTUlJMlJHTUlJKSAmIzQzOz0geGlsaW54X2dtaWkycmdtaWkub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9NYWtlZmlsZT01PWVuZGlmXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQVFVQU5USUFfUEhZKVx0JiM0Mzs9IGFxdWFudGlhLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTUVESUFURUtfMlA1R0VfUEhZKVx0JiM0Mzs9IG10ay0ycDVnZS5vXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTUVESUFURUtfRkVfU09DX1BIWSlcdCYjNDM7PSBtdGstZmUtc29jLm9cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NRURJQVRFS19HRV9QSFkpXHRcdCYjNDM7PSBtdGstZ2Uub1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01FRElBVEVLX0dFX1NPQ19QSFkpXHQmIzQzOz0gbXRrLWdlLXNvYy5vXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVRLX05FVF9QSFlMSUIpXHRcdCYjNDM7PSBtdGstcGh5LWxpYi5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01JQ1JPU0VNSV9QSFkpIDo9IG1zY2Mub1xuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGUtNi1tc2NjLW9ianMgOj0gbXNjY19tYWluLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1FDT01fTkVUX1BIWUxJQilcdCYjNDM7PSBxY29tLXBoeS1saWIub1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQVQ4MDNYX1BIWSlcdCYjNDM7PSBhdDgwM3gub1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGU6NDpvYmotJChDT05GSUdfUUNBODNYWF9QSFkpXHQmIzQzOz0gcWNhODN4eC5vXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19RQ0E4MDhYX1BIWSlcdCYjNDM7PSBxY2E4MDh4Lm9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1FDQTgwN1hfUEhZKVx0JiM0Mzs9IHFjYTgwN3gub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlPTM9cmVhbHRlay0kKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgJiM0Mzs9IHJlYWx0ZWtfaHdtb24ub1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfUkVBTFRFS19QSFkpXHQmIzQzOz0gcmVhbHRlay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE3MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgUEhZIENvbm5lY3Rpdml0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgUEhZIGFuZCBwaHlsaW5rIHNpdHVhdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgYHBoeV9kZXZpY2UuY2AgZ2V0cyBjb21waWxlZCBpbnRvIGBsaWJwaHkub2AgaWYgYENPTkZJR19QSFlMSUJgIGlzIGVuYWJsZWQsIGFuZCBgcGh5bGluay5jYCBjb21waWxlcyBpbnRvIGBwaHlsaW5rLm9gIGlmIGBDT05GSUdfUEhZTElOS2AgaXMgZW5hYmxlZC4gVGhhdCBnaXZlcyBtZSBhIGdlbmVyYWwgaWRlYSBvZiB3aGVyZSB0aGVzZSB0d28gcGllY2VzIGZpdCBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGFjdHVhbGx5ICp1c2VkKiBhY3Jvc3MgdGhlIGtlcm5lbC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHR5cGVzIG9mIGRyaXZlcnMgZGVwZW5kIG9uIHRoZW0uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHVzdWFsIHN1c3BlY3RzOiB2aXJ0dWFsIGRyaXZlcnMsIHRob3NlIHBlc2t5IFVTQiBFdGhlcm5ldCBkb25nbGVzLCBkdW1teSBNRElPIHNldHVwcywgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXJzLCBhbmQgeW91ciBydW4tb2YtdGhlLW1pbGwgc3RhbmRhcmQgbmV0d29yayBkcml2ZXJzLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIG1hcCBvZiB0aGUgZGVwZW5kZW5jeSBsYW5kc2NhcGUgaGVyZS4KClRvIGRvIHRoYXQsIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIHdoZXJlIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfY29ubmVjdGAsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfY3JlYXRlYCBhcmUgYWN0dWFsbHkgYmVpbmcgKmNhbGxlZCouIEdyZXBwaW5nIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgcmV2ZWFsIHRoZSBjb3JlIGRyaXZlcnMgdGhhdCBhcmUgdXNpbmcgcGh5bGluayBhbmQgcGh5X2RldmljZSBhbmQgcHJvdmlkZSBhIHN0cm9uZyBiYXNpcyBmb3IgbXkgYW5hbHlzaXMuIFRoYXQgc2hvdWxkIGdldCBtZSBzdGFydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHl8cGh5X2F0dGFjaF9kaXJlY3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS1saW5rLXRvcG9sb2d5LnJzdD04NT1UaGVzZSBmdW5jdGlvbiBhcmUgYWxyZWFkeSBob29rZWQgaW50byB0aGUgcGh5bGliIHN1YnN5c3RlbSwgc28gYWxsIFBIWXMgdGhhdFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS1saW5rLXRvcG9sb2d5LnJzdDo4NjphcmUgbGlua2VkIHRvIGEgbmV0X2RldmljZSB0aHJvdWdoIDpjOmZ1bmM6YHBoeV9hdHRhY2hfZGlyZWN0YCB3aWxsIGF1dG9tYXRpY2FsbHlcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHktbGluay10b3BvbG9neS5yc3QtODctam9pbiB0aGUgbmV0ZGV2JiMzOTtzIHRvcG9sb2d5LlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTY1LSAgIEZvciB0aGUgbW9zdCBwYXJ0LCBgYGZsYWdzYGAgY2FuIGJlIHplcm87IHRoZXNlIGZsYWdzIGFyZSBwYXNzZWQgdG9cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MTY2OiAgIHRoZSBwaHlfYXR0YWNoX2RpcmVjdCgpIGluc2lkZSB0aGlzIGZ1bmN0aW9uIGNhbGwgaWYgYSBQSFkgaXMgc3BlY2lmaWVkXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTE2Ny0gICBpbiB0aGUgRFQgbm9kZSBgYG5vZGVgYC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTkzMT1zdGF0aWMgaW50IHhnYmVfcGh5X2ZpbmRfcGh5X2RldmljZShzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4MzpcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KHBkYXRhLVx1MDAzZW5ldGRldiwgcGh5ZGV2LCBwaHlkZXYtXHUwMDNlZGV2X2ZsYWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODQtXHRcdFx0XHRQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4NjpcdFx0bmV0ZGV2X2VycihwZGF0YS1cdTAwM2VuZXRkZXYsIFwmIzM0O3BoeV9hdHRhY2hfZGlyZWN0IGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4Ny1cdFx0cGh5X2RldmljZV9yZW1vdmUocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTk4Mj1zdGF0aWMgaW50IG1hY2JfcGh5bGlua19jb25uZWN0KHN0cnVjdCBtYWNiICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk5OS1cdFx0LyogYXR0YWNoIHRoZSBtYWMgdG8gdGhlIHBoeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDAwOlx0XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGJwLVx1MDAzZXBoeWxpbmssIHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwMDEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTExNTk9aW50IGhuc19uaWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBobmFlX2hhbmRsZSAqaClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMtMTE4MC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmM6MTE4MTpcdFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QobmRldiwgcGh5X2RldiwgMCwgaC1cdTAwM2VwaHlfaWYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTExODItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMyMzM9c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY29ubmVjdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjQ2LVx0XHRcdC8qIGF0dGFjaCB0aGUgbWFjIHRvIHRoZSBwaHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjQ3Olx0XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoYWRhcHRlci1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyNDgtXHRcdH0gZWxzZSBpZiAoKChhZGFwdGVyLVx1MDAzZWNzci5pZF9yZXYgXHUwMDI2IElEX1JFVl9JRF9NQVNLXykgPT1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEyOTk9c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzNDk6XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzUwLVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jPTE0MDY9c3RhdGljIGludCB0bjQwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jLTE0MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jOjE0MTE6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaywgcHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz00ODg9c3RhdGljIGludCBuZ2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjUwNTpcdGVyciA9IHBoeWxpbmtfY29ubmVjdF9waHkod3gtXHUwMDNlcGh5bGluaywgd3gtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy01MDYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjMwMDpcdFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwaHlsaW5rLCB3eC1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0zMDEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyMjU9aW50IHBoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTIzMy1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTIzNDpcdHJjID0gcGh5X2F0dGFjaF9kaXJlY3QoZGV2LCBwaHlkZXYsIHBoeWRldi1cdTAwM2VkZXZfZmxhZ3MsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMzUtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzQyPXN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NDgtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NDk6ICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzUwLSAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2Mi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTc2MzppbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2NC1cdFx0ICAgICAgdTMyIGZsYWdzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkxOC19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5MTk6RVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoX2RpcmVjdCk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTI1LSAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTkyNjogKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjctICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjIxPXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzQtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMzU6XHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM2LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzgtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMzk6ICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQwLSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQzLSAqIENvbm5lY3QgQHBoeSB0byB0aGUgcGh5bGluayBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgQHBsIGJ5IGNhbGxpbmdcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI0NDogKiBwaHlfYXR0YWNoX2RpcmVjdCgpLiBDb25maWd1cmUgdGhlIEBwaHkgYWNjb3JkaW5nIHRvIHRoZSBNQUMgZHJpdmVyJiMzOTtzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNDUtICogY2FwYWJpbGl0aWVzLCBzdGFydCB0aGUgUEhZTElCIHN0YXRlIG1hY2hpbmUgYW5kIGVuYWJsZSBhbnkgaW50ZXJydXB0c1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1Mi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI1MzppbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3Mi19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNzM6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgxLSAqIENvbm5lY3QgdGhlIHBoeSBzcGVjaWZpZWQgaW4gdGhlIGRldmljZSBub2RlIEBkbiB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgyOiAqIHNwZWNpZmllZCBieSBAcGwuIEFjdGlvbnMgc3BlY2lmaWVkIGluIHBoeWxpbmtfY29ubmVjdF9waHkoKSB3aWxsIGJlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODMtICogcGVyZm9ybWVkLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMwNT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzOC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMzOTpcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KHBsLVx1MDAzZW5ldGRldiwgcGh5X2RldiwgZmxhZ3MsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDAtXHRcdFx0XHRwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTcwMz1zdGF0aWMgaW50IGF4ODg3NzJfaW5pdF9waHkoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzE0Olx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwcml2LVx1MDAzZXBoeWxpbmssIHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yODU4PXN0YXRpYyBpbnQgbGFuNzh4eF9waHlfaW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDEtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI5MDI6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGRldi1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTAzLVx0aWYgKHJldCkge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjE2OT1zdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2ZpbmRfbmV4dChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgcGh5X2RldmljZSAqcG9zKTtcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE3MDppbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE3MS1cdFx0ICAgICAgdTMyIGZsYWdzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03Mjc9Ym9vbCBwaHlsaW5rX2V4cGVjdHNfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjgtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3Mjk6aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKiwgc3RydWN0IHBoeV9kZXZpY2UgKik7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzAtaW50IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKiwgc3RydWN0IGRldmljZV9ub2RlICosIHUzMiBmbGFncyk7XG4tLVxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXG4tLVxubmV0L2RzYS91c2VyLmMtMjY1MC1cbm5ldC9kc2EvdXNlci5jOjI2NTE6XHRyZXR1cm4gcGh5bGlua19jb25uZWN0X3BoeShkcC1cdTAwM2VwbCwgdXNlcl9kZXYtXHUwMDNlcGh5ZGV2KTtcbm5ldC9kc2EvdXNlci5jLTI2NTItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTU5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5ldHdvcmsgRHJpdmVyIERlZXAgRGl2ZSoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSBzZWVpbmc6IGl0IGxvb2tzIGxpa2UgdGhlc2UgVVNCIG5ldHdvcmsgZHJpdmVycywgbGlrZSBgbGFuNzh4eC5jYCBhbmQgYGFzaXhfZGV2aWNlcy5jYCDigJMgdGhlIG9uZXMgdGhhdCB1c2UgY2hpcHMgbGlrZSB0aGUgQVg4ODc3MiDigJMgdGhleSYjMzk7cmUgbGV2ZXJhZ2luZyBgcGh5bGlua2AgYW5kIGBwaHlsaWJgLiBJbnRlcmVzdGluZy4gQW5kIG9mIGNvdXJzZSwgdGhlcmUmIzM5O3MgYWxsIHRoaXMgZW11bGF0aW9uIHN0dWZmIHdpdGggVVNCOiBVU0IgUmF3LCBzeXprYWxsZXIsIFVTQiBnYWRnZXQsIHZoY2ksIGFuZCB0aGUgd29ybGQgb2YgdXNiLWZ1enppbmcgaXMgYWx3YXlzIG91dCB0aGVyZS4gVGhlbiB3ZSBoYXZlIERTQSwgc3RhbmRhcmQgZXRoZXJuZXQgZHJpdmVycyBsaWtlIHRoZSBjYWRlbmNlIG1hY2Igb3IgdGhlIGUxMDAwIGZhbWlseSwgc3RtbWFjLCBldGMuLCBhbmQgdGhlIE1ESU8vUEhZIHN1YnN5c3RlbXMuIFJpZ2h0LCBnb3QgaXQuCgpOb3csIEkgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscy4gSSBzaG91bGQgZXhhbWluZSB0aGUgY29kZSB0aGF0JiMzOTtzIGJlZW4gcmVjZW50bHkgbW9kaWZpZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgcGh5X2RldmljZS5jYCDigJMgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGF0IDE3MzAtMTk4MCBsaW5lIHJhbmdlIOKAkyBhbmQgdGhlbiBkaXZlIGludG8gYHBoeWxpbmsuY2AsIGFyb3VuZCBsaW5lcyAyMDgwLTIzODAuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGVzZSBQSFkgc3Vic3lzdGVtcyB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTczMDpcdH1cbjE3MzE6XHRcbjE3MzI6XHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuMTczMzpcdHtcbjE3MzQ6XHRcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuMTczNTpcdH1cbjE3MzY6XHRcbjE3Mzc6XHQvKiBVbmRvIHRoZSBQSFlfUE9MTCB0aGF0IHBoeV9wcm9iZSgpIHNldHMgd2hlbiBhIGRyaXZlciB3aXRob3V0XG4xNzM4Olx0ICogaW50ZXJydXB0IGNhbGxiYWNrcyBiaW5kcy4gVGhlIGJpbmQgY3ljbGUgbmV2ZXIgd3JpdGVzIGJ1cy1cdTAwM2VpcnFbXSxcbjE3Mzk6XHQgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFlcbjE3NDA6XHQgKiBjYXJyaWVzIGRpZCBub3QgY29tZSBmcm9tIHRoZSBiaW5kIGFuZCBtdXN0IHN0YW5kLlxuMTc0MTpcdCAqL1xuMTc0MjpcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE3NDM6XHR7XG4xNzQ0Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbjE3NDU6XHRcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4xNzQ2Olx0fVxuMTc0NzpcdFxuMTc0ODpcdC8qKlxuMTc0OTpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTA6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTE6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzUyOlx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1MzpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU0Olx0ICpcbjE3NTU6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTY6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc1NzpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzU4Olx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc1OTpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYwOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2MTpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2MjpcdCAqL1xuMTc2MzpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuMTc2NDpcdFx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4xNzY1Olx0e1xuMTc2NjpcdFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbjE3Njc6XHRcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4xNzY4Olx0XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbjE3Njk6XHRcdGludCBlcnI7XG4xNzcwOlx0XG4xNzcxOlx0XHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXG4xNzcyOlx0XHQgKiB3aWxsIGhhdmUgYnVzLVx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcbjE3NzM6XHRcdCAqIG91ciBvd24gbW9kdWxlLVx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cbjE3NzQ6XHRcdCAqIHVubG9hZCBsYXRlciBvbi5cbjE3NzU6XHRcdCAqL1xuMTc3NjpcdFx0aWYgKGRldilcbjE3Nzc6XHRcdFx0bmRldl9vd25lciA9IGRldi1cdTAwM2VkZXYucGFyZW50LVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcjtcbjE3Nzg6XHRcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lciBcdTAwMjZcdTAwMjYgIXRyeV9tb2R1bGVfZ2V0KGJ1cy1cdTAwM2Vvd25lcikpIHtcbjE3Nzk6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O2ZhaWxlZCB0byBnZXQgdGhlIGJ1cyBtb2R1bGVcXG5cJiMzNDspO1xuMTc4MDpcdFx0XHRyZXR1cm4gLUVJTztcbjE3ODE6XHRcdH1cbjE3ODI6XHRcbjE3ODM6XHRcdGdldF9kZXZpY2UoZCk7XG4xNzg0Olx0XG4xNzg1Olx0XHQvKiBBc3N1bWUgdGhhdCBpZiB0aGVyZSBpcyBubyBkcml2ZXIsIHRoYXQgaXQgZG9lc24mIzM5O3RcbjE3ODY6XHRcdCAqIGV4aXN0LCBhbmQgd2Ugc2hvdWxkIHVzZSB0aGUgZ2VucGh5IGRyaXZlci5cbjE3ODc6XHRcdCAqL1xuMTc4ODpcdFx0aWYgKCFkLVx1MDAzZWRyaXZlcikge1xuMTc4OTpcdFx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjE3OTA6XHRcdFx0XHRkLVx1MDAzZWRyaXZlciA9IFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xuMTc5MTpcdFx0XHRlbHNlXG4xNzkyOlx0XHRcdFx0ZC1cdTAwM2Vkcml2ZXIgPSBcdTAwMjZnZW5waHlfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xuMTc5MzpcdFxuMTc5NDpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDE7XG4xNzk1Olx0XHR9XG4xNzk2Olx0XG4xNzk3Olx0XHRpZiAoIXRyeV9tb2R1bGVfZ2V0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKSkge1xuMTc5ODpcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCB0aGUgZGV2aWNlIGRyaXZlciBtb2R1bGVcXG5cJiMzNDspO1xuMTc5OTpcdFx0XHRlcnIgPSAtRUlPO1xuMTgwMDpcdFx0XHRnb3RvIGVycm9yX3B1dF9kZXZpY2U7XG4xODAxOlx0XHR9XG4xODAyOlx0XG4xODAzOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbjE4MDQ6XHRcdFx0ZXJyID0gZC1cdTAwM2Vkcml2ZXItXHUwMDNlcHJvYmUoZCk7XG4xODA1Olx0XHRcdGlmIChlcnIgXHUwMDNlPSAwKVxuMTgwNjpcdFx0XHRcdGVyciA9IGRldmljZV9iaW5kX2RyaXZlcihkKTtcbjE4MDc6XHRcbjE4MDg6XHRcdFx0aWYgKGVycilcbjE4MDk6XHRcdFx0XHRnb3RvIGVycm9yX21vZHVsZV9wdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3ODIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkFuYWx5emluZyBgcGh5X2F0dGFjaF9kaXJlY3RgIGFuZCBgcGh5X2RldGFjaGAqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgaXMgdG8gdW5kZXJzdGFuZCB0aGUgb3BlcmF0aW9uIG9mIHRoZXNlIHR3byBzcGVjaWZpYyBmdW5jdGlvbnM6IGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYC4gSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgY29kZWJhc2UsIG9yIGF0IGxlYXN0IHdpdGggdGhlIGdlbmVyYWwgYXJjaGl0ZWN0dXJlLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG51YW5jZXMgb2YgdGhlaXIgaW50ZXJhY3Rpb24uIEkgd2lsbCBub3cgY2FyZWZ1bGx5IHByb2NlZWQgdG8gZGlzc2VjdCB0aGUgc291cmNlIGNvZGUgYW5kIGRpc2Nlcm4gdGhlaXIgZnVuY3Rpb25hbGl0eS4gVGhpcyB3aWxsIGludm9sdmUgdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiBhdHRhY2hpbmcgYW5kIGRldGFjaGluZyBhIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRldmljZS4gSSBuZWVkIHRvIG9ic2VydmUgdGhlaXIgZW50cnkgcG9pbnRzIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSBjYWxscyBhcmUgbWFkZS4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRoZXkgbWFuaXB1bGF0ZSBhbmQgd2hhdCByZXNvdXJjZXMgdGhleSBhbGxvY2F0ZSBvciBkZWFsbG9jYXRlLiBJJiMzOTttIGV4cGVjdGluZyBzb21lIHN0YW5kYXJkIFBIWSBpbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gc3RlcHMsIGFuZCBJIGFtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBhbnkgcG90ZW50aWFsIHJlc291cmNlIGxvY2tpbmcgb3IgY29uY3VycmVuY3kgY29uc2lkZXJhdGlvbnMuIEluIHNob3J0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIGdyaXR0eSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDk1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4OTA6XHRcdHBoeV9yZXN1bWUocGh5ZGV2KTtcbjE4OTE6XHRcbjE4OTI6XHRcdC8qKlxuMTg5MzpcdFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XG4xODk0Olx0XHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXG4xODk1Olx0XHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxuMTg5NjpcdFx0ICovXG4xODk3Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50IFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZGV2LnBhcmVudCAhPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50KVxuMTg5ODpcdFx0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXHUwMDNlZGV2LnBhcmVudCwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuMTg5OTpcdFx0XHRcdFx0XHRcdCAgRExfRkxBR19QTV9SVU5USU1FIHwgRExfRkxBR19TVEFURUxFU1MpO1xuMTkwMDpcdFxuMTkwMTpcdFx0cmV0dXJuIGVycjtcbjE5MDI6XHRcbjE5MDM6XHRlcnJvcjpcbjE5MDQ6XHRcdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xuMTkwNTpcdFx0cGh5X2RldGFjaChwaHlkZXYpO1xuMTkwNjpcdFx0cmV0dXJuIGVycjtcbjE5MDc6XHRcbjE5MDg6XHRlcnJvcl9tb2R1bGVfcHV0OlxuMTkwOTpcdFx0bW9kdWxlX3B1dChkLVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcik7XG4xOTEwOlx0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4xOTExOlx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTEyOlx0XHRkLVx1MDAzZWRyaXZlciA9IE5VTEw7XG4xOTEzOlx0ZXJyb3JfcHV0X2RldmljZTpcbjE5MTQ6XHRcdHB1dF9kZXZpY2UoZCk7XG4xOTE1Olx0XHRpZiAobmRldl9vd25lciAhPSBidXMtXHUwMDNlb3duZXIpXG4xOTE2Olx0XHRcdG1vZHVsZV9wdXQoYnVzLVx1MDAzZW93bmVyKTtcbjE5MTc6XHRcdHJldHVybiBlcnI7XG4xOTE4Olx0fVxuMTkxOTpcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xuMTkyMDpcdFxuMTkyMTpcdC8qKlxuMTkyMjpcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4xOTIzOlx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4xOTI0Olx0ICpcbjE5MjU6XHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4xOTI2Olx0ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuMTkyNzpcdCAqL1xuMTkyODpcdHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTkyOTpcdHtcbjE5MzA6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2O1xuMTkzMTpcdFx0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XG4xOTMyOlx0XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuMTkzMzpcdFxuMTkzNDpcdFx0aWYgKHBoeWRldi1cdTAwM2VkZXZsaW5rKSB7XG4xOTM1Olx0XHRcdGRldmljZV9saW5rX2RlbChwaHlkZXYtXHUwMDNlZGV2bGluayk7XG4xOTM2Olx0XHRcdHBoeWRldi1cdTAwM2VkZXZsaW5rID0gTlVMTDtcbjE5Mzc6XHRcdH1cbjE5Mzg6XHRcbjE5Mzk6XHRcdGlmIChwaHlkZXYtXHUwMDNlc3lzZnNfbGlua3MpIHtcbjE5NDA6XHRcdFx0aWYgKGRldilcbjE5NDE6XHRcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwmIzM0O3BoeWRldlwmIzM0Oyk7XG4xOTQyOlx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLCBcJiMzNDthdHRhY2hlZF9kZXZcJiMzNDspO1xuMTk0MzpcdFx0fVxuMTk0NDpcdFxuMTk0NTpcdFx0aWYgKCFwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2KVxuMTk0NjpcdFx0XHRzeXNmc19yZW1vdmVfZmlsZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaixcbjE5NDc6XHRcdFx0XHRcdCAgXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XG4xOTQ4Olx0XG4xOTQ5Olx0XHRwaHlfc3VzcGVuZChwaHlkZXYpO1xuMTk1MDpcdFx0aWYgKGRldikge1xuMTk1MTpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbjE5NTI6XHRcbjE5NTM6XHRcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4xOTU0Olx0XHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcbjE5NTU6XHRcdFx0ICovXG4xOTU2Olx0XHRcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdik7XG4xOTU3Olx0XHRcdC8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi9cbjE5NTg6XHRcdFx0aWYgKGh3cHJvdiBcdTAwMjZcdTAwMjYgaHdwcm92LVx1MDAzZXBoeWRldiA9PSBwaHlkZXYpIHtcbjE5NTk6XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZWh3cHJvdiwgTlVMTCk7XG4xOTYwOlx0XHRcdFx0a2ZyZWVfcmN1KGh3cHJvdiwgcmN1X2hlYWQpO1xuMTk2MTpcdFx0XHR9XG4xOTYyOlx0XG4xOTYzOlx0XHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbjE5NjQ6XHRcdFx0cGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2RldiA9IE5VTEw7XG4xOTY1Olx0XHRcdHBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7XG4xOTY2Olx0XHR9XG4xOTY3Olx0XG4xOTY4Olx0XHRwaHlkZXYtXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gTlVMTDtcbjE5Njk6XHRcdHBoeWRldi1cdTAwM2VwaHlsaW5rID0gTlVMTDtcbjE5NzA6XHRcbjE5NzE6XHRcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxuMTk3MjpcdFx0XHRtb2R1bGVfcHV0KHBoeWRldi1cdTAwM2VtZGlvLmRldi5kcml2ZXItXHUwMDNlb3duZXIpO1xuMTk3MzpcdFxuMTk3NDpcdFx0LyogSWYgdGhlIGRldmljZSBoYWQgbm8gc3BlY2lmaWMgZHJpdmVyIGJlZm9yZSAoaS5lLiAtIGl0XG4xOTc1Olx0XHQgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2VcbjE5NzY6XHRcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUmIzM5O3MgYSBjaGFuY2UgYVxuMTk3NzpcdFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4xOTc4Olx0XHQgKi9cbjE5Nzk6XHRcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuMTk4MDpcdFx0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4xOTgxOlx0XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuMTk4MjpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTgzOlx0XHR9XG4xOTg0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDk0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgRGVlcCBpbnRvIFBoeWxpbmsuYyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUgbmV0d29yayBQSFkgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcGh5bGluay5jYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGxpbmVzIDIwODAgdG8gMjM4MC4gVGhhdCByYW5nZSB1c3VhbGx5IGVuY29tcGFzc2VzIHNvbWUgY29yZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgcGh5bGluayBhcmNoaXRlY3R1cmUsIHBlcmhhcHMgcmVsYXRlZCB0byBsaW5rIG1hbmFnZW1lbnQsIGRldmljZSBpbnRlcmFjdGlvbiwgb3IgY29uZmlndXJhdGlvbiBvZiB0aGUgUEhZIGl0c2VsZi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5LCBidXQgSSBzdXNwZWN0IHRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgY3JpdGljYWwgcGllY2VzIG9mIGNvZGUgSSBhbSBpbnZlc3RpZ2F0aW5nLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBudWFuY2VzIHRvIGZpbmQgbXkgaXNzdWUuIEkmIzM5O2xsIGFwcHJvYWNoIHRoaXMgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJiMzOTtsbCBuZWVkIHRvIHBhcnNlIHRoZSBpbnRlcmFjdGlvbnMgdG8gdHJ1bHkgaWRlbnRpZnkgd2hhdCBpcyBvY2N1cnJpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjE5MDpcdFx0XHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cdTAwM2VzdXBwb3J0ZWQsXG4yMTkxOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cdTAwM2VhZHZlcnRpc2luZyk7XG4yMTkyOlx0XG4yMTkzOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19tYW5hZ2VkX3BtKVxuMjE5NDpcdFx0XHRwaHktXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuMjE5NTpcdFxuMjE5NjpcdFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xuMjE5NzpcdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUocGh5KSBcdTAwM2UgMDtcbjIxOTg6XHRcbjIxOTk6XHRcdGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjIwMDpcdFx0XHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0JiMzOTtzXG4yMjAxOlx0XHRcdCAqIHJlY2VpdmUgY2xvY2suXG4yMjAyOlx0XHRcdCAqL1xuMjIwMzpcdFx0XHRyZXQgPSBwaHlfZWVlX3J4X2Nsb2NrX3N0b3AocGh5LFxuMjIwNDpcdFx0XHRcdFx0XHQgICAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWVlZV9yeF9jbGtfc3RvcF9lbmFibGUpO1xuMjIwNTpcdFx0XHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxuMjIwNjpcdFx0XHRcdHJldCA9IDA7XG4yMjA3Olx0XHR9XG4yMjA4Olx0XG4yMjA5Olx0XHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcbjIyMTA6XHRcdFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XG4yMjExOlx0XG4yMjEyOlx0XHRpZiAocmV0KSB7XG4yMjEzOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjIyMTQ6XHRcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4yMjE1Olx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNjpcdFx0fVxuMjIxNzpcdFxuMjIxODpcdFx0cmV0dXJuIHJldDtcbjIyMTk6XHR9XG4yMjIwOlx0XG4yMjIxOlx0c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuMjIyMjpcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4yMjIzOlx0e1xuMjIyNDpcdFx0dTMyIGZsYWdzID0gMDtcbjIyMjU6XHRcbjIyMjY6XHRcdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSlcbjIyMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yMjI4Olx0XG4yMjI5Olx0XHRpZiAocGwtXHUwMDNlcGh5ZGV2KVxuMjIzMDpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMjIzMTpcdFxuMjIzMjpcdFx0aWYgKHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfcmVxdWlyZXNfcnhjKVxuMjIzMzpcdFx0XHRmbGFncyB8PSBQSFlfRl9SWENfQUxXQVlTX09OO1xuMjIzNDpcdFxuMjIzNTpcdFx0cmV0dXJuIHBoeV9hdHRhY2hfZGlyZWN0KHBsLVx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcbjIyMzY6XHR9XG4yMjM3Olx0XG4yMjM4Olx0LyoqXG4yMjM5Olx0ICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuMjI0MDpcdCAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG4yMjQxOlx0ICogQHBoeTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXG4yMjQyOlx0ICpcbjIyNDM6XHQgKiBDb25uZWN0IEBwaHkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2Ugc3BlY2lmaWVkIGJ5IEBwbCBieSBjYWxsaW5nXG4yMjQ0Olx0ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlciYjMzk7c1xuMjI0NTpcdCAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcbjIyNDY6XHQgKiB0aGF0IHRoZSBQSFkgc3VwcG9ydHMuXG4yMjQ3Olx0ICpcbjIyNDg6XHQgKiBUaGlzIHVwZGF0ZXMgdGhlIHBoeWxpbmsmIzM5O3MgZXRodG9vbCBzdXBwb3J0ZWQgYW5kIGFkdmVydGlzaW5nIGxpbmsgbW9kZVxuMjI0OTpcdCAqIG1hc2tzLlxuMjI1MDpcdCAqXG4yMjUxOlx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJuby5cbjIyNTI6XHQgKi9cbjIyNTM6XHRpbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4yMjU0Olx0e1xuMjI1NTpcdFx0aW50IHJldDtcbjIyNTY6XHRcbjIyNTc6XHRcdC8qIFVzZSBQSFkgZGV2aWNlL2RyaXZlciBpbnRlcmZhY2UgKi9cbjIyNTg6XHRcdGlmIChwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfTkEpIHtcbjIyNTk6XHRcdFx0cGwtXHUwMDNlbGlua19pbnRlcmZhY2UgPSBwaHktXHUwMDNlaW50ZXJmYWNlO1xuMjI2MDpcdFx0XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UgPSBwbC1cdTAwM2VsaW5rX2ludGVyZmFjZTtcbjIyNjE6XHRcdH1cbjIyNjI6XHRcbjIyNjM6XHRcdHJldCA9IHBoeWxpbmtfYXR0YWNoX3BoeShwbCwgcGh5LCBwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSk7XG4yMjY0Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMjI2NTpcdFx0XHRyZXR1cm4gcmV0O1xuMjI2NjpcdFxuMjI2NzpcdFx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5LCBwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpO1xuMjI2ODpcdFx0aWYgKHJldClcbjIyNjk6XHRcdFx0cGh5X2RldGFjaChwaHkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTk0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgUEhZIExpbmsgQnJpbmd1cCBQcm9jZXNzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBwbC0mZ3Q7cGh5ZGV2YCB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCB3aXRoaW4gdGhlIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCBmdW5jdGlvbi4gSSByZWNhbGwgdGhhdCBpdCYjMzk7cyBiZWVuIHNldCBhdCBzb21lIHBvaW50LCBzbyBJJiMzOTtsbCBzdGFydCBieSByZXZpc2l0aW5nIHRoZSBmdW5jdGlvbiBpdHNlbGYuIFRpbWUgdG8gbWV0aWN1bG91c2x5IHRyYWNlIGJhY2sgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBwaW5wb2ludCB0aGUgZXhhY3QgbGluZSBvciBsaW5lcyB3aGVyZSBgcGwtJmd0O3BoeWRldmAgaXMgYXNzaWduZWQgaXRzIHZhbHVlIHdpdGhpbiBgcGh5bGlua19icmluZ3VwX3BoeWAuIEkmIzM5O2xsIGNhcmVmdWxseSByZS1leGFtaW5lIHRoZSBjb2RlLCBsaW5lIGJ5IGxpbmUsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVhcmxpZXIgcGFydHMgb2YgdGhlIGZ1bmN0aW9uIHRvIHNlZSB3aGVyZSB0aGlzIGNydWNpYWwgYXNzaWdubWVudCBoYXBwZW5zLiBUaGlzIHJlcXVpcmVzIGEgZm9jdXNlZCByZWFkIG9mIGBwaHlsaW5rX2JyaW5ndXBfcGh5YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTMwOlx0XHRwaHktXHUwMDNlcGh5bGluayA9IHBsO1xuMjEzMTpcdFx0cGh5LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IHBoeWxpbmtfcGh5X2NoYW5nZTtcbjIxMzI6XHRcbjIxMzM6XHRcdGlycV9zdHIgPSBwaHlfYXR0YWNoZWRfaW5mb19pcnEocGh5KTtcbjIxMzQ6XHRcdHBoeWxpbmtfaW5mbyhwbCxcbjIxMzU6XHRcdFx0ICAgICBcJiMzNDtQSFkgWyVzXSBkcml2ZXIgWyVzXSAoaXJxPSVzKVxcblwmIzM0OyxcbjIxMzY6XHRcdFx0ICAgICBkZXZfbmFtZShcdTAwMjZwaHktXHUwMDNlbWRpby5kZXYpLCBwaHktXHUwMDNlZHJ2LVx1MDAzZW5hbWUsIGlycV9zdHIpO1xuMjEzNzpcdFx0a2ZyZWUoaXJxX3N0cik7XG4yMTM4Olx0XG4yMTM5Olx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMTQwOlx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbjIxNDE6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuMjE0MjpcdFx0cGwtXHUwMDNlcGh5ZGV2ID0gcGh5O1xuMjE0MzpcdFx0cGwtXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZSA9IGludGVyZmFjZTtcbjIxNDQ6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5wYXVzZSA9IE1MT19QQVVTRV9OT05FO1xuMjE0NTpcdFx0cGwtXHUwMDNlcGh5X3N0YXRlLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcbjIxNDY6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbjIxNDc6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5yYXRlX21hdGNoaW5nID0gUkFURV9NQVRDSF9OT05FO1xuMjE0ODpcdFx0bGlua21vZGVfY29weShwbC1cdTAwM2VzdXBwb3J0ZWQsIHN1cHBvcnRlZCk7XG4yMTQ5Olx0XHRsaW5rbW9kZV9jb3B5KHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBjb25maWcuYWR2ZXJ0aXNpbmcpO1xuMjE1MDpcdFxuMjE1MTpcdFx0LyogUmVzdHJpY3QgdGhlIHBoeSBhZHZlcnRpc2VtZW50IGFjY29yZGluZyB0byB0aGUgTUFDIHN1cHBvcnQuICovXG4yMTUyOlx0XHRsaW5rbW9kZV9jb3B5KHBoeS1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcbjIxNTM6XHRcbjIxNTQ6XHRcdC8qIElmIHRoZSBNQUMgc3VwcG9ydHMgcGh5bGluayBtYW5hZ2VkIEVFRSwgcmVzdHJpY3QgdGhlIEVFRVxuMjE1NTpcdFx0ICogYWR2ZXJ0aXNlbWVudCBhY2NvcmRpbmcgdG8gdGhlIE1BQyYjMzk7cyBMUEkgY2FwYWJpbGl0aWVzLlxuMjE1NjpcdFx0ICovXG4yMTU3Olx0XHRpZiAocGwtXHUwMDNlbWFjX3N1cHBvcnRzX2VlZSkge1xuMjE1ODpcdFx0XHQvKiBJZiBFRUUgaXMgZW5hYmxlZCwgdGhlbiB3ZSBuZWVkIHRvIGNhbGwgcGh5X3N1cHBvcnRfZWVlKClcbjIxNTk6XHRcdFx0ICogdG8gZW5zdXJlIHRoYXQgdGhlIGFkdmVydGlzaW5nIG1hc2sgaXMgYXBwcm9wcmlhdGVseSBzZXQuXG4yMTYwOlx0XHRcdCAqIFRoaXMgYWxzbyBlbmFibGVzIEVFRSBhdCB0aGUgUEhZLlxuMjE2MTpcdFx0XHQgKi9cbjIxNjI6XHRcdFx0aWYgKHBsLVx1MDAzZWVlZV9jZmcuZWVlX2VuYWJsZWQpXG4yMTYzOlx0XHRcdFx0cGh5X3N1cHBvcnRfZWVlKHBoeSk7XG4yMTY0Olx0XG4yMTY1Olx0XHRcdHBoeS1cdTAwM2VlZWVfY2ZnLnR4X2xwaV9lbmFibGVkID0gcGwtXHUwMDNlZWVlX2NmZy50eF9scGlfZW5hYmxlZDtcbjIxNjY6XHRcdFx0cGh5LVx1MDAzZWVlZV9jZmcudHhfbHBpX3RpbWVyID0gcGwtXHUwMDNlZWVlX2NmZy50eF9scGlfdGltZXI7XG4yMTY3Olx0XG4yMTY4Olx0XHRcdC8qIENvbnZlcnQgdGhlIE1BQyYjMzk7cyBMUEkgY2FwYWJpbGl0aWVzIHRvIGxpbmttb2RlcyAqL1xuMjE2OTpcdFx0XHRsaW5rbW9kZV96ZXJvKHBsLVx1MDAzZXN1cHBvcnRlZF9scGkpO1xuMjE3MDpcdFx0XHRwaHlsaW5rX2NhcHNfdG9fbGlua21vZGVzKHBsLVx1MDAzZXN1cHBvcnRlZF9scGksXG4yMTcxOlx0XHRcdFx0XHRcdCAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMpO1xuMjE3MjpcdFxuMjE3MzpcdFx0XHQvKiBSZXN0cmljdCB0aGUgUEhZcyBFRUUgc3VwcG9ydC9hZHZlcnRpc2VtZW50IHRvIHRoZSBtb2Rlc1xuMjE3NDpcdFx0XHQgKiB0aGF0IHRoZSBNQUMgc3VwcG9ydHMuXG4yMTc1Olx0XHRcdCAqL1xuMjE3NjpcdFx0XHRsaW5rbW9kZV9hbmQocGh5LVx1MDAzZWFkdmVydGlzaW5nX2VlZSwgcGh5LVx1MDAzZWFkdmVydGlzaW5nX2VlZSxcbjIxNzc6XHRcdFx0XHQgICAgIHBsLVx1MDAzZXN1cHBvcnRlZF9scGkpO1xuMjE3ODpcdFx0fSBlbHNlIGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjE3OTpcdFx0XHQvKiBNQUMgc3VwcG9ydHMgcGh5bGluayBFRUUsIGJ1dCB3YW50cyBFRUUgYWx3YXlzIGRpc2FibGVkLiAqL1xuMjE4MDpcdFx0XHRwaHlfZGlzYWJsZV9lZWUocGh5KTtcbjIxODE6XHRcdH1cbjIxODI6XHRcbjIxODM6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4yMTg0Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMjE4NTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMTg2Olx0XG4yMTg3Olx0XHRwaHlsaW5rX2RiZyhwbCxcbjIxODg6XHRcdFx0ICAgIFwmIzM0O3BoeTogJXMgc2V0dGluZyBzdXBwb3J0ZWQgJSpwYiBhZHZlcnRpc2luZyAlKnBiXFxuXCYjMzQ7LFxuMjE4OTpcdFx0XHQgICAgcGh5X21vZGVzKGludGVyZmFjZSksXG4yMTkwOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZXN1cHBvcnRlZCxcbjIxOTE6XHRcdFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZWFkdmVydGlzaW5nKTtcbjIxOTI6XHRcbjIxOTM6XHRcdGlmIChwbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX21hbmFnZWRfcG0pXG4yMTk0Olx0XHRcdHBoeS1cdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XG4yMTk1Olx0XG4yMTk2Olx0XHQvKiBBbGxvdyB0aGUgTUFDIHRvIHN0b3AgaXRzIGNsb2NrIGlmIHRoZSBQSFkgaGFzIHRoZSBjYXBhYmlsaXR5ICovXG4yMTk3Olx0XHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShwaHkpIFx1MDAzZSAwO1xuMjE5ODpcdFxuMjE5OTpcdFx0aWYgKHBsLVx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDI1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJ1ZyBGaXggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgYnVnOiBpdCBzZWVtcyBsaWtlIHRoZXJlIHdhcyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSBpbiB0aGUgcGh5bGluayBhbmQgUEhZIGRldmljZSBoYW5kbGluZy4gU3BlY2lmaWNhbGx5LCBpbiBgcGh5bGlua19icmluZ3VwX3BoeWAsIHRoZSBgcGwtJmd0O3BoeWRldmAgcG9pbnRlciB3YXMgYmVpbmcgbWlzaGFuZGxlZC4gVGhlIGNvZGUgd291bGQgYXNzaWduIGBwaHlgIHRvIGBwbC0mZ3Q7cGh5ZGV2YCwgYW5kIHRoZW4gaWYgYHBoeV9lZWVfcnhfY2xvY2tfc3RvcGAgZmFpbGVkLCBgcGh5bGlua19icmluZ3VwX3BoeWAgd291bGQgYmFpbCBvdXQuIFRoZSBjYWxsZXIsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgc3Vic2VxdWVudGx5IGNhbGxlZCBgcGh5X2RldGFjaChwaHkpYCwgYnV0IGNydWNpYWxseSwgYHBsLSZndDtwaHlkZXZgICp3YXNuJiMzOTt0KiBjbGVhcmVkLiBUaGlzIGxlYWRzIHRvIHByb2JsZW1zIGxhdGVyIG9uLCBlaXRoZXIgd2l0aCBgLUVCVVNZYCBlcnJvcnMgZHVyaW5nIHJlLWF0dGFjaG1lbnQgb3Igd2l0aCBwaHlsaW5rIGFjY2Vzc2luZyBhIGRldGFjaGVkIFBIWSBkZXZpY2UuIFRoZSBmaXgsIGltcGxlbWVudGVkIGluIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAsIGxvb2tzIGNvcnJlY3QgYXMgaXQmIzM5O3MgY2xlYXJpbmcgdGhlIGBwbC0mZ3Q7cGh5ZGV2YCBwb2ludGVyLCBhbG9uZyB3aXRoIHNvbWUgcmVsYXRlZCBmbGFncyB3aGVuIGFuIGVycm9yIG9jY3Vycy4KClRoZSBzZWNvbmQgcGFydCBvZiB0aGUgZml4IGluIGBwaHlfZGV2aWNlLmNgIGRlYWxzIHdpdGggcmVzdG9yaW5nIHRoZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBhZnRlciBwcm9iaW5nL3VuYmluZGluZy4gVGhlIGdlbmVyaWMgUEhZIGRyaXZlciwgd2hlbiBiaW5kaW5nLCBvdmVycmlkZXMgdGhlIGludGVycnVwdCB2YWx1ZSB0byBgUEhZX1BPTExgIGlmIHRoZSBkcml2ZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCBpbnRlcnJ1cHRzLiBIb3dldmVyLCBvbiB1bmJpbmRpbmcgb3IgYXR0YWNobWVudCBmYWlsdXJlLCB0aGUgb3JpZ2luYWwgaW50ZXJydXB0IHdhc24mIzM5O3QgYmVpbmcgcmVzdG9yZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbG9zcyBvZiBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBNRElPIGJ1cyBpbiBzdWJzZXF1ZW50IGF0dGVtcHRzLiBUaGUgZml4IGNvcnJlY3RseSByZXN0b3JlcyB0aGlzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSXMgdGhpcyBmdXp6YWJsZT8gVGltZSB0byBhcHBseSB0aGUgZ3VpZGVsaW5lcy4gVGhpcyBpcyAqbm90KiBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBvciBjb21tZW50IGNoYW5nZXMuIEl0JiMzOTtzIG5vdCBwdXJlIGxvZ2dpbmcgb3IgZGVjb3JhdGl2ZS4gTm8gbnVtZXJpYyBjb25zdGFudCBtb2RpZmljYXRpb25zLiBJdCAqZG9lcyogbW9kaWZ5IGNvcmUga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaW4gdGhlIFBIWSBhbmQgcGh5bGluayBzdWJzeXN0ZW1zLiBOb3csIGFyZSB0aGVzZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPwoKTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gV2hpbGUgc3RhbmRhcmQgUUVNVSBlMTAwMCBjb25maWd1cmF0aW9ucyBtYXkgbm90IGRpcmVjdGx5IHVzZSBwaHlsaWIvcGh5bGluaywgd2UmIzM5O3ZlIGdvdCB0byBjb25zaWRlciBVU0IgZW11bGF0aW9uIGFuZCBNRElPIGJ1cyBpbnRlcmFjdGlvbi4gVVNCLCB2aWEgc3l6a2FsbGVyLCBzZWVtcyBwcm9taXNpbmcuIFJhdy1nYWRnZXQsIGR1bW15X2hjZCwgb3IgdXNiLWZ1enppbmcgd2l0aCBkcml2ZXJzIGxpa2UgYGFzaXhgIG9yIGBsYW43OHh4YCBhcmUgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gSWYgc3l6a2FsbGVyIGNhbiByZWFjaCB0aG9zZSwgdGhlIGZpeCB3b3VsZCBiZSByZWFjaGFibGUuIFRoZSBvdGhlciBwb3NzaWJpbGl0eSBpcyB0aGUgTURJTyBidXMgaXRzZWxmLiBDYW4gd2UgY3JlYXRlIG9yIGludGVyYWN0IHdpdGggTURJTyAvIFBIWSBkZXZpY2VzIHRocm91Z2ggbmV0bGluaywgaW9jdGwsIHN5c2ZzLCBvciBtYXliZSBldmVuIGBtZGlvLWdwaW9gIG9yIGBmaXhlZC1waHlgIHNldHVwcywgb3IgdGhlICYjMzQ7ZHVtbXkmIzM0OyBkZXZpY2VzPwoKSWYgdGhvc2UgYXJlIHJlYWNoYWJsZSwgdGhlbiB0aGlzIGZpeCwgYW5kIHRoZSByZWxhdGVkIGNvZGUsIGlzIG1vc3QgbGlrZWx5IHdvcnRoIGZ1enppbmcuIFRoZSByaXNrIG9mIHVzZS1hZnRlci1mcmVlIG9yIGEgcmVsYXRlZCBkb3VibGUtZnJlZSBpcyByZWFsLCBhbmQgY291bGQgaGF2ZSBzZXJpb3VzIGNvbnNlcXVlbmNlcy4gSSYjMzk7bSBnb2luZyB0byBsZWFuIHRvd2FyZHMgJiMzNDtXb3J0aEZ1enppbmc9dHJ1ZSYjMzQ7IGlmIHdlIGNhbiB2ZXJpZnkgcmVhY2hhYmlsaXR5LiBUaGUgVVNCIGRldmljZSBvciBNRElPIGJ1cyBpcyB0aGUga2V5IGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9hdHRhY2h8cGh5X2Nvbm5lY3R8cGh5bGlua18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExNjY3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xNTI1PXZvaWQgYjUzX3BvcnRfZXZlbnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTMyLVx0bGluayA9ICEhKHN0cyBcdTAwMjYgQklUKHBvcnQpKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1MzM6XHRkc2FfcG9ydF9waHlsaW5rX21hY19jaGFuZ2UoZHMsIHBvcnQsIGxpbmspO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzNC19XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xNTM1PUVYUE9SVF9TWU1CT0woYjUzX3BvcnRfZXZlbnQpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzNi1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1Mzc6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1Mzg6XHRcdFx0XHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTc1LVx0LyogR2V0IHRoZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgKi9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1NzY6XHRpZiAoZGV2LVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NzpcdFx0ZGV2LVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKGRldiwgcG9ydCwgY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1NzgtfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1ODA6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqYjUzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTgxLVx0XHRcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTgyLXtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1ODM6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4NC1cdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4NS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1ODY6XHRpZiAoIWRldi1cdTAwM2VvcHMtXHUwMDNlcGh5bGlua19tYWNfc2VsZWN0X3BjcylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODctXHRcdHJldHVybiBOVUxMO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4OC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1ODk6XHRyZXR1cm4gZGV2LVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX21hY19zZWxlY3RfcGNzKGRldiwgZHAtXHUwMDNlaW5kZXgsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkwLX1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTEtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTkyOnN0YXRpYyB2b2lkIGI1M19waHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkzLVx0XHRcdFx0ICAgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTk0Olx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTk1LXtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTY6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU5Ny1cdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UgPSBzdGF0ZS1cdTAwM2VpbnRlcmZhY2U7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYxNC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2MTU6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MTYtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE4LXtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2MTk6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYyMC1cdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MzgtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNjM5OnN0YXRpYyB2b2lkIGI1M19waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTY0MC1cdFx0XHRcdCAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2NDUte1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTY0NjpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjQ3LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHAtXHUwMDNlZHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MjY5Mj1FWFBPUlRfU1lNQk9MX0dQTChiNTNfc2V0X2FnZWluZ190aW1lKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTI2OTMtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGI1M19waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk1Olx0Lm1hY19zZWxlY3RfcGNzXHQ9IGI1M19waHlsaW5rX21hY19zZWxlY3RfcGNzLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjY5NjpcdC5tYWNfY29uZmlnXHQ9IGI1M19waHlsaW5rX21hY19jb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk3Olx0Lm1hY19saW5rX2Rvd25cdD0gYjUzX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTg6XHQubWFjX2xpbmtfdXBcdD0gYjUzX3BoeWxpbmtfbWFjX2xpbmtfdXAsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjk5LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MjcwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGI1M19zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTI3MTAtXHQucGh5X3dyaXRlXHRcdD0gYjUzX3BoeV93cml0ZTE2LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjcxMTpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGI1M19waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMjcxMi1cdC5wb3J0X3NldHVwXHRcdD0gYjUzX3NldHVwX3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzE4Mz1zdHJ1Y3QgYjUzX2RldmljZSAqYjUzX3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMyMDYtXHRkcy1cdTAwM2VvcHMgPSBcdTAwMjZiNTNfc3dpdGNoX29wcztcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjMyMDc6XHRkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcdTAwMjZiNTNfcGh5bGlua19tYWNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzIwOC1cdGRldi1cdTAwM2V2bGFuX2VuYWJsZWQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0zND1zdHJ1Y3QgYjUzX2lvX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTUwLVx0dm9pZCAoKnBoeV9kaXNhYmxlKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTE6XHR2b2lkICgqcGh5bGlua19nZXRfY2Fwcykoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTI6XHRcdFx0XHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjUzOlx0c3RydWN0IHBoeWxpbmtfcGNzICooKnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MpKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtNTQtXHRcdFx0XHRcdFx0ICAgICAgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTExMT1zdHJ1Y3QgYjUzX3BjcyB7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6MTEyOlx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0xMTMtXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgYjUzX3BjcyAqcGNzX3RvX2I1M19wY3Moc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0yMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM9NjE9c3RhdGljIHUxNiBiNTNfc2VyZGVzX3JlYWQoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggbGFuZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy02Ny1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjY4OnN0YXRpYyBpbnQgYjUzX3NlcmRlc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTY5LVx0XHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy04OC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjg5OnN0YXRpYyB2b2lkIGI1M19zZXJkZXNfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTkwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xMDEtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDI6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjEwMzpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM9MTU3PUVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19saW5rX3NldCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xNTgtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxNTk6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgYjUzX3Bjc19vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xNjAtXHQucGNzX2dldF9zdGF0ZSA9IGI1M19zZXJkZXNfZ2V0X3N0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2NC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE2NTp2b2lkIGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE2NjpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTkxLX1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5MjpFWFBPUlRfU1lNQk9MKGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2Fwcyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xOTMtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxOTQ6c3RydWN0IHBoeWxpbmtfcGNzICpiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IGI1M19kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5NS1cdFx0XHRcdFx0XHQgICAgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0yMDktfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MjEwOkVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIxMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC05OS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oOjEwMDpzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oPTExMD12b2lkIGI1M19zZXJkZXNfbGlua19zZXQoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTExLVx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBib29sIGxpbmtfdXApO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTEyOnN0cnVjdCBwaHlsaW5rX3BjcyAqYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTMtXHRcdFx0XHRcdFx0ICAgICAgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTQtXHRcdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTU6dm9pZCBiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTY6XHRcdFx0XHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTE3LSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYz00MzU9c3RhdGljIHZvaWQgYjUzX3NyYWJfaXJxX2Rpc2FibGUoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ0NS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NDY6c3RhdGljIHZvaWQgYjUzX3NyYWJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NDc6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NTctXHRcdCAqL1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ1ODpcdFx0YjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKGRldiwgcG9ydCwgY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NTktI2VuZGlmXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ3OT1zdGF0aWMgY29uc3Qgc3RydWN0IGI1M19pb19vcHMgYjUzX3NyYWJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00OTEtXHQuaXJxX2Rpc2FibGUgPSBiNTNfc3JhYl9pcnFfZGlzYWJsZSxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0OTI6XHQucGh5bGlua19nZXRfY2FwcyA9IGI1M19zcmFiX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDkzLSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ5NDpcdC5waHlsaW5rX21hY19zZWxlY3RfcGNzID0gYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5NS1cdC5zZXJkZXNfbWFwX2xhbmUgPSBiNTNfc3JhYl9zZXJkZXNfbWFwX2xhbmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz00NTI9c3RhdGljIGlycXJldHVybl90IGJjbV9zZjJfc3dpdGNoXzFfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQ2Mi1cdFx0cHJpdi1cdTAwM2Vwb3J0X3N0c1s3XS5saW5rID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDYzOlx0XHRkc2FfcG9ydF9waHlsaW5rX21hY19jaGFuZ2UoZHMsIDcsIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjYtXHRcdHByaXYtXHUwMDNlcG9ydF9zdHNbN10ubGluayA9IGZhbHNlO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo0Njc6XHRcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjgtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU2LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2NTc6XHQvKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IG9mX3BoeV9jb25uZWN0KCkgd2lsbCBub3Qgd29yayBieVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTgtXHQgKiByZW1vdmluZyB0aGUgJiMzOTtwaGFuZGxlJiMzOTsgYW5kICYjMzk7bGludXgscGhhbmRsZSYjMzk7IHByb3BlcnRpZXMgYW5kXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz03MjQ9c3RhdGljIHZvaWQgYmNtX3NmMl9zd19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3MjU6XHRcdFx0XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzI2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTc0NC1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzQ1OnN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ2LVx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzQ3Olx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ4LXtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzQ5Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzUwLVx0dTMyIGlkX21vZGVfZGlzID0gMCwgcG9ydF9tb2RlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9Nzk0PXN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfbWFjX2xpbmtfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MTYtXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgxNzpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgxOC1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MjAte1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4MjE6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MjItXHRzdHJ1Y3QgYmNtX3NmMl9wcml2ICpwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODM3LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4Mzg6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODM5LVx0XHRcdFx0ICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTg0NC17XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjg0NTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTg0Ni1cdHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz05MDY9c3RhdGljIHZvaWQgYmNtX3NmMl9zd19maXhlZF9zdGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo5MDc6XHRcdFx0XHQgICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0dXMpXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTkwOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMjAzPXN0YXRpYyBpbnQgYmNtX3NmMl9zd19nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIxNS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIxNjpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBiY21fc2YyX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIxNy1cdC5tYWNfY29uZmlnXHQ9IGJjbV9zZjJfc3dfbWFjX2NvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTEyMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBiY21fc2YyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMzAtXHQuZ2V0X3BoeV9mbGFnc1x0XHQ9IGJjbV9zZjJfc3dfZ2V0X3BoeV9mbGFncyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIzMTpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGJjbV9zZjJfc3dfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjEyMzI6XHQucGh5bGlua19maXhlZF9zdGF0ZVx0PSBiY21fc2YyX3N3X2ZpeGVkX3N0YXRlLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjMzLVx0LnN1c3BlbmRcdFx0PSBiY21fc2YyX3N3X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMzY1PXN0YXRpYyBpbnQgYmNtX3NmMl9zd19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTQyNi1cdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmJjbV9zZjJfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxNDI3Olx0ZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2YmNtX3NmMl9waHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE0MjgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzIxPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjc6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1MS1cdC5wb3J0X21heF9tdHVcdFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTQ1OD1zdGF0aWMgdm9pZCBoZWxsY3JlZWtfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0NjMtXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxNDY0OnN0YXRpYyB2b2lkIGhlbGxjcmVla19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxNDY1Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTQ2Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGhlbGxjcmVla19kc19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkwNi1cdC5nZXRfdHNfaW5mb1x0ICAgICAgID0gaGVsbGNyZWVrX2dldF90c19pbmZvLFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTkwNzpcdC5waHlsaW5rX2dldF9jYXBzICAgICAgPSBoZWxsY3JlZWtfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE5MDgtXHQucG9ydF9icmlkZ2VfZmxhZ3MgICAgID0gaGVsbGNyZWVrX2JyaWRnZV9mbGFncyxcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NDQ4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDQ5OmtzODk5NV9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NTA6XHRcdCAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDUxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NDU0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDU1OmtzODk5NV9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NTYtXHRcdCAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NTgte1xuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjQ1OTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDYwLVx0c3RydWN0IGtzODk5NV9zd2l0Y2ggKmtzID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NTA4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTA5OmtzODk5NV9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTAtXHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTEte1xuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjUxMjpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTEzLVx0c3RydWN0IGtzODk5NV9zd2l0Y2ggKmtzID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTIzLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjUyNDpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBrczg5OTVfcGh5bGlua19tYWNfb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTUyNS1cdC5tYWNfY29uZmlnID0ga3M4OTk1X21hY19jb25maWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTYwMj1zdGF0aWMgdm9pZCBrczg5OTVfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHU4IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy02NDgtXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NjQ5OnN0YXRpYyB2b2lkIGtzODk5NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjY1MDpcdFx0XHRcdCAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy02NTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz03MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrczg5OTVfZHNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy03NDEtXHQucG9ydF9tYXhfbXR1ID0ga3M4OTk1X2dldF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjc0MjpcdC5waHlsaW5rX2dldF9jYXBzID0ga3M4OTk1X3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNzQzLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTc0Nj1zdGF0aWMgaW50IGtzODk5NV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy04MjAtXHRrcy1cdTAwM2Vkcy1cdTAwM2VvcHMgPSBcdTAwMjZrczg5OTVfZHNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjgyMTpcdGtzLVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmtzODk5NV9waHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtODIyLVx0a3MtXHUwMDNlZHMtXHUwMDNlcHJpdiA9IGtzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYz0xMjgzPXN0YXRpYyBpbnQgbGFuOTMwM19wb3J0X21kYl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTI5Ny1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMjk4OnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEyOTk6XHRcdFx0XHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMDAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzIzLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMjQ6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMyNS1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzI2Olx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI5LVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMzA6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMzMS1cdFx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMzNS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzM2OnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzM3LVx0XHRcdFx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzQyLXtcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzQzOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzQ0LVx0c3RydWN0IGxhbjkzMDMgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzc1LVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzY6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuOTMwM19waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3NzpcdC5tYWNfY29uZmlnXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzg6XHQubWFjX2xpbmtfZG93blx0PSBsYW45MzAzX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzc5Olx0Lm1hY19saW5rX3VwXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfbGlua191cCxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzgwLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBsYW45MzAzX3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzODctXHQucGh5X3dyaXRlXHRcdD0gbGFuOTMwM19waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM4ODpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGxhbjkzMDNfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzg5LVx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IGxhbjkzMDNfZ2V0X2V0aHRvb2xfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTE0MDQ9c3RhdGljIGludCBsYW45MzAzX3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgbGFuOTMwMyAqY2hpcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTQxMy1cdGNoaXAtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2bGFuOTMwM19zd2l0Y2hfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjE0MTQ6XHRjaGlwLVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmxhbjkzMDNfcGh5bGlua19tYWNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTUtXHRjaGlwLVx1MDAzZWRzLVx1MDAzZXBoeXNfbWlpX21hc2sgPSBHRU5NQVNLKExBTjkzMDNfTlVNX1BPUlRTIC0gMSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz0yNz1zdHJ1Y3QgeHdheV9ncGh5X21hdGNoX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtMzEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjMyOnN0YXRpYyB2b2lkIGdzd2lwX3hyeDIwMF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjMzOlx0XHRcdFx0XHQgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy0zNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy02Mi1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6NjM6c3RhdGljIHZvaWQgZ3N3aXBfeHJ4MzAwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6NjQ6XHRcdFx0XHRcdCAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTY1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTQ1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGdzd2lwX2h3X2luZm8gZ3N3aXBfeHJ4MjAwID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDc1LVx0fSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6NDc2Olx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBnc3dpcF94cngyMDBfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDc3LVx0LnBjZV9taWNyb2NvZGUgPSBcdTAwMjZnc3dpcF9wY2VfbWljcm9jb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM9NDgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3N3aXBfaHdfaW5mbyBnc3dpcF94cngzMDAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00OTYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0OTc6XHQucGh5bGlua19nZXRfY2FwcyA9IGdzd2lwX3hyeDMwMF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00OTgtXHQucGNlX21pY3JvY29kZSA9IFx1MDAyNmdzd2lwX3BjZV9taWNyb2NvZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaD0yNTU9c3RydWN0IGdzd2lwX2h3X2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmgtMjYzLVx0ZW51bSBkc2FfdGFnX3Byb3RvY29sIHRhZ19wcm90b2NvbDtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY0Olx0dm9pZCAoKnBoeWxpbmtfZ2V0X2NhcHMpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oOjI2NTpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oOjI2NjpcdHN0cnVjdCBwaHlsaW5rX3BjcyAqKCptYWNfc2VsZWN0X3Bjcykoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oLTI2Ny1cdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTI2Nj1zdGF0aWMgaW50IGdzd2lwX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjkxLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTI5MjpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjkzOlx0XHRcdFx0ICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk2LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTI5NzpcdHByaXYtXHUwMDNlaHdfaW5mby1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5OC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTM3NT1zdGF0aWMgdm9pZCBnc3dpcF9wb3J0X3NldF9wYXVzZShzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwNC1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0MDU6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwNi1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDA3Olx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0MDgte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQwOTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDEwLVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTUtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDU2OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTctXHRcdFx0XHRcdHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTkte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ2MDpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDYxLVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NjktXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDcwOnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDcxLVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDc2LXtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0Nzc6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ3OC1cdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNTU5PXN0YXRpYyBpbnQgZ3N3aXBfc2V0X21hY19lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTY3LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU2ODpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1Njkte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU3MDpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTcxLVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NzYtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTc3OnN0YXRpYyBpbnQgZ3N3aXBfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NzgtXHRcdFx0XHRcdCAgIHUzMiB0aW1lciwgYm9vbCB0eF9jbG9ja19zdG9wKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3OS17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTgwOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1ODEtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTU5Mj1zdGF0aWMgYm9vbCBnc3dpcF9zdXBwb3J0X2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjAyOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmdzd2lwX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjAzLVx0XHRcdFx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDQte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYwNTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjA2LVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGdzd2lwX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTU6XHQubWFjX2NvbmZpZ1x0XHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTY6XHQubWFjX2xpbmtfZG93blx0XHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTc6XHQubWFjX2xpbmtfdXBcdFx0PSBnc3dpcF9waHlsaW5rX21hY19saW5rX3VwLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxODpcdC5tYWNfZGlzYWJsZV90eF9scGlcdD0gZ3N3aXBfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGksXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE5Olx0Lm1hY19lbmFibGVfdHhfbHBpXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGksXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjIwOlx0Lm1hY19zZWxlY3RfcGNzXHRcdD0gZ3N3aXBfcGh5bGlua19tYWNfc2VsZWN0X3BjcyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MjEtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNjIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZ3N3aXBfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjQzLVx0LnBvcnRfbWF4X210dVx0XHQ9IGdzd2lwX3BvcnRfbWF4X210dSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2NDQ6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBnc3dpcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY0NS1cdC5nZXRfc3RyaW5nc1x0XHQ9IGdzd2lwX2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2Nzg9aW50IGdzd2lwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgdTMyIHZlcnNpb24pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY5MC1cdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2Z3N3aXBfc3dpdGNoX29wcztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2OTE6XHRwcml2LVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmdzd2lwX3BoeWxpbmtfbWFjX29wcztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2OTItXHRwcml2LVx1MDAzZWRzLVx1MDAzZXByaXYgPSBwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTI4PXN0cnVjdCBnc3cxeHhfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzQtXHRzdHJ1Y3RcdFx0XHRyZWdtYXAgKnNoZWxsO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzU6XHRzdHJ1Y3RcdFx0XHRwaHlsaW5rX3BjcyBwY3M7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNi1cdHN0cnVjdCBkZWxheWVkX3dvcmtcdGNsZWFyX3JhbmVnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTEyND1zdGF0aWMgdm9pZCBnc3cxeHhfbWRpb19yZWdtYXBfdW5sb2NrKHZvaWQgKm1kaW9fbG9jaylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMjgtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxMjk6c3RhdGljIHVuc2lnbmVkIGludCBnc3cxeHhfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTMwLVx0XHRcdFx0XHQgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzNC1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjEzNTpzdGF0aWMgc3RydWN0IGdzdzF4eF9wcml2ICpwY3NfdG9fZ3N3MXh4KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTM2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzktXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNDA6c3RhdGljIGludCBnc3cxeHhfcGNzX2VuYWJsZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE0MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTQ4LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTQ5OnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfZGlzYWJsZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE1MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTYxLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTYyOnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTYzLVx0XHRcdFx0IHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE2NDpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9MjM0PXN0YXRpYyBpbnQgZ3N3MXh4X3Bjc19yZXNldChzdHJ1Y3QgZ3N3MXh4X3ByaXYgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzM0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzM1OnN0YXRpYyBpbnQgZ3N3MXh4X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTMzNi1cdFx0XHQgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzY5LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzcwOlx0c3dpdGNoIChwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKGludGVyZmFjZSkpIHtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM3MS1cdGNhc2UgMTAwMDA6XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzkzLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6Mzk0Olx0dHhhbmVnID0gcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudChpbnRlcmZhY2UsIGFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM5NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz00NTM9c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19jbGVhcl9yYW5lZyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDYxLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6NDYyOnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzI5NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBOZXR3b3JraW5nIFN1YnN5c3RlbXMgLSBMZXQmIzM5O3MgRGlnIEluKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gYHBoeWxpbmtgIGFuZCBgcGh5bGliYC4gUmlnaHQsIHRoZXkmIzM5O3JlIGZ1bmRhbWVudGFsLCBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC9waHkvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIEkgbmVlZCB0byB2ZXJpZnkgdGhlaXIgYXZhaWxhYmlsaXR5IGFuZCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBlbmFibGUgdGhlbS4gQmVzdCB3YXkgdG8gZG8gdGhhdD8gSW5zcGVjdCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCfGNvbmZpZyBQSFlMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cdGRlZl9ib29sIE9GXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzAyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIFBIWSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgUEhZIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoaXMgYXJlYSBpcyB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciBuZXR3b3JrIFBIWSBkcml2ZXJzIGlzIGRlZmluZWQuIEkgaW1tZWRpYXRlbHkgd2FudCB0byBmb2N1cyBvbiBzZWN0aW9ucyBjb25jZXJuaW5nIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAuIFRob3NlIGFyZSBjb3JlIGNvbmNlcHRzIGluIG5ldHdvcmsgUEhZIGRyaXZlciBtYW5hZ2VtZW50LCBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhleSYjMzk7cmUgd2lyZWQgaW50byB0aGUgY29uZmlndXJhdGlvbiBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBicm9hZGVyIHBpY3R1cmUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyByZXZlYWxzIGFib3V0IHRoZWlyIGRlcGVuZGVuY2llcywgb3B0aW9ucywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgaW5kaXZpZHVhbCBQSFkgZHJpdmVyIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGdldHRpbmcgYSBoaWdoLWxldmVsIHZpZXcgb2YgdGhpcyBjb21wb25lbnQgb2YgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xuICAzNTpcdFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxuICAzNjpcdFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XG4gIDM3Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcJiMzNDtsaW5rXCYjMzQ7IHRyaWdnZXIgYXMgYVxuICAzODpcdFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxuICAzOTpcdFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gIDQwOlx0XHQgICAgICBcdTAwM2NtaWkgYnVzIGlkXHUwMDNlOlx1MDAzY3BoeVx1MDAzZTpcdTAwM2NzcGVlZFx1MDAzZVxuICA0MTpcdFxuICA0MjpcdFx0ICBXaGVyZSBzcGVlZCBpcyBpbiB0aGUgZm9ybTpcbiAgNDM6XHRcdFx0XHUwMDNjU3BlZWQgaW4gbWVnYWJpdHNcdTAwM2VNYnBzIE9SIFx1MDAzY1NwZWVkIGluIGdpZ2FiaXRzXHUwMDNlR2JwcyBPUiBsaW5rXG4gIDQ0Olx0XHRcdGZvciBhbnkgc3BlZWQga25vd24gdG8gdGhlIFBIWS5cbiAgNDU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1MDIKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgZmlndXJlIG91dCB3aGF0IGV4YWN0bHkgaXMgY2FsbGluZyBvciByZWZlcmVuY2luZyBgUEhZTElOS2AgYW5kIGBQSFlMSUJgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlLCBwaW5wb2ludCBhbnkgZGlyZWN0IGRlcGVuZGVuY2llcywgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGluZGlyZWN0IGxpbmtzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIGNvbXBvbmVudHMgb3IgbW9kdWxlcyB0aGF0IGFyZSBsZXZlcmFnaW5nIHRoZXNlIGxpYnJhcmllcy4gVGhpcyB3aWxsIGhlbHAgbWUgYXNzZXNzIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcywgaWRlbnRpZnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgb3ZlcmFsbCwgYmV0dGVyIG1haW50YWluIHRoZSBzeXN0ZW0uIEkgYWxzbyB3YW50IHRvIGRldGVybWluZSB0aGUgbGV2ZWwgb2YgY291cGxpbmcgdGhleSBoYXZlIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHByb2plY3QsIHBlcmhhcHMgZXZlbiB3aXRoIHNwZWNpZmljIGFsZ29yaXRobXMgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBLbm93aW5nIHRoaXMgaGVscHMgdG8gcGxhbiBmdXR1cmUgZGV2ZWxvcG1lbnQgYW5kIHJlZmFjdG9yaW5nIGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBQSFlMSU5LJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTEtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjkyOlx0c2VsZWN0IFBIWUxJTktcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc9Mj1jb25maWcgQUxURVJBX1RTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnLTYtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZzo3Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnLTgtXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc9MjA9Y29uZmlnIEFHNzFYWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yMi1cdGRlcGVuZHMgb24gQVRINzkgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc6MjM6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnLTI0LVx0aW1wbHkgTkVUX1NFTEZURVNUU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz0yMj1jb25maWcgTUFDQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyNjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjctXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz04MD1jb25maWcgVUNDX0dFVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04My1cdHNlbGVjdCBGU0xfUFFfTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6ODQ6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctODUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZz0yPW1lbnVjb25maWcgRlNMX0RQQUFfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBGU0xfRFBBQSBcdTAwMjZcdTAwMjYgRlNMX0ZNQU5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWc6NTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnLTYtXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNC1cdGRlcGVuZHMgb24gRlNMX01DX0JVUyBcdTAwMjZcdTAwMjYgRlNMX01DX0RQSU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjU6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNi1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTMzPWNvbmZpZyBGU0xfRFBBQTJfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctMzctXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXHUwMDI2XHUwMDI2IEZTTF9NQ19EUElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zOS1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTMwPWNvbmZpZyBGU0xfRU5FVENcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy0zNy1cdHNlbGVjdCBOWFBfRU5FVENfUEZfQ09NTU9OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzozODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy0zOS1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTQ4PWNvbmZpZyBOWFBfRU5FVEM0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTUtXHRzZWxlY3QgTlhQX05UTVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjU2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTU3LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTY2PWNvbmZpZyBGU0xfRU5FVENfVkZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03MS1cdHNlbGVjdCBGU0xfRU5FVENfTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NzI6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNzMtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZz0yPWNvbmZpZyBGU0xfRk1BTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctNS1cdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctNy1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWc9Mj1jb25maWcgRlNfRU5FVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNS1cdHNlbGVjdCBNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWc6NjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnLTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjItXHRzZWxlY3QgTVZNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjM6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY0LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctODktXHRzZWxlY3QgTVZNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkxLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZz02PWNvbmZpZyBQUkVTVEVSQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnOjExOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTE0PWNvbmZpZyBORVRfTUVESUFURUtfU09DXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNy1cdHNlbGVjdCBQSU5DVFJMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjE4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTktXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cdHNlbGVjdCBQQ1NfWFBDU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjMwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0zMS1cdHNlbGVjdCBQTERNRldcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTUxLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo1MjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01My1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy03LVx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6ODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTktXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTE9Y29uZmlnIFNQQVJYNV9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctOC1cdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6OTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMTAtXHRzZWxlY3QgUEhZX1NQQVJYNV9TRVJERVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTktXHRzZWxlY3QgUEFDS0lOR1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnOjIwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnPTQyPWNvbmZpZyBSRU5FU0FTX0VUSEVSX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy00Ny1cdHNlbGVjdCBNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzo0ODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctNDktXHRzZWxlY3QgUkVORVNBU19HRU40X1BUUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOS1cdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMS1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVx0c2VsZWN0IEZXX0xPQURFUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc6MzE6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMC1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAxOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAyLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjQ6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTI2PWNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yOS1cdGRlcGVuZHMgb24gWElMSU5YX0RNQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6MzA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMzEtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9OD1jb25maWcgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFhQQ1NcJiMzNDtcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjEwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTExLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTUtXHRzZWxlY3QgTUlJXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE3LVx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xNjY9Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2OS1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTcwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE3MS1cdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcbi0tXG5uZXQvZHNhL0tjb25maWc9Mz1tZW51Y29uZmlnIE5FVF9EU0Fcbi0tXG5uZXQvZHNhL0tjb25maWctOS1cdHNlbGVjdCBORVRfU1dJVENIREVWXG5uZXQvZHNhL0tjb25maWc6MTA6XHRzZWxlY3QgUEhZTElOS1xubmV0L2RzYS9LY29uZmlnLTExLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTA4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBQSFkvUGh5bGluayBmb3IgRnV6emluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzIHdpdGhpbiB0aGUgUEhZIGFuZCBQaHlsaW5rIHN1YnN5c3RlbXMuIEZpcnN0LCBJIG5vdGljZWQgdGhhdCBgVVNCX0xBTjc4WFhgLCBgVVNCX05FVF9BWDg4MTdYYCwgYW5kIGBORVRfRFNBYCBhbGwgc2VsZWN0IGBQSFlMSU5LYCwgYW5kIGJvdGggYFBIWUxJQmAgYW5kIGBQSFlMSU5LYCBhcmUga2VybmVsIGZlYXR1cmVzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGlkZW50aWZ5IGtleSBmdW5jdGlvbnMgZm9yIGRlZXBlciBmdXp6aW5nLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gU3BlY2lmaWNhbGx5LCBJIHNhdyB0aGF0IGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfZGV0YWNoYCwgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAsIGFuZCBgcGh5bGlua19icmluZ3VwX3BoeWAgd2VyZSB0aGUgb25lcyBtb2RpZmllZC4gSSBuZWVkIHRvIGZpbHRlciB0aGVzZSBkb3duLgoKTm93LCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgSSBuZWVkIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGlzIG1lYW5zIGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBTbywgbGV0JiMzOTtzIHNlcGFyYXRlIHRoZSBzdGF0aWMgZnJvbSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMuCgpCYXNlZCBvbiB0aGUgY29kZSwgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCwgYW5kIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCBhcmUgdGhlIGZvY3VzLgoKQ2hlY2tpbmcgdGhlIGRlZmluaXRpb25zOgotIGBwaHlfYXR0YWNoX2RpcmVjdGAgKGluIGBwaHlfZGV2aWNlLmNgKSBpcyBgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlgLgotIGBwaHlfZGV0YWNoYCAoaW4gYHBoeV9kZXZpY2UuY2ApIGlzIGB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilgLgotIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCAoaW4gYHBoeWxpbmsuY2ApIGlzIGBpbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpYC4KLSBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAgKGluIGBwaHlsaW5rLmNgKSBpcyBgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClgLgotIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAgKGluIGBwaHlsaW5rLmNgKSBpcyBgaW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwgdTMyIGZsYWdzKWAuCi0gYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIChpbiBgcGh5bGluay5jYCkgaXMgYGludCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGRldmljZV9ub2RlICpkbiwgdTMyIGZsYWdzKWAuCgpBbGwgb2YgdGhlc2UgYXJlIG5vbi1zdGF0aWMgYW5kIGFwcGVhciB0byBiZSBBUEkgZW50cnkgcG9pbnRzLCB3aGljaCBtZWFucyB0aGV5IGFyZSBncmVhdCBjYW5kaWRhdGVzLgoKRmluYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgUEhZTElCYCBpcyBhIG1lbnVjb25maWcgYW5kIGNhbiBiZSBkaXJlY3RseSBlbmFibGVkIGluIHRoZSBgLmNvbmZpZ2AgYXMgYENPTkZJR19QSFlMSUI9eWAuIGBQSFlMSU5LYCwgaG93ZXZlciwgaGFzIG5vIHByb21wdCwgc28gaXQgZ2V0cyBzZWxlY3RlZCBieSBvdGhlciBkcml2ZXJzIHRoYXQgZGVwZW5kIG9uIGl0LiBUaGlzIG1ha2VzIGZ1enppbmcgbW9yZSBjaGFsbGVuZ2luZyBzaW5jZSBpdCB3aWxsIHJlcXVpcmUgYSBzcGVjaWZpYyBkcml2ZXIgdG8gYmUgZW5hYmxlZCB0byBlbmFibGUgdGhlIHRlc3RzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY29uc2lkZXIgYE5FVF9EU0FgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAsIHNpbmNlIHRoZXNlIGFyZSBkcml2ZXJzIHRoYXQgc2VsZWN0IGBQSFlMSU5LYC4gVGhleSBhcmUgdGhlIGVhc2llc3Qgd2F5IHRvIGVuc3VyZSBgUEhZTElOS2AgaXMgZW5hYmxlZC4KCkluIHN1bW1hcnk6IEkgd2lsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCBhbmQgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIGFuZCBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZW5hYmxlIGRyaXZlcnMgbGlrZSBgTkVUX0RTQWAsIGBVU0JfTEFONzhYWGAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYCB0byBlbnN1cmUgdGhlIHJlbGV2YW50IFBIWSBhbmQgUGh5bGluayBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9MQU43OFhYfGNvbmZpZyBVU0JfTkVUX0FYODgxN1gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTk5PWNvbmZpZyBVU0JfUlRMODE1MlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExMi1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExMzpjb25maWcgVVNCX0xBTjc4WFhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNC1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBMQU43OFhYIEJhc2VkIFVTQiBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2NS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXHR0cmlzdGF0ZSBcJiMzNDtBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIyOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqVVNCIExBTjc4WFggRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgYFVTQl9MQU43OFhYYCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBhbGwgaXRzIGRlcGVuZGVuY2llcywgZXNwZWNpYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGhpcyBpcyBjcnVjaWFsIGZvciBlbnN1cmluZyB0aGUgZHJpdmVyIGdldHMgYnVpbHQgY29ycmVjdGx5LCBhbmQgaXQgaGVscHMgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgaXQgbWlnaHQgcmVseSBvbi4gVGhpcyBhbHNvIGdpdmVzIG1lIGEgYmV0dGVyIHBpY3R1cmUgb2Ygd2hlcmUgaXQgc2l0cyBpbiB0aGUgYnJvYWRlciBuZXR3b3JrIGRyaXZlciBsYW5kc2NhcGUgYW5kIG1pZ2h0IHJldmVhbCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gbGF0ZXIgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxMTE6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHI4MTUyLlxuIDExMjpcdFxuIDExMzpcdGNvbmZpZyBVU0JfTEFONzhYWFxuIDExNDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4gMTE1Olx0XHRzZWxlY3QgTUlJXG4gMTE2Olx0XHRzZWxlY3QgUEhZTElOS1xuIDExNzpcdFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlcbiAxMTg6XHRcdHNlbGVjdCBDUkMzMlxuIDExOTpcdFx0aW1wbHkgTkVUX1NFTEZURVNUU1xuIDEyMDpcdFx0aGVscFxuIDEyMTpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIE1pY3JvY2hpcCBMQU43OFhYIGJhc2VkIFVTQiAyXG4gMTIyOlx0XHQgIFx1MDAyNiBVU0IgMyAxMC8xMDAvMTAwMCBFdGhlcm5ldCBhZGFwdGVycy5cbiAxMjM6XHRcdCAgTEFONzgwMCA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJcbiAxMjQ6XHRcdCAgTEFONzg1MCA6IFVTQiAyIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJcbiAxMjU6XHRcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxuIDEyNjpcdFxuIDEyNzpcdFx0ICBQcm9wZXIgUEhZIGRyaXZlciBpcyByZXF1aXJlZCBmb3IgTEFONzgwMS5cbiAxMjg6XHRcbiAxMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTMwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBsYW43OHh4LlxuIDEzMTpcdFxuIDEzMjpcdGNvbmZpZyBVU0JfVVNCTkVUXG4gMTMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1wmIzM0O1xuIDEzNDpcdFx0c2VsZWN0IE1JSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDg0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipDaGVja2luZyBgTkVUX0RTQWAgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYG5ldC9kc2EvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBORVRfRFNBYC4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBnbGFuY2U7IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoYXQgbWlnaHQgYXJpc2UgZHVyaW5nIGNvbmZpZ3VyYXRpb24gb3IgYnVpbGQuIEFyZSB0aGVyZSBhbnkgbmV3IGRlcGVuZGVuY2llcyBJIG1pc3NlZCwgYXJlIHRoZXJlIGFueSBpbnRlcmFjdGlvbnMgdGhhdCBtaWdodCBjYXVzZSBhIGNvbmZsaWN0IHdpdGggb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcz8gSSBuZWVkIHRvIGJlIHN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgY29ycmVjdCBhbmQgdXAtdG8tZGF0ZSB3aXRoIHRoaXMgdXBkYXRlIG9yIGNoZWNrLWluLiBUaGUgZ29hbCBpcyBhIGNsZWFuLCBzdGFibGUgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZHNhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIE5FVF9EU0FcbiAgIDQ6XHRcdHRyaXN0YXRlIFwmIzM0O0Rpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmVcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG4gICA2Olx0XHRkZXBlbmRzIG9uIEhTUiB8fCBIU1I9blxuICAgNzpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRERVZJQ0VTXG4gICA4Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gICA5Olx0XHRzZWxlY3QgTkVUX1NXSVRDSERFVlxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxMjpcdFx0aW1wbHkgTkVUX1NFTEZURVNUU1xuICAxMzpcdFx0aGVscFxuICAxNDpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIGhhcmR3YXJlIHN3aXRjaGVzIHN1cHBvcnRlZFxuICAxNTpcdFx0ICBieSB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZS5cbiAgMTY6XHRcbiAgMTc6XHRpZiBORVRfRFNBXG4gIDE4Olx0XG4gIDE5Olx0IyBEcml2ZXJzIG11c3Qgc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSB0YWdnaW5nIGZvcm1hdChzKVxuICAyMDpcdFxuICAyMTpcdGNvbmZpZyBORVRfRFNBX1RBR19OT05FXG4gIDIyOlx0XHR0cmlzdGF0ZSBcJiMzNDtOby1vcCB0YWcgZHJpdmVyXCYjMzQ7XG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFNheSBZIG9yIE0gaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHN3aXRjaGVzIHdoaWNoIGRvbiYjMzk7dCB0YWdcbiAgMjU6XHRcdCAgZnJhbWVzIG92ZXIgdGhlIENQVSBwb3J0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM1NgoJCQkJCQkJb3V0cHV0OiAxODIKCQkJCQkJCXRob3VnaHRzOiA2MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBOZXR3b3JraW5nIFBIWSBMYXllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0byBhc3Nlc3MuIEZpcnN0LCBJJiMzOTttIG5vdGluZyB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zOiBgUEhZTElCYCwgYFBIWUxJTktgLCBgVVNCX05FVF9BWDg4MTdYYCwgYFVTQl9MQU43OFhYYCwgYW5kIGBORVRfRFNBYC4gSSYjMzk7dmUgbWFkZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIHRob3NlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZm9ybWF0IHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJyYXkgY29ycmVjdGx5LCB3aXRob3V0IHRoYXQgcGVza3kgJiMzNDtDT05GSUdfJiMzNDsgcHJlZml4LCBzbyBpdCYjMzk7cyBqdXN0IHRoZSBwbGFpbiBzeW1ib2wgbmFtZXMuCgpOb3csIGlzIHRoaXMgZXZlbiB3b3J0aCBhIGRlZXAgZGl2ZT8gQWJzb2x1dGVseSEgVGhpcyBwYXRjaCBpcyBmaXhpbmcgc29tZSBwcmV0dHkgY3JpdGljYWwgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIHdpdGhpbiB0aGUgUEhZIGxheWVyLiBTcGVjaWZpY2FsbHksIGl0IHRvdWNoZXMgYHBoeWxpYmAgKGBwaHlfZGV2aWNlLmNgKSBhbmQgYHBoeWxpbmtgIChgcGh5bGluay5jYCkuIFRoZSBmaXggYWRkcmVzc2VzOgoKMS4gIEVycm9yIGhhbmRsaW5nIGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYDogSXQgZW5zdXJlcyB0aGF0IGBwaHlkZXYtJmd0O2lycWAgaXMgcmVzdG9yZWQgY29ycmVjdGx5IHdoZW4gYSBnZW5lcmljIFBIWSBkcml2ZXIgaXMgdW5ib3VuZCwgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBkZXRhaWwgZm9yIHN0YWJpbGl0eS4KMi4gIEVycm9yIHBhdGggaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgOiBUaGlzIHBhdGNoIGlzIG1ha2luZyBzdXJlIHRoZSBgcGwtJmd0O3BoeWRldmAgc3RhdGUgaXMgcHJvcGVybHkgY2xlYXJlZCB1c2luZyBgcGh5bGlua19jbGVhcl9waHlkZXZgIGR1cmluZyBmYWlsdXJlIHRvIHByZXZlbnQgZGFuZ2xpbmcgb3IgaW5jb25zaXN0ZW50IHBvaW50ZXJzIG9uIHN1YnNlcXVlbnQgYXR0YWNobWVudCBhdHRlbXB0cyBvciBkaXNjb25uZWN0cy4KClRoaXMgaXMgY29yZSBuZXR3b3JraW5nIHN0dWZmIOKAkyBQSFkgbGF5ZXIgc3RhdGUgbWFuYWdlbWVudCwgaG93IGVycm9ycyBhcmUgaGFuZGxlZCBkdXJpbmcgUEhZIGF0dGFjaC9kZXRhY2gvYnJpbmd1cCwgYW5kIHVsdGltYXRlbHksIG5ldHdvcmsgZGV2aWNlIHNldHVwIGFuZCB0ZWFyZG93bi4gVGhpcyBoYXMgdGhlIHBvdGVudGlhbCB0byBjYXVzZSBzb21lIG5hc3R5IGludGVybWl0dGVudCBpc3N1ZXMgaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LgoKSSYjMzk7dmUgaWRlbnRpZmllZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgc28gSSYjMzk7bSBsaXN0aW5nIHRoZW0gb3V0OgoKKiAgIGBwaHlfYXR0YWNoX2RpcmVjdGAKKiAgIGBwaHlfZGV0YWNoYAoqICAgYHBoeWxpbmtfY29ubmVjdF9waHlgCiogICBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAKCkkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuCgpJJiMzOTt2ZSBjaGVja2VkIHRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIGNoYW5nZWQgb3IgYXJlIGNhbGxpbmcgdGhlIGNvZGUgdGhhdCB3YXMgY2hhbmdlZDoKCiogICBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAgaXMgc3RhdGljLgoqICAgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBpcyBzdGF0aWMuCiogICBgcGh5bGlua19icmluZ3VwX3BoeWAgaXMgc3RhdGljLgpUaGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgY2FsbGluZyB0aGVtOgoqICAgYHBoeV9hdHRhY2hfZGlyZWN0YAoqICAgYHBoeV9kZXRhY2hgCiogICBgcGh5bGlua19jb25uZWN0X3BoeWAKKiAgIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YAoqICAgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgCiogICBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgCgpPa2F5LCB0aGlzIGxpc3QgaXMgYWxsIEkgbmVlZC4gSSYjMzk7dmUgZ290IG15OgoKKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywgJiMzNDtwaHlfZGV0YWNoJiMzNDssICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7LCAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0O11gCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbJiMzNDtQSFlMSUImIzM0OywgJiMzNDtQSFlMSU5LJiMzNDssICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywgJiMzNDtORVRfRFNBJiMzNDtdYAoKSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4gVGhpcyBwYXRjaCBpcyBhYm91dCByb2J1c3RpZnlpbmcgdGhlIFBIWSBsYXllciwgcHJldmVudGluZyBwb3RlbnRpYWwgaXNzdWVzIHdpdGggb3JwaGFuZWQgcG9pbnRlcnMgYW5kIGludGVycnVwdCBoYW5kbGluZywgYW5kIGltcHJvdmluZyBlcnJvciBwYXRocyBkdXJpbmcgY3JpdGljYWwgUEhZIG9wZXJhdGlvbnMuIEkmIzM5O20gY2FsbGluZyBpdCBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BIWUxJTksmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O05FVF9EU0EmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfZGV0YWNoJiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19kaXNjb25uZWN0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBlcnJvciB1bndpbmRpbmcgaW4gUEhZTElCIGFuZCBQSFlMSU5LIHN1YnN5c3RlbXM6IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgc3RhdGUgdmlhIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IHdoZW4gcGh5bGlua19icmluZ3VwX3BoeSBmYWlscyBpbiBwaHlsaW5rLmMuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gRXRoZXJuZXQgUEhZIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtORVRfRFNBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgc3RhdGUgbWFuYWdlbWVudCBhbmQgZXJyb3IgdW53aW5kaW5nIGluIFBIWUxJQiBhbmQgUEhZTElOSyBzdWJzeXN0ZW1zOiByZXN0b3JpbmcgcGh5ZGV2LVx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIHVuYmluZC9hdHRhY2htZW50IGZhaWx1cmUgaW4gcGh5X2RldmljZS5jLCBhbmQgcHJvcGVybHkgY2xlYXJpbmcgcGwtXHUwMDNlcGh5ZGV2IHN0YXRlIHZpYSBwaHlsaW5rX2NsZWFyX3BoeWRldiB3aGVuIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMgaW4gcGh5bGluay5jLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIEV0aGVybmV0IFBIWSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIHRoZSBQSFkgYW5kIHBoeWxpbmsgc3Vic3lzdGVtcy4gU3BlY2lmaWNhbGx5LCBpdCByZXN0b3JlcyB0aGUgUEhZIElSUSBjb25maWd1cmF0aW9uIHVwb24gZGV0YWNobWVudC9lcnJvciBmb3IgZ2VuZXJpYyBQSFkgZHJpdmVycyBhbmQgZW5zdXJlcyB0aGF0IHBoeWxpbmsgc3RhdGUgaXMgcHJvcGVybHkgY2xlYXJlZCBpZiBwaHkgYnJpbmd1cCBmYWlscy5cblxuVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUga2VybmVsLWludGVybmFsIHBvaW50ZXJzLCBib29sZWFuIHN0YXRlIGZsYWdzLCBhbmQgbXV0ZXggbG9ja2luZy4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGRhdGEgdHJhbnNmZXJyZWQgdG8gdXNlciBzcGFjZSAobm8gY29weV90b191c2VyLCBuZXRsaW5rIG1lc3NhZ2VzLCBpb2N0bHMsIGV0Yy4pLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbG9ja2luZyBvciB1c2UtYWZ0ZXItZnJlZS9OVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBkZXRlY3RlZCBieSBMT0NLREVQIG9yIEtBU0FOLCBub3QgS01TQU4uIEhlbmNlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDFhZGNkM2NjMDM3NTc5ZGQ1ZTcxMTI1NTJlNTgwNGYwZjY5MWI1OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMjE6NTc6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li4yMGZjMjkzNTVmNjBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTE3MzQsNiAmIzQzOzE3MzQsMTcgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydikKIAlyZXR1cm4gcGh5ZHJ2LSZndDtjb25maWdfaW50ciAmYW1wOyZhbXA7IHBoeWRydi0mZ3Q7aGFuZGxlX2ludGVycnVwdDsKIH0KIAomIzQzOy8qIFVuZG8gdGhlIFBIWV9QT0xMIHRoYXQgcGh5X3Byb2JlKCkgc2V0cyB3aGVuIGEgZHJpdmVyIHdpdGhvdXQKJiM0MzsgKiBpbnRlcnJ1cHQgY2FsbGJhY2tzIGJpbmRzLiBUaGUgYmluZCBjeWNsZSBuZXZlciB3cml0ZXMgYnVzLSZndDtpcnFbXSwKJiM0MzsgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFkKJiM0MzsgKiBjYXJyaWVzIGRpZCBub3QgY29tZSBmcm9tIHRoZSBiaW5kIGFuZCBtdXN0IHN0YW5kLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2lycSA9PSBQSFlfUE9MTCkKJiM0MzsJCXBoeWRldi0mZ3Q7aXJxID0gcGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7aXJxW3BoeWRldi0mZ3Q7bWRpby5hZGRyXTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXIKICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaApAQCAtMTg5Niw2ICYjNDM7MTkwNyw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCiBlcnJvcl9tb2R1bGVfcHV0OgogCW1vZHVsZV9wdXQoZC0mZ3Q7ZHJpdmVyLSZndDtvd25lcik7CiYjNDM7CXBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTsKIAlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwogCWQtJmd0O2RyaXZlciA9IE5VTEw7CiBlcnJvcl9wdXRfZGV2aWNlOgpAQCAtMTk2NSw2ICYjNDM7MTk3Nyw3IEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCSAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZAogCSAqLwogCWlmIChwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4pIHsKJiM0MzsJCXBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTsKIAkJZGV2aWNlX3JlbGVhc2VfZHJpdmVyKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldik7CiAJCXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbiA9IDA7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggNWI4ZTk1NjkwMmZiNS4uYTU1ZTRhNjQwMjhmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCXJldHVybiBwaHlsaW5rX3ZhbGlkYXRlKHBsLCBzdXBwb3J0ZWQsIHN0YXRlKTsKIH0KIAomIzQzOy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLSZndDtwaHlkZXZfbXV0ZXguICovCiYjNDM7c3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KQomIzQzO3sKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwomIzQzOwlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKJiM0MzsJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7CiYjNDM7CXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCQkJICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7CkBAIC0yMTk3LDYgJiM0MzsyMjA5LDEyIEBAIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJaWYgKHJldCA9PSAwICZhbXA7JmFtcDsgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKQogCQlwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTsKIAomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjM0NywxNSAmIzQzOzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKQogCiAJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwogCXBoeSA9IHBsLSZndDtwaHlkZXY7Ci0JaWYgKHBoeSkgewotCQltdXRleF9sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7Ci0JCXBsLSZndDtwaHlkZXYgPSBOVUxMOwotCQlwbC0mZ3Q7cGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTsKLQkJcGwtJmd0O21hY190eF9jbGtfc3RvcCA9IGZhbHNlOwotCQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQltdXRleF91bmxvY2soJmFtcDtwaHktJmd0O2xvY2spOwotCX0KJiM0MzsJaWYgKHBoeSkKJiM0MzsJCXBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpOwogCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwogCiAJaWYgKHBoeSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBLTVNBTiBGdXp6aW5nIE5lZWRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIEtNU0FOIGZ1enppbmcgaXMgbmVjZXNzYXJ5LiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyB0d28gZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L2AgZGlyZWN0b3J5OiBgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2AuIFRoYXQmIzM5O3MgYWxyZWFkeSB0ZWxsaW5nLiBUaGUgbmV0d29yayBQSFkgbGF5ZXIgaXMgb2Z0ZW4gYSBzb3VyY2Ugb2Ygc3VidGxlIGlzc3Vlcy4KCkxvb2tpbmcgYXQgYHBoeV9kZXZpY2UuY2AsIHRoZSBrZXkgYWRkaXRpb24gaXMgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoKWAuIFRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgcmVzdG9yaW5nIGFuIGludGVycnVwdCByZXF1ZXN0IGxpbmUsIHNwZWNpZmljYWxseSBmcm9tIHRoZSBNRElPIGJ1cyYjMzk7cyBJUlEgYXJyYXkgaWYgdGhlIGN1cnJlbnQgYHBoeWRldi0mZ3Q7aXJxYCBpcyBgUEhZX1BPTExgLiBJbnRlcmVzdGluZy4gSXQmIzM5O3MgY2FsbGVkIGluIGVycm9yIHBhdGhzIG9mIGBwaHlfYXR0YWNoX2RpcmVjdCgpYCBhbmQgYHBoeV9kZXRhY2goKWAuIFRoaXMgc3VnZ2VzdHMgaXQmIzM5O3MgYSBjbGVhbnVwIG9yIHJlY292ZXJ5IGZ1bmN0aW9uLCBoYW5kbGluZyBjYXNlcyB3aGVyZSBpbml0aWFsIGludGVycnVwdCBzZXR1cCBtaWdodCBmYWlsIG9yIG5lZWRzIHRvIGJlIHJldmVydGVkLiBUaGVzZSB0eXBlcyBvZiBlcnJvciBwYXRocyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgS01TQU4gY2hlY2tzLCBiZWNhdXNlIG9mdGVuIHlvdSYjMzk7bGwgYmUgZXhpdGluZyBhbiBlcnJvciBwYXRoLCBidXQgaGF2ZW4mIzM5O3QgYWN0dWFsbHkgZGVhbGxvY2F0ZWQsIG9yIGhhdmVuJiMzOTt0IHByb3Blcmx5IHJlc2V0IHNvbWV0aGluZy4gVGhhdCYjMzk7cyBhbHdheXMgYSBnb29kIHBsYWNlIHRvIGxvb2sgZm9yIHN1YnRsZSBtZW1vcnkgY29ycnVwdGlvbi4KCk5leHQsIGBwaHlsaW5rLmNgIGFkZHMgYSBoZWxwZXIgZnVuY3Rpb24sIGBwaHlsaW5rX2NsZWFyX3BoeWRldigpYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyB1c2VkIGluIHRoZSBlcnJvciBwYXRoIG9mIGBwaHlsaW5rX2JyaW5ndXBfcGh5KClgIOKAkyB3aGljaCBpcyBhbm90aGVyIHJlZCBmbGFnLCBhIHNldHVwIGZ1bmN0aW9uIHdpdGggYSBzcGVjaWZpYyBlcnJvciBwYXRoLiBUaGlzIHN1Z2dlc3RzIHRoYXQgcmVzb3VyY2VzIG1pZ2h0IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjbGVhcmVkIGluIHRoZSBjYXNlIG9mIGZhaWx1cmUsIGFuZCB0aGUgYHBoeWxpbmtfZGlzY29ubmVjdF9waHkoKWAgZnVuY3Rpb24gaXMgcmVmYWN0b3JlZCB0byB1c2UgaXQuIFRoaXMgY291bGQgbWVhbiB3ZSYjMzk7cmUgc2VlaW5nIGltcHJvdmVkIHJlc291cmNlIG1hbmFnZW1lbnQsIGJ1dCBpdCBjb3VsZCBhbHNvIGhpZGUgYSBzdWJ0bGUgbWVtb3J5IGlzc3VlLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJydXB0IG1hbmFnZW1lbnQgYW5kIFBIWSBkZXZpY2Ugc2V0dXAvdGVhcmRvd24gaW4gdGhlc2UgYXJlYXMsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzICp5ZXMqLCB3ZSBtaWdodCBuZWVkIEtNU0FOIGZ1enppbmcgaGVyZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSB0byBjb25maXJtIG15IGluaXRpYWwgaW1wcmVzc2lvbi4gSSYjMzk7bGwgbmVlZCB0byB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSBjb250ZXh0IGFyb3VuZCB0aGVzZSBuZXcgZnVuY3Rpb25zIGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYm90aCBmaWxlcyB0byBmdWxseSBhc3Nlc3MgdGhlIHJpc2suIEkgbmVlZCB0byBjaGVjayBob3cgdGhlIFBIWSBkZXZpY2VzIGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjayBhbmQgaG93IHRoZSBpbnRlcnJ1cHQgbG9naWMgaXMgaW1wbGVtZW50ZWQsIG1ha2luZyBzdXJlIHRoYXQgcmVzb3VyY2VzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCwgcmVsZWFzZWQsIGFuZCB0aGF0IHJhY2UgY29uZGl0aW9ucyBhcmUgYXZvaWRlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTczMDpcdH1cbjE3MzE6XHRcbjE3MzI6XHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuMTczMzpcdHtcbjE3MzQ6XHRcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuMTczNTpcdH1cbjE3MzY6XHRcbjE3Mzc6XHQvKiBVbmRvIHRoZSBQSFlfUE9MTCB0aGF0IHBoeV9wcm9iZSgpIHNldHMgd2hlbiBhIGRyaXZlciB3aXRob3V0XG4xNzM4Olx0ICogaW50ZXJydXB0IGNhbGxiYWNrcyBiaW5kcy4gVGhlIGJpbmQgY3ljbGUgbmV2ZXIgd3JpdGVzIGJ1cy1cdTAwM2VpcnFbXSxcbjE3Mzk6XHQgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFlcbjE3NDA6XHQgKiBjYXJyaWVzIGRpZCBub3QgY29tZSBmcm9tIHRoZSBiaW5kIGFuZCBtdXN0IHN0YW5kLlxuMTc0MTpcdCAqL1xuMTc0MjpcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE3NDM6XHR7XG4xNzQ0Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbjE3NDU6XHRcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4xNzQ2Olx0fVxuMTc0NzpcdFxuMTc0ODpcdC8qKlxuMTc0OTpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTA6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTE6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzUyOlx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1MzpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU0Olx0ICpcbjE3NTU6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTY6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc1NzpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzU4Olx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc1OTpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYwOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2MTpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2MjpcdCAqL1xuMTc2MzpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuMTc2NDpcdFx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4xNzY1Olx0e1xuMTc2NjpcdFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbjE3Njc6XHRcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4xNzY4Olx0XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbjE3Njk6XHRcdGludCBlcnI7XG4xNzcwOlx0XG4xNzcxOlx0XHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXG4xNzcyOlx0XHQgKiB3aWxsIGhhdmUgYnVzLVx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcbjE3NzM6XHRcdCAqIG91ciBvd24gbW9kdWxlLVx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cbjE3NzQ6XHRcdCAqIHVubG9hZCBsYXRlciBvbi5cbjE3NzU6XHRcdCAqL1xuMTc3NjpcdFx0aWYgKGRldilcbjE3Nzc6XHRcdFx0bmRldl9vd25lciA9IGRldi1cdTAwM2VkZXYucGFyZW50LVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcjtcbjE3Nzg6XHRcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lciBcdTAwMjZcdTAwMjYgIXRyeV9tb2R1bGVfZ2V0KGJ1cy1cdTAwM2Vvd25lcikpIHtcbjE3Nzk6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O2ZhaWxlZCB0byBnZXQgdGhlIGJ1cyBtb2R1bGVcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODIzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRGlnZ2luZyBpbnRvIFBIWSBMaW5rIE1hbmFnZW1lbnQqKgoKQWxyaWdodCwgSSYjMzk7bSBhbHJlYWR5IGluIHRoZSB0aGljayBvZiB0aGlzIFBIWSBkcml2ZXIgaXNzdWUsIGJ1dCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByYWJiaXQgaG9sZSwgSSBzaG91bGQgY2lyY2xlIGJhY2sgYW5kIHZlcmlmeSBzb21ldGhpbmcgY3J1Y2lhbC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBJJiMzOTt2ZSBhY2NvdW50ZWQgZm9yIGV2ZXJ5IHBvdGVudGlhbCBpbnRlcmFjdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBQSFkgbGluayBpcyBiZWluZyBoYW5kbGVkIHByb3Blcmx5LiBUaGVzZSBhcmUgZnVuZGFtZW50YWwgZm9yIHRoZSBkcml2ZXIsIGFuZCBJIGNhbiYjMzk7dCBhZmZvcmQgYW55IG92ZXJzaWdodCBoZXJlLiBJIGtub3cgSSYjMzk7dmUgYmVlbiBmb2N1c2VkIG9uIFgsIFksIGFuZCBaLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29yZSBsaW5rIGVzdGFibGlzaG1lbnQgYW5kIHRha2Vkb3duIGFyZSByb2NrLXNvbGlkLCBvciBldmVyeXRoaW5nIGRvd25zdHJlYW0gaXMgZ29pbmcgdG8gYnJlYWsuIEl04oCZcyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaDsgYSBsaXR0bGUgZXh0cmEgdGltZSBub3cgY291bGQgc2F2ZSBhIGJpZyBoZWFkYWNoZSBsYXRlci4gSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgYnJpbmcgdXAgYW5kIGRpc2Nvbm5lY3Qgb3BlcmF0aW9ucyBpbiByZWxhdGlvbiB0byB0aGUgd2lkZXIgcHJvYmxlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjE5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTkwOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZXN1cHBvcnRlZCxcbjIxOTE6XHRcdFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZWFkdmVydGlzaW5nKTtcbjIxOTI6XHRcbjIxOTM6XHRcdGlmIChwbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX21hbmFnZWRfcG0pXG4yMTk0Olx0XHRcdHBoeS1cdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XG4yMTk1Olx0XG4yMTk2Olx0XHQvKiBBbGxvdyB0aGUgTUFDIHRvIHN0b3AgaXRzIGNsb2NrIGlmIHRoZSBQSFkgaGFzIHRoZSBjYXBhYmlsaXR5ICovXG4yMTk3Olx0XHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShwaHkpIFx1MDAzZSAwO1xuMjE5ODpcdFxuMjE5OTpcdFx0aWYgKHBsLVx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XG4yMjAwOlx0XHRcdC8qIEV4cGxpY2l0bHkgY29uZmlndXJlIHdoZXRoZXIgdGhlIFBIWSBpcyBhbGxvd2VkIHRvIHN0b3AgaXQmIzM5O3NcbjIyMDE6XHRcdFx0ICogcmVjZWl2ZSBjbG9jay5cbjIyMDI6XHRcdFx0ICovXG4yMjAzOlx0XHRcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXG4yMjA0Olx0XHRcdFx0XHRcdCAgICBwbC1cdTAwM2Vjb25maWctXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XG4yMjA1Olx0XHRcdGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXG4yMjA2Olx0XHRcdFx0cmV0ID0gMDtcbjIyMDc6XHRcdH1cbjIyMDg6XHRcbjIyMDk6XHRcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuMjIxMDpcdFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbjIyMTE6XHRcbjIyMTI6XHRcdGlmIChyZXQpIHtcbjIyMTM6XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNDpcdFx0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbjIyMTU6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMjE2Olx0XHR9XG4yMjE3Olx0XG4yMjE4Olx0XHRyZXR1cm4gcmV0O1xuMjIxOTpcdH1cbjIyMjA6XHRcbjIyMjE6XHRzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4yMjIyOlx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbjIyMjM6XHR7XG4yMjI0Olx0XHR1MzIgZmxhZ3MgPSAwO1xuMjIyNTpcdFxuMjIyNjpcdFx0aWYgKFdBUk5fT04ocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKVxuMjIyNzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjIyMjg6XHRcbjIyMjk6XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYpXG4yMjMwOlx0XHRcdHJldHVybiAtRUJVU1k7XG4yMjMxOlx0XG4yMjMyOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19yZXF1aXJlc19yeGMpXG4yMjMzOlx0XHRcdGZsYWdzIHw9IFBIWV9GX1JYQ19BTFdBWVNfT047XG4yMjM0Olx0XG4yMjM1Olx0XHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xuMjIzNjpcdH1cbjIyMzc6XHRcbjIyMzg6XHQvKipcbjIyMzk6XHQgKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODcKCQkJCQkJCW91dHB1dDogMTg3CgkJCQkJCQl0aG91Z2h0czogNDA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBIWS9QaHlsaW5rIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHBvdGVudGlhbCBJUlEgcmVzdG9yYXRpb24gaXNzdWVzIHdpdGggZ2VuZXJpYyBQSFkgZHJpdmVycy4gSXQgYXBwZWFycyB0aGF0IHdoZW4gYSBnZW5lcmljIFBIWSBkcml2ZXIgaW5pdGlhbGx5IGJpbmRzLCBpdCBtaWdodCBzZXQgdGhlIElSUSB0byBgUEhZX1BPTExgLiBJZiB0aGUgUEhZIGZhaWxzIHRvIGF0dGFjaCBvciBpcyBkZXRhY2hlZCwgdGhlIGNvZGUgbm93IGVuc3VyZXMgdGhhdCB0aGUgb3JpZ2luYWwgSVJRIChhcyBkZWZpbmVkIGJ5IHRoZSBNRElPIGJ1cykgaXMgcmVzdG9yZWQuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2Qgc2FmZWd1YXJkIHRvIHByZXZlbnQgYSBsYXRlciwgbW9yZSBzcGVjaWZpYyBkcml2ZXIgZnJvbSBpbmhlcml0aW5nIGFuIGluY29ycmVjdCBwb2xsaW5nIGNvbmZpZ3VyYXRpb24uIEl0IGFsc28gdG91Y2hlcyBgcGh5bGlua19icmluZ3VwX3BoeWAgdG8gaGFuZGxlIGVycm9ycyBkdXJpbmcgdGhlIGJyaW5ndXAgcHJvY2VzcywgZW5zdXJpbmcgcHJvcGVyIGNsZWFudXAgKHNldHRpbmcgYHBsLSZndDtwaHlkZXZgIHRvIGBOVUxMYCBhbmQgY2xlYXJpbmcgZmxhZ3MpIHdoZW4gYSBmYWlsdXJlIG9jY3Vycy4gVGhlIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCBmdW5jdGlvbiBpcyBhbHNvIHJlZmFjdG9yZWQgdG8gdXNlIHRoaXMgbmV3IGhlbHBlci4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBmb3IgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBvZiBjb3Vyc2UuIEhvd2V2ZXIsIGFmdGVyIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgSSYjMzk7bSBub3Qgc2VlaW5nIGFueXRoaW5nIHRoYXQgc3RhbmRzIG91dC4gVGhpcyBpcyBnb29kOiBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyB1c2VyLXNwYWNlIGludGVyYWN0aW9ucywgbm8gbW9kaWZpZWQgY29weSBvcGVyYXRpb25zLCBhbmQgbm8gZXhwb3NlZCB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlc2UgY2hhbmdlcyBhcmUgY2xlYXJseSBmb2N1c2VkIG9uIGVycm9yIGhhbmRsaW5nLCBjbGVhbnVwIHByb2NlZHVyZXMsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUEhZL3BoeWxpbmsgc3ViLXN5c3RlbS4KCkdpdmVuIHRoYXQgaXTigJlzIHN0cmljdGx5IGVycm9yIGhhbmRsaW5nLCBjbGVhbnVwLCBhbmQgbG9ja2luZy1yZWxhdGVkIGNoYW5nZXMsIHRoZSBtb3N0IGxpa2VseSByaXNrcyB3b3VsZCBiZSByYWNlIGNvbmRpdGlvbnMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgcHJvYmxlbXMsIGFuZCBwb3RlbnRpYWxseSB1c2UtYWZ0ZXItZnJlZSBidWdzLiBCdXQsIHRoYXQmIzM5O3Mgd2hhdCB0b29scyBsaWtlIEtBU0FOIGFuZCBMT0NLREVQIGFyZSBmb3IsIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzIHNob3VsZCBjYXRjaCB0aGUgcmVzdC4gVGhlcmVmb3JlLCBJIGJlbGlldmUgdGhhdCBgTmVlZHNLTVNBTmAgc2hvdWxkIGluZGVlZCBiZSBzZXQgdG8gYGZhbHNlYC4gVGltZSB0byBtb3ZlIG9udG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIHRoZSBQSFkgYW5kIHBoeWxpbmsgc3Vic3lzdGVtcy4gU3BlY2lmaWNhbGx5LCBpdCByZXN0b3JlcyB0aGUgUEhZIElSUSBjb25maWd1cmF0aW9uIHVwb24gZGV0YWNobWVudC9lcnJvciBmb3IgZ2VuZXJpYyBQSFkgZHJpdmVycyBhbmQgZW5zdXJlcyB0aGF0IHBoeWxpbmsgc3RhdGUgaXMgcHJvcGVybHkgY2xlYXJlZCBpZiBwaHkgYnJpbmd1cCBmYWlscy5cblxuVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUga2VybmVsLWludGVybmFsIHBvaW50ZXJzLCBib29sZWFuIHN0YXRlIGZsYWdzLCBhbmQgbXV0ZXggbG9ja2luZy4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGRhdGEgdHJhbnNmZXJyZWQgdG8gdXNlciBzcGFjZSAobm8gY29weV90b191c2VyLCBuZXRsaW5rIG1lc3NhZ2VzLCBpb2N0bHMsIGV0Yy4pLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbG9ja2luZyBvciB1c2UtYWZ0ZXItZnJlZS9OVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBkZXRlY3RlZCBieSBMT0NLREVQIG9yIEtBU0FOLCBub3QgS01TQU4uIEhlbmNlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiB0aGUgUEhZIGFuZCBwaHlsaW5rIHN1YnN5c3RlbXMuIFNwZWNpZmljYWxseSwgaXQgcmVzdG9yZXMgdGhlIFBIWSBJUlEgY29uZmlndXJhdGlvbiB1cG9uIGRldGFjaG1lbnQvZXJyb3IgZm9yIGdlbmVyaWMgUEhZIGRyaXZlcnMgYW5kIGVuc3VyZXMgdGhhdCBwaHlsaW5rIHN0YXRlIGlzIHByb3Blcmx5IGNsZWFyZWQgaWYgcGh5IGJyaW5ndXAgZmFpbHMuXG5cblRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIGtlcm5lbC1pbnRlcm5hbCBwb2ludGVycywgYm9vbGVhbiBzdGF0ZSBmbGFncywgYW5kIG11dGV4IGxvY2tpbmcuIFRoZXJlIGFyZSBubyBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBkYXRhIHRyYW5zZmVycmVkIHRvIHVzZXIgc3BhY2UgKG5vIGNvcHlfdG9fdXNlciwgbmV0bGluayBtZXNzYWdlcywgaW9jdGxzLCBldGMuKS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIGxvY2tpbmcgb3IgdXNlLWFmdGVyLWZyZWUvTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbm90IEtNU0FOLiBIZW5jZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjM4LjY0NjIxMzIxNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMTg2MDY2Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUEhZTElOS1wiLFxuICAgIFwiVVNCX0xBTjc4WFhcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiLFxuICAgIFwiTkVUX0RTQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCIsXG4gICAgXCJwaHlfZGV0YWNoXCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gdGhlIFBIWSBhbmQgcGh5bGluayBzdWJzeXN0ZW1zLiBTcGVjaWZpY2FsbHksIGl0IHJlc3RvcmVzIHRoZSBQSFkgSVJRIGNvbmZpZ3VyYXRpb24gdXBvbiBkZXRhY2htZW50L2Vycm9yIGZvciBnZW5lcmljIFBIWSBkcml2ZXJzIGFuZCBlbnN1cmVzIHRoYXQgcGh5bGluayBzdGF0ZSBpcyBwcm9wZXJseSBjbGVhcmVkIGlmIHBoeSBicmluZ3VwIGZhaWxzLlxcblxcblRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIGtlcm5lbC1pbnRlcm5hbCBwb2ludGVycywgYm9vbGVhbiBzdGF0ZSBmbGFncywgYW5kIG11dGV4IGxvY2tpbmcuIFRoZXJlIGFyZSBubyBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBkYXRhIHRyYW5zZmVycmVkIHRvIHVzZXIgc3BhY2UgKG5vIGNvcHlfdG9fdXNlciwgbmV0bGluayBtZXNzYWdlcywgaW9jdGxzLCBldGMuKS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIGxvY2tpbmcgb3IgdXNlLWFmdGVyLWZyZWUvTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbm90IEtNU0FOLiBIZW5jZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgc3RhdGUgbWFuYWdlbWVudCBhbmQgZXJyb3IgdW53aW5kaW5nIGluIFBIWUxJQiBhbmQgUEhZTElOSyBzdWJzeXN0ZW1zOiByZXN0b3JpbmcgcGh5ZGV2LVxcdTAwM2VpcnEgdXBvbiBnZW5lcmljIFBIWSB1bmJpbmQvYXR0YWNobWVudCBmYWlsdXJlIGluIHBoeV9kZXZpY2UuYywgYW5kIHByb3Blcmx5IGNsZWFyaW5nIHBsLVxcdTAwM2VwaHlkZXYgc3RhdGUgdmlhIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IHdoZW4gcGh5bGlua19icmluZ3VwX3BoeSBmYWlscyBpbiBwaHlsaW5rLmMuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gRXRoZXJuZXQgUEhZIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjM4LjY0NjIxOTQxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkyMDI0MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDFhZGNkM2NjMDM3NTc5ZGQ1ZTcxMTI1NTJlNTgwNGYwZjY5MWI1OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDIxOjU3OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uMjBmYzI5MzU1ZjYwYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzM0LDYgKzE3MzQsMTcgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4gXFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbiB9XFxuIFxcbisvKiBVbmRvIHRoZSBQSFlfUE9MTCB0aGF0IHBoeV9wcm9iZSgpIHNldHMgd2hlbiBhIGRyaXZlciB3aXRob3V0XFxuKyAqIGludGVycnVwdCBjYWxsYmFja3MgYmluZHMuIFRoZSBiaW5kIGN5Y2xlIG5ldmVyIHdyaXRlcyBidXMtXFx1MDAzZWlycVtdLFxcbisgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFlcXG4rICogY2FycmllcyBkaWQgbm90IGNvbWUgZnJvbSB0aGUgYmluZCBhbmQgbXVzdCBzdGFuZC5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VpcnEgPT0gUEhZX1BPTEwpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlaXJxID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlaXJxW3BoeWRldi1cXHUwMDNlbWRpby5hZGRyXTtcXG4rfVxcbitcXG4gLyoqXFxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuQEAgLTE4OTYsNiArMTkwNyw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbiBcXG4gZXJyb3JfbW9kdWxlX3B1dDpcXG4gXFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4rXFx0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xcbiBcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbiBcXHRkLVxcdTAwM2Vkcml2ZXIgPSBOVUxMO1xcbiBlcnJvcl9wdXRfZGV2aWNlOlxcbkBAIC0xOTY1LDYgKzE5NzcsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXFxuIFxcdCAqL1xcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XFxuK1xcdFxcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcXG4gXFx0XFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7XFxuIH1cXG4gXFxuKy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXguICovXFxuK3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRwbC1cXHUwMDNlcGh5ZGV2ID0gTlVMTDtcXG4rXFx0cGwtXFx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XFxuK1xcdHBsLVxcdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuIFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRpZiAocmV0ID09IDAgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxcbiBcXHRcXHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcXG4gXFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuK1xcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yMzQ3LDE1ICsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbiBcXHRwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbi1cXHRpZiAocGh5KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbi1cXHRcXHRwbC1cXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcXG4tXFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4tXFx0fVxcbitcXHRpZiAocGh5KVxcbitcXHRcXHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4gXFxuIFxcdGlmIChwaHkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MzkuMDM5MjY0MDY4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3MjY0ODMyODUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBIWUxJTktcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIk5FVF9EU0FcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiLFxuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHN0YXRlIG1hbmFnZW1lbnQgYW5kIGVycm9yIHVud2luZGluZyBpbiBQSFlMSUIgYW5kIFBIWUxJTksgc3Vic3lzdGVtczogcmVzdG9yaW5nIHBoeWRldi1cXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cXHUwMDNlcGh5ZGV2IHN0YXRlIHZpYSBwaHlsaW5rX2NsZWFyX3BoeWRldiB3aGVuIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMgaW4gcGh5bGluay5jLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIEV0aGVybmV0IFBIWSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMWFkY2QzY2MwMzc1NzlkZDVlNzExMjU1MmU1ODA0ZjBmNjkxYjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li4yMGZjMjkzNTVmNjBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MzQsNiArMTczNCwxNyBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIFVuZG8gdGhlIFBIWV9QT0xMIHRoYXQgcGh5X3Byb2JlKCkgc2V0cyB3aGVuIGEgZHJpdmVyIHdpdGhvdXRcbisgKiBpbnRlcnJ1cHQgY2FsbGJhY2tzIGJpbmRzLiBUaGUgYmluZCBjeWNsZSBuZXZlciB3cml0ZXMgYnVzLVx1MDAzZWlycVtdLFxuKyAqIHNvIHRoZSB0YWJsZSBzdGlsbCBob2xkcyB0aGUgcHJlLWJpbmQgdmFsdWU7IGFueXRoaW5nIGVsc2UgdGhlIFBIWVxuKyAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuXG4rICovXG4rc3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGlmIChwaHlkZXYtXHUwMDNlaXJxID09IFBIWV9QT0xMKVxuK1x0XHRwaHlkZXYtXHUwMDNlaXJxID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZWlycVtwaHlkZXYtXHUwMDNlbWRpby5hZGRyXTtcbit9XG4rXG4gLyoqXG4gICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuQEAgLTE4OTYsNiArMTkwNyw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIGVycm9yX21vZHVsZV9wdXQ6XG4gXHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdGQtXHUwMDNlZHJpdmVyID0gTlVMTDtcbiBlcnJvcl9wdXRfZGV2aWNlOlxuQEAgLTE5NjUsNiArMTk3Nyw3IEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4gXHQgKi9cbiBcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuK1x0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4gXHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuIFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbisvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC1cdTAwM2VwaHlkZXZfbXV0ZXguICovXG4rc3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuK1x0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbitcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aWYgKHJldCA9PSAwIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXG4gXHRcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xuIFxuK1x0aWYgKHJldCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdH1cbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIzNDcsMTUgKzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFx0cGh5ID0gcGwtXHUwMDNlcGh5ZGV2O1xuLVx0aWYgKHBoeSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4tXHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0fVxuK1x0aWYgKHBoeSlcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcbiBcdGlmIChwaHkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjM5LjAzOTI2NTc2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyNDI4ODQ2MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyB0aGlzIHBhdGNoIGZvciBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgYmVpbmcgaW50cm9kdWNlZCBhbmQgd2hlcmUgdGhleSBhcmUgaGFwcGVuaW5nLiBUaGVuLCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYW5kIHRhcmdldCBzeW1ib2xzIGZvciBlZmZlY3RpdmUgZnV6emluZy5cblxuTG9va2luZyBhdCB0aGUgcGF0Y2ggaXRzZWxmLCBpdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBTcGVjaWZpY2FsbHksIEkgc2VlOlxuXG4qICAgSW4gYHBoeV9kZXZpY2UuY2AsIHRoZXJlJ3MgYSBtb2RpZmljYXRpb24gdG8gYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnFgLiBJdCBzZWVtcyB0byBiZSByZXN0b3JpbmcgdGhlIGludGVycnVwdCBjb25maWd1cmF0aW9uIChgcGh5ZGV2LVx1MDAzZWlycWApIHVuZGVyIHNwZWNpZmljIGVycm9yIGNvbmRpdGlvbnMgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgYHBoeV9kZXRhY2hgLiBUaGlzIGlzIGEgY2FuZGlkYXRlLCBidXQgdGhlIGNvbmRpdGlvbnMgYXJlIGEgYml0IHNwZWNpZmljLlxuKiAgIEluIGBwaHlsaW5rLmNgLCB3ZSd2ZSBnb3QgYSBuZXcgaGVscGVyIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgZXh0cmFjdGVkIGZyb20gYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLiBBbmQsIHRoaXMgaGVscGVyIGlzIHVzZWQgZm9yIGVycm9yIGhhbmRsaW5nIGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YC4gVGhpcyBzZWVtcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IGludm9sdmVzIGNsZWFyaW5nIHRoZSBwaHlkZXYsIGFuZCBlcnJvciBjb25kaXRpb25zIGFyZSBwcmltZSBmdXp6aW5nIHRhcmdldHMuXG5cbk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVzZSBQSFkgZGV2aWNlcyBhbmQgcGh5bGluayBzdHJ1Y3R1cmVzIGNhbiBiZSBtYW5pcHVsYXRlZCwgcmVhY2hlZCwgb3IgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZSBvciB0aHJvdWdoIG5ldHdvcmsgaW50ZXJhY3Rpb25zLCBvciBpZiB0aGV5IGFyZSBwdXJlbHkgaW50ZXJuYWwga2VybmVsIGNvbXBvbmVudHMuIENhbiBJIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocyB0aHJvdWdoIG5ldHdvcmsgbmV0ZGV2aWNlcywgdmlydHVhbCBkZXZpY2VzLCBvciBvdGhlciB1c2VyLXNwYWNlIG1lY2hhbmlzbXM/IEkgbmVlZCB0byBjaGVjayBob3cgdGhlc2UgbW9kdWxlcyBhcmUgdXNlZC5cblxuU28sIGxldCBtZSBjaGVjayB0aGUgYEtjb25maWdgIGluIGBkcml2ZXJzL25ldC9waHlgIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdW5kZXJzdGFuZGluZyBvZiB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgdG8gcmVhY2ggdGhlc2UgcGFydHMgb2YgdGhlIGNvZGUuIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbGVycyB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGVhc3kgd2F5IHRvIHJlYWNoIHRoZW0uIFRoaXMgaXMgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHRvIGNvbnN0cnVjdCBhIGdvb2QgZnV6emluZyBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjUxLjQ2ODExNDQ3OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMxOTI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR18uKlBIWS4qXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MTY9bGlicGh5LSQoQ09ORklHX09QRU5fQUxMSUFOQ0VfSEVMUEVSUykgKz0gb3Blbl9hbGxpYW5jZV9oZWxwZXJzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTctXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbWRpb19idXMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfUEhZTElOSylcXHRcXHQrPSBwaHlsaW5rLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1BIWUxJQilcXHRcXHQrPSBsaWJwaHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fZGV2cmVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX1BIWV9QQUNLQUdFKVxcdCs9IHBoeV9wYWNrYWdlLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMjMtXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpICs9IG1paV90aW1lc3RhbXBlci5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTI4PW9iai15XFx0XFx0XFx0XFx0Kz0gJChzZnAtb2JqLXkpICQoc2ZwLW9iai1tKVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yOS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX0FESU5fUEhZKVxcdFxcdCs9IGFkaW4ub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQURJTjExMDBfUEhZKVxcdCs9IGFkaW4xMTAwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0FESU4xMTQwX1BIWSlcXHQrPSBhZGluMTE0MC1waHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfQUlSX0FOODgwMV9QSFkpXFx0Kz0gYWlyX2FuODgwMS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19BSVJfRU44ODExSF9QSFkpICAgKz0gYWlyX2VuODgxMWgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQUlSX05FVF9QSFlMSUIpXFx0Kz0gYWlyX3BoeV9saWIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfQU1EX1BIWSlcXHRcXHQrPSBhbWQub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfQU1DQ19RVDIwMjVfUEhZKVxcdCs9IHF0MjAyNS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19BUVVBTlRJQV9QSFkpXFx0Kz0gYXF1YW50aWEvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19BUzIxWFhYX1BIWSlcXHQrPSBhczIxeHh4Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNDAtaWZkZWYgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQxOiAgb2JqLSQoQ09ORklHX0FYODg3OTZCX1BIWSlcXHQrPSBheDg4Nzk2Yl9ydXN0Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNDItZWxzZVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0MzogIG9iai0kKENPTkZJR19BWDg4Nzk2Ql9QSFkpXFx0Kz0gYXg4ODc5NmIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS00NC1lbmRpZlxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQkNNNTQxNDBfUEhZKVxcdCs9IGJjbTU0MTQwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX0JDTTYzWFhfUEhZKVxcdCs9IGJjbTYzeHgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfQkNNN1hYWF9QSFkpXFx0Kz0gYmNtN3h4eC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19CQ004NDg4MV9QSFkpXFx0Kz0gYmNtODQ4ODEub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfQkNNODdYWF9QSFkpXFx0Kz0gYmNtODd4eC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19CQ01fQ1lHTlVTX1BIWSlcXHQrPSBiY20tY3lnbnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZTElCKVxcdCs9IGJjbS1waHktbGliLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZUFRQKVxcdCs9IGJjbS1waHktcHRwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcXHQrPSBicm9hZGNvbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19DSUNBREFfUEhZKVxcdCs9IGNpY2FkYS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19DT1JUSU5BX1BIWSlcXHQrPSBjb3J0aW5hLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcXHQrPSBkYXA4MjExci5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU3Om9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcXHQrPSBkYXZpY29tLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVxcdCs9IGRwODM2NDAub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXFx0Kz0gZHA4MzgyMi5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcXHQrPSBkcDgzODQ4Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX0RQODM4NjdfUEhZKVxcdCs9IGRwODM4Njcub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2MjpvYmotJChDT05GSUdfRFA4Mzg2OV9QSFkpXFx0Kz0gZHA4Mzg2OS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19EUDgzVEM4MTFfUEhZKVxcdCs9IGRwODN0YzgxMS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19EUDgzVEQ1MTBfUEhZKVxcdCs9IGRwODN0ZDUxMC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19EUDgzVEc3MjBfUEhZKVxcdCs9IGRwODN0ZzcyMC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19GSVhFRF9QSFkpXFx0XFx0Kz0gZml4ZWRfcGh5Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Njc6b2JqLSQoQ09ORklHX0lDUExVU19QSFkpXFx0Kz0gaWNwbHVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Njg6b2JqLSQoQ09ORklHX0lOVEVMX1hXQVlfUEhZKVxcdCs9IGludGVsLXh3YXkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfTFNJX0VUMTAxMUNfUEhZKVxcdCs9IGV0MTAxMWMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfTFhUX1BIWSlcXHRcXHQrPSBseHQub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3MTpvYmotJChDT05GSUdfTUFSVkVMTF8xMEdfUEhZKVxcdCs9IG1hcnZlbGwxMGcub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfTUFSVkVMTF9QSFkpXFx0Kz0gbWFydmVsbC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjczOm9iai0kKENPTkZJR19NQVJWRUxMXzg4UTJYWFhfUEhZKVxcdCs9IG1hcnZlbGwtODhxMnh4eC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjc0Om9iai0kKENPTkZJR19NQVJWRUxMXzg4WDIyMjJfUEhZKVxcdCs9IG1hcnZlbGwtODh4MjIyMi5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjc1Om9iai0kKENPTkZJR19NQVhMSU5FQVJfR1BIWSlcXHQrPSBteGwtZ3B5Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzY6b2JqLSQoQ09ORklHX01BWExJTkVBUl84NjExMF9QSFkpXFx0Kz0gbXhsLTg2MTEwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNzctb2JqLXlcXHRcXHRcXHRcXHQrPSBtZWRpYXRlay9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Nzg6b2JqLSQoQ09ORklHX01FU09OX0dYTF9QSFkpXFx0Kz0gbWVzb24tZ3hsLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX01JQ1JFTF9QSFkpXFx0Kz0gbWljcmVsLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODA6b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9QSFkpXFx0Kz0gbWljcm9jaGlwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9QSFlfUkRTX1BUUClcXHQrPSBtaWNyb2NoaXBfcmRzX3B0cC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFfUEhZKVxcdCs9IG1pY3JvY2hpcF90MS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFTX1BIWSkgKz0gbWljcm9jaGlwX3Qxcy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg0Om9iai0kKENPTkZJR19NSUNST1NFTUlfUEhZKVxcdCs9IG1zY2MvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg1Om9iai0kKENPTkZJR19NT1RPUkNPTU1fUEhZKVxcdCs9IG1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg2Om9iai0kKENPTkZJR19OQVRJT05BTF9QSFkpXFx0Kz0gbmF0aW9uYWwub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4NzpvYmotJChDT05GSUdfTkNOMjYwMDBfUEhZKVxcdCs9IG5jbjI2MDAwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtODgtbnhwLWM0NS10amEtb2Jqc1xcdFxcdCs9IG54cC1jNDUtdGphMTF4eC5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9OTE9ZW5kaWZcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTI6b2JqLSQoQ09ORklHX05YUF9DNDVfVEpBMTFYWF9QSFkpXFx0Kz0gbnhwLWM0NS10amEub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5MzpvYmotJChDT05GSUdfTlhQX0NCVFhfUEhZKVxcdCs9IG54cC1jYnR4Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTQ6b2JqLSQoQ09ORklHX05YUF9USkExMVhYX1BIWSlcXHQrPSBueHAtdGphMTF4eC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk1LW9iai15XFx0XFx0XFx0XFx0Kz0gcWNvbS9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTY6b2JqLSQoQ09ORklHX1FTRU1JX1BIWSlcXHRcXHQrPSBxc2VtaS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk3Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcXHQrPSByZWFsdGVrL1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfUkVORVNBU19QSFkpXFx0Kz0gdVBENjA2MjAub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5OTpvYmotJChDT05GSUdfUk9DS0NISVBfUEhZKVxcdCs9IHJvY2tjaGlwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTAwOm9iai0kKENPTkZJR19TTVNDX1BIWSlcXHRcXHQrPSBzbXNjLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTAxLW9iai0kKENPTkZJR19TVEUxMFhQKVxcdFxcdCs9IHN0ZTEwWHAub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxMDI6b2JqLSQoQ09ORklHX1RFUkFORVRJQ1NfUEhZKVxcdCs9IHRlcmFuZXRpY3Mub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1ZJVEVTU0VfUEhZKVxcdCs9IHZpdGVzc2Uub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xMDQtb2JqLSQoQ09ORklHX1hJTElOWF9HTUlJMlJHTUlJKSArPSB4aWxpbnhfZ21paTJyZ21paS5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvTWFrZWZpbGU9NT1lbmRpZlxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19BUVVBTlRJQV9QSFkpXFx0Kz0gYXF1YW50aWEub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19NRURJQVRFS18yUDVHRV9QSFkpXFx0Kz0gbXRrLTJwNWdlLm9cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTUVESUFURUtfRkVfU09DX1BIWSlcXHQrPSBtdGstZmUtc29jLm9cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTUVESUFURUtfR0VfUEhZKVxcdFxcdCs9IG10ay1nZS5vXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01FRElBVEVLX0dFX1NPQ19QSFkpXFx0Kz0gbXRrLWdlLXNvYy5vXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01US19ORVRfUEhZTElCKVxcdFxcdCs9IG10ay1waHktbGliLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSkgOj0gbXNjYy5vXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGUtNi1tc2NjLW9ianMgOj0gbXNjY19tYWluLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1FDT01fTkVUX1BIWUxJQilcXHQrPSBxY29tLXBoeS1saWIub1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FUODAzWF9QSFkpXFx0Kz0gYXQ4MDN4Lm9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19RQ0E4M1hYX1BIWSlcXHQrPSBxY2E4M3h4Lm9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19RQ0E4MDhYX1BIWSlcXHQrPSBxY2E4MDh4Lm9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19RQ0E4MDdYX1BIWSlcXHQrPSBxY2E4MDd4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlPTM9cmVhbHRlay0kKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgKz0gcmVhbHRla19od21vbi5vXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfUkVBTFRFS19QSFkpXFx0Kz0gcmVhbHRlay5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjUxLjUxOTQ0MDIyNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1MTA4NDgyNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFBIWSBDb25uZWN0aXZpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBQSFkgYW5kIHBoeWxpbmsgc2l0dWF0aW9uLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgcGh5X2RldmljZS5jYCBnZXRzIGNvbXBpbGVkIGludG8gYGxpYnBoeS5vYCBpZiBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZCwgYW5kIGBwaHlsaW5rLmNgIGNvbXBpbGVzIGludG8gYHBoeWxpbmsub2AgaWYgYENPTkZJR19QSFlMSU5LYCBpcyBlbmFibGVkLiBUaGF0IGdpdmVzIG1lIGEgZ2VuZXJhbCBpZGVhIG9mIHdoZXJlIHRoZXNlIHR3byBwaWVjZXMgZml0IGluIHRoZSBidWlsZCBwcm9jZXNzLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBtb2R1bGVzIGFyZSBhY3R1YWxseSAqdXNlZCogYWNyb3NzIHRoZSBrZXJuZWwuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0eXBlcyBvZiBkcml2ZXJzIGRlcGVuZCBvbiB0aGVtLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHVzdWFsIHN1c3BlY3RzOiB2aXJ0dWFsIGRyaXZlcnMsIHRob3NlIHBlc2t5IFVTQiBFdGhlcm5ldCBkb25nbGVzLCBkdW1teSBNRElPIHNldHVwcywgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXJzLCBhbmQgeW91ciBydW4tb2YtdGhlLW1pbGwgc3RhbmRhcmQgbmV0d29yayBkcml2ZXJzLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIG1hcCBvZiB0aGUgZGVwZW5kZW5jeSBsYW5kc2NhcGUgaGVyZS5cblxuVG8gZG8gdGhhdCwgSSdsbCBuZWVkIHRvIGxvY2F0ZSB3aGVyZSBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2Nvbm5lY3RgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCwgYW5kIGBwaHlsaW5rX2NyZWF0ZWAgYXJlIGFjdHVhbGx5IGJlaW5nICpjYWxsZWQqLiBHcmVwcGluZyB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIHJldmVhbCB0aGUgY29yZSBkcml2ZXJzIHRoYXQgYXJlIHVzaW5nIHBoeWxpbmsgYW5kIHBoeV9kZXZpY2UgYW5kIHByb3ZpZGUgYSBzdHJvbmcgYmFzaXMgZm9yIG15IGFuYWx5c2lzLiBUaGF0IHNob3VsZCBnZXQgbWUgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE3MCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1Nzo1NS4wMzAyOTI2MjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5MjEzODU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2Nvbm5lY3RfcGh5fHBoeV9hdHRhY2hfZGlyZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHktbGluay10b3BvbG9neS5yc3Q9ODU9VGhlc2UgZnVuY3Rpb24gYXJlIGFscmVhZHkgaG9va2VkIGludG8gdGhlIHBoeWxpYiBzdWJzeXN0ZW0sIHNvIGFsbCBQSFlzIHRoYXRcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LWxpbmstdG9wb2xvZ3kucnN0Ojg2OmFyZSBsaW5rZWQgdG8gYSBuZXRfZGV2aWNlIHRocm91Z2ggOmM6ZnVuYzpgcGh5X2F0dGFjaF9kaXJlY3RgIHdpbGwgYXV0b21hdGljYWxseVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHktbGluay10b3BvbG9neS5yc3QtODctam9pbiB0aGUgbmV0ZGV2J3MgdG9wb2xvZ3kuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTY1LSAgIEZvciB0aGUgbW9zdCBwYXJ0LCBgYGZsYWdzYGAgY2FuIGJlIHplcm87IHRoZXNlIGZsYWdzIGFyZSBwYXNzZWQgdG9cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjE2NjogICB0aGUgcGh5X2F0dGFjaF9kaXJlY3QoKSBpbnNpZGUgdGhpcyBmdW5jdGlvbiBjYWxsIGlmIGEgUEhZIGlzIHNwZWNpZmllZFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTY3LSAgIGluIHRoZSBEVCBub2RlIGBgbm9kZWBgLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz05MzE9c3RhdGljIGludCB4Z2JlX3BoeV9maW5kX3BoeV9kZXZpY2Uoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5ODM6XFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QocGRhdGEtXFx1MDAzZW5ldGRldiwgcGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWRldl9mbGFncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NC1cXHRcXHRcXHRcXHRQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4NjpcXHRcXHRuZXRkZXZfZXJyKHBkYXRhLVxcdTAwM2VuZXRkZXYsIFxcXCJwaHlfYXR0YWNoX2RpcmVjdCBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg3LVxcdFxcdHBoeV9kZXZpY2VfcmVtb3ZlKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTk4Mj1zdGF0aWMgaW50IG1hY2JfcGh5bGlua19jb25uZWN0KHN0cnVjdCBtYWNiICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTk5LVxcdFxcdC8qIGF0dGFjaCB0aGUgbWFjIHRvIHRoZSBwaHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwMDA6XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShicC1cXHUwMDNlcGh5bGluaywgcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwMDEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTExNTk9aW50IGhuc19uaWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBobmFlX2hhbmRsZSAqaClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYy0xMTgwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jOjExODE6XFx0XFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QobmRldiwgcGh5X2RldiwgMCwgaC1cXHUwMDNlcGh5X2lmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMtMTE4Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzIzMz1zdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jb25uZWN0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzI0Ni1cXHRcXHRcXHQvKiBhdHRhY2ggdGhlIG1hYyB0byB0aGUgcGh5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMyNDc6XFx0XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShhZGFwdGVyLVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjQ4LVxcdFxcdH0gZWxzZSBpZiAoKChhZGFwdGVyLVxcdTAwM2Vjc3IuaWRfcmV2IFxcdTAwMjYgSURfUkVWX0lEX01BU0tfKSA9PVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMjk5PXN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxMzQ5OlxcdFxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluaywgcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNTAtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwLmM9MTQwNj1zdGF0aWMgaW50IHRuNDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwLmM6MTQxMTpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz00ODg9c3RhdGljIGludCBuZ2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy01MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjUwNTpcXHRlcnIgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHd4LVxcdTAwM2VwaHlsaW5rLCB3eC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTA2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzozMDA6XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwaHlsaW5rLCB3eC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTMwMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyMjU9aW50IHBoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjMzLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTIzNDpcXHRyYyA9IHBoeV9hdHRhY2hfZGlyZWN0KGRldiwgcGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWRldl9mbGFncywgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMzUtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzQyPXN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc0OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NDk6ICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc1MC0gKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2Mi0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NjM6aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzY0LVxcdFxcdCAgICAgIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkxOC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTE5OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyNS0gKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTI2OiAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjctICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM0LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzNTpcXHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXFx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM4LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzOTogKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQwLSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQzLSAqIENvbm5lY3QgQHBoeSB0byB0aGUgcGh5bGluayBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgQHBsIGJ5IGNhbGxpbmdcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDQ6ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlcidzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQ1LSAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1Mi0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTM6aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzItfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI3MzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODEtICogQ29ubmVjdCB0aGUgcGh5IHNwZWNpZmllZCBpbiB0aGUgZGV2aWNlIG5vZGUgQGRuIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgyOiAqIHNwZWNpZmllZCBieSBAcGwuIEFjdGlvbnMgc3BlY2lmaWVkIGluIHBoeWxpbmtfY29ubmVjdF9waHkoKSB3aWxsIGJlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgzLSAqIHBlcmZvcm1lZC5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMwNT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzM4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMzOTpcXHRyZXQgPSBwaHlfYXR0YWNoX2RpcmVjdChwbC1cXHUwMDNlbmV0ZGV2LCBwaHlfZGV2LCBmbGFncyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDAtXFx0XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcxNDpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI4NTg9c3RhdGljIGludCBsYW43OHh4X3BoeV9pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTAxLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjkwMjpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGRldi1cXHUwMDNlcGh5bGluaywgcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDMtXFx0aWYgKHJldCkge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yMTY5PXN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZmluZF9uZXh0KHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBwaHlfZGV2aWNlICpwb3MpO1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE3MDppbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTIxNzEtXFx0XFx0ICAgICAgdTMyIGZsYWdzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcyNz1ib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjgtXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzI5OmludCBwaHlsaW5rX2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICosIHN0cnVjdCBwaHlfZGV2aWNlICopO1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczMC1pbnQgcGh5bGlua19vZl9waHlfY29ubmVjdChzdHJ1Y3QgcGh5bGluayAqLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKiwgdTMyIGZsYWdzKTtcXG4tLVxcbm5ldC9kc2EvdXNlci5jPTI2Mzc9c3RhdGljIGludCBkc2FfdXNlcl9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYsIGludCBhZGRyLFxcbi0tXFxubmV0L2RzYS91c2VyLmMtMjY1MC1cXG5uZXQvZHNhL3VzZXIuYzoyNjUxOlxcdHJldHVybiBwaHlsaW5rX2Nvbm5lY3RfcGh5KGRwLVxcdTAwM2VwbCwgdXNlcl9kZXYtXFx1MDAzZXBoeWRldik7XFxubmV0L2RzYS91c2VyLmMtMjY1Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjU3LjgyMjQzNzA1MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMTI0ODQ0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0d29yayBEcml2ZXIgRGVlcCBEaXZlKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHNlZWluZzogaXQgbG9va3MgbGlrZSB0aGVzZSBVU0IgbmV0d29yayBkcml2ZXJzLCBsaWtlIGBsYW43OHh4LmNgIGFuZCBgYXNpeF9kZXZpY2VzLmNgIOKAkyB0aGUgb25lcyB0aGF0IHVzZSBjaGlwcyBsaWtlIHRoZSBBWDg4NzcyIOKAkyB0aGV5J3JlIGxldmVyYWdpbmcgYHBoeWxpbmtgIGFuZCBgcGh5bGliYC4gSW50ZXJlc3RpbmcuIEFuZCBvZiBjb3Vyc2UsIHRoZXJlJ3MgYWxsIHRoaXMgZW11bGF0aW9uIHN0dWZmIHdpdGggVVNCOiBVU0IgUmF3LCBzeXprYWxsZXIsIFVTQiBnYWRnZXQsIHZoY2ksIGFuZCB0aGUgd29ybGQgb2YgdXNiLWZ1enppbmcgaXMgYWx3YXlzIG91dCB0aGVyZS4gVGhlbiB3ZSBoYXZlIERTQSwgc3RhbmRhcmQgZXRoZXJuZXQgZHJpdmVycyBsaWtlIHRoZSBjYWRlbmNlIG1hY2Igb3IgdGhlIGUxMDAwIGZhbWlseSwgc3RtbWFjLCBldGMuLCBhbmQgdGhlIE1ESU8vUEhZIHN1YnN5c3RlbXMuIFJpZ2h0LCBnb3QgaXQuXG5cbk5vdywgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLiBJIHNob3VsZCBleGFtaW5lIHRoZSBjb2RlIHRoYXQncyBiZWVuIHJlY2VudGx5IG1vZGlmaWVkIGluIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYHBoeV9kZXZpY2UuY2Ag4oCTIHNwZWNpZmljYWxseSBhcm91bmQgdGhhdCAxNzMwLTE5ODAgbGluZSByYW5nZSDigJMgYW5kIHRoZW4gZGl2ZSBpbnRvIGBwaHlsaW5rLmNgLCBhcm91bmQgbGluZXMgMjA4MC0yMzgwLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGVzZSBQSFkgc3Vic3lzdGVtcyB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTU5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjAxLjAzNDkyNDU1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MzAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3MzA6XFx0fVxcbjE3MzE6XFx0XFxuMTczMjpcXHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxcbjE3MzM6XFx0e1xcbjE3MzQ6XFx0XFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbjE3MzU6XFx0fVxcbjE3MzY6XFx0XFxuMTczNzpcXHQvKiBVbmRvIHRoZSBQSFlfUE9MTCB0aGF0IHBoeV9wcm9iZSgpIHNldHMgd2hlbiBhIGRyaXZlciB3aXRob3V0XFxuMTczODpcXHQgKiBpbnRlcnJ1cHQgY2FsbGJhY2tzIGJpbmRzLiBUaGUgYmluZCBjeWNsZSBuZXZlciB3cml0ZXMgYnVzLVxcdTAwM2VpcnFbXSxcXG4xNzM5OlxcdCAqIHNvIHRoZSB0YWJsZSBzdGlsbCBob2xkcyB0aGUgcHJlLWJpbmQgdmFsdWU7IGFueXRoaW5nIGVsc2UgdGhlIFBIWVxcbjE3NDA6XFx0ICogY2FycmllcyBkaWQgbm90IGNvbWUgZnJvbSB0aGUgYmluZCBhbmQgbXVzdCBzdGFuZC5cXG4xNzQxOlxcdCAqL1xcbjE3NDI6XFx0c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE3NDM6XFx0e1xcbjE3NDQ6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXJxID09IFBIWV9QT0xMKVxcbjE3NDU6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VpcnFbcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHJdO1xcbjE3NDY6XFx0fVxcbjE3NDc6XFx0XFxuMTc0ODpcXHQvKipcXG4xNzQ5OlxcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4xNzUwOlxcdCAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTE6XFx0ICogQHBoeWRldjogUG9pbnRlciB0byBwaHlfZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTI6XFx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJ3MgZGV2X2ZsYWdzXFxuMTc1MzpcXHQgKiBAaW50ZXJmYWNlOiBQSFkgZGV2aWNlJ3MgaW50ZXJmYWNlXFxuMTc1NDpcXHQgKlxcbjE3NTU6XFx0ICogRGVzY3JpcHRpb246IENhbGxlZCBieSBkcml2ZXJzIHRvIGF0dGFjaCB0byBhIHBhcnRpY3VsYXIgUEhZXFxuMTc1NjpcXHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxcbjE3NTc6XFx0ICogICAgIHRvIHRoZSBwaHlfZHJpdmVyLiAgSWYgbm8gZHJpdmVyIGlzIGF0dGFjaGVkLCB0aGVuIGFcXG4xNzU4OlxcdCAqICAgICBnZW5lcmljIGRyaXZlciBpcyB1c2VkLiAgVGhlIHBoeV9kZXZpY2UgaXMgZ2l2ZW4gYSBwdHIgdG9cXG4xNzU5OlxcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXFxuMTc2MDpcXHQgKiAgICAgY2hhbmdlLiAgVGhlIHBoeV9kZXZpY2UgaXMgcmV0dXJuZWQgdG8gdGhlIGF0dGFjaGluZyBkcml2ZXIuXFxuMTc2MTpcXHQgKiAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHJlZmVyZW5jZSBvbiB0aGUgcGh5IGRldmljZS5cXG4xNzYyOlxcdCAqL1xcbjE3NjM6XFx0aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuMTc2NDpcXHRcXHRcXHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuMTc2NTpcXHR7XFxuMTc2NjpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG4xNzY3OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmQgPSBcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldjtcXG4xNzY4OlxcdFxcdHN0cnVjdCBtb2R1bGUgKm5kZXZfb3duZXIgPSBOVUxMO1xcbjE3Njk6XFx0XFx0aW50IGVycjtcXG4xNzcwOlxcdFxcbjE3NzE6XFx0XFx0LyogRm9yIEV0aGVybmV0IGRldmljZSBkcml2ZXJzIHRoYXQgcmVnaXN0ZXIgdGhlaXIgb3duIE1ESU8gYnVzLCB3ZVxcbjE3NzI6XFx0XFx0ICogd2lsbCBoYXZlIGJ1cy1cXHUwMDNlb3duZXIgbWF0Y2ggbmRldl9tb2QsIHNvIHdlIGRvIG5vdCB3YW50IHRvIGluY3JlbWVudFxcbjE3NzM6XFx0XFx0ICogb3VyIG93biBtb2R1bGUtXFx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cXG4xNzc0OlxcdFxcdCAqIHVubG9hZCBsYXRlciBvbi5cXG4xNzc1OlxcdFxcdCAqL1xcbjE3NzY6XFx0XFx0aWYgKGRldilcXG4xNzc3OlxcdFxcdFxcdG5kZXZfb3duZXIgPSBkZXYtXFx1MDAzZWRldi5wYXJlbnQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXI7XFxuMTc3ODpcXHRcXHRpZiAobmRldl9vd25lciAhPSBidXMtXFx1MDAzZW93bmVyIFxcdTAwMjZcXHUwMDI2ICF0cnlfbW9kdWxlX2dldChidXMtXFx1MDAzZW93bmVyKSkge1xcbjE3Nzk6XFx0XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IHRoZSBidXMgbW9kdWxlXFxcXG5cXFwiKTtcXG4xNzgwOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjE3ODE6XFx0XFx0fVxcbjE3ODI6XFx0XFxuMTc4MzpcXHRcXHRnZXRfZGV2aWNlKGQpO1xcbjE3ODQ6XFx0XFxuMTc4NTpcXHRcXHQvKiBBc3N1bWUgdGhhdCBpZiB0aGVyZSBpcyBubyBkcml2ZXIsIHRoYXQgaXQgZG9lc24ndFxcbjE3ODY6XFx0XFx0ICogZXhpc3QsIGFuZCB3ZSBzaG91bGQgdXNlIHRoZSBnZW5waHkgZHJpdmVyLlxcbjE3ODc6XFx0XFx0ICovXFxuMTc4ODpcXHRcXHRpZiAoIWQtXFx1MDAzZWRyaXZlcikge1xcbjE3ODk6XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfYzQ1KVxcbjE3OTA6XFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHJpdmVyID0gXFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xcbjE3OTE6XFx0XFx0XFx0ZWxzZVxcbjE3OTI6XFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHJpdmVyID0gXFx1MDAyNmdlbnBoeV9kcml2ZXIubWRpb2Rydi5kcml2ZXI7XFxuMTc5MzpcXHRcXG4xNzk0OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDE7XFxuMTc5NTpcXHRcXHR9XFxuMTc5NjpcXHRcXG4xNzk3OlxcdFxcdGlmICghdHJ5X21vZHVsZV9nZXQoZC1cXHUwMDNlZHJpdmVyLVxcdTAwM2Vvd25lcikpIHtcXG4xNzk4OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiZmFpbGVkIHRvIGdldCB0aGUgZGV2aWNlIGRyaXZlciBtb2R1bGVcXFxcblxcXCIpO1xcbjE3OTk6XFx0XFx0XFx0ZXJyID0gLUVJTztcXG4xODAwOlxcdFxcdFxcdGdvdG8gZXJyb3JfcHV0X2RldmljZTtcXG4xODAxOlxcdFxcdH1cXG4xODAyOlxcdFxcbjE4MDM6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xcbjE4MDQ6XFx0XFx0XFx0ZXJyID0gZC1cXHUwMDNlZHJpdmVyLVxcdTAwM2Vwcm9iZShkKTtcXG4xODA1OlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzZT0gMClcXG4xODA2OlxcdFxcdFxcdFxcdGVyciA9IGRldmljZV9iaW5kX2RyaXZlcihkKTtcXG4xODA3OlxcdFxcbjE4MDg6XFx0XFx0XFx0aWYgKGVycilcXG4xODA5OlxcdFxcdFxcdFxcdGdvdG8gZXJyb3JfbW9kdWxlX3B1dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MDEuMDM1MTAxODA4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE4ODQ3OTUzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS5cblxuKipBbmFseXppbmcgYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgYHBoeV9kZXRhY2hgKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgaXMgdG8gdW5kZXJzdGFuZCB0aGUgb3BlcmF0aW9uIG9mIHRoZXNlIHR3byBzcGVjaWZpYyBmdW5jdGlvbnM6IGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYC4gSSdtIGZhbWlsaWFyIHdpdGggdGhpcyBjb2RlYmFzZSwgb3IgYXQgbGVhc3Qgd2l0aCB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBncmFzcCB0aGUgbnVhbmNlcyBvZiB0aGVpciBpbnRlcmFjdGlvbi4gSSB3aWxsIG5vdyBjYXJlZnVsbHkgcHJvY2VlZCB0byBkaXNzZWN0IHRoZSBzb3VyY2UgY29kZSBhbmQgZGlzY2VybiB0aGVpciBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgaW52b2x2ZSB1bmRlcnN0YW5kaW5nIHRoZSBwdXJwb3NlIG9mIGF0dGFjaGluZyBhbmQgZGV0YWNoaW5nIGEgUEhZIChQaHlzaWNhbCBMYXllcikgZGV2aWNlLiBJIG5lZWQgdG8gb2JzZXJ2ZSB0aGVpciBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXNlIGNhbGxzIGFyZSBtYWRlLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyB0aGV5IG1hbmlwdWxhdGUgYW5kIHdoYXQgcmVzb3VyY2VzIHRoZXkgYWxsb2NhdGUgb3IgZGVhbGxvY2F0ZS4gSSdtIGV4cGVjdGluZyBzb21lIHN0YW5kYXJkIFBIWSBpbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gc3RlcHMsIGFuZCBJIGFtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBhbnkgcG90ZW50aWFsIHJlc291cmNlIGxvY2tpbmcgb3IgY29uY3VycmVuY3kgY29uc2lkZXJhdGlvbnMuIEluIHNob3J0LCBsZXQncyBnZXQgZG93biB0byB0aGUgZ3JpdHR5IGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzgyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODowMy4yMjM1ODQzNTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg5MCxcbiAgXCJMaW5lQ291bnRcIjogOTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg5MDpcXHRcXHRwaHlfcmVzdW1lKHBoeWRldik7XFxuMTg5MTpcXHRcXG4xODkyOlxcdFxcdC8qKlxcbjE4OTM6XFx0XFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XFxuMTg5NDpcXHRcXHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXFxuMTg5NTpcXHRcXHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxcbjE4OTY6XFx0XFx0ICovXFxuMTg5NzpcXHRcXHRpZiAoZGV2IFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXBhcmVudCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWRldi5wYXJlbnQgIT0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlcGFyZW50KVxcbjE4OTg6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VkZXZsaW5rID0gZGV2aWNlX2xpbmtfYWRkKGRldi1cXHUwMDNlZGV2LnBhcmVudCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsXFxuMTg5OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIERMX0ZMQUdfUE1fUlVOVElNRSB8IERMX0ZMQUdfU1RBVEVMRVNTKTtcXG4xOTAwOlxcdFxcbjE5MDE6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTAyOlxcdFxcbjE5MDM6XFx0ZXJyb3I6XFxuMTkwNDpcXHRcXHQvKiBwaHlfZGV0YWNoKCkgZG9lcyBhbGwgb2YgdGhlIGNsZWFudXAgYmVsb3cgKi9cXG4xOTA1OlxcdFxcdHBoeV9kZXRhY2gocGh5ZGV2KTtcXG4xOTA2OlxcdFxcdHJldHVybiBlcnI7XFxuMTkwNzpcXHRcXG4xOTA4OlxcdGVycm9yX21vZHVsZV9wdXQ6XFxuMTkwOTpcXHRcXHRtb2R1bGVfcHV0KGQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXIpO1xcbjE5MTA6XFx0XFx0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xcbjE5MTE6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4xOTEyOlxcdFxcdGQtXFx1MDAzZWRyaXZlciA9IE5VTEw7XFxuMTkxMzpcXHRlcnJvcl9wdXRfZGV2aWNlOlxcbjE5MTQ6XFx0XFx0cHV0X2RldmljZShkKTtcXG4xOTE1OlxcdFxcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuMTkxNjpcXHRcXHRcXHRtb2R1bGVfcHV0KGJ1cy1cXHUwMDNlb3duZXIpO1xcbjE5MTc6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTE4OlxcdH1cXG4xOTE5OlxcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbjE5MjA6XFx0XFxuMTkyMTpcXHQvKipcXG4xOTIyOlxcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuMTkyMzpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4xOTI0OlxcdCAqXFxuMTkyNTpcXHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuMTkyNjpcXHQgKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXFxuMTkyNzpcXHQgKi9cXG4xOTI4OlxcdHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE5Mjk6XFx0e1xcbjE5MzA6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2O1xcbjE5MzE6XFx0XFx0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XFxuMTkzMjpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbjE5MzM6XFx0XFxuMTkzNDpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VkZXZsaW5rKSB7XFxuMTkzNTpcXHRcXHRcXHRkZXZpY2VfbGlua19kZWwocGh5ZGV2LVxcdTAwM2VkZXZsaW5rKTtcXG4xOTM2OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IE5VTEw7XFxuMTkzNzpcXHRcXHR9XFxuMTkzODpcXHRcXG4xOTM5OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXN5c2ZzX2xpbmtzKSB7XFxuMTk0MDpcXHRcXHRcXHRpZiAoZGV2KVxcbjE5NDE6XFx0XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2xpbmsoXFx1MDAyNmRldi1cXHUwMDNlZGV2LmtvYmosIFxcXCJwaHlkZXZcXFwiKTtcXG4xOTQyOlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosIFxcXCJhdHRhY2hlZF9kZXZcXFwiKTtcXG4xOTQzOlxcdFxcdH1cXG4xOTQ0OlxcdFxcbjE5NDU6XFx0XFx0aWYgKCFwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldilcXG4xOTQ2OlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9maWxlKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosXFxuMTk0NzpcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZkZXZfYXR0cl9waHlfc3RhbmRhbG9uZS5hdHRyKTtcXG4xOTQ4OlxcdFxcbjE5NDk6XFx0XFx0cGh5X3N1c3BlbmQocGh5ZGV2KTtcXG4xOTUwOlxcdFxcdGlmIChkZXYpIHtcXG4xOTUxOlxcdFxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xcbjE5NTI6XFx0XFxuMTk1MzpcXHRcXHRcXHQvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXRcXG4xOTU0OlxcdFxcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcXG4xOTU1OlxcdFxcdFxcdCAqL1xcbjE5NTY6XFx0XFx0XFx0aHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtXFx1MDAzZWh3cHJvdik7XFxuMTk1NzpcXHRcXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuMTk1ODpcXHRcXHRcXHRpZiAoaHdwcm92IFxcdTAwMjZcXHUwMDI2IGh3cHJvdi1cXHUwMDNlcGh5ZGV2ID09IHBoeWRldikge1xcbjE5NTk6XFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlaHdwcm92LCBOVUxMKTtcXG4xOTYwOlxcdFxcdFxcdFxcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcXG4xOTYxOlxcdFxcdFxcdH1cXG4xOTYyOlxcdFxcbjE5NjM6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuMTk2NDpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldiA9IE5VTEw7XFxuMTk2NTpcXHRcXHRcXHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xcbjE5NjY6XFx0XFx0fVxcbjE5Njc6XFx0XFxuMTk2ODpcXHRcXHRwaHlkZXYtXFx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XFxuMTk2OTpcXHRcXHRwaHlkZXYtXFx1MDAzZXBoeWxpbmsgPSBOVUxMO1xcbjE5NzA6XFx0XFxuMTk3MTpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5kcml2ZXIpXFxuMTk3MjpcXHRcXHRcXHRtb2R1bGVfcHV0KHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyLVxcdTAwM2Vvd25lcik7XFxuMTk3MzpcXHRcXG4xOTc0OlxcdFxcdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxcbjE5NzU6XFx0XFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXFxuMTk3NjpcXHRcXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3MgYSBjaGFuY2UgYVxcbjE5Nzc6XFx0XFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXFxuMTk3ODpcXHRcXHQgKi9cXG4xOTc5OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcXG4xOTgwOlxcdFxcdFxcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcXG4xOTgxOlxcdFxcdFxcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuMTk4MjpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbjE5ODM6XFx0XFx0fVxcbjE5ODQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjAzLjIyMzgxMzM5NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzE1NDc2MTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBEZWVwIGludG8gUGh5bGluay5jKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgbmV0d29yayBQSFkgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcGh5bGluay5jYCBmaWxlLiBJJ20gZm9jdXNpbmcgb24gbGluZXMgMjA4MCB0byAyMzgwLiBUaGF0IHJhbmdlIHVzdWFsbHkgZW5jb21wYXNzZXMgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBwaHlsaW5rIGFyY2hpdGVjdHVyZSwgcGVyaGFwcyByZWxhdGVkIHRvIGxpbmsgbWFuYWdlbWVudCwgZGV2aWNlIGludGVyYWN0aW9uLCBvciBjb25maWd1cmF0aW9uIG9mIHRoZSBQSFkgaXRzZWxmLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnksIGJ1dCBJIHN1c3BlY3QgdGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgY29kZSBJIGFtIGludmVzdGlnYXRpbmcuIEknbGwgYmUgbG9va2luZyBmb3IgbnVhbmNlcyB0byBmaW5kIG15IGlzc3VlLiBJJ2xsIGFwcHJvYWNoIHRoaXMgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ2xsIG5lZWQgdG8gcGFyc2UgdGhlIGludGVyYWN0aW9ucyB0byB0cnVseSBpZGVudGlmeSB3aGF0IGlzIG9jY3VycmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0OTQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjA1LjUzOTI5MzE3OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTgwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTkwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTkwOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVxcdTAwM2VzdXBwb3J0ZWQsXFxuMjE5MTpcXHRcXHRcXHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwaHktXFx1MDAzZWFkdmVydGlzaW5nKTtcXG4yMTkyOlxcdFxcbjIxOTM6XFx0XFx0aWYgKHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZW1hY19tYW5hZ2VkX3BtKVxcbjIxOTQ6XFx0XFx0XFx0cGh5LVxcdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuMjE5NTpcXHRcXG4yMTk2OlxcdFxcdC8qIEFsbG93IHRoZSBNQUMgdG8gc3RvcCBpdHMgY2xvY2sgaWYgdGhlIFBIWSBoYXMgdGhlIGNhcGFiaWxpdHkgKi9cXG4yMTk3OlxcdFxcdHBsLVxcdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShwaHkpIFxcdTAwM2UgMDtcXG4yMTk4OlxcdFxcbjIxOTk6XFx0XFx0aWYgKHBsLVxcdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xcbjIyMDA6XFx0XFx0XFx0LyogRXhwbGljaXRseSBjb25maWd1cmUgd2hldGhlciB0aGUgUEhZIGlzIGFsbG93ZWQgdG8gc3RvcCBpdCdzXFxuMjIwMTpcXHRcXHRcXHQgKiByZWNlaXZlIGNsb2NrLlxcbjIyMDI6XFx0XFx0XFx0ICovXFxuMjIwMzpcXHRcXHRcXHRyZXQgPSBwaHlfZWVlX3J4X2Nsb2NrX3N0b3AocGh5LFxcbjIyMDQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZWVlZV9yeF9jbGtfc3RvcF9lbmFibGUpO1xcbjIyMDU6XFx0XFx0XFx0aWYgKHJldCA9PSAtRU9QTk9UU1VQUClcXG4yMjA2OlxcdFxcdFxcdFxcdHJldCA9IDA7XFxuMjIwNzpcXHRcXHR9XFxuMjIwODpcXHRcXG4yMjA5OlxcdFxcdGlmIChyZXQgPT0gMCBcXHUwMDI2XFx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXFxuMjIxMDpcXHRcXHRcXHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcXG4yMjExOlxcdFxcbjIyMTI6XFx0XFx0aWYgKHJldCkge1xcbjIyMTM6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMjIxNDpcXHRcXHRcXHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcXG4yMjE1OlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMjIxNjpcXHRcXHR9XFxuMjIxNzpcXHRcXG4yMjE4OlxcdFxcdHJldHVybiByZXQ7XFxuMjIxOTpcXHR9XFxuMjIyMDpcXHRcXG4yMjIxOlxcdHN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4yMjIyOlxcdFxcdFxcdFxcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuMjIyMzpcXHR7XFxuMjIyNDpcXHRcXHR1MzIgZmxhZ3MgPSAwO1xcbjIyMjU6XFx0XFxuMjIyNjpcXHRcXHRpZiAoV0FSTl9PTihwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKVxcbjIyMjc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMjIyODpcXHRcXG4yMjI5OlxcdFxcdGlmIChwbC1cXHUwMDNlcGh5ZGV2KVxcbjIyMzA6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4yMjMxOlxcdFxcbjIyMzI6XFx0XFx0aWYgKHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZW1hY19yZXF1aXJlc19yeGMpXFxuMjIzMzpcXHRcXHRcXHRmbGFncyB8PSBQSFlfRl9SWENfQUxXQVlTX09OO1xcbjIyMzQ6XFx0XFxuMjIzNTpcXHRcXHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXFx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcXG4yMjM2OlxcdH1cXG4yMjM3OlxcdFxcbjIyMzg6XFx0LyoqXFxuMjIzOTpcXHQgKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuMjI0MDpcXHQgKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG4yMjQxOlxcdCAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cXG4yMjQyOlxcdCAqXFxuMjI0MzpcXHQgKiBDb25uZWN0IEBwaHkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2Ugc3BlY2lmaWVkIGJ5IEBwbCBieSBjYWxsaW5nXFxuMjI0NDpcXHQgKiBwaHlfYXR0YWNoX2RpcmVjdCgpLiBDb25maWd1cmUgdGhlIEBwaHkgYWNjb3JkaW5nIHRvIHRoZSBNQUMgZHJpdmVyJ3NcXG4yMjQ1OlxcdCAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcXG4yMjQ2OlxcdCAqIHRoYXQgdGhlIFBIWSBzdXBwb3J0cy5cXG4yMjQ3OlxcdCAqXFxuMjI0ODpcXHQgKiBUaGlzIHVwZGF0ZXMgdGhlIHBoeWxpbmsncyBldGh0b29sIHN1cHBvcnRlZCBhbmQgYWR2ZXJ0aXNpbmcgbGluayBtb2RlXFxuMjI0OTpcXHQgKiBtYXNrcy5cXG4yMjUwOlxcdCAqXFxuMjI1MTpcXHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm5vLlxcbjIyNTI6XFx0ICovXFxuMjI1MzpcXHRpbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuMjI1NDpcXHR7XFxuMjI1NTpcXHRcXHRpbnQgcmV0O1xcbjIyNTY6XFx0XFxuMjI1NzpcXHRcXHQvKiBVc2UgUEhZIGRldmljZS9kcml2ZXIgaW50ZXJmYWNlICovXFxuMjI1ODpcXHRcXHRpZiAocGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSkge1xcbjIyNTk6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlID0gcGh5LVxcdTAwM2VpbnRlcmZhY2U7XFxuMjI2MDpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gcGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlO1xcbjIyNjE6XFx0XFx0fVxcbjIyNjI6XFx0XFxuMjI2MzpcXHRcXHRyZXQgPSBwaHlsaW5rX2F0dGFjaF9waHkocGwsIHBoeSwgcGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlKTtcXG4yMjY0OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjIyNjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yMjY2OlxcdFxcbjIyNjc6XFx0XFx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5LCBwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKTtcXG4yMjY4OlxcdFxcdGlmIChyZXQpXFxuMjI2OTpcXHRcXHRcXHRwaHlfZGV0YWNoKHBoeSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjA1LjUzOTc5ODYwOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTY2NDgxNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgUEhZIExpbmsgQnJpbmd1cCBQcm9jZXNzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgcGwtXHUwMDNlcGh5ZGV2YCB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCB3aXRoaW4gdGhlIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCBmdW5jdGlvbi4gSSByZWNhbGwgdGhhdCBpdCdzIGJlZW4gc2V0IGF0IHNvbWUgcG9pbnQsIHNvIEknbGwgc3RhcnQgYnkgcmV2aXNpdGluZyB0aGUgZnVuY3Rpb24gaXRzZWxmLiBUaW1lIHRvIG1ldGljdWxvdXNseSB0cmFjZSBiYWNrIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgcGlucG9pbnQgdGhlIGV4YWN0IGxpbmUgb3IgbGluZXMgd2hlcmUgYHBsLVx1MDAzZXBoeWRldmAgaXMgYXNzaWduZWQgaXRzIHZhbHVlIHdpdGhpbiBgcGh5bGlua19icmluZ3VwX3BoeWAuIEknbGwgY2FyZWZ1bGx5IHJlLWV4YW1pbmUgdGhlIGNvZGUsIGxpbmUgYnkgbGluZSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZWFybGllciBwYXJ0cyBvZiB0aGUgZnVuY3Rpb24gdG8gc2VlIHdoZXJlIHRoaXMgY3J1Y2lhbCBhc3NpZ25tZW50IGhhcHBlbnMuIFRoaXMgcmVxdWlyZXMgYSBmb2N1c2VkIHJlYWQgb2YgYHBoeWxpbmtfYnJpbmd1cF9waHlgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTk0MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MDcuNzA2MjgzNDM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Mzg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMzAsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxMzA6XFx0XFx0cGh5LVxcdTAwM2VwaHlsaW5rID0gcGw7XFxuMjEzMTpcXHRcXHRwaHktXFx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IHBoeWxpbmtfcGh5X2NoYW5nZTtcXG4yMTMyOlxcdFxcbjIxMzM6XFx0XFx0aXJxX3N0ciA9IHBoeV9hdHRhY2hlZF9pbmZvX2lycShwaHkpO1xcbjIxMzQ6XFx0XFx0cGh5bGlua19pbmZvKHBsLFxcbjIxMzU6XFx0XFx0XFx0ICAgICBcXFwiUEhZIFslc10gZHJpdmVyIFslc10gKGlycT0lcylcXFxcblxcXCIsXFxuMjEzNjpcXHRcXHRcXHQgICAgIGRldl9uYW1lKFxcdTAwMjZwaHktXFx1MDAzZW1kaW8uZGV2KSwgcGh5LVxcdTAwM2VkcnYtXFx1MDAzZW5hbWUsIGlycV9zdHIpO1xcbjIxMzc6XFx0XFx0a2ZyZWUoaXJxX3N0cik7XFxuMjEzODpcXHRcXG4yMTM5OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbjIxNDA6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4yMTQxOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMjE0MjpcXHRcXHRwbC1cXHUwMDNlcGh5ZGV2ID0gcGh5O1xcbjIxNDM6XFx0XFx0cGwtXFx1MDAzZXBoeV9zdGF0ZS5pbnRlcmZhY2UgPSBpbnRlcmZhY2U7XFxuMjE0NDpcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnBhdXNlID0gTUxPX1BBVVNFX05PTkU7XFxuMjE0NTpcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4yMTQ2OlxcdFxcdHBsLVxcdTAwM2VwaHlfc3RhdGUuZHVwbGV4ID0gRFVQTEVYX1VOS05PV047XFxuMjE0NzpcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmcgPSBSQVRFX01BVENIX05PTkU7XFxuMjE0ODpcXHRcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIHN1cHBvcnRlZCk7XFxuMjE0OTpcXHRcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcXG4yMTUwOlxcdFxcbjIxNTE6XFx0XFx0LyogUmVzdHJpY3QgdGhlIHBoeSBhZHZlcnRpc2VtZW50IGFjY29yZGluZyB0byB0aGUgTUFDIHN1cHBvcnQuICovXFxuMjE1MjpcXHRcXHRsaW5rbW9kZV9jb3B5KHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcsIGNvbmZpZy5hZHZlcnRpc2luZyk7XFxuMjE1MzpcXHRcXG4yMTU0OlxcdFxcdC8qIElmIHRoZSBNQUMgc3VwcG9ydHMgcGh5bGluayBtYW5hZ2VkIEVFRSwgcmVzdHJpY3QgdGhlIEVFRVxcbjIxNTU6XFx0XFx0ICogYWR2ZXJ0aXNlbWVudCBhY2NvcmRpbmcgdG8gdGhlIE1BQydzIExQSSBjYXBhYmlsaXRpZXMuXFxuMjE1NjpcXHRcXHQgKi9cXG4yMTU3OlxcdFxcdGlmIChwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZSkge1xcbjIxNTg6XFx0XFx0XFx0LyogSWYgRUVFIGlzIGVuYWJsZWQsIHRoZW4gd2UgbmVlZCB0byBjYWxsIHBoeV9zdXBwb3J0X2VlZSgpXFxuMjE1OTpcXHRcXHRcXHQgKiB0byBlbnN1cmUgdGhhdCB0aGUgYWR2ZXJ0aXNpbmcgbWFzayBpcyBhcHByb3ByaWF0ZWx5IHNldC5cXG4yMTYwOlxcdFxcdFxcdCAqIFRoaXMgYWxzbyBlbmFibGVzIEVFRSBhdCB0aGUgUEhZLlxcbjIxNjE6XFx0XFx0XFx0ICovXFxuMjE2MjpcXHRcXHRcXHRpZiAocGwtXFx1MDAzZWVlZV9jZmcuZWVlX2VuYWJsZWQpXFxuMjE2MzpcXHRcXHRcXHRcXHRwaHlfc3VwcG9ydF9lZWUocGh5KTtcXG4yMTY0OlxcdFxcbjIxNjU6XFx0XFx0XFx0cGh5LVxcdTAwM2VlZWVfY2ZnLnR4X2xwaV9lbmFibGVkID0gcGwtXFx1MDAzZWVlZV9jZmcudHhfbHBpX2VuYWJsZWQ7XFxuMjE2NjpcXHRcXHRcXHRwaHktXFx1MDAzZWVlZV9jZmcudHhfbHBpX3RpbWVyID0gcGwtXFx1MDAzZWVlZV9jZmcudHhfbHBpX3RpbWVyO1xcbjIxNjc6XFx0XFxuMjE2ODpcXHRcXHRcXHQvKiBDb252ZXJ0IHRoZSBNQUMncyBMUEkgY2FwYWJpbGl0aWVzIHRvIGxpbmttb2RlcyAqL1xcbjIxNjk6XFx0XFx0XFx0bGlua21vZGVfemVybyhwbC1cXHUwMDNlc3VwcG9ydGVkX2xwaSk7XFxuMjE3MDpcXHRcXHRcXHRwaHlsaW5rX2NhcHNfdG9fbGlua21vZGVzKHBsLVxcdTAwM2VzdXBwb3J0ZWRfbHBpLFxcbjIxNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzKTtcXG4yMTcyOlxcdFxcbjIxNzM6XFx0XFx0XFx0LyogUmVzdHJpY3QgdGhlIFBIWXMgRUVFIHN1cHBvcnQvYWR2ZXJ0aXNlbWVudCB0byB0aGUgbW9kZXNcXG4yMTc0OlxcdFxcdFxcdCAqIHRoYXQgdGhlIE1BQyBzdXBwb3J0cy5cXG4yMTc1OlxcdFxcdFxcdCAqL1xcbjIxNzY6XFx0XFx0XFx0bGlua21vZGVfYW5kKHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBwaHktXFx1MDAzZWFkdmVydGlzaW5nX2VlZSxcXG4yMTc3OlxcdFxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZXN1cHBvcnRlZF9scGkpO1xcbjIxNzg6XFx0XFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMpIHtcXG4yMTc5OlxcdFxcdFxcdC8qIE1BQyBzdXBwb3J0cyBwaHlsaW5rIEVFRSwgYnV0IHdhbnRzIEVFRSBhbHdheXMgZGlzYWJsZWQuICovXFxuMjE4MDpcXHRcXHRcXHRwaHlfZGlzYWJsZV9lZWUocGh5KTtcXG4yMTgxOlxcdFxcdH1cXG4yMTgyOlxcdFxcbjIxODM6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbjIxODQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbjIxODU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMTg2OlxcdFxcbjIxODc6XFx0XFx0cGh5bGlua19kYmcocGwsXFxuMjE4ODpcXHRcXHRcXHQgICAgXFxcInBoeTogJXMgc2V0dGluZyBzdXBwb3J0ZWQgJSpwYiBhZHZlcnRpc2luZyAlKnBiXFxcXG5cXFwiLFxcbjIxODk6XFx0XFx0XFx0ICAgIHBoeV9tb2RlcyhpbnRlcmZhY2UpLFxcbjIxOTA6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZXN1cHBvcnRlZCxcXG4yMTkxOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbjIxOTI6XFx0XFxuMjE5MzpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX21hbmFnZWRfcG0pXFxuMjE5NDpcXHRcXHRcXHRwaHktXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xcbjIxOTc6XFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHBoeSkgXFx1MDAzZSAwO1xcbjIxOTg6XFx0XFxuMjE5OTpcXHRcXHRpZiAocGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjA3LjcwNjQ2OTE1OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MjUwOTY3ODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJ1ZyBGaXggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGJ1ZzogaXQgc2VlbXMgbGlrZSB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWUgaW4gdGhlIHBoeWxpbmsgYW5kIFBIWSBkZXZpY2UgaGFuZGxpbmcuIFNwZWNpZmljYWxseSwgaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgLCB0aGUgYHBsLVx1MDAzZXBoeWRldmAgcG9pbnRlciB3YXMgYmVpbmcgbWlzaGFuZGxlZC4gVGhlIGNvZGUgd291bGQgYXNzaWduIGBwaHlgIHRvIGBwbC1cdTAwM2VwaHlkZXZgLCBhbmQgdGhlbiBpZiBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBmYWlsZWQsIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCB3b3VsZCBiYWlsIG91dC4gVGhlIGNhbGxlciwgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBzdWJzZXF1ZW50bHkgY2FsbGVkIGBwaHlfZGV0YWNoKHBoeSlgLCBidXQgY3J1Y2lhbGx5LCBgcGwtXHUwMDNlcGh5ZGV2YCAqd2Fzbid0KiBjbGVhcmVkLiBUaGlzIGxlYWRzIHRvIHByb2JsZW1zIGxhdGVyIG9uLCBlaXRoZXIgd2l0aCBgLUVCVVNZYCBlcnJvcnMgZHVyaW5nIHJlLWF0dGFjaG1lbnQgb3Igd2l0aCBwaHlsaW5rIGFjY2Vzc2luZyBhIGRldGFjaGVkIFBIWSBkZXZpY2UuIFRoZSBmaXgsIGltcGxlbWVudGVkIGluIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAsIGxvb2tzIGNvcnJlY3QgYXMgaXQncyBjbGVhcmluZyB0aGUgYHBsLVx1MDAzZXBoeWRldmAgcG9pbnRlciwgYWxvbmcgd2l0aCBzb21lIHJlbGF0ZWQgZmxhZ3Mgd2hlbiBhbiBlcnJvciBvY2N1cnMuXG5cblRoZSBzZWNvbmQgcGFydCBvZiB0aGUgZml4IGluIGBwaHlfZGV2aWNlLmNgIGRlYWxzIHdpdGggcmVzdG9yaW5nIHRoZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBhZnRlciBwcm9iaW5nL3VuYmluZGluZy4gVGhlIGdlbmVyaWMgUEhZIGRyaXZlciwgd2hlbiBiaW5kaW5nLCBvdmVycmlkZXMgdGhlIGludGVycnVwdCB2YWx1ZSB0byBgUEhZX1BPTExgIGlmIHRoZSBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IGludGVycnVwdHMuIEhvd2V2ZXIsIG9uIHVuYmluZGluZyBvciBhdHRhY2htZW50IGZhaWx1cmUsIHRoZSBvcmlnaW5hbCBpbnRlcnJ1cHQgd2Fzbid0IGJlaW5nIHJlc3RvcmVkLCB3aGljaCBjb3VsZCBsZWFkIHRvIGxvc3Mgb2YgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgTURJTyBidXMgaW4gc3Vic2VxdWVudCBhdHRlbXB0cy4gVGhlIGZpeCBjb3JyZWN0bHkgcmVzdG9yZXMgdGhpcy5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSXMgdGhpcyBmdXp6YWJsZT8gVGltZSB0byBhcHBseSB0aGUgZ3VpZGVsaW5lcy4gVGhpcyBpcyAqbm90KiBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBvciBjb21tZW50IGNoYW5nZXMuIEl0J3Mgbm90IHB1cmUgbG9nZ2luZyBvciBkZWNvcmF0aXZlLiBObyBudW1lcmljIGNvbnN0YW50IG1vZGlmaWNhdGlvbnMuIEl0ICpkb2VzKiBtb2RpZnkgY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSBpbiB0aGUgUEhZIGFuZCBwaHlsaW5rIHN1YnN5c3RlbXMuIE5vdywgYXJlIHRoZXNlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/XG5cbkxldCdzIHNlZS4uLiB0aGUgY29kZSdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBXaGlsZSBzdGFuZGFyZCBRRU1VIGUxMDAwIGNvbmZpZ3VyYXRpb25zIG1heSBub3QgZGlyZWN0bHkgdXNlIHBoeWxpYi9waHlsaW5rLCB3ZSd2ZSBnb3QgdG8gY29uc2lkZXIgVVNCIGVtdWxhdGlvbiBhbmQgTURJTyBidXMgaW50ZXJhY3Rpb24uIFVTQiwgdmlhIHN5emthbGxlciwgc2VlbXMgcHJvbWlzaW5nLiBSYXctZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHVzYi1mdXp6aW5nIHdpdGggZHJpdmVycyBsaWtlIGBhc2l4YCBvciBgbGFuNzh4eGAgYXJlIHBvdGVudGlhbCBlbnRyeSBwb2ludHMuIElmIHN5emthbGxlciBjYW4gcmVhY2ggdGhvc2UsIHRoZSBmaXggd291bGQgYmUgcmVhY2hhYmxlLiBUaGUgb3RoZXIgcG9zc2liaWxpdHkgaXMgdGhlIE1ESU8gYnVzIGl0c2VsZi4gQ2FuIHdlIGNyZWF0ZSBvciBpbnRlcmFjdCB3aXRoIE1ESU8gLyBQSFkgZGV2aWNlcyB0aHJvdWdoIG5ldGxpbmssIGlvY3RsLCBzeXNmcywgb3IgbWF5YmUgZXZlbiBgbWRpby1ncGlvYCBvciBgZml4ZWQtcGh5YCBzZXR1cHMsIG9yIHRoZSBcImR1bW15XCIgZGV2aWNlcz9cblxuSWYgdGhvc2UgYXJlIHJlYWNoYWJsZSwgdGhlbiB0aGlzIGZpeCwgYW5kIHRoZSByZWxhdGVkIGNvZGUsIGlzIG1vc3QgbGlrZWx5IHdvcnRoIGZ1enppbmcuIFRoZSByaXNrIG9mIHVzZS1hZnRlci1mcmVlIG9yIGEgcmVsYXRlZCBkb3VibGUtZnJlZSBpcyByZWFsLCBhbmQgY291bGQgaGF2ZSBzZXJpb3VzIGNvbnNlcXVlbmNlcy4gSSdtIGdvaW5nIHRvIGxlYW4gdG93YXJkcyBcIldvcnRoRnV6emluZz10cnVlXCIgaWYgd2UgY2FuIHZlcmlmeSByZWFjaGFiaWxpdHkuIFRoZSBVU0IgZGV2aWNlIG9yIE1ESU8gYnVzIGlzIHRoZSBrZXkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0MjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODoxMy45NTc0NDA0MzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTcyOTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfYXR0YWNofHBoeV9jb25uZWN0fHBoeWxpbmtfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExNjY3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xNTI1PXZvaWQgYjUzX3BvcnRfZXZlbnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzItXFx0bGluayA9ICEhKHN0cyBcXHUwMDI2IEJJVChwb3J0KSk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzMzpcXHRkc2FfcG9ydF9waHlsaW5rX21hY19jaGFuZ2UoZHMsIHBvcnQsIGxpbmspO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzQtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTE1MzU9RVhQT1JUX1NZTUJPTChiNTNfcG9ydF9ldmVudCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzNi1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTM3OnN0YXRpYyB2b2lkIGI1M19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzODpcXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTc1LVxcdC8qIEdldCB0aGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgY2FwYWJpbGl0aWVzICovXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NjpcXHRpZiAoZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NzpcXHRcXHRkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhkZXYsIHBvcnQsIGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OC19XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTgwOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTgyLXtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTgzOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4NC1cXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4NjpcXHRpZiAoIWRldi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlsaW5rX21hY19zZWxlY3RfcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODctXFx0XFx0cmV0dXJuIE5VTEw7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4OC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTg5OlxcdHJldHVybiBkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19tYWNfc2VsZWN0X3BjcyhkZXYsIGRwLVxcdTAwM2VpbmRleCwgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkwLX1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkxLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTI6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkzLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTQ6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU5NS17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU5NjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTctXFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSA9IHN0YXRlLVxcdTAwM2VpbnRlcmZhY2U7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2MTU6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE2LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYxOC17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYxOTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MjAtXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MzgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYzOTpzdGF0aWMgdm9pZCBiNTNfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjQwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTY0NS17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTY0NjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2NDctXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHAtXFx1MDAzZWRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MjY5Mj1FWFBPUlRfU1lNQk9MX0dQTChiNTNfc2V0X2FnZWluZ190aW1lKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYjUzX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk1OlxcdC5tYWNfc2VsZWN0X3Bjc1xcdD0gYjUzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjY5NjpcXHQubWFjX2NvbmZpZ1xcdD0gYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk3OlxcdC5tYWNfbGlua19kb3duXFx0PSBiNTNfcGh5bGlua19tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTg6XFx0Lm1hY19saW5rX3VwXFx0PSBiNTNfcGh5bGlua19tYWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjk5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0yNzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgYjUzX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEwLVxcdC5waHlfd3JpdGVcXHRcXHQ9IGI1M19waHlfd3JpdGUxNixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNzExOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBiNTNfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEyLVxcdC5wb3J0X3NldHVwXFx0XFx0PSBiNTNfc2V0dXBfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTMxODM9c3RydWN0IGI1M19kZXZpY2UgKmI1M19zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMyMDYtXFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZiNTNfc3dpdGNoX29wcztcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMjA3OlxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2YjUzX3BoeWxpbmtfbWFjX29wcztcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjA4LVxcdGRldi1cXHUwMDNldmxhbl9lbmFibGVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0zND1zdHJ1Y3QgYjUzX2lvX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtNTAtXFx0dm9pZCAoKnBoeV9kaXNhYmxlKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjUxOlxcdHZvaWQgKCpwaHlsaW5rX2dldF9jYXBzKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTI6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTM6XFx0c3RydWN0IHBoeWxpbmtfcGNzICooKnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MpKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTU0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTExMT1zdHJ1Y3QgYjUzX3BjcyB7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjExMjpcXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0xMTMtXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjIwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGI1M19wY3MgKnBjc190b19iNTNfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jPTYxPXN0YXRpYyB1MTYgYjUzX3NlcmRlc19yZWFkKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IGxhbmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy02Ny1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzo2ODpzdGF0aWMgaW50IGI1M19zZXJkZXNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtNjktXFx0XFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtODgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6ODk6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwMS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDI6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDM6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYz0xNTc9RVhQT1JUX1NZTUJPTChiNTNfc2VyZGVzX2xpbmtfc2V0KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xNTgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTU5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIGI1M19wY3Nfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2MC1cXHQucGNzX2dldF9zdGF0ZSA9IGI1M19zZXJkZXNfZ2V0X3N0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE2NTp2b2lkIGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxNjY6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xOTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5MjpFWFBPUlRfU1lNQk9MKGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2Fwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5NDpzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19zZXJkZXNfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIwOS19XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MjEwOkVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0yMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC05OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMDA6c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaD0xMTA9dm9pZCBiNTNfc2VyZGVzX2xpbmtfc2V0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTEtXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGJvb2wgbGlua191cCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTEyOnN0cnVjdCBwaHlsaW5rX3BjcyAqYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTEzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExNC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTU6dm9pZCBiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTE2OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTE3LSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQzNT1zdGF0aWMgdm9pZCBiNTNfc3JhYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ0NjpzdGF0aWMgdm9pZCBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NDc6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDU3LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NTg6XFx0XFx0YjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKGRldiwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDU5LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ3OT1zdGF0aWMgY29uc3Qgc3RydWN0IGI1M19pb19vcHMgYjUzX3NyYWJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5MS1cXHQuaXJxX2Rpc2FibGUgPSBiNTNfc3JhYl9pcnFfZGlzYWJsZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDkyOlxcdC5waHlsaW5rX2dldF9jYXBzID0gYjUzX3NyYWJfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDkzLSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0OTQ6XFx0LnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MgPSBiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5NS1cXHQuc2VyZGVzX21hcF9sYW5lID0gYjUzX3NyYWJfc2VyZGVzX21hcF9sYW5lLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz00NTI9c3RhdGljIGlycXJldHVybl90IGJjbV9zZjJfc3dpdGNoXzFfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDYyLVxcdFxcdHByaXYtXFx1MDAzZXBvcnRfc3RzWzddLmxpbmsgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDYzOlxcdFxcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjYtXFx0XFx0cHJpdi1cXHUwMDNlcG9ydF9zdHNbN10ubGluayA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDY3OlxcdFxcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDY4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU2LVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjU3OlxcdC8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgb2ZfcGh5X2Nvbm5lY3QoKSB3aWxsIG5vdCB3b3JrIGJ5XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTgtXFx0ICogcmVtb3ZpbmcgdGhlICdwaGFuZGxlJyBhbmQgJ2xpbnV4LHBoYW5kbGUnIHByb3BlcnRpZXMgYW5kXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTcyND1zdGF0aWMgdm9pZCBiY21fc2YyX3N3X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3MjU6XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NDQtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDU6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ2LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDc6XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTc0OC17XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDk6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTc1MC1cXHR1MzIgaWRfbW9kZV9kaXMgPSAwLCBwb3J0X21vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTc5ND1zdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MTYtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4MTc6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODE4LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgyMC17XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4MjE6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgyMi1cXHRzdHJ1Y3QgYmNtX3NmMl9wcml2ICpwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MzctXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4Mzg6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgzOS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04NDQte1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6ODQ1OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04NDYtXFx0c3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9OTA2PXN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfZml4ZWRfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjkwNzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0dXMpXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy05MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMjAzPXN0YXRpYyBpbnQgYmNtX3NmMl9zd19nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjE1LVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIxNjpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBiY21fc2YyX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMTctXFx0Lm1hY19jb25maWdcXHQ9IGJjbV9zZjJfc3dfbWFjX2NvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTIyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGJjbV9zZjJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjMwLVxcdC5nZXRfcGh5X2ZsYWdzXFx0XFx0PSBiY21fc2YyX3N3X2dldF9waHlfZmxhZ3MsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjMxOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBiY21fc2YyX3N3X2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIzMjpcXHQucGh5bGlua19maXhlZF9zdGF0ZVxcdD0gYmNtX3NmMl9zd19maXhlZF9zdGF0ZSxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMzMtXFx0LnN1c3BlbmRcXHRcXHQ9IGJjbV9zZjJfc3dfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTM2NT1zdGF0aWMgaW50IGJjbV9zZjJfc3dfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTQyNi1cXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmJjbV9zZjJfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTQyNzpcXHRkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNmJjbV9zZjJfcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTQyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMyMT1zdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNzpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUxLVxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYz0xNDU4PXN0YXRpYyB2b2lkIGhlbGxjcmVla190ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xNDYzLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE0NjQ6c3RhdGljIHZvaWQgaGVsbGNyZWVrX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxNDY1OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTE5MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBoZWxsY3JlZWtfZHNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkwNi1cXHQuZ2V0X3RzX2luZm9cXHQgICAgICAgPSBoZWxsY3JlZWtfZ2V0X3RzX2luZm8sXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTkwNzpcXHQucGh5bGlua19nZXRfY2FwcyAgICAgID0gaGVsbGNyZWVrX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkwOC1cXHQucG9ydF9icmlkZ2VfZmxhZ3MgICAgID0gaGVsbGNyZWVrX2JyaWRnZV9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz00NDg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDQ5OmtzODk5NV9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDUwOlxcdFxcdCAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NDU0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjQ1NTprczg5OTVfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1Ni1cXHRcXHQgICB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NTgte1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NTk6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDYwLVxcdHN0cnVjdCBrczg5OTVfc3dpdGNoICprcyA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz01MDg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTA5OmtzODk5NV9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTEwLVxcdFxcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTExLXtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTEyOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTUxMy1cXHRzdHJ1Y3Qga3M4OTk1X3N3aXRjaCAqa3MgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTIzLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo1MjQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMga3M4OTk1X3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTI1LVxcdC5tYWNfY29uZmlnID0ga3M4OTk1X21hY19jb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NjAyPXN0YXRpYyB2b2lkIGtzODk5NV9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdTggc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNjQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo2NDk6c3RhdGljIHZvaWQga3M4OTk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjY1MDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTY1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NzMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMga3M4OTk1X2RzX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy03NDEtXFx0LnBvcnRfbWF4X210dSA9IGtzODk5NV9nZXRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NzQyOlxcdC5waHlsaW5rX2dldF9jYXBzID0ga3M4OTk1X3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTc0My19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTc0Nj1zdGF0aWMgaW50IGtzODk5NV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTgyMC1cXHRrcy1cXHUwMDNlZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZrczg5OTVfZHNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo4MjE6XFx0a3MtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2a3M4OTk1X3BoeWxpbmtfbWFjX29wcztcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtODIyLVxcdGtzLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdiA9IGtzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTEyODM9c3RhdGljIGludCBsYW45MzAzX3BvcnRfbWRiX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEyOTctXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEyOTg6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEyOTk6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMyMy1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMyNDpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMyNS1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMjY6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI5LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzMwOnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzMxLVxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMzNS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMzNjpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMzctXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzQyLXtcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM0MzpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzQ0LVxcdHN0cnVjdCBsYW45MzAzICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNzUtXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzY6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuOTMwM19waHlsaW5rX21hY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzc6XFx0Lm1hY19jb25maWdcXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzc4OlxcdC5tYWNfbGlua19kb3duXFx0PSBsYW45MzAzX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3OTpcXHQubWFjX2xpbmtfdXBcXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTM4MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBsYW45MzAzX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTM4Ny1cXHQucGh5X3dyaXRlXFx0XFx0PSBsYW45MzAzX3BoeV93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM4ODpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gbGFuOTMwM19waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzg5LVxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gbGFuOTMwM19nZXRfZXRodG9vbF9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYz0xNDA0PXN0YXRpYyBpbnQgbGFuOTMwM19yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGxhbjkzMDMgKmNoaXApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTQxMy1cXHRjaGlwLVxcdTAwM2Vkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmxhbjkzMDNfc3dpdGNoX29wcztcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTQxNDpcXHRjaGlwLVxcdTAwM2Vkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNmxhbjkzMDNfcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xNDE1LVxcdGNoaXAtXFx1MDAzZWRzLVxcdTAwM2VwaHlzX21paV9tYXNrID0gR0VOTUFTSyhMQU45MzAzX05VTV9QT1JUUyAtIDEsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz0yNz1zdHJ1Y3QgeHdheV9ncGh5X21hdGNoX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy0zMS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjMyOnN0YXRpYyB2b2lkIGdzd2lwX3hyeDIwMF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzozMzpcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy02Mi1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjYzOnN0YXRpYyB2b2lkIGdzd2lwX3hyeDMwMF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo2NDpcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz00NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBnc3dpcF9od19pbmZvIGdzd2lwX3hyeDIwMCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDc1LVxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0NzY6XFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBnc3dpcF94cngyMDBfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTQ3Ny1cXHQucGNlX21pY3JvY29kZSA9IFxcdTAwMjZnc3dpcF9wY2VfbWljcm9jb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBnc3dpcF9od19pbmZvIGdzd2lwX3hyeDMwMCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDk2LVxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0OTc6XFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBnc3dpcF94cngzMDBfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTQ5OC1cXHQucGNlX21pY3JvY29kZSA9IFxcdTAwMjZnc3dpcF9wY2VfbWljcm9jb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaD0yNTU9c3RydWN0IGdzd2lwX2h3X2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaC0yNjMtXFx0ZW51bSBkc2FfdGFnX3Byb3RvY29sIHRhZ19wcm90b2NvbDtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oOjI2NDpcXHR2b2lkICgqcGh5bGlua19nZXRfY2Fwcykoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oOjI2NTpcXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY2OlxcdHN0cnVjdCBwaHlsaW5rX3BjcyAqKCptYWNfc2VsZWN0X3Bjcykoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaC0yNjctXFx0XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMjY2PXN0YXRpYyBpbnQgZ3N3aXBfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBuZXdfbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5MS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjkyOnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjkzOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEyOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjk3OlxcdHByaXYtXFx1MDAzZWh3X2luZm8tXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5OC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMzc1PXN0YXRpYyB2b2lkIGdzd2lwX3BvcnRfc2V0X3BhdXNlKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2LCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0MDQtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQwNTpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwNi1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0MDc6XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDA4LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDA5OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQxMC1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTUtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ1NjpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1Ny1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTkte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0NjA6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDYxLVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ2OS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDcwOnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ3MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ3Ni17XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ3NzpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NzgtXFx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNTU5PXN0YXRpYyBpbnQgZ3N3aXBfc2V0X21hY19lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NjctXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU2ODpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTY5LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTcwOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3MS1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NzYtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU3NzpzdGF0aWMgaW50IGdzd2lwX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3OC1cXHRcXHRcXHRcXHRcXHQgICB1MzIgdGltZXIsIGJvb2wgdHhfY2xvY2tfc3RvcClcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTc5LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTgwOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU4MS1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE1OTI9c3RhdGljIGJvb2wgZ3N3aXBfc3VwcG9ydF9lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDEtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYwMjpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpnc3dpcF9waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjA0LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjA1OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwNi1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MTMtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNDpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBnc3dpcF9waHlsaW5rX21hY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNTpcXHQubWFjX2NvbmZpZ1xcdFxcdD0gZ3N3aXBfcGh5bGlua19tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTY6XFx0Lm1hY19saW5rX2Rvd25cXHRcXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE3OlxcdC5tYWNfbGlua191cFxcdFxcdD0gZ3N3aXBfcGh5bGlua19tYWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE4OlxcdC5tYWNfZGlzYWJsZV90eF9scGlcXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTk6XFx0Lm1hY19lbmFibGVfdHhfbHBpXFx0PSBnc3dpcF9waHlsaW5rX21hY19lbmFibGVfdHhfbHBpLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MjA6XFx0Lm1hY19zZWxlY3RfcGNzXFx0XFx0PSBnc3dpcF9waHlsaW5rX21hY19zZWxlY3RfcGNzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MjEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBnc3dpcF9zd2l0Y2hfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY0My1cXHQucG9ydF9tYXhfbXR1XFx0XFx0PSBnc3dpcF9wb3J0X21heF9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTY0NDpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZ3N3aXBfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjQ1LVxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gZ3N3aXBfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNjc4PWludCBnc3dpcF9wcm9iZV9jb21tb24oc3RydWN0IGdzd2lwX3ByaXYgKnByaXYsIHUzMiB2ZXJzaW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY5MC1cXHRwcml2LVxcdTAwM2Vkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmdzd2lwX3N3aXRjaF9vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTY5MTpcXHRwcml2LVxcdTAwM2Vkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNmdzd2lwX3BoeWxpbmtfbWFjX29wcztcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjkyLVxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTI4PXN0cnVjdCBnc3cxeHhfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNC1cXHRzdHJ1Y3RcXHRcXHRcXHRyZWdtYXAgKnNoZWxsO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjM1OlxcdHN0cnVjdFxcdFxcdFxcdHBoeWxpbmtfcGNzIHBjcztcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNi1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrXFx0Y2xlYXJfcmFuZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz0xMjQ9c3RhdGljIHZvaWQgZ3N3MXh4X21kaW9fcmVnbWFwX3VubG9jayh2b2lkICptZGlvX2xvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMjgtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTI5OnN0YXRpYyB1bnNpZ25lZCBpbnQgZ3N3MXh4X3Bjc19pbmJhbmRfY2FwcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzAtXFx0XFx0XFx0XFx0XFx0ICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzNC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxMzU6c3RhdGljIHN0cnVjdCBnc3cxeHhfcHJpdiAqcGNzX3RvX2dzdzF4eChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTM5LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE0MDpzdGF0aWMgaW50IGdzdzF4eF9wY3NfZW5hYmxlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNDgtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTQ5OnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfZGlzYWJsZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTYxLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE2MjpzdGF0aWMgdm9pZCBnc3cxeHhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNjMtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNjQ6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz0yMzQ9c3RhdGljIGludCBnc3cxeHhfcGNzX3Jlc2V0KHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTMzNC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozMzU6c3RhdGljIGludCBnc3cxeHhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTMzNi1cXHRcXHRcXHQgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNjktXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzcwOlxcdHN3aXRjaCAocGh5bGlua19nZXRfbGlua190aW1lcl9ucyhpbnRlcmZhY2UpKSB7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzcxLVxcdGNhc2UgMTAwMDA6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zOTMtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6Mzk0OlxcdHR4YW5lZyA9IHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnQoaW50ZXJmYWNlLCBhZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzk1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9NDUzPXN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfY2xlYXJfcmFuZWcoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDYxLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjQ2MjpzdGF0aWMgdm9pZCBnc3cxeHhfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjE0LjIwNzE3ODY0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjczNDQ5OTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBOZXR3b3JraW5nIFN1YnN5c3RlbXMgLSBMZXQncyBEaWcgSW4qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGBwaHlsaW5rYCBhbmQgYHBoeWxpYmAuIFJpZ2h0LCB0aGV5J3JlIGZ1bmRhbWVudGFsLCBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC9waHkvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIEkgbmVlZCB0byB2ZXJpZnkgdGhlaXIgYXZhaWxhYmlsaXR5IGFuZCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBlbmFibGUgdGhlbS4gQmVzdCB3YXkgdG8gZG8gdGhhdD8gSW5zcGVjdCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIG9wdGlvbnMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjk0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MTYuNDgwNjMyODUxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkzNTY4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCfGNvbmZpZyBQSFlMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo2OmNvbmZpZyBQSFlMSU5LXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVxcdGRlZl9ib29sIE9GXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjE2LjUyODU3ODE5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTE4NDMwMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgUEhZIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFBIWSBkcml2ZXJzIGFyZSBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiB0aGUgY29udGV4dCwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gaGVhZCBzdHJhaWdodCBmb3IgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhpcyBhcmVhIGlzIHVzdWFsbHkgd2hlcmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZm9yIG5ldHdvcmsgUEhZIGRyaXZlcnMgaXMgZGVmaW5lZC4gSSBpbW1lZGlhdGVseSB3YW50IHRvIGZvY3VzIG9uIHNlY3Rpb25zIGNvbmNlcm5pbmcgYFBIWUxJTktgIGFuZCBgUEhZTElCYC4gVGhvc2UgYXJlIGNvcmUgY29uY2VwdHMgaW4gbmV0d29yayBQSFkgZHJpdmVyIG1hbmFnZW1lbnQsIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyB0aGV5J3JlIHdpcmVkIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyByZXZlYWxzIGFib3V0IHRoZWlyIGRlcGVuZGVuY2llcywgb3B0aW9ucywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgaW5kaXZpZHVhbCBQSFkgZHJpdmVyIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGdldHRpbmcgYSBoaWdoLWxldmVsIHZpZXcgb2YgdGhpcyBjb21wb25lbnQgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3MDIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODoyMC4wNDcwMTE0OTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIFBIWUxJTktcXG4gICA3OlxcdFxcdHRyaXN0YXRlXFxuICAgODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAgOTpcXHRcXHRzZWxlY3QgU1dQSFlcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXFxuICAxMjpcXHRcXHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcXG4gIDEzOlxcdFxcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRtZW51Y29uZmlnIFBIWUxJQlxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxcbiAgMTk6XFx0XFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXFxuICAyMDpcXHRcXHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRpZiBQSFlMSUJcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIFNXUEhZXFxuICAyNTpcXHRcXHRib29sXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBQSFlfUEFDS0FHRVxcbiAgMjg6XFx0XFx0IHRyaXN0YXRlXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgTEVEIHRyaWdnZXJzIGZvciB0cmFja2luZyBsaW5rIHN0YXRlXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIEFkZHMgc3VwcG9ydCBmb3IgYSBzZXQgb2YgTEVEIHRyaWdnZXIgZXZlbnRzIHBlci1QSFkuICBMaW5rXFxuICAzNTpcXHRcXHQgIHN0YXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgdGhlIGV2ZW50cywgZm9yIGNvbnN1bXB0aW9uIGJ5IGFuXFxuICAzNjpcXHRcXHQgIExFRCBjbGFzcyBkcml2ZXIuICBUaGVyZSBhcmUgdHJpZ2dlcnMgZm9yIGVhY2ggbGluayBzcGVlZCBjdXJyZW50bHlcXG4gIDM3OlxcdFxcdCAgc3VwcG9ydGVkIGJ5IHRoZSBQSFkgYW5kIGFsc28gYSBvbmUgY29tbW9uIFxcXCJsaW5rXFxcIiB0cmlnZ2VyIGFzIGFcXG4gIDM4OlxcdFxcdCAgbG9naWNhbC1vciBvZiBhbGwgdGhlIGxpbmsgc3BlZWQgb25lcy5cXG4gIDM5OlxcdFxcdCAgQWxsIHRoZXNlIHRyaWdnZXJzIGFyZSBuYW1lZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOlxcbiAgNDA6XFx0XFx0ICAgICAgXFx1MDAzY21paSBidXMgaWRcXHUwMDNlOlxcdTAwM2NwaHlcXHUwMDNlOlxcdTAwM2NzcGVlZFxcdTAwM2VcXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0ICBXaGVyZSBzcGVlZCBpcyBpbiB0aGUgZm9ybTpcXG4gIDQzOlxcdFxcdFxcdFxcdTAwM2NTcGVlZCBpbiBtZWdhYml0c1xcdTAwM2VNYnBzIE9SIFxcdTAwM2NTcGVlZCBpbiBnaWdhYml0c1xcdTAwM2VHYnBzIE9SIGxpbmtcXG4gIDQ0OlxcdFxcdFxcdGZvciBhbnkgc3BlZWQga25vd24gdG8gdGhlIFBIWS5cXG4gIDQ1OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODoyMC4wNDcwOTAwNjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM1MDE5MDEyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBgUEhZTElOS2AgYW5kIGBQSFlMSUJgIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaWd1cmUgb3V0IHdoYXQgZXhhY3RseSBpcyBjYWxsaW5nIG9yIHJlZmVyZW5jaW5nIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUsIHBpbnBvaW50IGFueSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgaW5kaXJlY3QgbGlua3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgY29tcG9uZW50cyBvciBtb2R1bGVzIHRoYXQgYXJlIGxldmVyYWdpbmcgdGhlc2UgbGlicmFyaWVzLiBUaGlzIHdpbGwgaGVscCBtZSBhc3Nlc3MgdGhlIGltcGFjdCBvZiBjaGFuZ2VzLCBpZGVudGlmeSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGFuZCBvdmVyYWxsLCBiZXR0ZXIgbWFpbnRhaW4gdGhlIHN5c3RlbS4gSSBhbHNvIHdhbnQgdG8gZGV0ZXJtaW5lIHRoZSBsZXZlbCBvZiBjb3VwbGluZyB0aGV5IGhhdmUgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgcHJvamVjdCwgcGVyaGFwcyBldmVuIHdpdGggc3BlY2lmaWMgYWxnb3JpdGhtcyBvciBkYXRhIHN0cnVjdHVyZXMuIEtub3dpbmcgdGhpcyBoZWxwcyB0byBwbGFuIGZ1dHVyZSBkZXZlbG9wbWVudCBhbmQgcmVmYWN0b3JpbmcgZWZmb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1MDIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjIyLjM5NzI4ODc2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNDYyNDAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEhZTElOS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTEtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDo5MjpcXHRzZWxlY3QgUEhZTElOS1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZz0yPWNvbmZpZyBBTFRFUkFfVFNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy02LVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZzo3OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctOC1cXHRzZWxlY3QgUENTX0xZTlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZz0yMD1jb25maWcgQUc3MVhYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjItXFx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc6MjM6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjQtXFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIyPWNvbmZpZyBNQUNCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyNjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNy1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTgwPWNvbmZpZyBVQ0NfR0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctODMtXFx0c2VsZWN0IEZTTF9QUV9NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6ODQ6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnPTI9bWVudWNvbmZpZyBGU0xfRFBBQV9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEZTTF9EUEFBIFxcdTAwMjZcXHUwMDI2IEZTTF9GTUFOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZzo1OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy02LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9Mj1jb25maWcgRlNMX0RQQUEyX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXFx1MDAyNlxcdTAwMjYgRlNMX01DX0RQSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo1OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNi1cXHRzZWxlY3QgUENTX0xZTlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTMzPWNvbmZpZyBGU0xfRFBBQTJfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zNy1cXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXFx1MDAyNlxcdTAwMjYgRlNMX01DX0RQSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM5LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9MzA9Y29uZmlnIEZTTF9FTkVUQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzctXFx0c2VsZWN0IE5YUF9FTkVUQ19QRl9DT01NT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzozODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM5LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NDg9Y29uZmlnIE5YUF9FTkVUQzRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTU1LVxcdHNlbGVjdCBOWFBfTlRNUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjU2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTctXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NjY9Y29uZmlnIEZTTF9FTkVUQ19WRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNzEtXFx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NzI6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03My1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnPTI9Y29uZmlnIEZTTF9GTUFOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTUtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy03LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZz0yPWNvbmZpZyBGU19FTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnLTUtXFx0c2VsZWN0IE1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWc6NjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjItXFx0c2VsZWN0IE1WTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2MzpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02NC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctODktXFx0c2VsZWN0IE1WTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc9Nj1jb25maWcgUFJFU1RFUkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTE6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNy1cXHRzZWxlY3QgUElOQ1RSTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTg6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE5LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MzA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzEtXFx0c2VsZWN0IFBMRE1GV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTUxLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjUyOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy05LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xPWNvbmZpZyBTUEFSWDVfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctOC1cXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo5OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTEwLVxcdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnPTE1PWNvbmZpZyBNU0NDX09DRUxPVF9TV0lUQ0hfTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTktXFx0c2VsZWN0IFBBQ0tJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc6MjA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz00Mj1jb25maWcgUkVORVNBU19FVEhFUl9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy00Ny1cXHRzZWxlY3QgTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnOjQ4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ5LVxcdHNlbGVjdCBSRU5FU0FTX0dFTjRfUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTEtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVxcdHNlbGVjdCBGV19MT0FERVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzozMTpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMC1cXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxMDE6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMi1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0yNj1jb25maWcgWElMSU5YX0FYSV9FTUFDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yOS1cXHRkZXBlbmRzIG9uIFhJTElOWF9ETUFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzozMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTMxLVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTg9Y29uZmlnIFBDU19YUENTXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXFxcIlxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjEwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTEzPWNvbmZpZyBVU0JfTEFONzhYWFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE1LVxcdHNlbGVjdCBNSUlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTY6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTctXFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTcwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTcxLVxcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTktXFx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcXG5uZXQvZHNhL0tjb25maWc6MTA6XFx0c2VsZWN0IFBIWUxJTktcXG5uZXQvZHNhL0tjb25maWctMTEtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjI0LjEzMTkyOTYzMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MjIyNjI5MjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIFBIWS9QaHlsaW5rIGZvciBGdXp6aW5nKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzIHdpdGhpbiB0aGUgUEhZIGFuZCBQaHlsaW5rIHN1YnN5c3RlbXMuIEZpcnN0LCBJIG5vdGljZWQgdGhhdCBgVVNCX0xBTjc4WFhgLCBgVVNCX05FVF9BWDg4MTdYYCwgYW5kIGBORVRfRFNBYCBhbGwgc2VsZWN0IGBQSFlMSU5LYCwgYW5kIGJvdGggYFBIWUxJQmAgYW5kIGBQSFlMSU5LYCBhcmUga2VybmVsIGZlYXR1cmVzLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBmb3IgZGVlcGVyIGZ1enppbmcuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uIG1vZGlmaWNhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIFNwZWNpZmljYWxseSwgSSBzYXcgdGhhdCBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2RldGFjaGAsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLCBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfYnJpbmd1cF9waHlgIHdlcmUgdGhlIG9uZXMgbW9kaWZpZWQuIEkgbmVlZCB0byBmaWx0ZXIgdGhlc2UgZG93bi5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgSSBuZWVkIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGlzIG1lYW5zIGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBTbywgbGV0J3Mgc2VwYXJhdGUgdGhlIHN0YXRpYyBmcm9tIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucy5cblxuQmFzZWQgb24gdGhlIGNvZGUsIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfZGV0YWNoYCwgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAsIGFuZCBgcGh5bGlua19vZl9waHlfY29ubmVjdGAgYXJlIHRoZSBmb2N1cy5cblxuQ2hlY2tpbmcgdGhlIGRlZmluaXRpb25zOlxuLSBgcGh5X2F0dGFjaF9kaXJlY3RgIChpbiBgcGh5X2RldmljZS5jYCkgaXMgYGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpYC5cbi0gYHBoeV9kZXRhY2hgIChpbiBgcGh5X2RldmljZS5jYCkgaXMgYHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KWAuXG4tIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCAoaW4gYHBoeWxpbmsuY2ApIGlzIGBpbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpYC5cbi0gYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIChpbiBgcGh5bGluay5jYCkgaXMgYHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpYC5cbi0gYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCAoaW4gYHBoeWxpbmsuY2ApIGlzIGBpbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLCB1MzIgZmxhZ3MpYC5cbi0gYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIChpbiBgcGh5bGluay5jYCkgaXMgYGludCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGRldmljZV9ub2RlICpkbiwgdTMyIGZsYWdzKWAuXG5cbkFsbCBvZiB0aGVzZSBhcmUgbm9uLXN0YXRpYyBhbmQgYXBwZWFyIHRvIGJlIEFQSSBlbnRyeSBwb2ludHMsIHdoaWNoIG1lYW5zIHRoZXkgYXJlIGdyZWF0IGNhbmRpZGF0ZXMuXG5cbkZpbmFsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYFBIWUxJQmAgaXMgYSBtZW51Y29uZmlnIGFuZCBjYW4gYmUgZGlyZWN0bHkgZW5hYmxlZCBpbiB0aGUgYC5jb25maWdgIGFzIGBDT05GSUdfUEhZTElCPXlgLiBgUEhZTElOS2AsIGhvd2V2ZXIsIGhhcyBubyBwcm9tcHQsIHNvIGl0IGdldHMgc2VsZWN0ZWQgYnkgb3RoZXIgZHJpdmVycyB0aGF0IGRlcGVuZCBvbiBpdC4gVGhpcyBtYWtlcyBmdXp6aW5nIG1vcmUgY2hhbGxlbmdpbmcgc2luY2UgaXQgd2lsbCByZXF1aXJlIGEgc3BlY2lmaWMgZHJpdmVyIHRvIGJlIGVuYWJsZWQgdG8gZW5hYmxlIHRoZSB0ZXN0cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvbnNpZGVyIGBORVRfRFNBYCwgYFVTQl9MQU43OFhYYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgLCBzaW5jZSB0aGVzZSBhcmUgZHJpdmVycyB0aGF0IHNlbGVjdCBgUEhZTElOS2AuIFRoZXkgYXJlIHRoZSBlYXNpZXN0IHdheSB0byBlbnN1cmUgYFBIWUxJTktgIGlzIGVuYWJsZWQuXG5cbkluIHN1bW1hcnk6IEkgd2lsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCBhbmQgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIGFuZCBJJ2xsIG1ha2Ugc3VyZSB0byBlbmFibGUgZHJpdmVycyBsaWtlIGBORVRfRFNBYCwgYFVTQl9MQU43OFhYYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgUEhZIGFuZCBQaHlsaW5rIGZ1bmN0aW9uYWxpdHkgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzkwOCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MzMuMzU0NTYxOTQ1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM5NjI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0xBTjc4WFh8Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTk5PWNvbmZpZyBVU0JfUlRMODE1Mlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTEyLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExMzpjb25maWcgVVNCX0xBTjc4WFhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTQtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBMQU43OFhYIEJhc2VkIFVTQiBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY1LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MzMuNDAxOTYyODQzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyNjM0ODQ4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2Nlc3M6XG5cbioqVVNCIExBTjc4WFggRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgVVNCX0xBTjc4WFhgIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCBpdHMgZGVwZW5kZW5jaWVzLCBlc3BlY2lhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBUaGlzIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBkcml2ZXIgZ2V0cyBidWlsdCBjb3JyZWN0bHksIGFuZCBpdCBoZWxwcyB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCBtaWdodCByZWx5IG9uLiBUaGlzIGFsc28gZ2l2ZXMgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiB3aGVyZSBpdCBzaXRzIGluIHRoZSBicm9hZGVyIG5ldHdvcmsgZHJpdmVyIGxhbmRzY2FwZSBhbmQgbWlnaHQgcmV2ZWFsIHBvdGVudGlhbCBjb25mbGljdHMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBsYXRlciBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAyMjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODozNi42NjU0NTA1MDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMTE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcjgxNTIuXFxuIDExMjpcXHRcXG4gMTEzOlxcdGNvbmZpZyBVU0JfTEFONzhYWFxcbiAxMTQ6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBMQU43OFhYIEJhc2VkIFVTQiBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG4gMTE1OlxcdFxcdHNlbGVjdCBNSUlcXG4gMTE2OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuIDExNzpcXHRcXHRzZWxlY3QgTUlDUk9DSElQX1BIWVxcbiAxMTg6XFx0XFx0c2VsZWN0IENSQzMyXFxuIDExOTpcXHRcXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuIDEyMDpcXHRcXHRoZWxwXFxuIDEyMTpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgTWljcm9jaGlwIExBTjc4WFggYmFzZWQgVVNCIDJcXG4gMTIyOlxcdFxcdCAgXFx1MDAyNiBVU0IgMyAxMC8xMDAvMTAwMCBFdGhlcm5ldCBhZGFwdGVycy5cXG4gMTIzOlxcdFxcdCAgTEFONzgwMCA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJcXG4gMTI0OlxcdFxcdCAgTEFONzg1MCA6IFVTQiAyIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJcXG4gMTI1OlxcdFxcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMzA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbGFuNzh4eC5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0Y29uZmlnIFVTQl9VU0JORVRcXG4gMTMzOlxcdFxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG4gMTM0OlxcdFxcdHNlbGVjdCBNSUlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MzYuNjY1NTU3OTU3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MzcyNjIxMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipDaGVja2luZyBgTkVUX0RTQWAgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L2RzYS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkVUX0RTQWAuIFRoaXMgaXNuJ3QganVzdCBhIGNhc3VhbCBnbGFuY2U7IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoYXQgbWlnaHQgYXJpc2UgZHVyaW5nIGNvbmZpZ3VyYXRpb24gb3IgYnVpbGQuIEFyZSB0aGVyZSBhbnkgbmV3IGRlcGVuZGVuY2llcyBJIG1pc3NlZCwgYXJlIHRoZXJlIGFueSBpbnRlcmFjdGlvbnMgdGhhdCBtaWdodCBjYXVzZSBhIGNvbmZsaWN0IHdpdGggb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcz8gSSBuZWVkIHRvIGJlIHN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgY29ycmVjdCBhbmQgdXAtdG8tZGF0ZSB3aXRoIHRoaXMgdXBkYXRlIG9yIGNoZWNrLWluLiBUaGUgZ29hbCBpcyBhIGNsZWFuLCBzdGFibGUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjQxLjEwMjgyMjg5MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2RzYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdG1lbnVjb25maWcgTkVUX0RTQVxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkRpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmVcXFwiXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBIU1IgfHwgSFNSPW5cXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRERVZJQ0VTXFxuICAgODpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuICAgOTpcXHRcXHRzZWxlY3QgTkVUX1NXSVRDSERFVlxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTI6XFx0XFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIGhhcmR3YXJlIHN3aXRjaGVzIHN1cHBvcnRlZFxcbiAgMTU6XFx0XFx0ICBieSB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX0RTQVxcbiAgMTg6XFx0XFxuICAxOTpcXHQjIERyaXZlcnMgbXVzdCBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIHRhZ2dpbmcgZm9ybWF0KHMpXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBORVRfRFNBX1RBR19OT05FXFxuICAyMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTm8tb3AgdGFnIGRyaXZlclxcXCJcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgU2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3Igc3dpdGNoZXMgd2hpY2ggZG9uJ3QgdGFnXFxuICAyNTpcXHRcXHQgIGZyYW1lcyBvdmVyIHRoZSBDUFUgcG9ydC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6NDEuMTAyOTMyNDcxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNTExMDI1NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgTmV0d29ya2luZyBQSFkgTGF5ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRvIGFzc2Vzcy4gRmlyc3QsIEknbSBub3RpbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgb3B0aW9uczogYFBIWUxJQmAsIGBQSFlMSU5LYCwgYFVTQl9ORVRfQVg4ODE3WGAsIGBVU0JfTEFONzhYWGAsIGFuZCBgTkVUX0RTQWAuIEkndmUgbWFkZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIHRob3NlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZm9ybWF0IHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJyYXkgY29ycmVjdGx5LCB3aXRob3V0IHRoYXQgcGVza3kgXCJDT05GSUdfXCIgcHJlZml4LCBzbyBpdCdzIGp1c3QgdGhlIHBsYWluIHN5bWJvbCBuYW1lcy5cblxuTm93LCBpcyB0aGlzIGV2ZW4gd29ydGggYSBkZWVwIGRpdmU/IEFic29sdXRlbHkhIFRoaXMgcGF0Y2ggaXMgZml4aW5nIHNvbWUgcHJldHR5IGNyaXRpY2FsIHN0YXRlIHRyYWNraW5nIGFuZCBjbGVhbnVwIGlzc3VlcyB3aXRoaW4gdGhlIFBIWSBsYXllci4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGBwaHlsaWJgIChgcGh5X2RldmljZS5jYCkgYW5kIGBwaHlsaW5rYCAoYHBoeWxpbmsuY2ApLiBUaGUgZml4IGFkZHJlc3NlczpcblxuMS4gIEVycm9yIGhhbmRsaW5nIGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYDogSXQgZW5zdXJlcyB0aGF0IGBwaHlkZXYtXHUwMDNlaXJxYCBpcyByZXN0b3JlZCBjb3JyZWN0bHkgd2hlbiBhIGdlbmVyaWMgUEhZIGRyaXZlciBpcyB1bmJvdW5kLCBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGRldGFpbCBmb3Igc3RhYmlsaXR5LlxuMi4gIEVycm9yIHBhdGggaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgOiBUaGlzIHBhdGNoIGlzIG1ha2luZyBzdXJlIHRoZSBgcGwtXHUwMDNlcGh5ZGV2YCBzdGF0ZSBpcyBwcm9wZXJseSBjbGVhcmVkIHVzaW5nIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgZHVyaW5nIGZhaWx1cmUgdG8gcHJldmVudCBkYW5nbGluZyBvciBpbmNvbnNpc3RlbnQgcG9pbnRlcnMgb24gc3Vic2VxdWVudCBhdHRhY2htZW50IGF0dGVtcHRzIG9yIGRpc2Nvbm5lY3RzLlxuXG5UaGlzIGlzIGNvcmUgbmV0d29ya2luZyBzdHVmZiDigJMgUEhZIGxheWVyIHN0YXRlIG1hbmFnZW1lbnQsIGhvdyBlcnJvcnMgYXJlIGhhbmRsZWQgZHVyaW5nIFBIWSBhdHRhY2gvZGV0YWNoL2JyaW5ndXAsIGFuZCB1bHRpbWF0ZWx5LCBuZXR3b3JrIGRldmljZSBzZXR1cCBhbmQgdGVhcmRvd24uIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gY2F1c2Ugc29tZSBuYXN0eSBpbnRlcm1pdHRlbnQgaXNzdWVzIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS5cblxuSSd2ZSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLCBzbyBJJ20gbGlzdGluZyB0aGVtIG91dDpcblxuKiAgIGBwaHlfYXR0YWNoX2RpcmVjdGBcbiogICBgcGh5X2RldGFjaGBcbiogICBgcGh5bGlua19jb25uZWN0X3BoeWBcbiogICBgcGh5bGlua19kaXNjb25uZWN0X3BoeWBcblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cy5cblxuSSd2ZSBjaGVja2VkIHRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIGNoYW5nZWQgb3IgYXJlIGNhbGxpbmcgdGhlIGNvZGUgdGhhdCB3YXMgY2hhbmdlZDpcblxuKiAgIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxYCBpcyBzdGF0aWMuXG4qICAgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBpcyBzdGF0aWMuXG4qICAgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGlzIHN0YXRpYy5cblRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBjYWxsaW5nIHRoZW06XG4qICAgYHBoeV9hdHRhY2hfZGlyZWN0YFxuKiAgIGBwaHlfZGV0YWNoYFxuKiAgIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YFxuKiAgIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YFxuKiAgIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YFxuKiAgIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGBcblxuT2theSwgdGhpcyBsaXN0IGlzIGFsbCBJIG5lZWQuIEkndmUgZ290IG15OlxuXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXCJwaHlfYXR0YWNoX2RpcmVjdFwiLCBcInBoeV9kZXRhY2hcIiwgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiXWBcbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXCJQSFlMSUJcIiwgXCJQSFlMSU5LXCIsIFwiVVNCX0xBTjc4WFhcIiwgXCJVU0JfTkVUX0FYODgxN1hcIiwgXCJORVRfRFNBXCJdYFxuXG5JJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRoaXMgcGF0Y2ggaXMgYWJvdXQgcm9idXN0aWZ5aW5nIHRoZSBQSFkgbGF5ZXIsIHByZXZlbnRpbmcgcG90ZW50aWFsIGlzc3VlcyB3aXRoIG9ycGhhbmVkIHBvaW50ZXJzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBpbXByb3ZpbmcgZXJyb3IgcGF0aHMgZHVyaW5nIGNyaXRpY2FsIFBIWSBvcGVyYXRpb25zLiBJJ20gY2FsbGluZyBpdCBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTM1NiwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODo1MS42MTM5NjE2NTFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzYyODM2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQSFlMSU5LXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJORVRfRFNBXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgICBcInBoeV9kZXRhY2hcIixcbiAgICBcInBoeWxpbmtfY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZGlzY29ubmVjdF9waHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBlcnJvciB1bndpbmRpbmcgaW4gUEhZTElCIGFuZCBQSFlMSU5LIHN1YnN5c3RlbXM6IHJlc3RvcmluZyBwaHlkZXYtXFx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIHVuYmluZC9hdHRhY2htZW50IGZhaWx1cmUgaW4gcGh5X2RldmljZS5jLCBhbmQgcHJvcGVybHkgY2xlYXJpbmcgcGwtXFx1MDAzZXBoeWRldiBzdGF0ZSB2aWEgcGh5bGlua19jbGVhcl9waHlkZXYgd2hlbiBwaHlsaW5rX2JyaW5ndXBfcGh5IGZhaWxzIGluIHBoeWxpbmsuYy4gVGhlc2UgY2hhbmdlcyBtb2RpZnkgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiBFdGhlcm5ldCBQSFkgbWFuYWdlbWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBIWUxJTktcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIk5FVF9EU0FcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiLFxuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHN0YXRlIG1hbmFnZW1lbnQgYW5kIGVycm9yIHVud2luZGluZyBpbiBQSFlMSUIgYW5kIFBIWUxJTksgc3Vic3lzdGVtczogcmVzdG9yaW5nIHBoeWRldi1cXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cXHUwMDNlcGh5ZGV2IHN0YXRlIHZpYSBwaHlsaW5rX2NsZWFyX3BoeWRldiB3aGVuIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMgaW4gcGh5bGluay5jLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIEV0aGVybmV0IFBIWSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODo1MS42ODc1OTU1NzhaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTQ0NjcxMjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6NTEuNjg4MTc4MDE4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTcxNDQwODQ3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiB0aGUgUEhZIGFuZCBwaHlsaW5rIHN1YnN5c3RlbXMuIFNwZWNpZmljYWxseSwgaXQgcmVzdG9yZXMgdGhlIFBIWSBJUlEgY29uZmlndXJhdGlvbiB1cG9uIGRldGFjaG1lbnQvZXJyb3IgZm9yIGdlbmVyaWMgUEhZIGRyaXZlcnMgYW5kIGVuc3VyZXMgdGhhdCBwaHlsaW5rIHN0YXRlIGlzIHByb3Blcmx5IGNsZWFyZWQgaWYgcGh5IGJyaW5ndXAgZmFpbHMuXFxuXFxuVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUga2VybmVsLWludGVybmFsIHBvaW50ZXJzLCBib29sZWFuIHN0YXRlIGZsYWdzLCBhbmQgbXV0ZXggbG9ja2luZy4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGRhdGEgdHJhbnNmZXJyZWQgdG8gdXNlciBzcGFjZSAobm8gY29weV90b191c2VyLCBuZXRsaW5rIG1lc3NhZ2VzLCBpb2N0bHMsIGV0Yy4pLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbG9ja2luZyBvciB1c2UtYWZ0ZXItZnJlZS9OVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBkZXRlY3RlZCBieSBMT0NLREVQIG9yIEtBU0FOLCBub3QgS01TQU4uIEhlbmNlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMWFkY2QzY2MwMzc1NzlkZDVlNzExMjU1MmU1ODA0ZjBmNjkxYjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li4yMGZjMjkzNTVmNjBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MzQsNiArMTczNCwxNyBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIFVuZG8gdGhlIFBIWV9QT0xMIHRoYXQgcGh5X3Byb2JlKCkgc2V0cyB3aGVuIGEgZHJpdmVyIHdpdGhvdXRcbisgKiBpbnRlcnJ1cHQgY2FsbGJhY2tzIGJpbmRzLiBUaGUgYmluZCBjeWNsZSBuZXZlciB3cml0ZXMgYnVzLVx1MDAzZWlycVtdLFxuKyAqIHNvIHRoZSB0YWJsZSBzdGlsbCBob2xkcyB0aGUgcHJlLWJpbmQgdmFsdWU7IGFueXRoaW5nIGVsc2UgdGhlIFBIWVxuKyAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuXG4rICovXG4rc3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGlmIChwaHlkZXYtXHUwMDNlaXJxID09IFBIWV9QT0xMKVxuK1x0XHRwaHlkZXYtXHUwMDNlaXJxID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZWlycVtwaHlkZXYtXHUwMDNlbWRpby5hZGRyXTtcbit9XG4rXG4gLyoqXG4gICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuQEAgLTE4OTYsNiArMTkwNyw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIGVycm9yX21vZHVsZV9wdXQ6XG4gXHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdGQtXHUwMDNlZHJpdmVyID0gTlVMTDtcbiBlcnJvcl9wdXRfZGV2aWNlOlxuQEAgLTE5NjUsNiArMTk3Nyw3IEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4gXHQgKi9cbiBcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuK1x0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4gXHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuIFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbisvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC1cdTAwM2VwaHlkZXZfbXV0ZXguICovXG4rc3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuK1x0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbitcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aWYgKHJldCA9PSAwIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXG4gXHRcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xuIFxuK1x0aWYgKHJldCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdH1cbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIzNDcsMTUgKzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFx0cGh5ID0gcGwtXHUwMDNlcGh5ZGV2O1xuLVx0aWYgKHBoeSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4tXHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0fVxuK1x0aWYgKHBoeSlcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcbiBcdGlmIChwaHkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjUxLjY4ODE3OTIxOFoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NzI0MzU5NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIEtNU0FOIGZ1enppbmcgaXMgbmVjZXNzYXJ5LiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyB0d28gZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L2AgZGlyZWN0b3J5OiBgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2AuIFRoYXQncyBhbHJlYWR5IHRlbGxpbmcuIFRoZSBuZXR3b3JrIFBIWSBsYXllciBpcyBvZnRlbiBhIHNvdXJjZSBvZiBzdWJ0bGUgaXNzdWVzLlxuXG5Mb29raW5nIGF0IGBwaHlfZGV2aWNlLmNgLCB0aGUga2V5IGFkZGl0aW9uIGlzIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKClgLiBUaGlzIHNlZW1zIHRvIGJlIGFib3V0IHJlc3RvcmluZyBhbiBpbnRlcnJ1cHQgcmVxdWVzdCBsaW5lLCBzcGVjaWZpY2FsbHkgZnJvbSB0aGUgTURJTyBidXMncyBJUlEgYXJyYXkgaWYgdGhlIGN1cnJlbnQgYHBoeWRldi1cdTAwM2VpcnFgIGlzIGBQSFlfUE9MTGAuIEludGVyZXN0aW5nLiBJdCdzIGNhbGxlZCBpbiBlcnJvciBwYXRocyBvZiBgcGh5X2F0dGFjaF9kaXJlY3QoKWAgYW5kIGBwaHlfZGV0YWNoKClgLiBUaGlzIHN1Z2dlc3RzIGl0J3MgYSBjbGVhbnVwIG9yIHJlY292ZXJ5IGZ1bmN0aW9uLCBoYW5kbGluZyBjYXNlcyB3aGVyZSBpbml0aWFsIGludGVycnVwdCBzZXR1cCBtaWdodCBmYWlsIG9yIG5lZWRzIHRvIGJlIHJldmVydGVkLiBUaGVzZSB0eXBlcyBvZiBlcnJvciBwYXRocyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgS01TQU4gY2hlY2tzLCBiZWNhdXNlIG9mdGVuIHlvdSdsbCBiZSBleGl0aW5nIGFuIGVycm9yIHBhdGgsIGJ1dCBoYXZlbid0IGFjdHVhbGx5IGRlYWxsb2NhdGVkLCBvciBoYXZlbid0IHByb3Blcmx5IHJlc2V0IHNvbWV0aGluZy4gVGhhdCdzIGFsd2F5cyBhIGdvb2QgcGxhY2UgdG8gbG9vayBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5OZXh0LCBgcGh5bGluay5jYCBhZGRzIGEgaGVscGVyIGZ1bmN0aW9uLCBgcGh5bGlua19jbGVhcl9waHlkZXYoKWAuIEl0IGxvb2tzIGxpa2UgaXQncyB1c2VkIGluIHRoZSBlcnJvciBwYXRoIG9mIGBwaHlsaW5rX2JyaW5ndXBfcGh5KClgIOKAkyB3aGljaCBpcyBhbm90aGVyIHJlZCBmbGFnLCBhIHNldHVwIGZ1bmN0aW9uIHdpdGggYSBzcGVjaWZpYyBlcnJvciBwYXRoLiBUaGlzIHN1Z2dlc3RzIHRoYXQgcmVzb3VyY2VzIG1pZ2h0IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjbGVhcmVkIGluIHRoZSBjYXNlIG9mIGZhaWx1cmUsIGFuZCB0aGUgYHBoeWxpbmtfZGlzY29ubmVjdF9waHkoKWAgZnVuY3Rpb24gaXMgcmVmYWN0b3JlZCB0byB1c2UgaXQuIFRoaXMgY291bGQgbWVhbiB3ZSdyZSBzZWVpbmcgaW1wcm92ZWQgcmVzb3VyY2UgbWFuYWdlbWVudCwgYnV0IGl0IGNvdWxkIGFsc28gaGlkZSBhIHN1YnRsZSBtZW1vcnkgaXNzdWUuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIGludGVycnVwdCBtYW5hZ2VtZW50IGFuZCBQSFkgZGV2aWNlIHNldHVwL3RlYXJkb3duIGluIHRoZXNlIGFyZWFzLCBJJ20gbGVhbmluZyB0b3dhcmRzICp5ZXMqLCB3ZSBtaWdodCBuZWVkIEtNU0FOIGZ1enppbmcgaGVyZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSB0byBjb25maXJtIG15IGluaXRpYWwgaW1wcmVzc2lvbi4gSSdsbCBuZWVkIHRvIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgdGhlIGNvbnRleHQgYXJvdW5kIHRoZXNlIG5ldyBmdW5jdGlvbnMgYW5kIHRoZSBlcnJvciBoYW5kbGluZyBpbiBib3RoIGZpbGVzIHRvIGZ1bGx5IGFzc2VzcyB0aGUgcmlzay4gSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgUEhZIGRldmljZXMgaW50ZXJhY3Qgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrIGFuZCBob3cgdGhlIGludGVycnVwdCBsb2dpYyBpcyBpbXBsZW1lbnRlZCwgbWFraW5nIHN1cmUgdGhhdCByZXNvdXJjZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLCByZWxlYXNlZCwgYW5kIHRoYXQgcmFjZSBjb25kaXRpb25zIGFyZSBhdm9pZGVkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU5OjAwLjQxMjU0MzAzM1oiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzMwOlxcdH1cXG4xNzMxOlxcdFxcbjE3MzI6XFx0c3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4xNzMzOlxcdHtcXG4xNzM0OlxcdFxcdHJldHVybiBwaHlkcnYtXFx1MDAzZWNvbmZpZ19pbnRyIFxcdTAwMjZcXHUwMDI2IHBoeWRydi1cXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcXG4xNzM1OlxcdH1cXG4xNzM2OlxcdFxcbjE3Mzc6XFx0LyogVW5kbyB0aGUgUEhZX1BPTEwgdGhhdCBwaHlfcHJvYmUoKSBzZXRzIHdoZW4gYSBkcml2ZXIgd2l0aG91dFxcbjE3Mzg6XFx0ICogaW50ZXJydXB0IGNhbGxiYWNrcyBiaW5kcy4gVGhlIGJpbmQgY3ljbGUgbmV2ZXIgd3JpdGVzIGJ1cy1cXHUwMDNlaXJxW10sXFxuMTczOTpcXHQgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFlcXG4xNzQwOlxcdCAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuXFxuMTc0MTpcXHQgKi9cXG4xNzQyOlxcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xNzQzOlxcdHtcXG4xNzQ0OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWlycSA9PSBQSFlfUE9MTClcXG4xNzQ1OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlaXJxID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlaXJxW3BoeWRldi1cXHUwMDNlbWRpby5hZGRyXTtcXG4xNzQ2OlxcdH1cXG4xNzQ3OlxcdFxcbjE3NDg6XFx0LyoqXFxuMTc0OTpcXHQgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXFxuMTc1MDpcXHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcXG4xNzUxOlxcdCAqIEBwaHlkZXY6IFBvaW50ZXIgdG8gcGh5X2RldmljZSB0byBhdHRhY2hcXG4xNzUyOlxcdCAqIEBmbGFnczogUEhZIGRldmljZSdzIGRldl9mbGFnc1xcbjE3NTM6XFx0ICogQGludGVyZmFjZTogUEhZIGRldmljZSdzIGludGVyZmFjZVxcbjE3NTQ6XFx0ICpcXG4xNzU1OlxcdCAqIERlc2NyaXB0aW9uOiBDYWxsZWQgYnkgZHJpdmVycyB0byBhdHRhY2ggdG8gYSBwYXJ0aWN1bGFyIFBIWVxcbjE3NTY6XFx0ICogICAgIGRldmljZS4gVGhlIHBoeV9kZXZpY2UgaXMgZm91bmQsIGFuZCBwcm9wZXJseSBob29rZWQgdXBcXG4xNzU3OlxcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXFxuMTc1ODpcXHQgKiAgICAgZ2VuZXJpYyBkcml2ZXIgaXMgdXNlZC4gIFRoZSBwaHlfZGV2aWNlIGlzIGdpdmVuIGEgcHRyIHRvXFxuMTc1OTpcXHQgKiAgICAgdGhlIGF0dGFjaGluZyBkZXZpY2UsIGFuZCBnaXZlbiBhIGNhbGxiYWNrIGZvciBsaW5rIHN0YXR1c1xcbjE3NjA6XFx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxcbjE3NjE6XFx0ICogICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSByZWZlcmVuY2Ugb24gdGhlIHBoeSBkZXZpY2UuXFxuMTc2MjpcXHQgKi9cXG4xNzYzOlxcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbjE3NjQ6XFx0XFx0XFx0ICAgICAgdTMyIGZsYWdzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjE3NjU6XFx0e1xcbjE3NjY6XFx0XFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cXHUwMDNlbWRpby5idXM7XFxuMTc2NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkID0gXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXY7XFxuMTc2ODpcXHRcXHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcXG4xNzY5OlxcdFxcdGludCBlcnI7XFxuMTc3MDpcXHRcXG4xNzcxOlxcdFxcdC8qIEZvciBFdGhlcm5ldCBkZXZpY2UgZHJpdmVycyB0aGF0IHJlZ2lzdGVyIHRoZWlyIG93biBNRElPIGJ1cywgd2VcXG4xNzcyOlxcdFxcdCAqIHdpbGwgaGF2ZSBidXMtXFx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcXG4xNzczOlxcdFxcdCAqIG91ciBvd24gbW9kdWxlLVxcdTAwM2VyZWZjbnQgaGVyZSwgb3RoZXJ3aXNlIHdlIHdvdWxkIG5vdCBiZSBhYmxlIHRvXFxuMTc3NDpcXHRcXHQgKiB1bmxvYWQgbGF0ZXIgb24uXFxuMTc3NTpcXHRcXHQgKi9cXG4xNzc2OlxcdFxcdGlmIChkZXYpXFxuMTc3NzpcXHRcXHRcXHRuZGV2X293bmVyID0gZGV2LVxcdTAwM2VkZXYucGFyZW50LVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyO1xcbjE3Nzg6XFx0XFx0aWYgKG5kZXZfb3duZXIgIT0gYnVzLVxcdTAwM2Vvd25lciBcXHUwMDI2XFx1MDAyNiAhdHJ5X21vZHVsZV9nZXQoYnVzLVxcdTAwM2Vvd25lcikpIHtcXG4xNzc5OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiZmFpbGVkIHRvIGdldCB0aGUgYnVzIG1vZHVsZVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU5OjAwLjQxMjgzODkyM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjExNDAxOTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipEaWdnaW5nIGludG8gUEhZIExpbmsgTWFuYWdlbWVudCoqXG5cbkFscmlnaHQsIEknbSBhbHJlYWR5IGluIHRoZSB0aGljayBvZiB0aGlzIFBIWSBkcml2ZXIgaXNzdWUsIGJ1dCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByYWJiaXQgaG9sZSwgSSBzaG91bGQgY2lyY2xlIGJhY2sgYW5kIHZlcmlmeSBzb21ldGhpbmcgY3J1Y2lhbC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBJJ3ZlIGFjY291bnRlZCBmb3IgZXZlcnkgcG90ZW50aWFsIGludGVyYWN0aW9uLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCBhbmQgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIFBIWSBsaW5rIGlzIGJlaW5nIGhhbmRsZWQgcHJvcGVybHkuIFRoZXNlIGFyZSBmdW5kYW1lbnRhbCBmb3IgdGhlIGRyaXZlciwgYW5kIEkgY2FuJ3QgYWZmb3JkIGFueSBvdmVyc2lnaHQgaGVyZS4gSSBrbm93IEkndmUgYmVlbiBmb2N1c2VkIG9uIFgsIFksIGFuZCBaLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29yZSBsaW5rIGVzdGFibGlzaG1lbnQgYW5kIHRha2Vkb3duIGFyZSByb2NrLXNvbGlkLCBvciBldmVyeXRoaW5nIGRvd25zdHJlYW0gaXMgZ29pbmcgdG8gYnJlYWsuIEl04oCZcyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaDsgYSBsaXR0bGUgZXh0cmEgdGltZSBub3cgY291bGQgc2F2ZSBhIGJpZyBoZWFkYWNoZSBsYXRlci4gSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgYnJpbmcgdXAgYW5kIGRpc2Nvbm5lY3Qgb3BlcmF0aW9ucyBpbiByZWxhdGlvbiB0byB0aGUgd2lkZXIgcHJvYmxlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgyMywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTk6MDQuMDI0MjQzNjQxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4Mjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxOTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxOTA6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZXN1cHBvcnRlZCxcXG4yMTkxOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbjIxOTI6XFx0XFxuMjE5MzpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX21hbmFnZWRfcG0pXFxuMjE5NDpcXHRcXHRcXHRwaHktXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xcbjIxOTc6XFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHBoeSkgXFx1MDAzZSAwO1xcbjIxOTg6XFx0XFxuMjE5OTpcXHRcXHRpZiAocGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XFxuMjIwMDpcXHRcXHRcXHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0J3NcXG4yMjAxOlxcdFxcdFxcdCAqIHJlY2VpdmUgY2xvY2suXFxuMjIwMjpcXHRcXHRcXHQgKi9cXG4yMjAzOlxcdFxcdFxcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXFxuMjIwNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XFxuMjIwNTpcXHRcXHRcXHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxcbjIyMDY6XFx0XFx0XFx0XFx0cmV0ID0gMDtcXG4yMjA3OlxcdFxcdH1cXG4yMjA4OlxcdFxcbjIyMDk6XFx0XFx0aWYgKHJldCA9PSAwIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcXG4yMjEwOlxcdFxcdFxcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xcbjIyMTE6XFx0XFxuMjIxMjpcXHRcXHRpZiAocmV0KSB7XFxuMjIxMzpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE0OlxcdFxcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbjIyMTU6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE2OlxcdFxcdH1cXG4yMjE3OlxcdFxcbjIyMTg6XFx0XFx0cmV0dXJuIHJldDtcXG4yMjE5OlxcdH1cXG4yMjIwOlxcdFxcbjIyMjE6XFx0c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbjIyMjI6XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4yMjIzOlxcdHtcXG4yMjI0OlxcdFxcdHUzMiBmbGFncyA9IDA7XFxuMjIyNTpcXHRcXG4yMjI2OlxcdFxcdGlmIChXQVJOX09OKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkpXFxuMjIyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yMjI4OlxcdFxcbjIyMjk6XFx0XFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYpXFxuMjIzMDpcXHRcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbjIyMzE6XFx0XFxuMjIzMjpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX3JlcXVpcmVzX3J4YylcXG4yMjMzOlxcdFxcdFxcdGZsYWdzIHw9IFBIWV9GX1JYQ19BTFdBWVNfT047XFxuMjIzNDpcXHRcXG4yMjM1OlxcdFxcdHJldHVybiBwaHlfYXR0YWNoX2RpcmVjdChwbC1cXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xcbjIyMzY6XFx0fVxcbjIyMzc6XFx0XFxuMjIzODpcXHQvKipcXG4yMjM5OlxcdCAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTk6MDQuMDI0NTI4NDEyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ4MDc3MTA4ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZL1BoeWxpbmsgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHBvdGVudGlhbCBJUlEgcmVzdG9yYXRpb24gaXNzdWVzIHdpdGggZ2VuZXJpYyBQSFkgZHJpdmVycy4gSXQgYXBwZWFycyB0aGF0IHdoZW4gYSBnZW5lcmljIFBIWSBkcml2ZXIgaW5pdGlhbGx5IGJpbmRzLCBpdCBtaWdodCBzZXQgdGhlIElSUSB0byBgUEhZX1BPTExgLiBJZiB0aGUgUEhZIGZhaWxzIHRvIGF0dGFjaCBvciBpcyBkZXRhY2hlZCwgdGhlIGNvZGUgbm93IGVuc3VyZXMgdGhhdCB0aGUgb3JpZ2luYWwgSVJRIChhcyBkZWZpbmVkIGJ5IHRoZSBNRElPIGJ1cykgaXMgcmVzdG9yZWQuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2Qgc2FmZWd1YXJkIHRvIHByZXZlbnQgYSBsYXRlciwgbW9yZSBzcGVjaWZpYyBkcml2ZXIgZnJvbSBpbmhlcml0aW5nIGFuIGluY29ycmVjdCBwb2xsaW5nIGNvbmZpZ3VyYXRpb24uIEl0IGFsc28gdG91Y2hlcyBgcGh5bGlua19icmluZ3VwX3BoeWAgdG8gaGFuZGxlIGVycm9ycyBkdXJpbmcgdGhlIGJyaW5ndXAgcHJvY2VzcywgZW5zdXJpbmcgcHJvcGVyIGNsZWFudXAgKHNldHRpbmcgYHBsLVx1MDAzZXBoeWRldmAgdG8gYE5VTExgIGFuZCBjbGVhcmluZyBmbGFncykgd2hlbiBhIGZhaWx1cmUgb2NjdXJzLiBUaGUgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIGZ1bmN0aW9uIGlzIGFsc28gcmVmYWN0b3JlZCB0byB1c2UgdGhpcyBuZXcgaGVscGVyLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgZm9yIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcywgb2YgY291cnNlLiBIb3dldmVyLCBhZnRlciBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIEknbSBub3Qgc2VlaW5nIGFueXRoaW5nIHRoYXQgc3RhbmRzIG91dC4gVGhpcyBpcyBnb29kOiBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyB1c2VyLXNwYWNlIGludGVyYWN0aW9ucywgbm8gbW9kaWZpZWQgY29weSBvcGVyYXRpb25zLCBhbmQgbm8gZXhwb3NlZCB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlc2UgY2hhbmdlcyBhcmUgY2xlYXJseSBmb2N1c2VkIG9uIGVycm9yIGhhbmRsaW5nLCBjbGVhbnVwIHByb2NlZHVyZXMsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUEhZL3BoeWxpbmsgc3ViLXN5c3RlbS5cblxuR2l2ZW4gdGhhdCBpdOKAmXMgc3RyaWN0bHkgZXJyb3IgaGFuZGxpbmcsIGNsZWFudXAsIGFuZCBsb2NraW5nLXJlbGF0ZWQgY2hhbmdlcywgdGhlIG1vc3QgbGlrZWx5IHJpc2tzIHdvdWxkIGJlIHJhY2UgY29uZGl0aW9ucywgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcywgbG9ja2luZyBwcm9ibGVtcywgYW5kIHBvdGVudGlhbGx5IHVzZS1hZnRlci1mcmVlIGJ1Z3MuIEJ1dCwgdGhhdCdzIHdoYXQgdG9vbHMgbGlrZSBLQVNBTiBhbmQgTE9DS0RFUCBhcmUgZm9yLCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBzaG91bGQgY2F0Y2ggdGhlIHJlc3QuIFRoZXJlZm9yZSwgSSBiZWxpZXZlIHRoYXQgYE5lZWRzS01TQU5gIHNob3VsZCBpbmRlZWQgYmUgc2V0IHRvIGBmYWxzZWAuIFRpbWUgdG8gbW92ZSBvbnRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4ODcsIk91dHB1dFRva2VucyI6MTg3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTk6MDguODMyMjQyNDdaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiB0aGUgUEhZIGFuZCBwaHlsaW5rIHN1YnN5c3RlbXMuIFNwZWNpZmljYWxseSwgaXQgcmVzdG9yZXMgdGhlIFBIWSBJUlEgY29uZmlndXJhdGlvbiB1cG9uIGRldGFjaG1lbnQvZXJyb3IgZm9yIGdlbmVyaWMgUEhZIGRyaXZlcnMgYW5kIGVuc3VyZXMgdGhhdCBwaHlsaW5rIHN0YXRlIGlzIHByb3Blcmx5IGNsZWFyZWQgaWYgcGh5IGJyaW5ndXAgZmFpbHMuXFxuXFxuVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUga2VybmVsLWludGVybmFsIHBvaW50ZXJzLCBib29sZWFuIHN0YXRlIGZsYWdzLCBhbmQgbXV0ZXggbG9ja2luZy4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGRhdGEgdHJhbnNmZXJyZWQgdG8gdXNlciBzcGFjZSAobm8gY29weV90b191c2VyLCBuZXRsaW5rIG1lc3NhZ2VzLCBpb2N0bHMsIGV0Yy4pLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbG9ja2luZyBvciB1c2UtYWZ0ZXItZnJlZS9OVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBkZXRlY3RlZCBieSBMT0NLREVQIG9yIEtBU0FOLCBub3QgS01TQU4uIEhlbmNlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gdGhlIFBIWSBhbmQgcGh5bGluayBzdWJzeXN0ZW1zLiBTcGVjaWZpY2FsbHksIGl0IHJlc3RvcmVzIHRoZSBQSFkgSVJRIGNvbmZpZ3VyYXRpb24gdXBvbiBkZXRhY2htZW50L2Vycm9yIGZvciBnZW5lcmljIFBIWSBkcml2ZXJzIGFuZCBlbnN1cmVzIHRoYXQgcGh5bGluayBzdGF0ZSBpcyBwcm9wZXJseSBjbGVhcmVkIGlmIHBoeSBicmluZ3VwIGZhaWxzLlxcblxcblRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIGtlcm5lbC1pbnRlcm5hbCBwb2ludGVycywgYm9vbGVhbiBzdGF0ZSBmbGFncywgYW5kIG11dGV4IGxvY2tpbmcuIFRoZXJlIGFyZSBubyBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBkYXRhIHRyYW5zZmVycmVkIHRvIHVzZXIgc3BhY2UgKG5vIGNvcHlfdG9fdXNlciwgbmV0bGluayBtZXNzYWdlcywgaW9jdGxzLCBldGMuKS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIGxvY2tpbmcgb3IgdXNlLWFmdGVyLWZyZWUvTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbm90IEtNU0FOLiBIZW5jZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 21:43:24 +0000 UTC FinishedAt: 2026-09-02 21:59:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3ba13f5e7180c034b0a1ef7e052fb780856b134e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "PHYLINK", "USB_LAN78XX", "USB_NET_AX8817X", "NET_DSA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3ba13f5e7180c034b0a1ef7e052fb780856b134e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "PHYLINK", "USB_LAN78XX", "USB_NET_AX8817X", "NET_DSA" ], "series_id": "015e48f6-eb4f-482f-a7aa-32fd5d59fe00" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_attach_direct", "phy_detach", "phylink_connect_phy", "phylink_disconnect_phy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtORVRfRFNBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gdGhlIFBIWSBhbmQgcGh5bGluayBzdWJzeXN0ZW1zLiBTcGVjaWZpY2FsbHksIGl0IHJlc3RvcmVzIHRoZSBQSFkgSVJRIGNvbmZpZ3VyYXRpb24gdXBvbiBkZXRhY2htZW50L2Vycm9yIGZvciBnZW5lcmljIFBIWSBkcml2ZXJzIGFuZCBlbnN1cmVzIHRoYXQgcGh5bGluayBzdGF0ZSBpcyBwcm9wZXJseSBjbGVhcmVkIGlmIHBoeSBicmluZ3VwIGZhaWxzLlxuXG5UaGVzZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBrZXJuZWwtaW50ZXJuYWwgcG9pbnRlcnMsIGJvb2xlYW4gc3RhdGUgZmxhZ3MsIGFuZCBtdXRleCBsb2NraW5nLiBUaGVyZSBhcmUgbm8gYWxsb2NhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBkYXRhLCBhbmQgbm8gZGF0YSB0cmFuc2ZlcnJlZCB0byB1c2VyIHNwYWNlIChubyBjb3B5X3RvX3VzZXIsIG5ldGxpbmsgbWVzc2FnZXMsIGlvY3RscywgZXRjLikuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyBsb2NraW5nIG9yIHVzZS1hZnRlci1mcmVlL05VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGRldGVjdGVkIGJ5IExPQ0tERVAgb3IgS0FTQU4sIG5vdCBLTVNBTi4gSGVuY2UsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBlcnJvciB1bndpbmRpbmcgaW4gUEhZTElCIGFuZCBQSFlMSU5LIHN1YnN5c3RlbXM6IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgc3RhdGUgdmlhIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IHdoZW4gcGh5bGlua19icmluZ3VwX3BoeSBmYWlscyBpbiBwaHlsaW5rLmMuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gRXRoZXJuZXQgUEhZIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMWFkY2QzY2MwMzc1NzlkZDVlNzExMjU1MmU1ODA0ZjBmNjkxYjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uMjBmYzI5MzU1ZjYwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzM0LDYgJiM0MzsxNzM0LDE3IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbiB9XG4gXG4mIzQzOy8qIFVuZG8gdGhlIFBIWV9QT0xMIHRoYXQgcGh5X3Byb2JlKCkgc2V0cyB3aGVuIGEgZHJpdmVyIHdpdGhvdXRcbiYjNDM7ICogaW50ZXJydXB0IGNhbGxiYWNrcyBiaW5kcy4gVGhlIGJpbmQgY3ljbGUgbmV2ZXIgd3JpdGVzIGJ1cy1cdTAwM2VpcnFbXSxcbiYjNDM7ICogc28gdGhlIHRhYmxlIHN0aWxsIGhvbGRzIHRoZSBwcmUtYmluZCB2YWx1ZTsgYW55dGhpbmcgZWxzZSB0aGUgUEhZXG4mIzQzOyAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2VpcnEgPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlaXJxW3BoeWRldi1cdTAwM2VtZGlvLmFkZHJdO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbkBAIC0xODk2LDYgJiM0MzsxOTA3LDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbiBcdG1vZHVsZV9wdXQoZC1cdTAwM2Vkcml2ZXItXHUwMDNlb3duZXIpO1xuJiM0MztcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdGQtXHUwMDNlZHJpdmVyID0gTlVMTDtcbiBlcnJvcl9wdXRfZGV2aWNlOlxuQEAgLTE5NjUsNiAmIzQzOzE5NzcsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuIFx0ICovXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbiYjNDM7XHRcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4gXHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNWI4ZTk1NjkwMmZiNS4uYTU1ZTRhNjQwMjhmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbiYjNDM7LyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtXHUwMDNlcGh5ZGV2X211dGV4LiAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4mIzQzO3tcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuJiM0MztcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4mIzQzO1x0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiAmIzQzOzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuIFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbiBcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4mIzQzO1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMzQ3LDE1ICYjNDM7MjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXHRwaHkgPSBwbC1cdTAwM2VwaHlkZXY7XG4tXHRpZiAocGh5KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi1cdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbi1cdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHR9XG4mIzQzO1x0aWYgKHBoeSlcbiYjNDM7XHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXG4gXHRpZiAocGh5KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BIWUxJTksmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O05FVF9EU0EmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfZGV0YWNoJiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19kaXNjb25uZWN0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBlcnJvciB1bndpbmRpbmcgaW4gUEhZTElCIGFuZCBQSFlMSU5LIHN1YnN5c3RlbXM6IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgc3RhdGUgdmlhIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IHdoZW4gcGh5bGlua19icmluZ3VwX3BoeSBmYWlscyBpbiBwaHlsaW5rLmMuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gRXRoZXJuZXQgUEhZIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwMWFkY2QzY2MwMzc1NzlkZDVlNzExMjU1MmU1ODA0ZjBmNjkxYjU5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLjIwZmMyOTM1NWY2MGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTczNCw2ICYjNDM7MTczNCwxNyBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwogfQogCiYjNDM7LyogVW5kbyB0aGUgUEhZX1BPTEwgdGhhdCBwaHlfcHJvYmUoKSBzZXRzIHdoZW4gYSBkcml2ZXIgd2l0aG91dAomIzQzOyAqIGludGVycnVwdCBjYWxsYmFja3MgYmluZHMuIFRoZSBiaW5kIGN5Y2xlIG5ldmVyIHdyaXRlcyBidXMtJmd0O2lycVtdLAomIzQzOyAqIHNvIHRoZSB0YWJsZSBzdGlsbCBob2xkcyB0aGUgcHJlLWJpbmQgdmFsdWU7IGFueXRoaW5nIGVsc2UgdGhlIFBIWQomIzQzOyAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7aXJxID09IFBIWV9QT0xMKQomIzQzOwkJcGh5ZGV2LSZndDtpcnEgPSBwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtpcnFbcGh5ZGV2LSZndDttZGlvLmFkZHJdOwomIzQzO30KJiM0MzsKIC8qKgogICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlcgogICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoCkBAIC0xODk2LDYgJiM0MzsxOTA3LDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAKIGVycm9yX21vZHVsZV9wdXQ6CiAJbW9kdWxlX3B1dChkLSZndDtkcml2ZXItJmd0O293bmVyKTsKJiM0MzsJcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpOwogCXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbiA9IDA7CiAJZC0mZ3Q7ZHJpdmVyID0gTlVMTDsKIGVycm9yX3B1dF9kZXZpY2U6CkBAIC0xOTY1LDYgJiM0MzsxOTc3LDcgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkCiAJICovCiAJaWYgKHBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbikgewomIzQzOwkJcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpOwogCQlkZXZpY2VfcmVsZWFzZV9kcml2ZXIoJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2KTsKIAkJcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuID0gMDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCA1YjhlOTU2OTAyZmI1Li5hNTVlNGE2NDAyOGZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKQEAgLTIwODMsNiAmIzQzOzIwODMsMTggQEAgc3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJcmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpOwogfQogCiYjNDM7LyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtJmd0O3BoeWRldl9tdXRleC4gKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7CiYjNDM7CXBsLSZndDtwaHlkZXYgPSBOVUxMOwomIzQzOwlwbC0mZ3Q7cGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTsKJiM0MzsJcGwtJmd0O21hY190eF9jbGtfc3RvcCA9IGZhbHNlOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwaHktJmd0O2xvY2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJCQkgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKQEAgLTIxOTcsNiAmIzQzOzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAlpZiAocmV0ID09IDAgJmFtcDsmYW1wOyBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpCiAJCXBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpOwogCiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKJiM0MzsJCXBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yMzQ3LDE1ICYjNDM7MjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpCiAKIAltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiAJcGh5ID0gcGwtJmd0O3BoeWRldjsKLQlpZiAocGh5KSB7Ci0JCW11dGV4X2xvY2soJmFtcDtwaHktJmd0O2xvY2spOwotCQltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKLQkJcGwtJmd0O3BoeWRldiA9IE5VTEw7Ci0JCXBsLSZndDtwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlOwotCQlwbC0mZ3Q7bWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7Ci0JCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7Ci0JCW11dGV4X3VubG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7Ci0JfQomIzQzOwlpZiAocGh5KQomIzQzOwkJcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiAKIAlpZiAocGh5KSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgdGhpcyBwYXRjaCBmb3IgZnV6emluZyBvcHBvcnR1bml0aWVzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBmdW5jdGlvbmFsIGNoYW5nZXMgYXJlIGJlaW5nIGludHJvZHVjZWQgYW5kIHdoZXJlIHRoZXkgYXJlIGhhcHBlbmluZy4gVGhlbiwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFuZCB0YXJnZXQgc3ltYm9scyBmb3IgZWZmZWN0aXZlIGZ1enppbmcuCgpMb29raW5nIGF0IHRoZSBwYXRjaCBpdHNlbGYsIGl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBTcGVjaWZpY2FsbHksIEkgc2VlOgoKKiAgIEluIGBwaHlfZGV2aWNlLmNgLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAuIEl0IHNlZW1zIHRvIGJlIHJlc3RvcmluZyB0aGUgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gKGBwaHlkZXYtJmd0O2lycWApIHVuZGVyIHNwZWNpZmljIGVycm9yIGNvbmRpdGlvbnMgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgYHBoeV9kZXRhY2hgLiBUaGlzIGlzIGEgY2FuZGlkYXRlLCBidXQgdGhlIGNvbmRpdGlvbnMgYXJlIGEgYml0IHNwZWNpZmljLgoqICAgSW4gYHBoeWxpbmsuY2AsIHdlJiMzOTt2ZSBnb3QgYSBuZXcgaGVscGVyIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgZXh0cmFjdGVkIGZyb20gYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLiBBbmQsIHRoaXMgaGVscGVyIGlzIHVzZWQgZm9yIGVycm9yIGhhbmRsaW5nIGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YC4gVGhpcyBzZWVtcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IGludm9sdmVzIGNsZWFyaW5nIHRoZSBwaHlkZXYsIGFuZCBlcnJvciBjb25kaXRpb25zIGFyZSBwcmltZSBmdXp6aW5nIHRhcmdldHMuCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2UgUEhZIGRldmljZXMgYW5kIHBoeWxpbmsgc3RydWN0dXJlcyBjYW4gYmUgbWFuaXB1bGF0ZWQsIHJlYWNoZWQsIG9yIHRyaWdnZXJlZCBmcm9tIHVzZXIgc3BhY2Ugb3IgdGhyb3VnaCBuZXR3b3JrIGludGVyYWN0aW9ucywgb3IgaWYgdGhleSBhcmUgcHVyZWx5IGludGVybmFsIGtlcm5lbCBjb21wb25lbnRzLiBDYW4gSSB0cmlnZ2VyIHRoZXNlIGNvZGUgcGF0aHMgdGhyb3VnaCBuZXR3b3JrIG5ldGRldmljZXMsIHZpcnR1YWwgZGV2aWNlcywgb3Igb3RoZXIgdXNlci1zcGFjZSBtZWNoYW5pc21zPyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZXNlIG1vZHVsZXMgYXJlIHVzZWQuCgpTbywgbGV0IG1lIGNoZWNrIHRoZSBgS2NvbmZpZ2AgaW4gYGRyaXZlcnMvbmV0L3BoeWAgdG8gZ2V0IGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCB0byByZWFjaCB0aGVzZSBwYXJ0cyBvZiB0aGUgY29kZS4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsZXJzIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgZWFzeSB3YXkgdG8gcmVhY2ggdGhlbS4gVGhpcyBpcyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdG8gY29uc3RydWN0IGEgZ29vZCBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai1cXCRcXChDT05GSUdfLipQSFkuKlxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE2PWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICYjNDM7PSBvcGVuX2FsbGlhbmNlX2hlbHBlcnMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE3LVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19QSFlMSUIpXHRcdCYjNDM7PSBtZGlvX2J1cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BIWUxJTkspXHRcdCYjNDM7PSBwaHlsaW5rLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbGlicGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19kZXZyZXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19QSFlfUEFDS0FHRSlcdCYjNDM7PSBwaHlfcGFja2FnZS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMjMtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORykgJiM0Mzs9IG1paV90aW1lc3RhbXBlci5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMjUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTI4PW9iai15XHRcdFx0XHQmIzQzOz0gJChzZnAtb2JqLXkpICQoc2ZwLW9iai1tKVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTI5LVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19BRElOX1BIWSlcdFx0JiM0Mzs9IGFkaW4ub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19BRElOMTEwMF9QSFkpXHQmIzQzOz0gYWRpbjExMDAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19BRElOMTE0MF9QSFkpXHQmIzQzOz0gYWRpbjExNDAtcGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfQUlSX0FOODgwMV9QSFkpXHQmIzQzOz0gYWlyX2FuODgwMS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0FJUl9FTjg4MTFIX1BIWSkgICAmIzQzOz0gYWlyX2VuODgxMWgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19BSVJfTkVUX1BIWUxJQilcdCYjNDM7PSBhaXJfcGh5X2xpYi5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FNRF9QSFkpXHRcdCYjNDM7PSBhbWQub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19BTUNDX1FUMjAyNV9QSFkpXHQmIzQzOz0gcXQyMDI1Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQVFVQU5USUFfUEhZKVx0JiM0Mzs9IGFxdWFudGlhL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19BUzIxWFhYX1BIWSlcdCYjNDM7PSBhczIxeHh4Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS00MC1pZmRlZiBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0MTogIG9iai0kKENPTkZJR19BWDg4Nzk2Ql9QSFkpXHQmIzQzOz0gYXg4ODc5NmJfcnVzdC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNDItZWxzZVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQzOiAgb2JqLSQoQ09ORklHX0FYODg3OTZCX1BIWSlcdCYjNDM7PSBheDg4Nzk2Yi5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNDQtZW5kaWZcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQkNNNTQxNDBfUEhZKVx0JiM0Mzs9IGJjbTU0MTQwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfQkNNNjNYWF9QSFkpXHQmIzQzOz0gYmNtNjN4eC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDc6b2JqLSQoQ09ORklHX0JDTTdYWFhfUEhZKVx0JiM0Mzs9IGJjbTd4eHgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19CQ004NDg4MV9QSFkpXHQmIzQzOz0gYmNtODQ4ODEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19CQ004N1hYX1BIWSlcdCYjNDM7PSBiY204N3h4Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfQkNNX0NZR05VU19QSFkpXHQmIzQzOz0gYmNtLWN5Z251cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZTElCKVx0JiM0Mzs9IGJjbS1waHktbGliLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfQkNNX05FVF9QSFlQVFApXHQmIzQzOz0gYmNtLXBoeS1wdHAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19CUk9BRENPTV9QSFkpXHQmIzQzOz0gYnJvYWRjb20ub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19DSUNBREFfUEhZKVx0JiM0Mzs9IGNpY2FkYS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX0NPUlRJTkFfUEhZKVx0JiM0Mzs9IGNvcnRpbmEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU2Om9iai0kKENPTkZJR19EQVA4MjExUl9QSFkpXHQmIzQzOz0gZGFwODIxMXIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU3Om9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcdCYjNDM7PSBkYXZpY29tLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQmIzQzOz0gZHA4MzY0MC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVx0JiM0Mzs9IGRwODM4MjIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcdCYjNDM7PSBkcDgzODQ4Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfRFA4Mzg2N19QSFkpXHQmIzQzOz0gZHA4Mzg2Ny5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjI6b2JqLSQoQ09ORklHX0RQODM4NjlfUEhZKVx0JiM0Mzs9IGRwODM4Njkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19EUDgzVEM4MTFfUEhZKVx0JiM0Mzs9IGRwODN0YzgxMS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0RQODNURDUxMF9QSFkpXHQmIzQzOz0gZHA4M3RkNTEwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2NTpvYmotJChDT05GSUdfRFA4M1RHNzIwX1BIWSlcdCYjNDM7PSBkcDgzdGc3MjAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19GSVhFRF9QSFkpXHRcdCYjNDM7PSBmaXhlZF9waHkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY3Om9iai0kKENPTkZJR19JQ1BMVVNfUEhZKVx0JiM0Mzs9IGljcGx1cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Njg6b2JqLSQoQ09ORklHX0lOVEVMX1hXQVlfUEhZKVx0JiM0Mzs9IGludGVsLXh3YXkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY5Om9iai0kKENPTkZJR19MU0lfRVQxMDExQ19QSFkpXHQmIzQzOz0gZXQxMDExYy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzA6b2JqLSQoQ09ORklHX0xYVF9QSFkpXHRcdCYjNDM7PSBseHQub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjcxOm9iai0kKENPTkZJR19NQVJWRUxMXzEwR19QSFkpXHQmIzQzOz0gbWFydmVsbDEwZy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzI6b2JqLSQoQ09ORklHX01BUlZFTExfUEhZKVx0JiM0Mzs9IG1hcnZlbGwub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjczOm9iai0kKENPTkZJR19NQVJWRUxMXzg4UTJYWFhfUEhZKVx0JiM0Mzs9IG1hcnZlbGwtODhxMnh4eC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzQ6b2JqLSQoQ09ORklHX01BUlZFTExfODhYMjIyMl9QSFkpXHQmIzQzOz0gbWFydmVsbC04OHgyMjIyLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3NTpvYmotJChDT05GSUdfTUFYTElORUFSX0dQSFkpXHQmIzQzOz0gbXhsLWdweS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzY6b2JqLSQoQ09ORklHX01BWExJTkVBUl84NjExMF9QSFkpXHQmIzQzOz0gbXhsLTg2MTEwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS03Ny1vYmoteVx0XHRcdFx0JiM0Mzs9IG1lZGlhdGVrL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjc4Om9iai0kKENPTkZJR19NRVNPTl9HWExfUEhZKVx0JiM0Mzs9IG1lc29uLWd4bC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX01JQ1JFTF9QSFkpXHQmIzQzOz0gbWljcmVsLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MDpvYmotJChDT05GSUdfTUlDUk9DSElQX1BIWSlcdCYjNDM7PSBtaWNyb2NoaXAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19NSUNST0NISVBfUEhZX1JEU19QVFApXHQmIzQzOz0gbWljcm9jaGlwX3Jkc19wdHAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFfUEhZKVx0JiM0Mzs9IG1pY3JvY2hpcF90MS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMVNfUEhZKSAmIzQzOz0gbWljcm9jaGlwX3Qxcy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODQ6b2JqLSQoQ09ORklHX01JQ1JPU0VNSV9QSFkpXHQmIzQzOz0gbXNjYy9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4NTpvYmotJChDT05GSUdfTU9UT1JDT01NX1BIWSlcdCYjNDM7PSBtb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg2Om9iai0kKENPTkZJR19OQVRJT05BTF9QSFkpXHQmIzQzOz0gbmF0aW9uYWwub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg3Om9iai0kKENPTkZJR19OQ04yNjAwMF9QSFkpXHQmIzQzOz0gbmNuMjYwMDAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg4LW54cC1jNDUtdGphLW9ianNcdFx0JiM0Mzs9IG54cC1jNDUtdGphMTF4eC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTkxPWVuZGlmXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTI6b2JqLSQoQ09ORklHX05YUF9DNDVfVEpBMTFYWF9QSFkpXHQmIzQzOz0gbnhwLWM0NS10amEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjkzOm9iai0kKENPTkZJR19OWFBfQ0JUWF9QSFkpXHQmIzQzOz0gbnhwLWNidHgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk0Om9iai0kKENPTkZJR19OWFBfVEpBMTFYWF9QSFkpXHQmIzQzOz0gbnhwLXRqYTExeHgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk1LW9iai15XHRcdFx0XHQmIzQzOz0gcWNvbS9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5NjpvYmotJChDT05GSUdfUVNFTUlfUEhZKVx0XHQmIzQzOz0gcXNlbWkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk3Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcdCYjNDM7PSByZWFsdGVrL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcdCYjNDM7PSB1UEQ2MDYyMC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTk6b2JqLSQoQ09ORklHX1JPQ0tDSElQX1BIWSlcdCYjNDM7PSByb2NrY2hpcC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTAwOm9iai0kKENPTkZJR19TTVNDX1BIWSlcdFx0JiM0Mzs9IHNtc2Mub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTEwMS1vYmotJChDT05GSUdfU1RFMTBYUClcdFx0JiM0Mzs9IHN0ZTEwWHAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjEwMjpvYmotJChDT05GSUdfVEVSQU5FVElDU19QSFkpXHQmIzQzOz0gdGVyYW5ldGljcy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTAzOm9iai0kKENPTkZJR19WSVRFU1NFX1BIWSlcdCYjNDM7PSB2aXRlc3NlLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xMDQtb2JqLSQoQ09ORklHX1hJTElOWF9HTUlJMlJHTUlJKSAmIzQzOz0geGlsaW54X2dtaWkycmdtaWkub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9NYWtlZmlsZT01PWVuZGlmXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQVFVQU5USUFfUEhZKVx0JiM0Mzs9IGFxdWFudGlhLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTUVESUFURUtfMlA1R0VfUEhZKVx0JiM0Mzs9IG10ay0ycDVnZS5vXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTUVESUFURUtfRkVfU09DX1BIWSlcdCYjNDM7PSBtdGstZmUtc29jLm9cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NRURJQVRFS19HRV9QSFkpXHRcdCYjNDM7PSBtdGstZ2Uub1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01FRElBVEVLX0dFX1NPQ19QSFkpXHQmIzQzOz0gbXRrLWdlLXNvYy5vXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVRLX05FVF9QSFlMSUIpXHRcdCYjNDM7PSBtdGstcGh5LWxpYi5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01JQ1JPU0VNSV9QSFkpIDo9IG1zY2Mub1xuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGUtNi1tc2NjLW9ianMgOj0gbXNjY19tYWluLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1FDT01fTkVUX1BIWUxJQilcdCYjNDM7PSBxY29tLXBoeS1saWIub1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQVQ4MDNYX1BIWSlcdCYjNDM7PSBhdDgwM3gub1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGU6NDpvYmotJChDT05GSUdfUUNBODNYWF9QSFkpXHQmIzQzOz0gcWNhODN4eC5vXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19RQ0E4MDhYX1BIWSlcdCYjNDM7PSBxY2E4MDh4Lm9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1FDQTgwN1hfUEhZKVx0JiM0Mzs9IHFjYTgwN3gub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlPTM9cmVhbHRlay0kKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgJiM0Mzs9IHJlYWx0ZWtfaHdtb24ub1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfUkVBTFRFS19QSFkpXHQmIzQzOz0gcmVhbHRlay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE3MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgUEhZIENvbm5lY3Rpdml0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgUEhZIGFuZCBwaHlsaW5rIHNpdHVhdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgYHBoeV9kZXZpY2UuY2AgZ2V0cyBjb21waWxlZCBpbnRvIGBsaWJwaHkub2AgaWYgYENPTkZJR19QSFlMSUJgIGlzIGVuYWJsZWQsIGFuZCBgcGh5bGluay5jYCBjb21waWxlcyBpbnRvIGBwaHlsaW5rLm9gIGlmIGBDT05GSUdfUEhZTElOS2AgaXMgZW5hYmxlZC4gVGhhdCBnaXZlcyBtZSBhIGdlbmVyYWwgaWRlYSBvZiB3aGVyZSB0aGVzZSB0d28gcGllY2VzIGZpdCBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGFjdHVhbGx5ICp1c2VkKiBhY3Jvc3MgdGhlIGtlcm5lbC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHR5cGVzIG9mIGRyaXZlcnMgZGVwZW5kIG9uIHRoZW0uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHVzdWFsIHN1c3BlY3RzOiB2aXJ0dWFsIGRyaXZlcnMsIHRob3NlIHBlc2t5IFVTQiBFdGhlcm5ldCBkb25nbGVzLCBkdW1teSBNRElPIHNldHVwcywgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXJzLCBhbmQgeW91ciBydW4tb2YtdGhlLW1pbGwgc3RhbmRhcmQgbmV0d29yayBkcml2ZXJzLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIG1hcCBvZiB0aGUgZGVwZW5kZW5jeSBsYW5kc2NhcGUgaGVyZS4KClRvIGRvIHRoYXQsIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIHdoZXJlIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfY29ubmVjdGAsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfY3JlYXRlYCBhcmUgYWN0dWFsbHkgYmVpbmcgKmNhbGxlZCouIEdyZXBwaW5nIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgcmV2ZWFsIHRoZSBjb3JlIGRyaXZlcnMgdGhhdCBhcmUgdXNpbmcgcGh5bGluayBhbmQgcGh5X2RldmljZSBhbmQgcHJvdmlkZSBhIHN0cm9uZyBiYXNpcyBmb3IgbXkgYW5hbHlzaXMuIFRoYXQgc2hvdWxkIGdldCBtZSBzdGFydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHl8cGh5X2F0dGFjaF9kaXJlY3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS1saW5rLXRvcG9sb2d5LnJzdD04NT1UaGVzZSBmdW5jdGlvbiBhcmUgYWxyZWFkeSBob29rZWQgaW50byB0aGUgcGh5bGliIHN1YnN5c3RlbSwgc28gYWxsIFBIWXMgdGhhdFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS1saW5rLXRvcG9sb2d5LnJzdDo4NjphcmUgbGlua2VkIHRvIGEgbmV0X2RldmljZSB0aHJvdWdoIDpjOmZ1bmM6YHBoeV9hdHRhY2hfZGlyZWN0YCB3aWxsIGF1dG9tYXRpY2FsbHlcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHktbGluay10b3BvbG9neS5yc3QtODctam9pbiB0aGUgbmV0ZGV2JiMzOTtzIHRvcG9sb2d5LlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTY1LSAgIEZvciB0aGUgbW9zdCBwYXJ0LCBgYGZsYWdzYGAgY2FuIGJlIHplcm87IHRoZXNlIGZsYWdzIGFyZSBwYXNzZWQgdG9cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MTY2OiAgIHRoZSBwaHlfYXR0YWNoX2RpcmVjdCgpIGluc2lkZSB0aGlzIGZ1bmN0aW9uIGNhbGwgaWYgYSBQSFkgaXMgc3BlY2lmaWVkXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTE2Ny0gICBpbiB0aGUgRFQgbm9kZSBgYG5vZGVgYC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTkzMT1zdGF0aWMgaW50IHhnYmVfcGh5X2ZpbmRfcGh5X2RldmljZShzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4MzpcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KHBkYXRhLVx1MDAzZW5ldGRldiwgcGh5ZGV2LCBwaHlkZXYtXHUwMDNlZGV2X2ZsYWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODQtXHRcdFx0XHRQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4NjpcdFx0bmV0ZGV2X2VycihwZGF0YS1cdTAwM2VuZXRkZXYsIFwmIzM0O3BoeV9hdHRhY2hfZGlyZWN0IGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4Ny1cdFx0cGh5X2RldmljZV9yZW1vdmUocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTk4Mj1zdGF0aWMgaW50IG1hY2JfcGh5bGlua19jb25uZWN0KHN0cnVjdCBtYWNiICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk5OS1cdFx0LyogYXR0YWNoIHRoZSBtYWMgdG8gdGhlIHBoeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDAwOlx0XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGJwLVx1MDAzZXBoeWxpbmssIHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwMDEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTExNTk9aW50IGhuc19uaWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBobmFlX2hhbmRsZSAqaClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMtMTE4MC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmM6MTE4MTpcdFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QobmRldiwgcGh5X2RldiwgMCwgaC1cdTAwM2VwaHlfaWYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTExODItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMyMzM9c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY29ubmVjdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjQ2LVx0XHRcdC8qIGF0dGFjaCB0aGUgbWFjIHRvIHRoZSBwaHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjQ3Olx0XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoYWRhcHRlci1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyNDgtXHRcdH0gZWxzZSBpZiAoKChhZGFwdGVyLVx1MDAzZWNzci5pZF9yZXYgXHUwMDI2IElEX1JFVl9JRF9NQVNLXykgPT1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEyOTk9c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzNDk6XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzUwLVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jPTE0MDY9c3RhdGljIGludCB0bjQwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jLTE0MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jOjE0MTE6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaywgcHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz00ODg9c3RhdGljIGludCBuZ2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjUwNTpcdGVyciA9IHBoeWxpbmtfY29ubmVjdF9waHkod3gtXHUwMDNlcGh5bGluaywgd3gtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy01MDYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjMwMDpcdFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwaHlsaW5rLCB3eC1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0zMDEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyMjU9aW50IHBoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTIzMy1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTIzNDpcdHJjID0gcGh5X2F0dGFjaF9kaXJlY3QoZGV2LCBwaHlkZXYsIHBoeWRldi1cdTAwM2VkZXZfZmxhZ3MsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMzUtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzQyPXN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NDgtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NDk6ICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzUwLSAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2Mi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTc2MzppbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2NC1cdFx0ICAgICAgdTMyIGZsYWdzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkxOC19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5MTk6RVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoX2RpcmVjdCk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTI1LSAqIFRoaXMgZGV0YWNoZXMgdGhlIHBoeSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBwaHlcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTkyNjogKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjctICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjIxPXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzQtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMzU6XHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM2LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzgtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMzk6ICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQwLSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQzLSAqIENvbm5lY3QgQHBoeSB0byB0aGUgcGh5bGluayBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgQHBsIGJ5IGNhbGxpbmdcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI0NDogKiBwaHlfYXR0YWNoX2RpcmVjdCgpLiBDb25maWd1cmUgdGhlIEBwaHkgYWNjb3JkaW5nIHRvIHRoZSBNQUMgZHJpdmVyJiMzOTtzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNDUtICogY2FwYWJpbGl0aWVzLCBzdGFydCB0aGUgUEhZTElCIHN0YXRlIG1hY2hpbmUgYW5kIGVuYWJsZSBhbnkgaW50ZXJydXB0c1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1Mi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI1MzppbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3Mi19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNzM6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgxLSAqIENvbm5lY3QgdGhlIHBoeSBzcGVjaWZpZWQgaW4gdGhlIGRldmljZSBub2RlIEBkbiB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgyOiAqIHNwZWNpZmllZCBieSBAcGwuIEFjdGlvbnMgc3BlY2lmaWVkIGluIHBoeWxpbmtfY29ubmVjdF9waHkoKSB3aWxsIGJlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODMtICogcGVyZm9ybWVkLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMwNT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzOC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMzOTpcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KHBsLVx1MDAzZW5ldGRldiwgcGh5X2RldiwgZmxhZ3MsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDAtXHRcdFx0XHRwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTcwMz1zdGF0aWMgaW50IGF4ODg3NzJfaW5pdF9waHkoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzE0Olx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwcml2LVx1MDAzZXBoeWxpbmssIHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yODU4PXN0YXRpYyBpbnQgbGFuNzh4eF9waHlfaW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDEtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI5MDI6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGRldi1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTAzLVx0aWYgKHJldCkge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjE2OT1zdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2ZpbmRfbmV4dChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgcGh5X2RldmljZSAqcG9zKTtcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE3MDppbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE3MS1cdFx0ICAgICAgdTMyIGZsYWdzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03Mjc9Ym9vbCBwaHlsaW5rX2V4cGVjdHNfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjgtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3Mjk6aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKiwgc3RydWN0IHBoeV9kZXZpY2UgKik7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzAtaW50IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKiwgc3RydWN0IGRldmljZV9ub2RlICosIHUzMiBmbGFncyk7XG4tLVxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXG4tLVxubmV0L2RzYS91c2VyLmMtMjY1MC1cbm5ldC9kc2EvdXNlci5jOjI2NTE6XHRyZXR1cm4gcGh5bGlua19jb25uZWN0X3BoeShkcC1cdTAwM2VwbCwgdXNlcl9kZXYtXHUwMDNlcGh5ZGV2KTtcbm5ldC9kc2EvdXNlci5jLTI2NTItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTU5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5ldHdvcmsgRHJpdmVyIERlZXAgRGl2ZSoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSBzZWVpbmc6IGl0IGxvb2tzIGxpa2UgdGhlc2UgVVNCIG5ldHdvcmsgZHJpdmVycywgbGlrZSBgbGFuNzh4eC5jYCBhbmQgYGFzaXhfZGV2aWNlcy5jYCDigJMgdGhlIG9uZXMgdGhhdCB1c2UgY2hpcHMgbGlrZSB0aGUgQVg4ODc3MiDigJMgdGhleSYjMzk7cmUgbGV2ZXJhZ2luZyBgcGh5bGlua2AgYW5kIGBwaHlsaWJgLiBJbnRlcmVzdGluZy4gQW5kIG9mIGNvdXJzZSwgdGhlcmUmIzM5O3MgYWxsIHRoaXMgZW11bGF0aW9uIHN0dWZmIHdpdGggVVNCOiBVU0IgUmF3LCBzeXprYWxsZXIsIFVTQiBnYWRnZXQsIHZoY2ksIGFuZCB0aGUgd29ybGQgb2YgdXNiLWZ1enppbmcgaXMgYWx3YXlzIG91dCB0aGVyZS4gVGhlbiB3ZSBoYXZlIERTQSwgc3RhbmRhcmQgZXRoZXJuZXQgZHJpdmVycyBsaWtlIHRoZSBjYWRlbmNlIG1hY2Igb3IgdGhlIGUxMDAwIGZhbWlseSwgc3RtbWFjLCBldGMuLCBhbmQgdGhlIE1ESU8vUEhZIHN1YnN5c3RlbXMuIFJpZ2h0LCBnb3QgaXQuCgpOb3csIEkgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscy4gSSBzaG91bGQgZXhhbWluZSB0aGUgY29kZSB0aGF0JiMzOTtzIGJlZW4gcmVjZW50bHkgbW9kaWZpZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgcGh5X2RldmljZS5jYCDigJMgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGF0IDE3MzAtMTk4MCBsaW5lIHJhbmdlIOKAkyBhbmQgdGhlbiBkaXZlIGludG8gYHBoeWxpbmsuY2AsIGFyb3VuZCBsaW5lcyAyMDgwLTIzODAuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGVzZSBQSFkgc3Vic3lzdGVtcyB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTczMDpcdH1cbjE3MzE6XHRcbjE3MzI6XHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuMTczMzpcdHtcbjE3MzQ6XHRcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuMTczNTpcdH1cbjE3MzY6XHRcbjE3Mzc6XHQvKiBVbmRvIHRoZSBQSFlfUE9MTCB0aGF0IHBoeV9wcm9iZSgpIHNldHMgd2hlbiBhIGRyaXZlciB3aXRob3V0XG4xNzM4Olx0ICogaW50ZXJydXB0IGNhbGxiYWNrcyBiaW5kcy4gVGhlIGJpbmQgY3ljbGUgbmV2ZXIgd3JpdGVzIGJ1cy1cdTAwM2VpcnFbXSxcbjE3Mzk6XHQgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFlcbjE3NDA6XHQgKiBjYXJyaWVzIGRpZCBub3QgY29tZSBmcm9tIHRoZSBiaW5kIGFuZCBtdXN0IHN0YW5kLlxuMTc0MTpcdCAqL1xuMTc0MjpcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE3NDM6XHR7XG4xNzQ0Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbjE3NDU6XHRcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4xNzQ2Olx0fVxuMTc0NzpcdFxuMTc0ODpcdC8qKlxuMTc0OTpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTA6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTE6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzUyOlx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1MzpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU0Olx0ICpcbjE3NTU6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTY6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc1NzpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzU4Olx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc1OTpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYwOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2MTpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2MjpcdCAqL1xuMTc2MzpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuMTc2NDpcdFx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4xNzY1Olx0e1xuMTc2NjpcdFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbjE3Njc6XHRcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4xNzY4Olx0XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbjE3Njk6XHRcdGludCBlcnI7XG4xNzcwOlx0XG4xNzcxOlx0XHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXG4xNzcyOlx0XHQgKiB3aWxsIGhhdmUgYnVzLVx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcbjE3NzM6XHRcdCAqIG91ciBvd24gbW9kdWxlLVx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cbjE3NzQ6XHRcdCAqIHVubG9hZCBsYXRlciBvbi5cbjE3NzU6XHRcdCAqL1xuMTc3NjpcdFx0aWYgKGRldilcbjE3Nzc6XHRcdFx0bmRldl9vd25lciA9IGRldi1cdTAwM2VkZXYucGFyZW50LVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcjtcbjE3Nzg6XHRcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lciBcdTAwMjZcdTAwMjYgIXRyeV9tb2R1bGVfZ2V0KGJ1cy1cdTAwM2Vvd25lcikpIHtcbjE3Nzk6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O2ZhaWxlZCB0byBnZXQgdGhlIGJ1cyBtb2R1bGVcXG5cJiMzNDspO1xuMTc4MDpcdFx0XHRyZXR1cm4gLUVJTztcbjE3ODE6XHRcdH1cbjE3ODI6XHRcbjE3ODM6XHRcdGdldF9kZXZpY2UoZCk7XG4xNzg0Olx0XG4xNzg1Olx0XHQvKiBBc3N1bWUgdGhhdCBpZiB0aGVyZSBpcyBubyBkcml2ZXIsIHRoYXQgaXQgZG9lc24mIzM5O3RcbjE3ODY6XHRcdCAqIGV4aXN0LCBhbmQgd2Ugc2hvdWxkIHVzZSB0aGUgZ2VucGh5IGRyaXZlci5cbjE3ODc6XHRcdCAqL1xuMTc4ODpcdFx0aWYgKCFkLVx1MDAzZWRyaXZlcikge1xuMTc4OTpcdFx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjE3OTA6XHRcdFx0XHRkLVx1MDAzZWRyaXZlciA9IFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xuMTc5MTpcdFx0XHRlbHNlXG4xNzkyOlx0XHRcdFx0ZC1cdTAwM2Vkcml2ZXIgPSBcdTAwMjZnZW5waHlfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xuMTc5MzpcdFxuMTc5NDpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDE7XG4xNzk1Olx0XHR9XG4xNzk2Olx0XG4xNzk3Olx0XHRpZiAoIXRyeV9tb2R1bGVfZ2V0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKSkge1xuMTc5ODpcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCB0aGUgZGV2aWNlIGRyaXZlciBtb2R1bGVcXG5cJiMzNDspO1xuMTc5OTpcdFx0XHRlcnIgPSAtRUlPO1xuMTgwMDpcdFx0XHRnb3RvIGVycm9yX3B1dF9kZXZpY2U7XG4xODAxOlx0XHR9XG4xODAyOlx0XG4xODAzOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbjE4MDQ6XHRcdFx0ZXJyID0gZC1cdTAwM2Vkcml2ZXItXHUwMDNlcHJvYmUoZCk7XG4xODA1Olx0XHRcdGlmIChlcnIgXHUwMDNlPSAwKVxuMTgwNjpcdFx0XHRcdGVyciA9IGRldmljZV9iaW5kX2RyaXZlcihkKTtcbjE4MDc6XHRcbjE4MDg6XHRcdFx0aWYgKGVycilcbjE4MDk6XHRcdFx0XHRnb3RvIGVycm9yX21vZHVsZV9wdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3ODIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkFuYWx5emluZyBgcGh5X2F0dGFjaF9kaXJlY3RgIGFuZCBgcGh5X2RldGFjaGAqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgaXMgdG8gdW5kZXJzdGFuZCB0aGUgb3BlcmF0aW9uIG9mIHRoZXNlIHR3byBzcGVjaWZpYyBmdW5jdGlvbnM6IGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYC4gSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgY29kZWJhc2UsIG9yIGF0IGxlYXN0IHdpdGggdGhlIGdlbmVyYWwgYXJjaGl0ZWN0dXJlLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG51YW5jZXMgb2YgdGhlaXIgaW50ZXJhY3Rpb24uIEkgd2lsbCBub3cgY2FyZWZ1bGx5IHByb2NlZWQgdG8gZGlzc2VjdCB0aGUgc291cmNlIGNvZGUgYW5kIGRpc2Nlcm4gdGhlaXIgZnVuY3Rpb25hbGl0eS4gVGhpcyB3aWxsIGludm9sdmUgdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiBhdHRhY2hpbmcgYW5kIGRldGFjaGluZyBhIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRldmljZS4gSSBuZWVkIHRvIG9ic2VydmUgdGhlaXIgZW50cnkgcG9pbnRzIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSBjYWxscyBhcmUgbWFkZS4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRoZXkgbWFuaXB1bGF0ZSBhbmQgd2hhdCByZXNvdXJjZXMgdGhleSBhbGxvY2F0ZSBvciBkZWFsbG9jYXRlLiBJJiMzOTttIGV4cGVjdGluZyBzb21lIHN0YW5kYXJkIFBIWSBpbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gc3RlcHMsIGFuZCBJIGFtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBhbnkgcG90ZW50aWFsIHJlc291cmNlIGxvY2tpbmcgb3IgY29uY3VycmVuY3kgY29uc2lkZXJhdGlvbnMuIEluIHNob3J0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIGdyaXR0eSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDk1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4OTA6XHRcdHBoeV9yZXN1bWUocGh5ZGV2KTtcbjE4OTE6XHRcbjE4OTI6XHRcdC8qKlxuMTg5MzpcdFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XG4xODk0Olx0XHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXG4xODk1Olx0XHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxuMTg5NjpcdFx0ICovXG4xODk3Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50IFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZGV2LnBhcmVudCAhPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50KVxuMTg5ODpcdFx0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXHUwMDNlZGV2LnBhcmVudCwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuMTg5OTpcdFx0XHRcdFx0XHRcdCAgRExfRkxBR19QTV9SVU5USU1FIHwgRExfRkxBR19TVEFURUxFU1MpO1xuMTkwMDpcdFxuMTkwMTpcdFx0cmV0dXJuIGVycjtcbjE5MDI6XHRcbjE5MDM6XHRlcnJvcjpcbjE5MDQ6XHRcdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xuMTkwNTpcdFx0cGh5X2RldGFjaChwaHlkZXYpO1xuMTkwNjpcdFx0cmV0dXJuIGVycjtcbjE5MDc6XHRcbjE5MDg6XHRlcnJvcl9tb2R1bGVfcHV0OlxuMTkwOTpcdFx0bW9kdWxlX3B1dChkLVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcik7XG4xOTEwOlx0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4xOTExOlx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTEyOlx0XHRkLVx1MDAzZWRyaXZlciA9IE5VTEw7XG4xOTEzOlx0ZXJyb3JfcHV0X2RldmljZTpcbjE5MTQ6XHRcdHB1dF9kZXZpY2UoZCk7XG4xOTE1Olx0XHRpZiAobmRldl9vd25lciAhPSBidXMtXHUwMDNlb3duZXIpXG4xOTE2Olx0XHRcdG1vZHVsZV9wdXQoYnVzLVx1MDAzZW93bmVyKTtcbjE5MTc6XHRcdHJldHVybiBlcnI7XG4xOTE4Olx0fVxuMTkxOTpcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xuMTkyMDpcdFxuMTkyMTpcdC8qKlxuMTkyMjpcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4xOTIzOlx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4xOTI0Olx0ICpcbjE5MjU6XHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4xOTI2Olx0ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuMTkyNzpcdCAqL1xuMTkyODpcdHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTkyOTpcdHtcbjE5MzA6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2O1xuMTkzMTpcdFx0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XG4xOTMyOlx0XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuMTkzMzpcdFxuMTkzNDpcdFx0aWYgKHBoeWRldi1cdTAwM2VkZXZsaW5rKSB7XG4xOTM1Olx0XHRcdGRldmljZV9saW5rX2RlbChwaHlkZXYtXHUwMDNlZGV2bGluayk7XG4xOTM2Olx0XHRcdHBoeWRldi1cdTAwM2VkZXZsaW5rID0gTlVMTDtcbjE5Mzc6XHRcdH1cbjE5Mzg6XHRcbjE5Mzk6XHRcdGlmIChwaHlkZXYtXHUwMDNlc3lzZnNfbGlua3MpIHtcbjE5NDA6XHRcdFx0aWYgKGRldilcbjE5NDE6XHRcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwmIzM0O3BoeWRldlwmIzM0Oyk7XG4xOTQyOlx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLCBcJiMzNDthdHRhY2hlZF9kZXZcJiMzNDspO1xuMTk0MzpcdFx0fVxuMTk0NDpcdFxuMTk0NTpcdFx0aWYgKCFwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2KVxuMTk0NjpcdFx0XHRzeXNmc19yZW1vdmVfZmlsZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaixcbjE5NDc6XHRcdFx0XHRcdCAgXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XG4xOTQ4Olx0XG4xOTQ5Olx0XHRwaHlfc3VzcGVuZChwaHlkZXYpO1xuMTk1MDpcdFx0aWYgKGRldikge1xuMTk1MTpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbjE5NTI6XHRcbjE5NTM6XHRcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4xOTU0Olx0XHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcbjE5NTU6XHRcdFx0ICovXG4xOTU2Olx0XHRcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdik7XG4xOTU3Olx0XHRcdC8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi9cbjE5NTg6XHRcdFx0aWYgKGh3cHJvdiBcdTAwMjZcdTAwMjYgaHdwcm92LVx1MDAzZXBoeWRldiA9PSBwaHlkZXYpIHtcbjE5NTk6XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZWh3cHJvdiwgTlVMTCk7XG4xOTYwOlx0XHRcdFx0a2ZyZWVfcmN1KGh3cHJvdiwgcmN1X2hlYWQpO1xuMTk2MTpcdFx0XHR9XG4xOTYyOlx0XG4xOTYzOlx0XHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbjE5NjQ6XHRcdFx0cGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2RldiA9IE5VTEw7XG4xOTY1Olx0XHRcdHBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7XG4xOTY2Olx0XHR9XG4xOTY3Olx0XG4xOTY4Olx0XHRwaHlkZXYtXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gTlVMTDtcbjE5Njk6XHRcdHBoeWRldi1cdTAwM2VwaHlsaW5rID0gTlVMTDtcbjE5NzA6XHRcbjE5NzE6XHRcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxuMTk3MjpcdFx0XHRtb2R1bGVfcHV0KHBoeWRldi1cdTAwM2VtZGlvLmRldi5kcml2ZXItXHUwMDNlb3duZXIpO1xuMTk3MzpcdFxuMTk3NDpcdFx0LyogSWYgdGhlIGRldmljZSBoYWQgbm8gc3BlY2lmaWMgZHJpdmVyIGJlZm9yZSAoaS5lLiAtIGl0XG4xOTc1Olx0XHQgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2VcbjE5NzY6XHRcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUmIzM5O3MgYSBjaGFuY2UgYVxuMTk3NzpcdFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4xOTc4Olx0XHQgKi9cbjE5Nzk6XHRcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuMTk4MDpcdFx0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4xOTgxOlx0XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuMTk4MjpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTgzOlx0XHR9XG4xOTg0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDk0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgRGVlcCBpbnRvIFBoeWxpbmsuYyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUgbmV0d29yayBQSFkgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcGh5bGluay5jYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGxpbmVzIDIwODAgdG8gMjM4MC4gVGhhdCByYW5nZSB1c3VhbGx5IGVuY29tcGFzc2VzIHNvbWUgY29yZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgcGh5bGluayBhcmNoaXRlY3R1cmUsIHBlcmhhcHMgcmVsYXRlZCB0byBsaW5rIG1hbmFnZW1lbnQsIGRldmljZSBpbnRlcmFjdGlvbiwgb3IgY29uZmlndXJhdGlvbiBvZiB0aGUgUEhZIGl0c2VsZi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5LCBidXQgSSBzdXNwZWN0IHRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgY3JpdGljYWwgcGllY2VzIG9mIGNvZGUgSSBhbSBpbnZlc3RpZ2F0aW5nLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBudWFuY2VzIHRvIGZpbmQgbXkgaXNzdWUuIEkmIzM5O2xsIGFwcHJvYWNoIHRoaXMgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJiMzOTtsbCBuZWVkIHRvIHBhcnNlIHRoZSBpbnRlcmFjdGlvbnMgdG8gdHJ1bHkgaWRlbnRpZnkgd2hhdCBpcyBvY2N1cnJpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjE5MDpcdFx0XHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cdTAwM2VzdXBwb3J0ZWQsXG4yMTkxOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cdTAwM2VhZHZlcnRpc2luZyk7XG4yMTkyOlx0XG4yMTkzOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19tYW5hZ2VkX3BtKVxuMjE5NDpcdFx0XHRwaHktXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuMjE5NTpcdFxuMjE5NjpcdFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xuMjE5NzpcdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUocGh5KSBcdTAwM2UgMDtcbjIxOTg6XHRcbjIxOTk6XHRcdGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjIwMDpcdFx0XHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0JiMzOTtzXG4yMjAxOlx0XHRcdCAqIHJlY2VpdmUgY2xvY2suXG4yMjAyOlx0XHRcdCAqL1xuMjIwMzpcdFx0XHRyZXQgPSBwaHlfZWVlX3J4X2Nsb2NrX3N0b3AocGh5LFxuMjIwNDpcdFx0XHRcdFx0XHQgICAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWVlZV9yeF9jbGtfc3RvcF9lbmFibGUpO1xuMjIwNTpcdFx0XHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxuMjIwNjpcdFx0XHRcdHJldCA9IDA7XG4yMjA3Olx0XHR9XG4yMjA4Olx0XG4yMjA5Olx0XHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcbjIyMTA6XHRcdFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XG4yMjExOlx0XG4yMjEyOlx0XHRpZiAocmV0KSB7XG4yMjEzOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjIyMTQ6XHRcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4yMjE1Olx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNjpcdFx0fVxuMjIxNzpcdFxuMjIxODpcdFx0cmV0dXJuIHJldDtcbjIyMTk6XHR9XG4yMjIwOlx0XG4yMjIxOlx0c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuMjIyMjpcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4yMjIzOlx0e1xuMjIyNDpcdFx0dTMyIGZsYWdzID0gMDtcbjIyMjU6XHRcbjIyMjY6XHRcdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSlcbjIyMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yMjI4Olx0XG4yMjI5Olx0XHRpZiAocGwtXHUwMDNlcGh5ZGV2KVxuMjIzMDpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMjIzMTpcdFxuMjIzMjpcdFx0aWYgKHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfcmVxdWlyZXNfcnhjKVxuMjIzMzpcdFx0XHRmbGFncyB8PSBQSFlfRl9SWENfQUxXQVlTX09OO1xuMjIzNDpcdFxuMjIzNTpcdFx0cmV0dXJuIHBoeV9hdHRhY2hfZGlyZWN0KHBsLVx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcbjIyMzY6XHR9XG4yMjM3Olx0XG4yMjM4Olx0LyoqXG4yMjM5Olx0ICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuMjI0MDpcdCAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG4yMjQxOlx0ICogQHBoeTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXG4yMjQyOlx0ICpcbjIyNDM6XHQgKiBDb25uZWN0IEBwaHkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2Ugc3BlY2lmaWVkIGJ5IEBwbCBieSBjYWxsaW5nXG4yMjQ0Olx0ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlciYjMzk7c1xuMjI0NTpcdCAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcbjIyNDY6XHQgKiB0aGF0IHRoZSBQSFkgc3VwcG9ydHMuXG4yMjQ3Olx0ICpcbjIyNDg6XHQgKiBUaGlzIHVwZGF0ZXMgdGhlIHBoeWxpbmsmIzM5O3MgZXRodG9vbCBzdXBwb3J0ZWQgYW5kIGFkdmVydGlzaW5nIGxpbmsgbW9kZVxuMjI0OTpcdCAqIG1hc2tzLlxuMjI1MDpcdCAqXG4yMjUxOlx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJuby5cbjIyNTI6XHQgKi9cbjIyNTM6XHRpbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4yMjU0Olx0e1xuMjI1NTpcdFx0aW50IHJldDtcbjIyNTY6XHRcbjIyNTc6XHRcdC8qIFVzZSBQSFkgZGV2aWNlL2RyaXZlciBpbnRlcmZhY2UgKi9cbjIyNTg6XHRcdGlmIChwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfTkEpIHtcbjIyNTk6XHRcdFx0cGwtXHUwMDNlbGlua19pbnRlcmZhY2UgPSBwaHktXHUwMDNlaW50ZXJmYWNlO1xuMjI2MDpcdFx0XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UgPSBwbC1cdTAwM2VsaW5rX2ludGVyZmFjZTtcbjIyNjE6XHRcdH1cbjIyNjI6XHRcbjIyNjM6XHRcdHJldCA9IHBoeWxpbmtfYXR0YWNoX3BoeShwbCwgcGh5LCBwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSk7XG4yMjY0Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMjI2NTpcdFx0XHRyZXR1cm4gcmV0O1xuMjI2NjpcdFxuMjI2NzpcdFx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5LCBwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpO1xuMjI2ODpcdFx0aWYgKHJldClcbjIyNjk6XHRcdFx0cGh5X2RldGFjaChwaHkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTk0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgUEhZIExpbmsgQnJpbmd1cCBQcm9jZXNzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBwbC0mZ3Q7cGh5ZGV2YCB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCB3aXRoaW4gdGhlIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCBmdW5jdGlvbi4gSSByZWNhbGwgdGhhdCBpdCYjMzk7cyBiZWVuIHNldCBhdCBzb21lIHBvaW50LCBzbyBJJiMzOTtsbCBzdGFydCBieSByZXZpc2l0aW5nIHRoZSBmdW5jdGlvbiBpdHNlbGYuIFRpbWUgdG8gbWV0aWN1bG91c2x5IHRyYWNlIGJhY2sgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBwaW5wb2ludCB0aGUgZXhhY3QgbGluZSBvciBsaW5lcyB3aGVyZSBgcGwtJmd0O3BoeWRldmAgaXMgYXNzaWduZWQgaXRzIHZhbHVlIHdpdGhpbiBgcGh5bGlua19icmluZ3VwX3BoeWAuIEkmIzM5O2xsIGNhcmVmdWxseSByZS1leGFtaW5lIHRoZSBjb2RlLCBsaW5lIGJ5IGxpbmUsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVhcmxpZXIgcGFydHMgb2YgdGhlIGZ1bmN0aW9uIHRvIHNlZSB3aGVyZSB0aGlzIGNydWNpYWwgYXNzaWdubWVudCBoYXBwZW5zLiBUaGlzIHJlcXVpcmVzIGEgZm9jdXNlZCByZWFkIG9mIGBwaHlsaW5rX2JyaW5ndXBfcGh5YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTMwOlx0XHRwaHktXHUwMDNlcGh5bGluayA9IHBsO1xuMjEzMTpcdFx0cGh5LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IHBoeWxpbmtfcGh5X2NoYW5nZTtcbjIxMzI6XHRcbjIxMzM6XHRcdGlycV9zdHIgPSBwaHlfYXR0YWNoZWRfaW5mb19pcnEocGh5KTtcbjIxMzQ6XHRcdHBoeWxpbmtfaW5mbyhwbCxcbjIxMzU6XHRcdFx0ICAgICBcJiMzNDtQSFkgWyVzXSBkcml2ZXIgWyVzXSAoaXJxPSVzKVxcblwmIzM0OyxcbjIxMzY6XHRcdFx0ICAgICBkZXZfbmFtZShcdTAwMjZwaHktXHUwMDNlbWRpby5kZXYpLCBwaHktXHUwMDNlZHJ2LVx1MDAzZW5hbWUsIGlycV9zdHIpO1xuMjEzNzpcdFx0a2ZyZWUoaXJxX3N0cik7XG4yMTM4Olx0XG4yMTM5Olx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMTQwOlx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbjIxNDE6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuMjE0MjpcdFx0cGwtXHUwMDNlcGh5ZGV2ID0gcGh5O1xuMjE0MzpcdFx0cGwtXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZSA9IGludGVyZmFjZTtcbjIxNDQ6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5wYXVzZSA9IE1MT19QQVVTRV9OT05FO1xuMjE0NTpcdFx0cGwtXHUwMDNlcGh5X3N0YXRlLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcbjIxNDY6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbjIxNDc6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5yYXRlX21hdGNoaW5nID0gUkFURV9NQVRDSF9OT05FO1xuMjE0ODpcdFx0bGlua21vZGVfY29weShwbC1cdTAwM2VzdXBwb3J0ZWQsIHN1cHBvcnRlZCk7XG4yMTQ5Olx0XHRsaW5rbW9kZV9jb3B5KHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBjb25maWcuYWR2ZXJ0aXNpbmcpO1xuMjE1MDpcdFxuMjE1MTpcdFx0LyogUmVzdHJpY3QgdGhlIHBoeSBhZHZlcnRpc2VtZW50IGFjY29yZGluZyB0byB0aGUgTUFDIHN1cHBvcnQuICovXG4yMTUyOlx0XHRsaW5rbW9kZV9jb3B5KHBoeS1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcbjIxNTM6XHRcbjIxNTQ6XHRcdC8qIElmIHRoZSBNQUMgc3VwcG9ydHMgcGh5bGluayBtYW5hZ2VkIEVFRSwgcmVzdHJpY3QgdGhlIEVFRVxuMjE1NTpcdFx0ICogYWR2ZXJ0aXNlbWVudCBhY2NvcmRpbmcgdG8gdGhlIE1BQyYjMzk7cyBMUEkgY2FwYWJpbGl0aWVzLlxuMjE1NjpcdFx0ICovXG4yMTU3Olx0XHRpZiAocGwtXHUwMDNlbWFjX3N1cHBvcnRzX2VlZSkge1xuMjE1ODpcdFx0XHQvKiBJZiBFRUUgaXMgZW5hYmxlZCwgdGhlbiB3ZSBuZWVkIHRvIGNhbGwgcGh5X3N1cHBvcnRfZWVlKClcbjIxNTk6XHRcdFx0ICogdG8gZW5zdXJlIHRoYXQgdGhlIGFkdmVydGlzaW5nIG1hc2sgaXMgYXBwcm9wcmlhdGVseSBzZXQuXG4yMTYwOlx0XHRcdCAqIFRoaXMgYWxzbyBlbmFibGVzIEVFRSBhdCB0aGUgUEhZLlxuMjE2MTpcdFx0XHQgKi9cbjIxNjI6XHRcdFx0aWYgKHBsLVx1MDAzZWVlZV9jZmcuZWVlX2VuYWJsZWQpXG4yMTYzOlx0XHRcdFx0cGh5X3N1cHBvcnRfZWVlKHBoeSk7XG4yMTY0Olx0XG4yMTY1Olx0XHRcdHBoeS1cdTAwM2VlZWVfY2ZnLnR4X2xwaV9lbmFibGVkID0gcGwtXHUwMDNlZWVlX2NmZy50eF9scGlfZW5hYmxlZDtcbjIxNjY6XHRcdFx0cGh5LVx1MDAzZWVlZV9jZmcudHhfbHBpX3RpbWVyID0gcGwtXHUwMDNlZWVlX2NmZy50eF9scGlfdGltZXI7XG4yMTY3Olx0XG4yMTY4Olx0XHRcdC8qIENvbnZlcnQgdGhlIE1BQyYjMzk7cyBMUEkgY2FwYWJpbGl0aWVzIHRvIGxpbmttb2RlcyAqL1xuMjE2OTpcdFx0XHRsaW5rbW9kZV96ZXJvKHBsLVx1MDAzZXN1cHBvcnRlZF9scGkpO1xuMjE3MDpcdFx0XHRwaHlsaW5rX2NhcHNfdG9fbGlua21vZGVzKHBsLVx1MDAzZXN1cHBvcnRlZF9scGksXG4yMTcxOlx0XHRcdFx0XHRcdCAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMpO1xuMjE3MjpcdFxuMjE3MzpcdFx0XHQvKiBSZXN0cmljdCB0aGUgUEhZcyBFRUUgc3VwcG9ydC9hZHZlcnRpc2VtZW50IHRvIHRoZSBtb2Rlc1xuMjE3NDpcdFx0XHQgKiB0aGF0IHRoZSBNQUMgc3VwcG9ydHMuXG4yMTc1Olx0XHRcdCAqL1xuMjE3NjpcdFx0XHRsaW5rbW9kZV9hbmQocGh5LVx1MDAzZWFkdmVydGlzaW5nX2VlZSwgcGh5LVx1MDAzZWFkdmVydGlzaW5nX2VlZSxcbjIxNzc6XHRcdFx0XHQgICAgIHBsLVx1MDAzZXN1cHBvcnRlZF9scGkpO1xuMjE3ODpcdFx0fSBlbHNlIGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjE3OTpcdFx0XHQvKiBNQUMgc3VwcG9ydHMgcGh5bGluayBFRUUsIGJ1dCB3YW50cyBFRUUgYWx3YXlzIGRpc2FibGVkLiAqL1xuMjE4MDpcdFx0XHRwaHlfZGlzYWJsZV9lZWUocGh5KTtcbjIxODE6XHRcdH1cbjIxODI6XHRcbjIxODM6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4yMTg0Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMjE4NTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMTg2Olx0XG4yMTg3Olx0XHRwaHlsaW5rX2RiZyhwbCxcbjIxODg6XHRcdFx0ICAgIFwmIzM0O3BoeTogJXMgc2V0dGluZyBzdXBwb3J0ZWQgJSpwYiBhZHZlcnRpc2luZyAlKnBiXFxuXCYjMzQ7LFxuMjE4OTpcdFx0XHQgICAgcGh5X21vZGVzKGludGVyZmFjZSksXG4yMTkwOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZXN1cHBvcnRlZCxcbjIxOTE6XHRcdFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZWFkdmVydGlzaW5nKTtcbjIxOTI6XHRcbjIxOTM6XHRcdGlmIChwbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX21hbmFnZWRfcG0pXG4yMTk0Olx0XHRcdHBoeS1cdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XG4yMTk1Olx0XG4yMTk2Olx0XHQvKiBBbGxvdyB0aGUgTUFDIHRvIHN0b3AgaXRzIGNsb2NrIGlmIHRoZSBQSFkgaGFzIHRoZSBjYXBhYmlsaXR5ICovXG4yMTk3Olx0XHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShwaHkpIFx1MDAzZSAwO1xuMjE5ODpcdFxuMjE5OTpcdFx0aWYgKHBsLVx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDI1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJ1ZyBGaXggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgYnVnOiBpdCBzZWVtcyBsaWtlIHRoZXJlIHdhcyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSBpbiB0aGUgcGh5bGluayBhbmQgUEhZIGRldmljZSBoYW5kbGluZy4gU3BlY2lmaWNhbGx5LCBpbiBgcGh5bGlua19icmluZ3VwX3BoeWAsIHRoZSBgcGwtJmd0O3BoeWRldmAgcG9pbnRlciB3YXMgYmVpbmcgbWlzaGFuZGxlZC4gVGhlIGNvZGUgd291bGQgYXNzaWduIGBwaHlgIHRvIGBwbC0mZ3Q7cGh5ZGV2YCwgYW5kIHRoZW4gaWYgYHBoeV9lZWVfcnhfY2xvY2tfc3RvcGAgZmFpbGVkLCBgcGh5bGlua19icmluZ3VwX3BoeWAgd291bGQgYmFpbCBvdXQuIFRoZSBjYWxsZXIsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgc3Vic2VxdWVudGx5IGNhbGxlZCBgcGh5X2RldGFjaChwaHkpYCwgYnV0IGNydWNpYWxseSwgYHBsLSZndDtwaHlkZXZgICp3YXNuJiMzOTt0KiBjbGVhcmVkLiBUaGlzIGxlYWRzIHRvIHByb2JsZW1zIGxhdGVyIG9uLCBlaXRoZXIgd2l0aCBgLUVCVVNZYCBlcnJvcnMgZHVyaW5nIHJlLWF0dGFjaG1lbnQgb3Igd2l0aCBwaHlsaW5rIGFjY2Vzc2luZyBhIGRldGFjaGVkIFBIWSBkZXZpY2UuIFRoZSBmaXgsIGltcGxlbWVudGVkIGluIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAsIGxvb2tzIGNvcnJlY3QgYXMgaXQmIzM5O3MgY2xlYXJpbmcgdGhlIGBwbC0mZ3Q7cGh5ZGV2YCBwb2ludGVyLCBhbG9uZyB3aXRoIHNvbWUgcmVsYXRlZCBmbGFncyB3aGVuIGFuIGVycm9yIG9jY3Vycy4KClRoZSBzZWNvbmQgcGFydCBvZiB0aGUgZml4IGluIGBwaHlfZGV2aWNlLmNgIGRlYWxzIHdpdGggcmVzdG9yaW5nIHRoZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBhZnRlciBwcm9iaW5nL3VuYmluZGluZy4gVGhlIGdlbmVyaWMgUEhZIGRyaXZlciwgd2hlbiBiaW5kaW5nLCBvdmVycmlkZXMgdGhlIGludGVycnVwdCB2YWx1ZSB0byBgUEhZX1BPTExgIGlmIHRoZSBkcml2ZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCBpbnRlcnJ1cHRzLiBIb3dldmVyLCBvbiB1bmJpbmRpbmcgb3IgYXR0YWNobWVudCBmYWlsdXJlLCB0aGUgb3JpZ2luYWwgaW50ZXJydXB0IHdhc24mIzM5O3QgYmVpbmcgcmVzdG9yZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbG9zcyBvZiBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBNRElPIGJ1cyBpbiBzdWJzZXF1ZW50IGF0dGVtcHRzLiBUaGUgZml4IGNvcnJlY3RseSByZXN0b3JlcyB0aGlzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSXMgdGhpcyBmdXp6YWJsZT8gVGltZSB0byBhcHBseSB0aGUgZ3VpZGVsaW5lcy4gVGhpcyBpcyAqbm90KiBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBvciBjb21tZW50IGNoYW5nZXMuIEl0JiMzOTtzIG5vdCBwdXJlIGxvZ2dpbmcgb3IgZGVjb3JhdGl2ZS4gTm8gbnVtZXJpYyBjb25zdGFudCBtb2RpZmljYXRpb25zLiBJdCAqZG9lcyogbW9kaWZ5IGNvcmUga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaW4gdGhlIFBIWSBhbmQgcGh5bGluayBzdWJzeXN0ZW1zLiBOb3csIGFyZSB0aGVzZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPwoKTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gV2hpbGUgc3RhbmRhcmQgUUVNVSBlMTAwMCBjb25maWd1cmF0aW9ucyBtYXkgbm90IGRpcmVjdGx5IHVzZSBwaHlsaWIvcGh5bGluaywgd2UmIzM5O3ZlIGdvdCB0byBjb25zaWRlciBVU0IgZW11bGF0aW9uIGFuZCBNRElPIGJ1cyBpbnRlcmFjdGlvbi4gVVNCLCB2aWEgc3l6a2FsbGVyLCBzZWVtcyBwcm9taXNpbmcuIFJhdy1nYWRnZXQsIGR1bW15X2hjZCwgb3IgdXNiLWZ1enppbmcgd2l0aCBkcml2ZXJzIGxpa2UgYGFzaXhgIG9yIGBsYW43OHh4YCBhcmUgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gSWYgc3l6a2FsbGVyIGNhbiByZWFjaCB0aG9zZSwgdGhlIGZpeCB3b3VsZCBiZSByZWFjaGFibGUuIFRoZSBvdGhlciBwb3NzaWJpbGl0eSBpcyB0aGUgTURJTyBidXMgaXRzZWxmLiBDYW4gd2UgY3JlYXRlIG9yIGludGVyYWN0IHdpdGggTURJTyAvIFBIWSBkZXZpY2VzIHRocm91Z2ggbmV0bGluaywgaW9jdGwsIHN5c2ZzLCBvciBtYXliZSBldmVuIGBtZGlvLWdwaW9gIG9yIGBmaXhlZC1waHlgIHNldHVwcywgb3IgdGhlICYjMzQ7ZHVtbXkmIzM0OyBkZXZpY2VzPwoKSWYgdGhvc2UgYXJlIHJlYWNoYWJsZSwgdGhlbiB0aGlzIGZpeCwgYW5kIHRoZSByZWxhdGVkIGNvZGUsIGlzIG1vc3QgbGlrZWx5IHdvcnRoIGZ1enppbmcuIFRoZSByaXNrIG9mIHVzZS1hZnRlci1mcmVlIG9yIGEgcmVsYXRlZCBkb3VibGUtZnJlZSBpcyByZWFsLCBhbmQgY291bGQgaGF2ZSBzZXJpb3VzIGNvbnNlcXVlbmNlcy4gSSYjMzk7bSBnb2luZyB0byBsZWFuIHRvd2FyZHMgJiMzNDtXb3J0aEZ1enppbmc9dHJ1ZSYjMzQ7IGlmIHdlIGNhbiB2ZXJpZnkgcmVhY2hhYmlsaXR5LiBUaGUgVVNCIGRldmljZSBvciBNRElPIGJ1cyBpcyB0aGUga2V5IGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9hdHRhY2h8cGh5X2Nvbm5lY3R8cGh5bGlua18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExNjY3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xNTI1PXZvaWQgYjUzX3BvcnRfZXZlbnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTMyLVx0bGluayA9ICEhKHN0cyBcdTAwMjYgQklUKHBvcnQpKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1MzM6XHRkc2FfcG9ydF9waHlsaW5rX21hY19jaGFuZ2UoZHMsIHBvcnQsIGxpbmspO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzNC19XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xNTM1PUVYUE9SVF9TWU1CT0woYjUzX3BvcnRfZXZlbnQpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzNi1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1Mzc6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1Mzg6XHRcdFx0XHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTc1LVx0LyogR2V0IHRoZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgKi9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1NzY6XHRpZiAoZGV2LVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NzpcdFx0ZGV2LVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKGRldiwgcG9ydCwgY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1NzgtfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1ODA6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqYjUzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTgxLVx0XHRcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTgyLXtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1ODM6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4NC1cdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4NS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1ODY6XHRpZiAoIWRldi1cdTAwM2VvcHMtXHUwMDNlcGh5bGlua19tYWNfc2VsZWN0X3BjcylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODctXHRcdHJldHVybiBOVUxMO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4OC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1ODk6XHRyZXR1cm4gZGV2LVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX21hY19zZWxlY3RfcGNzKGRldiwgZHAtXHUwMDNlaW5kZXgsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkwLX1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTEtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTkyOnN0YXRpYyB2b2lkIGI1M19waHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkzLVx0XHRcdFx0ICAgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTk0Olx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTk1LXtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTY6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU5Ny1cdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UgPSBzdGF0ZS1cdTAwM2VpbnRlcmZhY2U7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYxNC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2MTU6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MTYtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE4LXtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2MTk6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYyMC1cdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MzgtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNjM5OnN0YXRpYyB2b2lkIGI1M19waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTY0MC1cdFx0XHRcdCAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2NDUte1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTY0NjpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjQ3LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHAtXHUwMDNlZHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MjY5Mj1FWFBPUlRfU1lNQk9MX0dQTChiNTNfc2V0X2FnZWluZ190aW1lKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTI2OTMtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGI1M19waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk1Olx0Lm1hY19zZWxlY3RfcGNzXHQ9IGI1M19waHlsaW5rX21hY19zZWxlY3RfcGNzLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjY5NjpcdC5tYWNfY29uZmlnXHQ9IGI1M19waHlsaW5rX21hY19jb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk3Olx0Lm1hY19saW5rX2Rvd25cdD0gYjUzX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTg6XHQubWFjX2xpbmtfdXBcdD0gYjUzX3BoeWxpbmtfbWFjX2xpbmtfdXAsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjk5LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MjcwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGI1M19zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTI3MTAtXHQucGh5X3dyaXRlXHRcdD0gYjUzX3BoeV93cml0ZTE2LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjcxMTpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGI1M19waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMjcxMi1cdC5wb3J0X3NldHVwXHRcdD0gYjUzX3NldHVwX3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzE4Mz1zdHJ1Y3QgYjUzX2RldmljZSAqYjUzX3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMyMDYtXHRkcy1cdTAwM2VvcHMgPSBcdTAwMjZiNTNfc3dpdGNoX29wcztcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjMyMDc6XHRkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcdTAwMjZiNTNfcGh5bGlua19tYWNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzIwOC1cdGRldi1cdTAwM2V2bGFuX2VuYWJsZWQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0zND1zdHJ1Y3QgYjUzX2lvX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTUwLVx0dm9pZCAoKnBoeV9kaXNhYmxlKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTE6XHR2b2lkICgqcGh5bGlua19nZXRfY2Fwcykoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTI6XHRcdFx0XHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjUzOlx0c3RydWN0IHBoeWxpbmtfcGNzICooKnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MpKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtNTQtXHRcdFx0XHRcdFx0ICAgICAgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTExMT1zdHJ1Y3QgYjUzX3BjcyB7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6MTEyOlx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0xMTMtXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgYjUzX3BjcyAqcGNzX3RvX2I1M19wY3Moc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0yMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM9NjE9c3RhdGljIHUxNiBiNTNfc2VyZGVzX3JlYWQoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggbGFuZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy02Ny1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjY4OnN0YXRpYyBpbnQgYjUzX3NlcmRlc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTY5LVx0XHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy04OC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjg5OnN0YXRpYyB2b2lkIGI1M19zZXJkZXNfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTkwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xMDEtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDI6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjEwMzpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM9MTU3PUVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19saW5rX3NldCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xNTgtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxNTk6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgYjUzX3Bjc19vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xNjAtXHQucGNzX2dldF9zdGF0ZSA9IGI1M19zZXJkZXNfZ2V0X3N0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2NC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE2NTp2b2lkIGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE2NjpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTkxLX1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5MjpFWFBPUlRfU1lNQk9MKGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2Fwcyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xOTMtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxOTQ6c3RydWN0IHBoeWxpbmtfcGNzICpiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IGI1M19kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5NS1cdFx0XHRcdFx0XHQgICAgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0yMDktfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MjEwOkVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIxMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC05OS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oOjEwMDpzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oPTExMD12b2lkIGI1M19zZXJkZXNfbGlua19zZXQoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTExLVx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBib29sIGxpbmtfdXApO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTEyOnN0cnVjdCBwaHlsaW5rX3BjcyAqYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTMtXHRcdFx0XHRcdFx0ICAgICAgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTQtXHRcdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTU6dm9pZCBiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTY6XHRcdFx0XHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTE3LSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYz00MzU9c3RhdGljIHZvaWQgYjUzX3NyYWJfaXJxX2Rpc2FibGUoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ0NS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NDY6c3RhdGljIHZvaWQgYjUzX3NyYWJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NDc6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NTctXHRcdCAqL1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ1ODpcdFx0YjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKGRldiwgcG9ydCwgY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NTktI2VuZGlmXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ3OT1zdGF0aWMgY29uc3Qgc3RydWN0IGI1M19pb19vcHMgYjUzX3NyYWJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00OTEtXHQuaXJxX2Rpc2FibGUgPSBiNTNfc3JhYl9pcnFfZGlzYWJsZSxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0OTI6XHQucGh5bGlua19nZXRfY2FwcyA9IGI1M19zcmFiX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDkzLSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ5NDpcdC5waHlsaW5rX21hY19zZWxlY3RfcGNzID0gYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5NS1cdC5zZXJkZXNfbWFwX2xhbmUgPSBiNTNfc3JhYl9zZXJkZXNfbWFwX2xhbmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz00NTI9c3RhdGljIGlycXJldHVybl90IGJjbV9zZjJfc3dpdGNoXzFfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQ2Mi1cdFx0cHJpdi1cdTAwM2Vwb3J0X3N0c1s3XS5saW5rID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDYzOlx0XHRkc2FfcG9ydF9waHlsaW5rX21hY19jaGFuZ2UoZHMsIDcsIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjYtXHRcdHByaXYtXHUwMDNlcG9ydF9zdHNbN10ubGluayA9IGZhbHNlO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo0Njc6XHRcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjgtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU2LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2NTc6XHQvKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IG9mX3BoeV9jb25uZWN0KCkgd2lsbCBub3Qgd29yayBieVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTgtXHQgKiByZW1vdmluZyB0aGUgJiMzOTtwaGFuZGxlJiMzOTsgYW5kICYjMzk7bGludXgscGhhbmRsZSYjMzk7IHByb3BlcnRpZXMgYW5kXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz03MjQ9c3RhdGljIHZvaWQgYmNtX3NmMl9zd19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3MjU6XHRcdFx0XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzI2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTc0NC1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzQ1OnN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ2LVx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzQ3Olx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ4LXtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzQ5Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzUwLVx0dTMyIGlkX21vZGVfZGlzID0gMCwgcG9ydF9tb2RlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9Nzk0PXN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfbWFjX2xpbmtfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MTYtXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgxNzpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgxOC1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MjAte1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4MjE6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MjItXHRzdHJ1Y3QgYmNtX3NmMl9wcml2ICpwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODM3LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4Mzg6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODM5LVx0XHRcdFx0ICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTg0NC17XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjg0NTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTg0Ni1cdHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz05MDY9c3RhdGljIHZvaWQgYmNtX3NmMl9zd19maXhlZF9zdGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo5MDc6XHRcdFx0XHQgICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0dXMpXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTkwOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMjAzPXN0YXRpYyBpbnQgYmNtX3NmMl9zd19nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIxNS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIxNjpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBiY21fc2YyX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIxNy1cdC5tYWNfY29uZmlnXHQ9IGJjbV9zZjJfc3dfbWFjX2NvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTEyMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBiY21fc2YyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMzAtXHQuZ2V0X3BoeV9mbGFnc1x0XHQ9IGJjbV9zZjJfc3dfZ2V0X3BoeV9mbGFncyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIzMTpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGJjbV9zZjJfc3dfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjEyMzI6XHQucGh5bGlua19maXhlZF9zdGF0ZVx0PSBiY21fc2YyX3N3X2ZpeGVkX3N0YXRlLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjMzLVx0LnN1c3BlbmRcdFx0PSBiY21fc2YyX3N3X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMzY1PXN0YXRpYyBpbnQgYmNtX3NmMl9zd19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTQyNi1cdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmJjbV9zZjJfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxNDI3Olx0ZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2YmNtX3NmMl9waHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE0MjgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzIxPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjc6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1MS1cdC5wb3J0X21heF9tdHVcdFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTQ1OD1zdGF0aWMgdm9pZCBoZWxsY3JlZWtfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0NjMtXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxNDY0OnN0YXRpYyB2b2lkIGhlbGxjcmVla19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxNDY1Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTQ2Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGhlbGxjcmVla19kc19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkwNi1cdC5nZXRfdHNfaW5mb1x0ICAgICAgID0gaGVsbGNyZWVrX2dldF90c19pbmZvLFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTkwNzpcdC5waHlsaW5rX2dldF9jYXBzICAgICAgPSBoZWxsY3JlZWtfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE5MDgtXHQucG9ydF9icmlkZ2VfZmxhZ3MgICAgID0gaGVsbGNyZWVrX2JyaWRnZV9mbGFncyxcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NDQ4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDQ5OmtzODk5NV9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NTA6XHRcdCAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDUxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NDU0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDU1OmtzODk5NV9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NTYtXHRcdCAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NTgte1xuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjQ1OTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDYwLVx0c3RydWN0IGtzODk5NV9zd2l0Y2ggKmtzID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NTA4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTA5OmtzODk5NV9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTAtXHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTEte1xuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjUxMjpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTEzLVx0c3RydWN0IGtzODk5NV9zd2l0Y2ggKmtzID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTIzLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjUyNDpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBrczg5OTVfcGh5bGlua19tYWNfb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTUyNS1cdC5tYWNfY29uZmlnID0ga3M4OTk1X21hY19jb25maWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTYwMj1zdGF0aWMgdm9pZCBrczg5OTVfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHU4IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy02NDgtXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NjQ5OnN0YXRpYyB2b2lkIGtzODk5NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjY1MDpcdFx0XHRcdCAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy02NTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz03MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrczg5OTVfZHNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy03NDEtXHQucG9ydF9tYXhfbXR1ID0ga3M4OTk1X2dldF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjc0MjpcdC5waHlsaW5rX2dldF9jYXBzID0ga3M4OTk1X3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNzQzLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTc0Nj1zdGF0aWMgaW50IGtzODk5NV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy04MjAtXHRrcy1cdTAwM2Vkcy1cdTAwM2VvcHMgPSBcdTAwMjZrczg5OTVfZHNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjgyMTpcdGtzLVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmtzODk5NV9waHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtODIyLVx0a3MtXHUwMDNlZHMtXHUwMDNlcHJpdiA9IGtzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYz0xMjgzPXN0YXRpYyBpbnQgbGFuOTMwM19wb3J0X21kYl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTI5Ny1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMjk4OnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEyOTk6XHRcdFx0XHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMDAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzIzLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMjQ6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMyNS1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzI2Olx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI5LVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMzA6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMzMS1cdFx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMzNS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzM2OnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzM3LVx0XHRcdFx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzQyLXtcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzQzOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzQ0LVx0c3RydWN0IGxhbjkzMDMgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzc1LVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzY6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuOTMwM19waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3NzpcdC5tYWNfY29uZmlnXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzg6XHQubWFjX2xpbmtfZG93blx0PSBsYW45MzAzX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzc5Olx0Lm1hY19saW5rX3VwXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfbGlua191cCxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzgwLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBsYW45MzAzX3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzODctXHQucGh5X3dyaXRlXHRcdD0gbGFuOTMwM19waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM4ODpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGxhbjkzMDNfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzg5LVx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IGxhbjkzMDNfZ2V0X2V0aHRvb2xfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTE0MDQ9c3RhdGljIGludCBsYW45MzAzX3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgbGFuOTMwMyAqY2hpcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTQxMy1cdGNoaXAtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2bGFuOTMwM19zd2l0Y2hfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjE0MTQ6XHRjaGlwLVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmxhbjkzMDNfcGh5bGlua19tYWNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTUtXHRjaGlwLVx1MDAzZWRzLVx1MDAzZXBoeXNfbWlpX21hc2sgPSBHRU5NQVNLKExBTjkzMDNfTlVNX1BPUlRTIC0gMSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz0yNz1zdHJ1Y3QgeHdheV9ncGh5X21hdGNoX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtMzEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjMyOnN0YXRpYyB2b2lkIGdzd2lwX3hyeDIwMF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjMzOlx0XHRcdFx0XHQgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy0zNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy02Mi1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6NjM6c3RhdGljIHZvaWQgZ3N3aXBfeHJ4MzAwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6NjQ6XHRcdFx0XHRcdCAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTY1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTQ1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGdzd2lwX2h3X2luZm8gZ3N3aXBfeHJ4MjAwID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDc1LVx0fSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6NDc2Olx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBnc3dpcF94cngyMDBfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDc3LVx0LnBjZV9taWNyb2NvZGUgPSBcdTAwMjZnc3dpcF9wY2VfbWljcm9jb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM9NDgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3N3aXBfaHdfaW5mbyBnc3dpcF94cngzMDAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00OTYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0OTc6XHQucGh5bGlua19nZXRfY2FwcyA9IGdzd2lwX3hyeDMwMF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00OTgtXHQucGNlX21pY3JvY29kZSA9IFx1MDAyNmdzd2lwX3BjZV9taWNyb2NvZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaD0yNTU9c3RydWN0IGdzd2lwX2h3X2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmgtMjYzLVx0ZW51bSBkc2FfdGFnX3Byb3RvY29sIHRhZ19wcm90b2NvbDtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY0Olx0dm9pZCAoKnBoeWxpbmtfZ2V0X2NhcHMpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oOjI2NTpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oOjI2NjpcdHN0cnVjdCBwaHlsaW5rX3BjcyAqKCptYWNfc2VsZWN0X3Bjcykoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oLTI2Ny1cdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTI2Nj1zdGF0aWMgaW50IGdzd2lwX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjkxLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTI5MjpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjkzOlx0XHRcdFx0ICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk2LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTI5NzpcdHByaXYtXHUwMDNlaHdfaW5mby1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5OC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTM3NT1zdGF0aWMgdm9pZCBnc3dpcF9wb3J0X3NldF9wYXVzZShzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwNC1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0MDU6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwNi1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDA3Olx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0MDgte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQwOTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDEwLVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTUtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDU2OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTctXHRcdFx0XHRcdHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTkte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ2MDpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDYxLVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NjktXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDcwOnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDcxLVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDc2LXtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0Nzc6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ3OC1cdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNTU5PXN0YXRpYyBpbnQgZ3N3aXBfc2V0X21hY19lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTY3LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU2ODpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1Njkte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU3MDpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTcxLVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NzYtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTc3OnN0YXRpYyBpbnQgZ3N3aXBfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NzgtXHRcdFx0XHRcdCAgIHUzMiB0aW1lciwgYm9vbCB0eF9jbG9ja19zdG9wKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3OS17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTgwOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1ODEtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTU5Mj1zdGF0aWMgYm9vbCBnc3dpcF9zdXBwb3J0X2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjAyOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmdzd2lwX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjAzLVx0XHRcdFx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDQte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYwNTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjA2LVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGdzd2lwX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTU6XHQubWFjX2NvbmZpZ1x0XHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTY6XHQubWFjX2xpbmtfZG93blx0XHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTc6XHQubWFjX2xpbmtfdXBcdFx0PSBnc3dpcF9waHlsaW5rX21hY19saW5rX3VwLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxODpcdC5tYWNfZGlzYWJsZV90eF9scGlcdD0gZ3N3aXBfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGksXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE5Olx0Lm1hY19lbmFibGVfdHhfbHBpXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGksXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjIwOlx0Lm1hY19zZWxlY3RfcGNzXHRcdD0gZ3N3aXBfcGh5bGlua19tYWNfc2VsZWN0X3BjcyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MjEtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNjIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZ3N3aXBfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjQzLVx0LnBvcnRfbWF4X210dVx0XHQ9IGdzd2lwX3BvcnRfbWF4X210dSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2NDQ6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBnc3dpcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY0NS1cdC5nZXRfc3RyaW5nc1x0XHQ9IGdzd2lwX2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2Nzg9aW50IGdzd2lwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgdTMyIHZlcnNpb24pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY5MC1cdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2Z3N3aXBfc3dpdGNoX29wcztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2OTE6XHRwcml2LVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmdzd2lwX3BoeWxpbmtfbWFjX29wcztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2OTItXHRwcml2LVx1MDAzZWRzLVx1MDAzZXByaXYgPSBwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTI4PXN0cnVjdCBnc3cxeHhfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzQtXHRzdHJ1Y3RcdFx0XHRyZWdtYXAgKnNoZWxsO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzU6XHRzdHJ1Y3RcdFx0XHRwaHlsaW5rX3BjcyBwY3M7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNi1cdHN0cnVjdCBkZWxheWVkX3dvcmtcdGNsZWFyX3JhbmVnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTEyND1zdGF0aWMgdm9pZCBnc3cxeHhfbWRpb19yZWdtYXBfdW5sb2NrKHZvaWQgKm1kaW9fbG9jaylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMjgtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxMjk6c3RhdGljIHVuc2lnbmVkIGludCBnc3cxeHhfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTMwLVx0XHRcdFx0XHQgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzNC1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjEzNTpzdGF0aWMgc3RydWN0IGdzdzF4eF9wcml2ICpwY3NfdG9fZ3N3MXh4KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTM2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzktXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNDA6c3RhdGljIGludCBnc3cxeHhfcGNzX2VuYWJsZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE0MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTQ4LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTQ5OnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfZGlzYWJsZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE1MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTYxLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTYyOnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTYzLVx0XHRcdFx0IHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE2NDpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9MjM0PXN0YXRpYyBpbnQgZ3N3MXh4X3Bjc19yZXNldChzdHJ1Y3QgZ3N3MXh4X3ByaXYgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzM0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzM1OnN0YXRpYyBpbnQgZ3N3MXh4X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTMzNi1cdFx0XHQgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzY5LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzcwOlx0c3dpdGNoIChwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKGludGVyZmFjZSkpIHtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM3MS1cdGNhc2UgMTAwMDA6XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzkzLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6Mzk0Olx0dHhhbmVnID0gcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudChpbnRlcmZhY2UsIGFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM5NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz00NTM9c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19jbGVhcl9yYW5lZyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDYxLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6NDYyOnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzI5NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBOZXR3b3JraW5nIFN1YnN5c3RlbXMgLSBMZXQmIzM5O3MgRGlnIEluKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gYHBoeWxpbmtgIGFuZCBgcGh5bGliYC4gUmlnaHQsIHRoZXkmIzM5O3JlIGZ1bmRhbWVudGFsLCBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC9waHkvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIEkgbmVlZCB0byB2ZXJpZnkgdGhlaXIgYXZhaWxhYmlsaXR5IGFuZCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBlbmFibGUgdGhlbS4gQmVzdCB3YXkgdG8gZG8gdGhhdD8gSW5zcGVjdCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCfGNvbmZpZyBQSFlMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cdGRlZl9ib29sIE9GXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzAyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIFBIWSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgUEhZIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoaXMgYXJlYSBpcyB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciBuZXR3b3JrIFBIWSBkcml2ZXJzIGlzIGRlZmluZWQuIEkgaW1tZWRpYXRlbHkgd2FudCB0byBmb2N1cyBvbiBzZWN0aW9ucyBjb25jZXJuaW5nIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAuIFRob3NlIGFyZSBjb3JlIGNvbmNlcHRzIGluIG5ldHdvcmsgUEhZIGRyaXZlciBtYW5hZ2VtZW50LCBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhleSYjMzk7cmUgd2lyZWQgaW50byB0aGUgY29uZmlndXJhdGlvbiBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBicm9hZGVyIHBpY3R1cmUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyByZXZlYWxzIGFib3V0IHRoZWlyIGRlcGVuZGVuY2llcywgb3B0aW9ucywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgaW5kaXZpZHVhbCBQSFkgZHJpdmVyIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGdldHRpbmcgYSBoaWdoLWxldmVsIHZpZXcgb2YgdGhpcyBjb21wb25lbnQgb2YgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xuICAzNTpcdFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxuICAzNjpcdFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XG4gIDM3Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcJiMzNDtsaW5rXCYjMzQ7IHRyaWdnZXIgYXMgYVxuICAzODpcdFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxuICAzOTpcdFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gIDQwOlx0XHQgICAgICBcdTAwM2NtaWkgYnVzIGlkXHUwMDNlOlx1MDAzY3BoeVx1MDAzZTpcdTAwM2NzcGVlZFx1MDAzZVxuICA0MTpcdFxuICA0MjpcdFx0ICBXaGVyZSBzcGVlZCBpcyBpbiB0aGUgZm9ybTpcbiAgNDM6XHRcdFx0XHUwMDNjU3BlZWQgaW4gbWVnYWJpdHNcdTAwM2VNYnBzIE9SIFx1MDAzY1NwZWVkIGluIGdpZ2FiaXRzXHUwMDNlR2JwcyBPUiBsaW5rXG4gIDQ0Olx0XHRcdGZvciBhbnkgc3BlZWQga25vd24gdG8gdGhlIFBIWS5cbiAgNDU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1MDIKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgZmlndXJlIG91dCB3aGF0IGV4YWN0bHkgaXMgY2FsbGluZyBvciByZWZlcmVuY2luZyBgUEhZTElOS2AgYW5kIGBQSFlMSUJgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlLCBwaW5wb2ludCBhbnkgZGlyZWN0IGRlcGVuZGVuY2llcywgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGluZGlyZWN0IGxpbmtzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIGNvbXBvbmVudHMgb3IgbW9kdWxlcyB0aGF0IGFyZSBsZXZlcmFnaW5nIHRoZXNlIGxpYnJhcmllcy4gVGhpcyB3aWxsIGhlbHAgbWUgYXNzZXNzIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcywgaWRlbnRpZnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgb3ZlcmFsbCwgYmV0dGVyIG1haW50YWluIHRoZSBzeXN0ZW0uIEkgYWxzbyB3YW50IHRvIGRldGVybWluZSB0aGUgbGV2ZWwgb2YgY291cGxpbmcgdGhleSBoYXZlIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHByb2plY3QsIHBlcmhhcHMgZXZlbiB3aXRoIHNwZWNpZmljIGFsZ29yaXRobXMgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBLbm93aW5nIHRoaXMgaGVscHMgdG8gcGxhbiBmdXR1cmUgZGV2ZWxvcG1lbnQgYW5kIHJlZmFjdG9yaW5nIGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBQSFlMSU5LJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTEtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjkyOlx0c2VsZWN0IFBIWUxJTktcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc9Mj1jb25maWcgQUxURVJBX1RTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnLTYtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZzo3Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnLTgtXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc9MjA9Y29uZmlnIEFHNzFYWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yMi1cdGRlcGVuZHMgb24gQVRINzkgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc6MjM6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnLTI0LVx0aW1wbHkgTkVUX1NFTEZURVNUU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz0yMj1jb25maWcgTUFDQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyNjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjctXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz04MD1jb25maWcgVUNDX0dFVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04My1cdHNlbGVjdCBGU0xfUFFfTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6ODQ6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctODUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZz0yPW1lbnVjb25maWcgRlNMX0RQQUFfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBGU0xfRFBBQSBcdTAwMjZcdTAwMjYgRlNMX0ZNQU5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWc6NTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnLTYtXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNC1cdGRlcGVuZHMgb24gRlNMX01DX0JVUyBcdTAwMjZcdTAwMjYgRlNMX01DX0RQSU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjU6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNi1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTMzPWNvbmZpZyBGU0xfRFBBQTJfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctMzctXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXHUwMDI2XHUwMDI2IEZTTF9NQ19EUElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zOS1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTMwPWNvbmZpZyBGU0xfRU5FVENcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy0zNy1cdHNlbGVjdCBOWFBfRU5FVENfUEZfQ09NTU9OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzozODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy0zOS1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTQ4PWNvbmZpZyBOWFBfRU5FVEM0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTUtXHRzZWxlY3QgTlhQX05UTVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjU2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTU3LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTY2PWNvbmZpZyBGU0xfRU5FVENfVkZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03MS1cdHNlbGVjdCBGU0xfRU5FVENfTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NzI6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNzMtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZz0yPWNvbmZpZyBGU0xfRk1BTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctNS1cdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctNy1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWc9Mj1jb25maWcgRlNfRU5FVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNS1cdHNlbGVjdCBNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWc6NjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnLTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjItXHRzZWxlY3QgTVZNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjM6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY0LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctODktXHRzZWxlY3QgTVZNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkxLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZz02PWNvbmZpZyBQUkVTVEVSQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnOjExOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTE0PWNvbmZpZyBORVRfTUVESUFURUtfU09DXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNy1cdHNlbGVjdCBQSU5DVFJMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjE4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTktXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cdHNlbGVjdCBQQ1NfWFBDU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjMwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0zMS1cdHNlbGVjdCBQTERNRldcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTUxLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo1MjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01My1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy03LVx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6ODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTktXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTE9Y29uZmlnIFNQQVJYNV9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctOC1cdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6OTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMTAtXHRzZWxlY3QgUEhZX1NQQVJYNV9TRVJERVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTktXHRzZWxlY3QgUEFDS0lOR1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnOjIwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnPTQyPWNvbmZpZyBSRU5FU0FTX0VUSEVSX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy00Ny1cdHNlbGVjdCBNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzo0ODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctNDktXHRzZWxlY3QgUkVORVNBU19HRU40X1BUUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOS1cdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMS1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVx0c2VsZWN0IEZXX0xPQURFUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc6MzE6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMC1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAxOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAyLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjQ6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTI2PWNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yOS1cdGRlcGVuZHMgb24gWElMSU5YX0RNQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6MzA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMzEtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9OD1jb25maWcgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFhQQ1NcJiMzNDtcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjEwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTExLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTUtXHRzZWxlY3QgTUlJXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE3LVx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xNjY9Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2OS1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTcwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE3MS1cdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcbi0tXG5uZXQvZHNhL0tjb25maWc9Mz1tZW51Y29uZmlnIE5FVF9EU0Fcbi0tXG5uZXQvZHNhL0tjb25maWctOS1cdHNlbGVjdCBORVRfU1dJVENIREVWXG5uZXQvZHNhL0tjb25maWc6MTA6XHRzZWxlY3QgUEhZTElOS1xubmV0L2RzYS9LY29uZmlnLTExLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTA4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBQSFkvUGh5bGluayBmb3IgRnV6emluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzIHdpdGhpbiB0aGUgUEhZIGFuZCBQaHlsaW5rIHN1YnN5c3RlbXMuIEZpcnN0LCBJIG5vdGljZWQgdGhhdCBgVVNCX0xBTjc4WFhgLCBgVVNCX05FVF9BWDg4MTdYYCwgYW5kIGBORVRfRFNBYCBhbGwgc2VsZWN0IGBQSFlMSU5LYCwgYW5kIGJvdGggYFBIWUxJQmAgYW5kIGBQSFlMSU5LYCBhcmUga2VybmVsIGZlYXR1cmVzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGlkZW50aWZ5IGtleSBmdW5jdGlvbnMgZm9yIGRlZXBlciBmdXp6aW5nLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gU3BlY2lmaWNhbGx5LCBJIHNhdyB0aGF0IGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfZGV0YWNoYCwgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAsIGFuZCBgcGh5bGlua19icmluZ3VwX3BoeWAgd2VyZSB0aGUgb25lcyBtb2RpZmllZC4gSSBuZWVkIHRvIGZpbHRlciB0aGVzZSBkb3duLgoKTm93LCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgSSBuZWVkIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGlzIG1lYW5zIGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBTbywgbGV0JiMzOTtzIHNlcGFyYXRlIHRoZSBzdGF0aWMgZnJvbSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMuCgpCYXNlZCBvbiB0aGUgY29kZSwgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCwgYW5kIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCBhcmUgdGhlIGZvY3VzLgoKQ2hlY2tpbmcgdGhlIGRlZmluaXRpb25zOgotIGBwaHlfYXR0YWNoX2RpcmVjdGAgKGluIGBwaHlfZGV2aWNlLmNgKSBpcyBgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlgLgotIGBwaHlfZGV0YWNoYCAoaW4gYHBoeV9kZXZpY2UuY2ApIGlzIGB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilgLgotIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCAoaW4gYHBoeWxpbmsuY2ApIGlzIGBpbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpYC4KLSBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAgKGluIGBwaHlsaW5rLmNgKSBpcyBgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClgLgotIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAgKGluIGBwaHlsaW5rLmNgKSBpcyBgaW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwgdTMyIGZsYWdzKWAuCi0gYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIChpbiBgcGh5bGluay5jYCkgaXMgYGludCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGRldmljZV9ub2RlICpkbiwgdTMyIGZsYWdzKWAuCgpBbGwgb2YgdGhlc2UgYXJlIG5vbi1zdGF0aWMgYW5kIGFwcGVhciB0byBiZSBBUEkgZW50cnkgcG9pbnRzLCB3aGljaCBtZWFucyB0aGV5IGFyZSBncmVhdCBjYW5kaWRhdGVzLgoKRmluYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgUEhZTElCYCBpcyBhIG1lbnVjb25maWcgYW5kIGNhbiBiZSBkaXJlY3RseSBlbmFibGVkIGluIHRoZSBgLmNvbmZpZ2AgYXMgYENPTkZJR19QSFlMSUI9eWAuIGBQSFlMSU5LYCwgaG93ZXZlciwgaGFzIG5vIHByb21wdCwgc28gaXQgZ2V0cyBzZWxlY3RlZCBieSBvdGhlciBkcml2ZXJzIHRoYXQgZGVwZW5kIG9uIGl0LiBUaGlzIG1ha2VzIGZ1enppbmcgbW9yZSBjaGFsbGVuZ2luZyBzaW5jZSBpdCB3aWxsIHJlcXVpcmUgYSBzcGVjaWZpYyBkcml2ZXIgdG8gYmUgZW5hYmxlZCB0byBlbmFibGUgdGhlIHRlc3RzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY29uc2lkZXIgYE5FVF9EU0FgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAsIHNpbmNlIHRoZXNlIGFyZSBkcml2ZXJzIHRoYXQgc2VsZWN0IGBQSFlMSU5LYC4gVGhleSBhcmUgdGhlIGVhc2llc3Qgd2F5IHRvIGVuc3VyZSBgUEhZTElOS2AgaXMgZW5hYmxlZC4KCkluIHN1bW1hcnk6IEkgd2lsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCBhbmQgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIGFuZCBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZW5hYmxlIGRyaXZlcnMgbGlrZSBgTkVUX0RTQWAsIGBVU0JfTEFONzhYWGAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYCB0byBlbnN1cmUgdGhlIHJlbGV2YW50IFBIWSBhbmQgUGh5bGluayBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9MQU43OFhYfGNvbmZpZyBVU0JfTkVUX0FYODgxN1gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTk5PWNvbmZpZyBVU0JfUlRMODE1MlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExMi1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExMzpjb25maWcgVVNCX0xBTjc4WFhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNC1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBMQU43OFhYIEJhc2VkIFVTQiBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2NS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXHR0cmlzdGF0ZSBcJiMzNDtBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIyOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqVVNCIExBTjc4WFggRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgYFVTQl9MQU43OFhYYCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBhbGwgaXRzIGRlcGVuZGVuY2llcywgZXNwZWNpYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGhpcyBpcyBjcnVjaWFsIGZvciBlbnN1cmluZyB0aGUgZHJpdmVyIGdldHMgYnVpbHQgY29ycmVjdGx5LCBhbmQgaXQgaGVscHMgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgaXQgbWlnaHQgcmVseSBvbi4gVGhpcyBhbHNvIGdpdmVzIG1lIGEgYmV0dGVyIHBpY3R1cmUgb2Ygd2hlcmUgaXQgc2l0cyBpbiB0aGUgYnJvYWRlciBuZXR3b3JrIGRyaXZlciBsYW5kc2NhcGUgYW5kIG1pZ2h0IHJldmVhbCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gbGF0ZXIgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxMTE6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHI4MTUyLlxuIDExMjpcdFxuIDExMzpcdGNvbmZpZyBVU0JfTEFONzhYWFxuIDExNDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4gMTE1Olx0XHRzZWxlY3QgTUlJXG4gMTE2Olx0XHRzZWxlY3QgUEhZTElOS1xuIDExNzpcdFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlcbiAxMTg6XHRcdHNlbGVjdCBDUkMzMlxuIDExOTpcdFx0aW1wbHkgTkVUX1NFTEZURVNUU1xuIDEyMDpcdFx0aGVscFxuIDEyMTpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIE1pY3JvY2hpcCBMQU43OFhYIGJhc2VkIFVTQiAyXG4gMTIyOlx0XHQgIFx1MDAyNiBVU0IgMyAxMC8xMDAvMTAwMCBFdGhlcm5ldCBhZGFwdGVycy5cbiAxMjM6XHRcdCAgTEFONzgwMCA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJcbiAxMjQ6XHRcdCAgTEFONzg1MCA6IFVTQiAyIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJcbiAxMjU6XHRcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxuIDEyNjpcdFxuIDEyNzpcdFx0ICBQcm9wZXIgUEhZIGRyaXZlciBpcyByZXF1aXJlZCBmb3IgTEFONzgwMS5cbiAxMjg6XHRcbiAxMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTMwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBsYW43OHh4LlxuIDEzMTpcdFxuIDEzMjpcdGNvbmZpZyBVU0JfVVNCTkVUXG4gMTMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1wmIzM0O1xuIDEzNDpcdFx0c2VsZWN0IE1JSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDg0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipDaGVja2luZyBgTkVUX0RTQWAgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYG5ldC9kc2EvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBORVRfRFNBYC4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBnbGFuY2U7IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoYXQgbWlnaHQgYXJpc2UgZHVyaW5nIGNvbmZpZ3VyYXRpb24gb3IgYnVpbGQuIEFyZSB0aGVyZSBhbnkgbmV3IGRlcGVuZGVuY2llcyBJIG1pc3NlZCwgYXJlIHRoZXJlIGFueSBpbnRlcmFjdGlvbnMgdGhhdCBtaWdodCBjYXVzZSBhIGNvbmZsaWN0IHdpdGggb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcz8gSSBuZWVkIHRvIGJlIHN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgY29ycmVjdCBhbmQgdXAtdG8tZGF0ZSB3aXRoIHRoaXMgdXBkYXRlIG9yIGNoZWNrLWluLiBUaGUgZ29hbCBpcyBhIGNsZWFuLCBzdGFibGUgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZHNhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIE5FVF9EU0FcbiAgIDQ6XHRcdHRyaXN0YXRlIFwmIzM0O0Rpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmVcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG4gICA2Olx0XHRkZXBlbmRzIG9uIEhTUiB8fCBIU1I9blxuICAgNzpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRERVZJQ0VTXG4gICA4Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gICA5Olx0XHRzZWxlY3QgTkVUX1NXSVRDSERFVlxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxMjpcdFx0aW1wbHkgTkVUX1NFTEZURVNUU1xuICAxMzpcdFx0aGVscFxuICAxNDpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIGhhcmR3YXJlIHN3aXRjaGVzIHN1cHBvcnRlZFxuICAxNTpcdFx0ICBieSB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZS5cbiAgMTY6XHRcbiAgMTc6XHRpZiBORVRfRFNBXG4gIDE4Olx0XG4gIDE5Olx0IyBEcml2ZXJzIG11c3Qgc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSB0YWdnaW5nIGZvcm1hdChzKVxuICAyMDpcdFxuICAyMTpcdGNvbmZpZyBORVRfRFNBX1RBR19OT05FXG4gIDIyOlx0XHR0cmlzdGF0ZSBcJiMzNDtOby1vcCB0YWcgZHJpdmVyXCYjMzQ7XG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFNheSBZIG9yIE0gaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHN3aXRjaGVzIHdoaWNoIGRvbiYjMzk7dCB0YWdcbiAgMjU6XHRcdCAgZnJhbWVzIG92ZXIgdGhlIENQVSBwb3J0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM1NgoJCQkJCQkJb3V0cHV0OiAxODIKCQkJCQkJCXRob3VnaHRzOiA2MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBOZXR3b3JraW5nIFBIWSBMYXllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0byBhc3Nlc3MuIEZpcnN0LCBJJiMzOTttIG5vdGluZyB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zOiBgUEhZTElCYCwgYFBIWUxJTktgLCBgVVNCX05FVF9BWDg4MTdYYCwgYFVTQl9MQU43OFhYYCwgYW5kIGBORVRfRFNBYC4gSSYjMzk7dmUgbWFkZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIHRob3NlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZm9ybWF0IHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJyYXkgY29ycmVjdGx5LCB3aXRob3V0IHRoYXQgcGVza3kgJiMzNDtDT05GSUdfJiMzNDsgcHJlZml4LCBzbyBpdCYjMzk7cyBqdXN0IHRoZSBwbGFpbiBzeW1ib2wgbmFtZXMuCgpOb3csIGlzIHRoaXMgZXZlbiB3b3J0aCBhIGRlZXAgZGl2ZT8gQWJzb2x1dGVseSEgVGhpcyBwYXRjaCBpcyBmaXhpbmcgc29tZSBwcmV0dHkgY3JpdGljYWwgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIHdpdGhpbiB0aGUgUEhZIGxheWVyLiBTcGVjaWZpY2FsbHksIGl0IHRvdWNoZXMgYHBoeWxpYmAgKGBwaHlfZGV2aWNlLmNgKSBhbmQgYHBoeWxpbmtgIChgcGh5bGluay5jYCkuIFRoZSBmaXggYWRkcmVzc2VzOgoKMS4gIEVycm9yIGhhbmRsaW5nIGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYDogSXQgZW5zdXJlcyB0aGF0IGBwaHlkZXYtJmd0O2lycWAgaXMgcmVzdG9yZWQgY29ycmVjdGx5IHdoZW4gYSBnZW5lcmljIFBIWSBkcml2ZXIgaXMgdW5ib3VuZCwgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBkZXRhaWwgZm9yIHN0YWJpbGl0eS4KMi4gIEVycm9yIHBhdGggaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgOiBUaGlzIHBhdGNoIGlzIG1ha2luZyBzdXJlIHRoZSBgcGwtJmd0O3BoeWRldmAgc3RhdGUgaXMgcHJvcGVybHkgY2xlYXJlZCB1c2luZyBgcGh5bGlua19jbGVhcl9waHlkZXZgIGR1cmluZyBmYWlsdXJlIHRvIHByZXZlbnQgZGFuZ2xpbmcgb3IgaW5jb25zaXN0ZW50IHBvaW50ZXJzIG9uIHN1YnNlcXVlbnQgYXR0YWNobWVudCBhdHRlbXB0cyBvciBkaXNjb25uZWN0cy4KClRoaXMgaXMgY29yZSBuZXR3b3JraW5nIHN0dWZmIOKAkyBQSFkgbGF5ZXIgc3RhdGUgbWFuYWdlbWVudCwgaG93IGVycm9ycyBhcmUgaGFuZGxlZCBkdXJpbmcgUEhZIGF0dGFjaC9kZXRhY2gvYnJpbmd1cCwgYW5kIHVsdGltYXRlbHksIG5ldHdvcmsgZGV2aWNlIHNldHVwIGFuZCB0ZWFyZG93bi4gVGhpcyBoYXMgdGhlIHBvdGVudGlhbCB0byBjYXVzZSBzb21lIG5hc3R5IGludGVybWl0dGVudCBpc3N1ZXMgaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LgoKSSYjMzk7dmUgaWRlbnRpZmllZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgc28gSSYjMzk7bSBsaXN0aW5nIHRoZW0gb3V0OgoKKiAgIGBwaHlfYXR0YWNoX2RpcmVjdGAKKiAgIGBwaHlfZGV0YWNoYAoqICAgYHBoeWxpbmtfY29ubmVjdF9waHlgCiogICBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAKCkkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuCgpJJiMzOTt2ZSBjaGVja2VkIHRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIGNoYW5nZWQgb3IgYXJlIGNhbGxpbmcgdGhlIGNvZGUgdGhhdCB3YXMgY2hhbmdlZDoKCiogICBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAgaXMgc3RhdGljLgoqICAgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBpcyBzdGF0aWMuCiogICBgcGh5bGlua19icmluZ3VwX3BoeWAgaXMgc3RhdGljLgpUaGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgY2FsbGluZyB0aGVtOgoqICAgYHBoeV9hdHRhY2hfZGlyZWN0YAoqICAgYHBoeV9kZXRhY2hgCiogICBgcGh5bGlua19jb25uZWN0X3BoeWAKKiAgIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YAoqICAgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgCiogICBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgCgpPa2F5LCB0aGlzIGxpc3QgaXMgYWxsIEkgbmVlZC4gSSYjMzk7dmUgZ290IG15OgoKKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywgJiMzNDtwaHlfZGV0YWNoJiMzNDssICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7LCAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0O11gCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbJiMzNDtQSFlMSUImIzM0OywgJiMzNDtQSFlMSU5LJiMzNDssICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywgJiMzNDtORVRfRFNBJiMzNDtdYAoKSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4gVGhpcyBwYXRjaCBpcyBhYm91dCByb2J1c3RpZnlpbmcgdGhlIFBIWSBsYXllciwgcHJldmVudGluZyBwb3RlbnRpYWwgaXNzdWVzIHdpdGggb3JwaGFuZWQgcG9pbnRlcnMgYW5kIGludGVycnVwdCBoYW5kbGluZywgYW5kIGltcHJvdmluZyBlcnJvciBwYXRocyBkdXJpbmcgY3JpdGljYWwgUEhZIG9wZXJhdGlvbnMuIEkmIzM5O20gY2FsbGluZyBpdCBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BIWUxJTksmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O05FVF9EU0EmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfZGV0YWNoJiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19kaXNjb25uZWN0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBlcnJvciB1bndpbmRpbmcgaW4gUEhZTElCIGFuZCBQSFlMSU5LIHN1YnN5c3RlbXM6IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgc3RhdGUgdmlhIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IHdoZW4gcGh5bGlua19icmluZ3VwX3BoeSBmYWlscyBpbiBwaHlsaW5rLmMuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gRXRoZXJuZXQgUEhZIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtORVRfRFNBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgc3RhdGUgbWFuYWdlbWVudCBhbmQgZXJyb3IgdW53aW5kaW5nIGluIFBIWUxJQiBhbmQgUEhZTElOSyBzdWJzeXN0ZW1zOiByZXN0b3JpbmcgcGh5ZGV2LVx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIHVuYmluZC9hdHRhY2htZW50IGZhaWx1cmUgaW4gcGh5X2RldmljZS5jLCBhbmQgcHJvcGVybHkgY2xlYXJpbmcgcGwtXHUwMDNlcGh5ZGV2IHN0YXRlIHZpYSBwaHlsaW5rX2NsZWFyX3BoeWRldiB3aGVuIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMgaW4gcGh5bGluay5jLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIEV0aGVybmV0IFBIWSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIHRoZSBQSFkgYW5kIHBoeWxpbmsgc3Vic3lzdGVtcy4gU3BlY2lmaWNhbGx5LCBpdCByZXN0b3JlcyB0aGUgUEhZIElSUSBjb25maWd1cmF0aW9uIHVwb24gZGV0YWNobWVudC9lcnJvciBmb3IgZ2VuZXJpYyBQSFkgZHJpdmVycyBhbmQgZW5zdXJlcyB0aGF0IHBoeWxpbmsgc3RhdGUgaXMgcHJvcGVybHkgY2xlYXJlZCBpZiBwaHkgYnJpbmd1cCBmYWlscy5cblxuVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUga2VybmVsLWludGVybmFsIHBvaW50ZXJzLCBib29sZWFuIHN0YXRlIGZsYWdzLCBhbmQgbXV0ZXggbG9ja2luZy4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGRhdGEgdHJhbnNmZXJyZWQgdG8gdXNlciBzcGFjZSAobm8gY29weV90b191c2VyLCBuZXRsaW5rIG1lc3NhZ2VzLCBpb2N0bHMsIGV0Yy4pLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbG9ja2luZyBvciB1c2UtYWZ0ZXItZnJlZS9OVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBkZXRlY3RlZCBieSBMT0NLREVQIG9yIEtBU0FOLCBub3QgS01TQU4uIEhlbmNlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDFhZGNkM2NjMDM3NTc5ZGQ1ZTcxMTI1NTJlNTgwNGYwZjY5MWI1OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMjE6NTc6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li4yMGZjMjkzNTVmNjBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTE3MzQsNiAmIzQzOzE3MzQsMTcgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydikKIAlyZXR1cm4gcGh5ZHJ2LSZndDtjb25maWdfaW50ciAmYW1wOyZhbXA7IHBoeWRydi0mZ3Q7aGFuZGxlX2ludGVycnVwdDsKIH0KIAomIzQzOy8qIFVuZG8gdGhlIFBIWV9QT0xMIHRoYXQgcGh5X3Byb2JlKCkgc2V0cyB3aGVuIGEgZHJpdmVyIHdpdGhvdXQKJiM0MzsgKiBpbnRlcnJ1cHQgY2FsbGJhY2tzIGJpbmRzLiBUaGUgYmluZCBjeWNsZSBuZXZlciB3cml0ZXMgYnVzLSZndDtpcnFbXSwKJiM0MzsgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFkKJiM0MzsgKiBjYXJyaWVzIGRpZCBub3QgY29tZSBmcm9tIHRoZSBiaW5kIGFuZCBtdXN0IHN0YW5kLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2lycSA9PSBQSFlfUE9MTCkKJiM0MzsJCXBoeWRldi0mZ3Q7aXJxID0gcGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7aXJxW3BoeWRldi0mZ3Q7bWRpby5hZGRyXTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXIKICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaApAQCAtMTg5Niw2ICYjNDM7MTkwNyw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCiBlcnJvcl9tb2R1bGVfcHV0OgogCW1vZHVsZV9wdXQoZC0mZ3Q7ZHJpdmVyLSZndDtvd25lcik7CiYjNDM7CXBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTsKIAlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwogCWQtJmd0O2RyaXZlciA9IE5VTEw7CiBlcnJvcl9wdXRfZGV2aWNlOgpAQCAtMTk2NSw2ICYjNDM7MTk3Nyw3IEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCSAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZAogCSAqLwogCWlmIChwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4pIHsKJiM0MzsJCXBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTsKIAkJZGV2aWNlX3JlbGVhc2VfZHJpdmVyKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldik7CiAJCXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbiA9IDA7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggNWI4ZTk1NjkwMmZiNS4uYTU1ZTRhNjQwMjhmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCXJldHVybiBwaHlsaW5rX3ZhbGlkYXRlKHBsLCBzdXBwb3J0ZWQsIHN0YXRlKTsKIH0KIAomIzQzOy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLSZndDtwaHlkZXZfbXV0ZXguICovCiYjNDM7c3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KQomIzQzO3sKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwomIzQzOwlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKJiM0MzsJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7CiYjNDM7CXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCQkJICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7CkBAIC0yMTk3LDYgJiM0MzsyMjA5LDEyIEBAIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJaWYgKHJldCA9PSAwICZhbXA7JmFtcDsgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKQogCQlwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTsKIAomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjM0NywxNSAmIzQzOzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKQogCiAJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwogCXBoeSA9IHBsLSZndDtwaHlkZXY7Ci0JaWYgKHBoeSkgewotCQltdXRleF9sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7Ci0JCXBsLSZndDtwaHlkZXYgPSBOVUxMOwotCQlwbC0mZ3Q7cGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTsKLQkJcGwtJmd0O21hY190eF9jbGtfc3RvcCA9IGZhbHNlOwotCQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQltdXRleF91bmxvY2soJmFtcDtwaHktJmd0O2xvY2spOwotCX0KJiM0MzsJaWYgKHBoeSkKJiM0MzsJCXBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpOwogCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwogCiAJaWYgKHBoeSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBLTVNBTiBGdXp6aW5nIE5lZWRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIEtNU0FOIGZ1enppbmcgaXMgbmVjZXNzYXJ5LiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyB0d28gZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L2AgZGlyZWN0b3J5OiBgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2AuIFRoYXQmIzM5O3MgYWxyZWFkeSB0ZWxsaW5nLiBUaGUgbmV0d29yayBQSFkgbGF5ZXIgaXMgb2Z0ZW4gYSBzb3VyY2Ugb2Ygc3VidGxlIGlzc3Vlcy4KCkxvb2tpbmcgYXQgYHBoeV9kZXZpY2UuY2AsIHRoZSBrZXkgYWRkaXRpb24gaXMgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoKWAuIFRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgcmVzdG9yaW5nIGFuIGludGVycnVwdCByZXF1ZXN0IGxpbmUsIHNwZWNpZmljYWxseSBmcm9tIHRoZSBNRElPIGJ1cyYjMzk7cyBJUlEgYXJyYXkgaWYgdGhlIGN1cnJlbnQgYHBoeWRldi0mZ3Q7aXJxYCBpcyBgUEhZX1BPTExgLiBJbnRlcmVzdGluZy4gSXQmIzM5O3MgY2FsbGVkIGluIGVycm9yIHBhdGhzIG9mIGBwaHlfYXR0YWNoX2RpcmVjdCgpYCBhbmQgYHBoeV9kZXRhY2goKWAuIFRoaXMgc3VnZ2VzdHMgaXQmIzM5O3MgYSBjbGVhbnVwIG9yIHJlY292ZXJ5IGZ1bmN0aW9uLCBoYW5kbGluZyBjYXNlcyB3aGVyZSBpbml0aWFsIGludGVycnVwdCBzZXR1cCBtaWdodCBmYWlsIG9yIG5lZWRzIHRvIGJlIHJldmVydGVkLiBUaGVzZSB0eXBlcyBvZiBlcnJvciBwYXRocyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgS01TQU4gY2hlY2tzLCBiZWNhdXNlIG9mdGVuIHlvdSYjMzk7bGwgYmUgZXhpdGluZyBhbiBlcnJvciBwYXRoLCBidXQgaGF2ZW4mIzM5O3QgYWN0dWFsbHkgZGVhbGxvY2F0ZWQsIG9yIGhhdmVuJiMzOTt0IHByb3Blcmx5IHJlc2V0IHNvbWV0aGluZy4gVGhhdCYjMzk7cyBhbHdheXMgYSBnb29kIHBsYWNlIHRvIGxvb2sgZm9yIHN1YnRsZSBtZW1vcnkgY29ycnVwdGlvbi4KCk5leHQsIGBwaHlsaW5rLmNgIGFkZHMgYSBoZWxwZXIgZnVuY3Rpb24sIGBwaHlsaW5rX2NsZWFyX3BoeWRldigpYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyB1c2VkIGluIHRoZSBlcnJvciBwYXRoIG9mIGBwaHlsaW5rX2JyaW5ndXBfcGh5KClgIOKAkyB3aGljaCBpcyBhbm90aGVyIHJlZCBmbGFnLCBhIHNldHVwIGZ1bmN0aW9uIHdpdGggYSBzcGVjaWZpYyBlcnJvciBwYXRoLiBUaGlzIHN1Z2dlc3RzIHRoYXQgcmVzb3VyY2VzIG1pZ2h0IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjbGVhcmVkIGluIHRoZSBjYXNlIG9mIGZhaWx1cmUsIGFuZCB0aGUgYHBoeWxpbmtfZGlzY29ubmVjdF9waHkoKWAgZnVuY3Rpb24gaXMgcmVmYWN0b3JlZCB0byB1c2UgaXQuIFRoaXMgY291bGQgbWVhbiB3ZSYjMzk7cmUgc2VlaW5nIGltcHJvdmVkIHJlc291cmNlIG1hbmFnZW1lbnQsIGJ1dCBpdCBjb3VsZCBhbHNvIGhpZGUgYSBzdWJ0bGUgbWVtb3J5IGlzc3VlLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJydXB0IG1hbmFnZW1lbnQgYW5kIFBIWSBkZXZpY2Ugc2V0dXAvdGVhcmRvd24gaW4gdGhlc2UgYXJlYXMsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzICp5ZXMqLCB3ZSBtaWdodCBuZWVkIEtNU0FOIGZ1enppbmcgaGVyZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSB0byBjb25maXJtIG15IGluaXRpYWwgaW1wcmVzc2lvbi4gSSYjMzk7bGwgbmVlZCB0byB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSBjb250ZXh0IGFyb3VuZCB0aGVzZSBuZXcgZnVuY3Rpb25zIGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYm90aCBmaWxlcyB0byBmdWxseSBhc3Nlc3MgdGhlIHJpc2suIEkgbmVlZCB0byBjaGVjayBob3cgdGhlIFBIWSBkZXZpY2VzIGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjayBhbmQgaG93IHRoZSBpbnRlcnJ1cHQgbG9naWMgaXMgaW1wbGVtZW50ZWQsIG1ha2luZyBzdXJlIHRoYXQgcmVzb3VyY2VzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCwgcmVsZWFzZWQsIGFuZCB0aGF0IHJhY2UgY29uZGl0aW9ucyBhcmUgYXZvaWRlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTczMDpcdH1cbjE3MzE6XHRcbjE3MzI6XHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuMTczMzpcdHtcbjE3MzQ6XHRcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuMTczNTpcdH1cbjE3MzY6XHRcbjE3Mzc6XHQvKiBVbmRvIHRoZSBQSFlfUE9MTCB0aGF0IHBoeV9wcm9iZSgpIHNldHMgd2hlbiBhIGRyaXZlciB3aXRob3V0XG4xNzM4Olx0ICogaW50ZXJydXB0IGNhbGxiYWNrcyBiaW5kcy4gVGhlIGJpbmQgY3ljbGUgbmV2ZXIgd3JpdGVzIGJ1cy1cdTAwM2VpcnFbXSxcbjE3Mzk6XHQgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFlcbjE3NDA6XHQgKiBjYXJyaWVzIGRpZCBub3QgY29tZSBmcm9tIHRoZSBiaW5kIGFuZCBtdXN0IHN0YW5kLlxuMTc0MTpcdCAqL1xuMTc0MjpcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE3NDM6XHR7XG4xNzQ0Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbjE3NDU6XHRcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4xNzQ2Olx0fVxuMTc0NzpcdFxuMTc0ODpcdC8qKlxuMTc0OTpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTA6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTE6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzUyOlx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1MzpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU0Olx0ICpcbjE3NTU6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTY6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc1NzpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzU4Olx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc1OTpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYwOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2MTpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2MjpcdCAqL1xuMTc2MzpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuMTc2NDpcdFx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4xNzY1Olx0e1xuMTc2NjpcdFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbjE3Njc6XHRcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4xNzY4Olx0XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbjE3Njk6XHRcdGludCBlcnI7XG4xNzcwOlx0XG4xNzcxOlx0XHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXG4xNzcyOlx0XHQgKiB3aWxsIGhhdmUgYnVzLVx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcbjE3NzM6XHRcdCAqIG91ciBvd24gbW9kdWxlLVx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cbjE3NzQ6XHRcdCAqIHVubG9hZCBsYXRlciBvbi5cbjE3NzU6XHRcdCAqL1xuMTc3NjpcdFx0aWYgKGRldilcbjE3Nzc6XHRcdFx0bmRldl9vd25lciA9IGRldi1cdTAwM2VkZXYucGFyZW50LVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcjtcbjE3Nzg6XHRcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lciBcdTAwMjZcdTAwMjYgIXRyeV9tb2R1bGVfZ2V0KGJ1cy1cdTAwM2Vvd25lcikpIHtcbjE3Nzk6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O2ZhaWxlZCB0byBnZXQgdGhlIGJ1cyBtb2R1bGVcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODIzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRGlnZ2luZyBpbnRvIFBIWSBMaW5rIE1hbmFnZW1lbnQqKgoKQWxyaWdodCwgSSYjMzk7bSBhbHJlYWR5IGluIHRoZSB0aGljayBvZiB0aGlzIFBIWSBkcml2ZXIgaXNzdWUsIGJ1dCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByYWJiaXQgaG9sZSwgSSBzaG91bGQgY2lyY2xlIGJhY2sgYW5kIHZlcmlmeSBzb21ldGhpbmcgY3J1Y2lhbC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBJJiMzOTt2ZSBhY2NvdW50ZWQgZm9yIGV2ZXJ5IHBvdGVudGlhbCBpbnRlcmFjdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBQSFkgbGluayBpcyBiZWluZyBoYW5kbGVkIHByb3Blcmx5LiBUaGVzZSBhcmUgZnVuZGFtZW50YWwgZm9yIHRoZSBkcml2ZXIsIGFuZCBJIGNhbiYjMzk7dCBhZmZvcmQgYW55IG92ZXJzaWdodCBoZXJlLiBJIGtub3cgSSYjMzk7dmUgYmVlbiBmb2N1c2VkIG9uIFgsIFksIGFuZCBaLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29yZSBsaW5rIGVzdGFibGlzaG1lbnQgYW5kIHRha2Vkb3duIGFyZSByb2NrLXNvbGlkLCBvciBldmVyeXRoaW5nIGRvd25zdHJlYW0gaXMgZ29pbmcgdG8gYnJlYWsuIEl04oCZcyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaDsgYSBsaXR0bGUgZXh0cmEgdGltZSBub3cgY291bGQgc2F2ZSBhIGJpZyBoZWFkYWNoZSBsYXRlci4gSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgYnJpbmcgdXAgYW5kIGRpc2Nvbm5lY3Qgb3BlcmF0aW9ucyBpbiByZWxhdGlvbiB0byB0aGUgd2lkZXIgcHJvYmxlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjE5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTkwOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZXN1cHBvcnRlZCxcbjIxOTE6XHRcdFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZWFkdmVydGlzaW5nKTtcbjIxOTI6XHRcbjIxOTM6XHRcdGlmIChwbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX21hbmFnZWRfcG0pXG4yMTk0Olx0XHRcdHBoeS1cdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XG4yMTk1Olx0XG4yMTk2Olx0XHQvKiBBbGxvdyB0aGUgTUFDIHRvIHN0b3AgaXRzIGNsb2NrIGlmIHRoZSBQSFkgaGFzIHRoZSBjYXBhYmlsaXR5ICovXG4yMTk3Olx0XHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShwaHkpIFx1MDAzZSAwO1xuMjE5ODpcdFxuMjE5OTpcdFx0aWYgKHBsLVx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XG4yMjAwOlx0XHRcdC8qIEV4cGxpY2l0bHkgY29uZmlndXJlIHdoZXRoZXIgdGhlIFBIWSBpcyBhbGxvd2VkIHRvIHN0b3AgaXQmIzM5O3NcbjIyMDE6XHRcdFx0ICogcmVjZWl2ZSBjbG9jay5cbjIyMDI6XHRcdFx0ICovXG4yMjAzOlx0XHRcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXG4yMjA0Olx0XHRcdFx0XHRcdCAgICBwbC1cdTAwM2Vjb25maWctXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XG4yMjA1Olx0XHRcdGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXG4yMjA2Olx0XHRcdFx0cmV0ID0gMDtcbjIyMDc6XHRcdH1cbjIyMDg6XHRcbjIyMDk6XHRcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuMjIxMDpcdFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbjIyMTE6XHRcbjIyMTI6XHRcdGlmIChyZXQpIHtcbjIyMTM6XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNDpcdFx0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbjIyMTU6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMjE2Olx0XHR9XG4yMjE3Olx0XG4yMjE4Olx0XHRyZXR1cm4gcmV0O1xuMjIxOTpcdH1cbjIyMjA6XHRcbjIyMjE6XHRzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4yMjIyOlx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbjIyMjM6XHR7XG4yMjI0Olx0XHR1MzIgZmxhZ3MgPSAwO1xuMjIyNTpcdFxuMjIyNjpcdFx0aWYgKFdBUk5fT04ocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKVxuMjIyNzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjIyMjg6XHRcbjIyMjk6XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYpXG4yMjMwOlx0XHRcdHJldHVybiAtRUJVU1k7XG4yMjMxOlx0XG4yMjMyOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19yZXF1aXJlc19yeGMpXG4yMjMzOlx0XHRcdGZsYWdzIHw9IFBIWV9GX1JYQ19BTFdBWVNfT047XG4yMjM0Olx0XG4yMjM1Olx0XHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xuMjIzNjpcdH1cbjIyMzc6XHRcbjIyMzg6XHQvKipcbjIyMzk6XHQgKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODcKCQkJCQkJCW91dHB1dDogMTg3CgkJCQkJCQl0aG91Z2h0czogNDA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBIWS9QaHlsaW5rIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHBvdGVudGlhbCBJUlEgcmVzdG9yYXRpb24gaXNzdWVzIHdpdGggZ2VuZXJpYyBQSFkgZHJpdmVycy4gSXQgYXBwZWFycyB0aGF0IHdoZW4gYSBnZW5lcmljIFBIWSBkcml2ZXIgaW5pdGlhbGx5IGJpbmRzLCBpdCBtaWdodCBzZXQgdGhlIElSUSB0byBgUEhZX1BPTExgLiBJZiB0aGUgUEhZIGZhaWxzIHRvIGF0dGFjaCBvciBpcyBkZXRhY2hlZCwgdGhlIGNvZGUgbm93IGVuc3VyZXMgdGhhdCB0aGUgb3JpZ2luYWwgSVJRIChhcyBkZWZpbmVkIGJ5IHRoZSBNRElPIGJ1cykgaXMgcmVzdG9yZWQuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2Qgc2FmZWd1YXJkIHRvIHByZXZlbnQgYSBsYXRlciwgbW9yZSBzcGVjaWZpYyBkcml2ZXIgZnJvbSBpbmhlcml0aW5nIGFuIGluY29ycmVjdCBwb2xsaW5nIGNvbmZpZ3VyYXRpb24uIEl0IGFsc28gdG91Y2hlcyBgcGh5bGlua19icmluZ3VwX3BoeWAgdG8gaGFuZGxlIGVycm9ycyBkdXJpbmcgdGhlIGJyaW5ndXAgcHJvY2VzcywgZW5zdXJpbmcgcHJvcGVyIGNsZWFudXAgKHNldHRpbmcgYHBsLSZndDtwaHlkZXZgIHRvIGBOVUxMYCBhbmQgY2xlYXJpbmcgZmxhZ3MpIHdoZW4gYSBmYWlsdXJlIG9jY3Vycy4gVGhlIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCBmdW5jdGlvbiBpcyBhbHNvIHJlZmFjdG9yZWQgdG8gdXNlIHRoaXMgbmV3IGhlbHBlci4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBmb3IgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBvZiBjb3Vyc2UuIEhvd2V2ZXIsIGFmdGVyIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgSSYjMzk7bSBub3Qgc2VlaW5nIGFueXRoaW5nIHRoYXQgc3RhbmRzIG91dC4gVGhpcyBpcyBnb29kOiBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyB1c2VyLXNwYWNlIGludGVyYWN0aW9ucywgbm8gbW9kaWZpZWQgY29weSBvcGVyYXRpb25zLCBhbmQgbm8gZXhwb3NlZCB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlc2UgY2hhbmdlcyBhcmUgY2xlYXJseSBmb2N1c2VkIG9uIGVycm9yIGhhbmRsaW5nLCBjbGVhbnVwIHByb2NlZHVyZXMsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUEhZL3BoeWxpbmsgc3ViLXN5c3RlbS4KCkdpdmVuIHRoYXQgaXTigJlzIHN0cmljdGx5IGVycm9yIGhhbmRsaW5nLCBjbGVhbnVwLCBhbmQgbG9ja2luZy1yZWxhdGVkIGNoYW5nZXMsIHRoZSBtb3N0IGxpa2VseSByaXNrcyB3b3VsZCBiZSByYWNlIGNvbmRpdGlvbnMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgcHJvYmxlbXMsIGFuZCBwb3RlbnRpYWxseSB1c2UtYWZ0ZXItZnJlZSBidWdzLiBCdXQsIHRoYXQmIzM5O3Mgd2hhdCB0b29scyBsaWtlIEtBU0FOIGFuZCBMT0NLREVQIGFyZSBmb3IsIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzIHNob3VsZCBjYXRjaCB0aGUgcmVzdC4gVGhlcmVmb3JlLCBJIGJlbGlldmUgdGhhdCBgTmVlZHNLTVNBTmAgc2hvdWxkIGluZGVlZCBiZSBzZXQgdG8gYGZhbHNlYC4gVGltZSB0byBtb3ZlIG9udG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIHRoZSBQSFkgYW5kIHBoeWxpbmsgc3Vic3lzdGVtcy4gU3BlY2lmaWNhbGx5LCBpdCByZXN0b3JlcyB0aGUgUEhZIElSUSBjb25maWd1cmF0aW9uIHVwb24gZGV0YWNobWVudC9lcnJvciBmb3IgZ2VuZXJpYyBQSFkgZHJpdmVycyBhbmQgZW5zdXJlcyB0aGF0IHBoeWxpbmsgc3RhdGUgaXMgcHJvcGVybHkgY2xlYXJlZCBpZiBwaHkgYnJpbmd1cCBmYWlscy5cblxuVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUga2VybmVsLWludGVybmFsIHBvaW50ZXJzLCBib29sZWFuIHN0YXRlIGZsYWdzLCBhbmQgbXV0ZXggbG9ja2luZy4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGRhdGEgdHJhbnNmZXJyZWQgdG8gdXNlciBzcGFjZSAobm8gY29weV90b191c2VyLCBuZXRsaW5rIG1lc3NhZ2VzLCBpb2N0bHMsIGV0Yy4pLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbG9ja2luZyBvciB1c2UtYWZ0ZXItZnJlZS9OVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBkZXRlY3RlZCBieSBMT0NLREVQIG9yIEtBU0FOLCBub3QgS01TQU4uIEhlbmNlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiB0aGUgUEhZIGFuZCBwaHlsaW5rIHN1YnN5c3RlbXMuIFNwZWNpZmljYWxseSwgaXQgcmVzdG9yZXMgdGhlIFBIWSBJUlEgY29uZmlndXJhdGlvbiB1cG9uIGRldGFjaG1lbnQvZXJyb3IgZm9yIGdlbmVyaWMgUEhZIGRyaXZlcnMgYW5kIGVuc3VyZXMgdGhhdCBwaHlsaW5rIHN0YXRlIGlzIHByb3Blcmx5IGNsZWFyZWQgaWYgcGh5IGJyaW5ndXAgZmFpbHMuXG5cblRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIGtlcm5lbC1pbnRlcm5hbCBwb2ludGVycywgYm9vbGVhbiBzdGF0ZSBmbGFncywgYW5kIG11dGV4IGxvY2tpbmcuIFRoZXJlIGFyZSBubyBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBkYXRhIHRyYW5zZmVycmVkIHRvIHVzZXIgc3BhY2UgKG5vIGNvcHlfdG9fdXNlciwgbmV0bGluayBtZXNzYWdlcywgaW9jdGxzLCBldGMuKS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIGxvY2tpbmcgb3IgdXNlLWFmdGVyLWZyZWUvTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbm90IEtNU0FOLiBIZW5jZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjM4LjY0NjIxMzIxNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMTg2MDY2Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUEhZTElOS1wiLFxuICAgIFwiVVNCX0xBTjc4WFhcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiLFxuICAgIFwiTkVUX0RTQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCIsXG4gICAgXCJwaHlfZGV0YWNoXCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gdGhlIFBIWSBhbmQgcGh5bGluayBzdWJzeXN0ZW1zLiBTcGVjaWZpY2FsbHksIGl0IHJlc3RvcmVzIHRoZSBQSFkgSVJRIGNvbmZpZ3VyYXRpb24gdXBvbiBkZXRhY2htZW50L2Vycm9yIGZvciBnZW5lcmljIFBIWSBkcml2ZXJzIGFuZCBlbnN1cmVzIHRoYXQgcGh5bGluayBzdGF0ZSBpcyBwcm9wZXJseSBjbGVhcmVkIGlmIHBoeSBicmluZ3VwIGZhaWxzLlxcblxcblRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIGtlcm5lbC1pbnRlcm5hbCBwb2ludGVycywgYm9vbGVhbiBzdGF0ZSBmbGFncywgYW5kIG11dGV4IGxvY2tpbmcuIFRoZXJlIGFyZSBubyBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBkYXRhIHRyYW5zZmVycmVkIHRvIHVzZXIgc3BhY2UgKG5vIGNvcHlfdG9fdXNlciwgbmV0bGluayBtZXNzYWdlcywgaW9jdGxzLCBldGMuKS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIGxvY2tpbmcgb3IgdXNlLWFmdGVyLWZyZWUvTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbm90IEtNU0FOLiBIZW5jZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgc3RhdGUgbWFuYWdlbWVudCBhbmQgZXJyb3IgdW53aW5kaW5nIGluIFBIWUxJQiBhbmQgUEhZTElOSyBzdWJzeXN0ZW1zOiByZXN0b3JpbmcgcGh5ZGV2LVxcdTAwM2VpcnEgdXBvbiBnZW5lcmljIFBIWSB1bmJpbmQvYXR0YWNobWVudCBmYWlsdXJlIGluIHBoeV9kZXZpY2UuYywgYW5kIHByb3Blcmx5IGNsZWFyaW5nIHBsLVxcdTAwM2VwaHlkZXYgc3RhdGUgdmlhIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IHdoZW4gcGh5bGlua19icmluZ3VwX3BoeSBmYWlscyBpbiBwaHlsaW5rLmMuIFRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gRXRoZXJuZXQgUEhZIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjM4LjY0NjIxOTQxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkyMDI0MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDFhZGNkM2NjMDM3NTc5ZGQ1ZTcxMTI1NTJlNTgwNGYwZjY5MWI1OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDIxOjU3OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uMjBmYzI5MzU1ZjYwYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzM0LDYgKzE3MzQsMTcgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4gXFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbiB9XFxuIFxcbisvKiBVbmRvIHRoZSBQSFlfUE9MTCB0aGF0IHBoeV9wcm9iZSgpIHNldHMgd2hlbiBhIGRyaXZlciB3aXRob3V0XFxuKyAqIGludGVycnVwdCBjYWxsYmFja3MgYmluZHMuIFRoZSBiaW5kIGN5Y2xlIG5ldmVyIHdyaXRlcyBidXMtXFx1MDAzZWlycVtdLFxcbisgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFlcXG4rICogY2FycmllcyBkaWQgbm90IGNvbWUgZnJvbSB0aGUgYmluZCBhbmQgbXVzdCBzdGFuZC5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VpcnEgPT0gUEhZX1BPTEwpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlaXJxID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlaXJxW3BoeWRldi1cXHUwMDNlbWRpby5hZGRyXTtcXG4rfVxcbitcXG4gLyoqXFxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuQEAgLTE4OTYsNiArMTkwNyw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbiBcXG4gZXJyb3JfbW9kdWxlX3B1dDpcXG4gXFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4rXFx0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xcbiBcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbiBcXHRkLVxcdTAwM2Vkcml2ZXIgPSBOVUxMO1xcbiBlcnJvcl9wdXRfZGV2aWNlOlxcbkBAIC0xOTY1LDYgKzE5NzcsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXFxuIFxcdCAqL1xcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XFxuK1xcdFxcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcXG4gXFx0XFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7XFxuIH1cXG4gXFxuKy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXguICovXFxuK3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRwbC1cXHUwMDNlcGh5ZGV2ID0gTlVMTDtcXG4rXFx0cGwtXFx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XFxuK1xcdHBsLVxcdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuIFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRpZiAocmV0ID09IDAgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxcbiBcXHRcXHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcXG4gXFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuK1xcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yMzQ3LDE1ICsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbiBcXHRwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbi1cXHRpZiAocGh5KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbi1cXHRcXHRwbC1cXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcXG4tXFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4tXFx0fVxcbitcXHRpZiAocGh5KVxcbitcXHRcXHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4gXFxuIFxcdGlmIChwaHkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MzkuMDM5MjY0MDY4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3MjY0ODMyODUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBIWUxJTktcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIk5FVF9EU0FcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiLFxuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHN0YXRlIG1hbmFnZW1lbnQgYW5kIGVycm9yIHVud2luZGluZyBpbiBQSFlMSUIgYW5kIFBIWUxJTksgc3Vic3lzdGVtczogcmVzdG9yaW5nIHBoeWRldi1cXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cXHUwMDNlcGh5ZGV2IHN0YXRlIHZpYSBwaHlsaW5rX2NsZWFyX3BoeWRldiB3aGVuIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMgaW4gcGh5bGluay5jLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIEV0aGVybmV0IFBIWSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMWFkY2QzY2MwMzc1NzlkZDVlNzExMjU1MmU1ODA0ZjBmNjkxYjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li4yMGZjMjkzNTVmNjBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MzQsNiArMTczNCwxNyBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIFVuZG8gdGhlIFBIWV9QT0xMIHRoYXQgcGh5X3Byb2JlKCkgc2V0cyB3aGVuIGEgZHJpdmVyIHdpdGhvdXRcbisgKiBpbnRlcnJ1cHQgY2FsbGJhY2tzIGJpbmRzLiBUaGUgYmluZCBjeWNsZSBuZXZlciB3cml0ZXMgYnVzLVx1MDAzZWlycVtdLFxuKyAqIHNvIHRoZSB0YWJsZSBzdGlsbCBob2xkcyB0aGUgcHJlLWJpbmQgdmFsdWU7IGFueXRoaW5nIGVsc2UgdGhlIFBIWVxuKyAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuXG4rICovXG4rc3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGlmIChwaHlkZXYtXHUwMDNlaXJxID09IFBIWV9QT0xMKVxuK1x0XHRwaHlkZXYtXHUwMDNlaXJxID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZWlycVtwaHlkZXYtXHUwMDNlbWRpby5hZGRyXTtcbit9XG4rXG4gLyoqXG4gICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuQEAgLTE4OTYsNiArMTkwNyw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIGVycm9yX21vZHVsZV9wdXQ6XG4gXHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdGQtXHUwMDNlZHJpdmVyID0gTlVMTDtcbiBlcnJvcl9wdXRfZGV2aWNlOlxuQEAgLTE5NjUsNiArMTk3Nyw3IEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4gXHQgKi9cbiBcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuK1x0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4gXHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuIFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbisvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC1cdTAwM2VwaHlkZXZfbXV0ZXguICovXG4rc3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuK1x0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbitcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aWYgKHJldCA9PSAwIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXG4gXHRcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xuIFxuK1x0aWYgKHJldCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdH1cbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIzNDcsMTUgKzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFx0cGh5ID0gcGwtXHUwMDNlcGh5ZGV2O1xuLVx0aWYgKHBoeSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4tXHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0fVxuK1x0aWYgKHBoeSlcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcbiBcdGlmIChwaHkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjM5LjAzOTI2NTc2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyNDI4ODQ2MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyB0aGlzIHBhdGNoIGZvciBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgYmVpbmcgaW50cm9kdWNlZCBhbmQgd2hlcmUgdGhleSBhcmUgaGFwcGVuaW5nLiBUaGVuLCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYW5kIHRhcmdldCBzeW1ib2xzIGZvciBlZmZlY3RpdmUgZnV6emluZy5cblxuTG9va2luZyBhdCB0aGUgcGF0Y2ggaXRzZWxmLCBpdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBTcGVjaWZpY2FsbHksIEkgc2VlOlxuXG4qICAgSW4gYHBoeV9kZXZpY2UuY2AsIHRoZXJlJ3MgYSBtb2RpZmljYXRpb24gdG8gYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnFgLiBJdCBzZWVtcyB0byBiZSByZXN0b3JpbmcgdGhlIGludGVycnVwdCBjb25maWd1cmF0aW9uIChgcGh5ZGV2LVx1MDAzZWlycWApIHVuZGVyIHNwZWNpZmljIGVycm9yIGNvbmRpdGlvbnMgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgYHBoeV9kZXRhY2hgLiBUaGlzIGlzIGEgY2FuZGlkYXRlLCBidXQgdGhlIGNvbmRpdGlvbnMgYXJlIGEgYml0IHNwZWNpZmljLlxuKiAgIEluIGBwaHlsaW5rLmNgLCB3ZSd2ZSBnb3QgYSBuZXcgaGVscGVyIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgZXh0cmFjdGVkIGZyb20gYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLiBBbmQsIHRoaXMgaGVscGVyIGlzIHVzZWQgZm9yIGVycm9yIGhhbmRsaW5nIGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YC4gVGhpcyBzZWVtcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IGludm9sdmVzIGNsZWFyaW5nIHRoZSBwaHlkZXYsIGFuZCBlcnJvciBjb25kaXRpb25zIGFyZSBwcmltZSBmdXp6aW5nIHRhcmdldHMuXG5cbk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVzZSBQSFkgZGV2aWNlcyBhbmQgcGh5bGluayBzdHJ1Y3R1cmVzIGNhbiBiZSBtYW5pcHVsYXRlZCwgcmVhY2hlZCwgb3IgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZSBvciB0aHJvdWdoIG5ldHdvcmsgaW50ZXJhY3Rpb25zLCBvciBpZiB0aGV5IGFyZSBwdXJlbHkgaW50ZXJuYWwga2VybmVsIGNvbXBvbmVudHMuIENhbiBJIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocyB0aHJvdWdoIG5ldHdvcmsgbmV0ZGV2aWNlcywgdmlydHVhbCBkZXZpY2VzLCBvciBvdGhlciB1c2VyLXNwYWNlIG1lY2hhbmlzbXM/IEkgbmVlZCB0byBjaGVjayBob3cgdGhlc2UgbW9kdWxlcyBhcmUgdXNlZC5cblxuU28sIGxldCBtZSBjaGVjayB0aGUgYEtjb25maWdgIGluIGBkcml2ZXJzL25ldC9waHlgIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdW5kZXJzdGFuZGluZyBvZiB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgdG8gcmVhY2ggdGhlc2UgcGFydHMgb2YgdGhlIGNvZGUuIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbGVycyB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGVhc3kgd2F5IHRvIHJlYWNoIHRoZW0uIFRoaXMgaXMgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHRvIGNvbnN0cnVjdCBhIGdvb2QgZnV6emluZyBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjUxLjQ2ODExNDQ3OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMxOTI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR18uKlBIWS4qXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MTY9bGlicGh5LSQoQ09ORklHX09QRU5fQUxMSUFOQ0VfSEVMUEVSUykgKz0gb3Blbl9hbGxpYW5jZV9oZWxwZXJzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTctXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbWRpb19idXMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfUEhZTElOSylcXHRcXHQrPSBwaHlsaW5rLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1BIWUxJQilcXHRcXHQrPSBsaWJwaHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fZGV2cmVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX1BIWV9QQUNLQUdFKVxcdCs9IHBoeV9wYWNrYWdlLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMjMtXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpICs9IG1paV90aW1lc3RhbXBlci5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTI4PW9iai15XFx0XFx0XFx0XFx0Kz0gJChzZnAtb2JqLXkpICQoc2ZwLW9iai1tKVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yOS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX0FESU5fUEhZKVxcdFxcdCs9IGFkaW4ub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQURJTjExMDBfUEhZKVxcdCs9IGFkaW4xMTAwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0FESU4xMTQwX1BIWSlcXHQrPSBhZGluMTE0MC1waHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfQUlSX0FOODgwMV9QSFkpXFx0Kz0gYWlyX2FuODgwMS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19BSVJfRU44ODExSF9QSFkpICAgKz0gYWlyX2VuODgxMWgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQUlSX05FVF9QSFlMSUIpXFx0Kz0gYWlyX3BoeV9saWIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfQU1EX1BIWSlcXHRcXHQrPSBhbWQub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfQU1DQ19RVDIwMjVfUEhZKVxcdCs9IHF0MjAyNS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19BUVVBTlRJQV9QSFkpXFx0Kz0gYXF1YW50aWEvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19BUzIxWFhYX1BIWSlcXHQrPSBhczIxeHh4Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNDAtaWZkZWYgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQxOiAgb2JqLSQoQ09ORklHX0FYODg3OTZCX1BIWSlcXHQrPSBheDg4Nzk2Yl9ydXN0Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNDItZWxzZVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0MzogIG9iai0kKENPTkZJR19BWDg4Nzk2Ql9QSFkpXFx0Kz0gYXg4ODc5NmIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS00NC1lbmRpZlxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQkNNNTQxNDBfUEhZKVxcdCs9IGJjbTU0MTQwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX0JDTTYzWFhfUEhZKVxcdCs9IGJjbTYzeHgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfQkNNN1hYWF9QSFkpXFx0Kz0gYmNtN3h4eC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19CQ004NDg4MV9QSFkpXFx0Kz0gYmNtODQ4ODEub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfQkNNODdYWF9QSFkpXFx0Kz0gYmNtODd4eC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19CQ01fQ1lHTlVTX1BIWSlcXHQrPSBiY20tY3lnbnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZTElCKVxcdCs9IGJjbS1waHktbGliLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZUFRQKVxcdCs9IGJjbS1waHktcHRwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcXHQrPSBicm9hZGNvbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19DSUNBREFfUEhZKVxcdCs9IGNpY2FkYS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19DT1JUSU5BX1BIWSlcXHQrPSBjb3J0aW5hLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcXHQrPSBkYXA4MjExci5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU3Om9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcXHQrPSBkYXZpY29tLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVxcdCs9IGRwODM2NDAub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXFx0Kz0gZHA4MzgyMi5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcXHQrPSBkcDgzODQ4Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX0RQODM4NjdfUEhZKVxcdCs9IGRwODM4Njcub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2MjpvYmotJChDT05GSUdfRFA4Mzg2OV9QSFkpXFx0Kz0gZHA4Mzg2OS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19EUDgzVEM4MTFfUEhZKVxcdCs9IGRwODN0YzgxMS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19EUDgzVEQ1MTBfUEhZKVxcdCs9IGRwODN0ZDUxMC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19EUDgzVEc3MjBfUEhZKVxcdCs9IGRwODN0ZzcyMC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19GSVhFRF9QSFkpXFx0XFx0Kz0gZml4ZWRfcGh5Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Njc6b2JqLSQoQ09ORklHX0lDUExVU19QSFkpXFx0Kz0gaWNwbHVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Njg6b2JqLSQoQ09ORklHX0lOVEVMX1hXQVlfUEhZKVxcdCs9IGludGVsLXh3YXkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfTFNJX0VUMTAxMUNfUEhZKVxcdCs9IGV0MTAxMWMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfTFhUX1BIWSlcXHRcXHQrPSBseHQub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3MTpvYmotJChDT05GSUdfTUFSVkVMTF8xMEdfUEhZKVxcdCs9IG1hcnZlbGwxMGcub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfTUFSVkVMTF9QSFkpXFx0Kz0gbWFydmVsbC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjczOm9iai0kKENPTkZJR19NQVJWRUxMXzg4UTJYWFhfUEhZKVxcdCs9IG1hcnZlbGwtODhxMnh4eC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjc0Om9iai0kKENPTkZJR19NQVJWRUxMXzg4WDIyMjJfUEhZKVxcdCs9IG1hcnZlbGwtODh4MjIyMi5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjc1Om9iai0kKENPTkZJR19NQVhMSU5FQVJfR1BIWSlcXHQrPSBteGwtZ3B5Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NzY6b2JqLSQoQ09ORklHX01BWExJTkVBUl84NjExMF9QSFkpXFx0Kz0gbXhsLTg2MTEwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNzctb2JqLXlcXHRcXHRcXHRcXHQrPSBtZWRpYXRlay9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Nzg6b2JqLSQoQ09ORklHX01FU09OX0dYTF9QSFkpXFx0Kz0gbWVzb24tZ3hsLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX01JQ1JFTF9QSFkpXFx0Kz0gbWljcmVsLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODA6b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9QSFkpXFx0Kz0gbWljcm9jaGlwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9QSFlfUkRTX1BUUClcXHQrPSBtaWNyb2NoaXBfcmRzX3B0cC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFfUEhZKVxcdCs9IG1pY3JvY2hpcF90MS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFTX1BIWSkgKz0gbWljcm9jaGlwX3Qxcy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg0Om9iai0kKENPTkZJR19NSUNST1NFTUlfUEhZKVxcdCs9IG1zY2MvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg1Om9iai0kKENPTkZJR19NT1RPUkNPTU1fUEhZKVxcdCs9IG1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjg2Om9iai0kKENPTkZJR19OQVRJT05BTF9QSFkpXFx0Kz0gbmF0aW9uYWwub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4NzpvYmotJChDT05GSUdfTkNOMjYwMDBfUEhZKVxcdCs9IG5jbjI2MDAwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtODgtbnhwLWM0NS10amEtb2Jqc1xcdFxcdCs9IG54cC1jNDUtdGphMTF4eC5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9OTE9ZW5kaWZcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTI6b2JqLSQoQ09ORklHX05YUF9DNDVfVEpBMTFYWF9QSFkpXFx0Kz0gbnhwLWM0NS10amEub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5MzpvYmotJChDT05GSUdfTlhQX0NCVFhfUEhZKVxcdCs9IG54cC1jYnR4Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTQ6b2JqLSQoQ09ORklHX05YUF9USkExMVhYX1BIWSlcXHQrPSBueHAtdGphMTF4eC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk1LW9iai15XFx0XFx0XFx0XFx0Kz0gcWNvbS9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTY6b2JqLSQoQ09ORklHX1FTRU1JX1BIWSlcXHRcXHQrPSBxc2VtaS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk3Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcXHQrPSByZWFsdGVrL1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfUkVORVNBU19QSFkpXFx0Kz0gdVBENjA2MjAub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5OTpvYmotJChDT05GSUdfUk9DS0NISVBfUEhZKVxcdCs9IHJvY2tjaGlwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTAwOm9iai0kKENPTkZJR19TTVNDX1BIWSlcXHRcXHQrPSBzbXNjLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTAxLW9iai0kKENPTkZJR19TVEUxMFhQKVxcdFxcdCs9IHN0ZTEwWHAub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxMDI6b2JqLSQoQ09ORklHX1RFUkFORVRJQ1NfUEhZKVxcdCs9IHRlcmFuZXRpY3Mub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1ZJVEVTU0VfUEhZKVxcdCs9IHZpdGVzc2Uub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xMDQtb2JqLSQoQ09ORklHX1hJTElOWF9HTUlJMlJHTUlJKSArPSB4aWxpbnhfZ21paTJyZ21paS5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvTWFrZWZpbGU9NT1lbmRpZlxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19BUVVBTlRJQV9QSFkpXFx0Kz0gYXF1YW50aWEub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19NRURJQVRFS18yUDVHRV9QSFkpXFx0Kz0gbXRrLTJwNWdlLm9cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTUVESUFURUtfRkVfU09DX1BIWSlcXHQrPSBtdGstZmUtc29jLm9cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTUVESUFURUtfR0VfUEhZKVxcdFxcdCs9IG10ay1nZS5vXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01FRElBVEVLX0dFX1NPQ19QSFkpXFx0Kz0gbXRrLWdlLXNvYy5vXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01US19ORVRfUEhZTElCKVxcdFxcdCs9IG10ay1waHktbGliLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSkgOj0gbXNjYy5vXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGUtNi1tc2NjLW9ianMgOj0gbXNjY19tYWluLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1FDT01fTkVUX1BIWUxJQilcXHQrPSBxY29tLXBoeS1saWIub1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FUODAzWF9QSFkpXFx0Kz0gYXQ4MDN4Lm9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19RQ0E4M1hYX1BIWSlcXHQrPSBxY2E4M3h4Lm9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19RQ0E4MDhYX1BIWSlcXHQrPSBxY2E4MDh4Lm9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19RQ0E4MDdYX1BIWSlcXHQrPSBxY2E4MDd4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlPTM9cmVhbHRlay0kKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgKz0gcmVhbHRla19od21vbi5vXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfUkVBTFRFS19QSFkpXFx0Kz0gcmVhbHRlay5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjUxLjUxOTQ0MDIyNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1MTA4NDgyNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFBIWSBDb25uZWN0aXZpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBQSFkgYW5kIHBoeWxpbmsgc2l0dWF0aW9uLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgcGh5X2RldmljZS5jYCBnZXRzIGNvbXBpbGVkIGludG8gYGxpYnBoeS5vYCBpZiBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZCwgYW5kIGBwaHlsaW5rLmNgIGNvbXBpbGVzIGludG8gYHBoeWxpbmsub2AgaWYgYENPTkZJR19QSFlMSU5LYCBpcyBlbmFibGVkLiBUaGF0IGdpdmVzIG1lIGEgZ2VuZXJhbCBpZGVhIG9mIHdoZXJlIHRoZXNlIHR3byBwaWVjZXMgZml0IGluIHRoZSBidWlsZCBwcm9jZXNzLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBtb2R1bGVzIGFyZSBhY3R1YWxseSAqdXNlZCogYWNyb3NzIHRoZSBrZXJuZWwuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0eXBlcyBvZiBkcml2ZXJzIGRlcGVuZCBvbiB0aGVtLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHVzdWFsIHN1c3BlY3RzOiB2aXJ0dWFsIGRyaXZlcnMsIHRob3NlIHBlc2t5IFVTQiBFdGhlcm5ldCBkb25nbGVzLCBkdW1teSBNRElPIHNldHVwcywgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXJzLCBhbmQgeW91ciBydW4tb2YtdGhlLW1pbGwgc3RhbmRhcmQgbmV0d29yayBkcml2ZXJzLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIG1hcCBvZiB0aGUgZGVwZW5kZW5jeSBsYW5kc2NhcGUgaGVyZS5cblxuVG8gZG8gdGhhdCwgSSdsbCBuZWVkIHRvIGxvY2F0ZSB3aGVyZSBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2Nvbm5lY3RgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCwgYW5kIGBwaHlsaW5rX2NyZWF0ZWAgYXJlIGFjdHVhbGx5IGJlaW5nICpjYWxsZWQqLiBHcmVwcGluZyB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIHJldmVhbCB0aGUgY29yZSBkcml2ZXJzIHRoYXQgYXJlIHVzaW5nIHBoeWxpbmsgYW5kIHBoeV9kZXZpY2UgYW5kIHByb3ZpZGUgYSBzdHJvbmcgYmFzaXMgZm9yIG15IGFuYWx5c2lzLiBUaGF0IHNob3VsZCBnZXQgbWUgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE3MCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1Nzo1NS4wMzAyOTI2MjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5MjEzODU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2Nvbm5lY3RfcGh5fHBoeV9hdHRhY2hfZGlyZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHktbGluay10b3BvbG9neS5yc3Q9ODU9VGhlc2UgZnVuY3Rpb24gYXJlIGFscmVhZHkgaG9va2VkIGludG8gdGhlIHBoeWxpYiBzdWJzeXN0ZW0sIHNvIGFsbCBQSFlzIHRoYXRcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LWxpbmstdG9wb2xvZ3kucnN0Ojg2OmFyZSBsaW5rZWQgdG8gYSBuZXRfZGV2aWNlIHRocm91Z2ggOmM6ZnVuYzpgcGh5X2F0dGFjaF9kaXJlY3RgIHdpbGwgYXV0b21hdGljYWxseVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHktbGluay10b3BvbG9neS5yc3QtODctam9pbiB0aGUgbmV0ZGV2J3MgdG9wb2xvZ3kuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTY1LSAgIEZvciB0aGUgbW9zdCBwYXJ0LCBgYGZsYWdzYGAgY2FuIGJlIHplcm87IHRoZXNlIGZsYWdzIGFyZSBwYXNzZWQgdG9cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjE2NjogICB0aGUgcGh5X2F0dGFjaF9kaXJlY3QoKSBpbnNpZGUgdGhpcyBmdW5jdGlvbiBjYWxsIGlmIGEgUEhZIGlzIHNwZWNpZmllZFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTY3LSAgIGluIHRoZSBEVCBub2RlIGBgbm9kZWBgLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz05MzE9c3RhdGljIGludCB4Z2JlX3BoeV9maW5kX3BoeV9kZXZpY2Uoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5ODM6XFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QocGRhdGEtXFx1MDAzZW5ldGRldiwgcGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWRldl9mbGFncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NC1cXHRcXHRcXHRcXHRQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4NjpcXHRcXHRuZXRkZXZfZXJyKHBkYXRhLVxcdTAwM2VuZXRkZXYsIFxcXCJwaHlfYXR0YWNoX2RpcmVjdCBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg3LVxcdFxcdHBoeV9kZXZpY2VfcmVtb3ZlKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTk4Mj1zdGF0aWMgaW50IG1hY2JfcGh5bGlua19jb25uZWN0KHN0cnVjdCBtYWNiICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTk5LVxcdFxcdC8qIGF0dGFjaCB0aGUgbWFjIHRvIHRoZSBwaHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwMDA6XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShicC1cXHUwMDNlcGh5bGluaywgcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwMDEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTExNTk9aW50IGhuc19uaWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBobmFlX2hhbmRsZSAqaClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYy0xMTgwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jOjExODE6XFx0XFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QobmRldiwgcGh5X2RldiwgMCwgaC1cXHUwMDNlcGh5X2lmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMtMTE4Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzIzMz1zdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jb25uZWN0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzI0Ni1cXHRcXHRcXHQvKiBhdHRhY2ggdGhlIG1hYyB0byB0aGUgcGh5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMyNDc6XFx0XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShhZGFwdGVyLVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjQ4LVxcdFxcdH0gZWxzZSBpZiAoKChhZGFwdGVyLVxcdTAwM2Vjc3IuaWRfcmV2IFxcdTAwMjYgSURfUkVWX0lEX01BU0tfKSA9PVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMjk5PXN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxMzQ5OlxcdFxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluaywgcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNTAtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwLmM9MTQwNj1zdGF0aWMgaW50IHRuNDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwLmM6MTQxMTpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz00ODg9c3RhdGljIGludCBuZ2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy01MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjUwNTpcXHRlcnIgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHd4LVxcdTAwM2VwaHlsaW5rLCB3eC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTA2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzozMDA6XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwaHlsaW5rLCB3eC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTMwMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyMjU9aW50IHBoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjMzLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTIzNDpcXHRyYyA9IHBoeV9hdHRhY2hfZGlyZWN0KGRldiwgcGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWRldl9mbGFncywgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMzUtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzQyPXN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc0OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NDk6ICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc1MC0gKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2Mi0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NjM6aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzY0LVxcdFxcdCAgICAgIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkxOC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTE5OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyNS0gKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTI2OiAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjctICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM0LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzNTpcXHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXFx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM4LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzOTogKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQwLSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQzLSAqIENvbm5lY3QgQHBoeSB0byB0aGUgcGh5bGluayBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgQHBsIGJ5IGNhbGxpbmdcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDQ6ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlcidzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQ1LSAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1Mi0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTM6aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzItfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI3MzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODEtICogQ29ubmVjdCB0aGUgcGh5IHNwZWNpZmllZCBpbiB0aGUgZGV2aWNlIG5vZGUgQGRuIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgyOiAqIHNwZWNpZmllZCBieSBAcGwuIEFjdGlvbnMgc3BlY2lmaWVkIGluIHBoeWxpbmtfY29ubmVjdF9waHkoKSB3aWxsIGJlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgzLSAqIHBlcmZvcm1lZC5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMwNT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzM4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMzOTpcXHRyZXQgPSBwaHlfYXR0YWNoX2RpcmVjdChwbC1cXHUwMDNlbmV0ZGV2LCBwaHlfZGV2LCBmbGFncyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDAtXFx0XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcxNDpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI4NTg9c3RhdGljIGludCBsYW43OHh4X3BoeV9pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTAxLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjkwMjpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGRldi1cXHUwMDNlcGh5bGluaywgcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDMtXFx0aWYgKHJldCkge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yMTY5PXN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZmluZF9uZXh0KHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBwaHlfZGV2aWNlICpwb3MpO1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE3MDppbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTIxNzEtXFx0XFx0ICAgICAgdTMyIGZsYWdzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcyNz1ib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjgtXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzI5OmludCBwaHlsaW5rX2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICosIHN0cnVjdCBwaHlfZGV2aWNlICopO1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczMC1pbnQgcGh5bGlua19vZl9waHlfY29ubmVjdChzdHJ1Y3QgcGh5bGluayAqLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKiwgdTMyIGZsYWdzKTtcXG4tLVxcbm5ldC9kc2EvdXNlci5jPTI2Mzc9c3RhdGljIGludCBkc2FfdXNlcl9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYsIGludCBhZGRyLFxcbi0tXFxubmV0L2RzYS91c2VyLmMtMjY1MC1cXG5uZXQvZHNhL3VzZXIuYzoyNjUxOlxcdHJldHVybiBwaHlsaW5rX2Nvbm5lY3RfcGh5KGRwLVxcdTAwM2VwbCwgdXNlcl9kZXYtXFx1MDAzZXBoeWRldik7XFxubmV0L2RzYS91c2VyLmMtMjY1Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjU3LjgyMjQzNzA1MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMTI0ODQ0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0d29yayBEcml2ZXIgRGVlcCBEaXZlKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHNlZWluZzogaXQgbG9va3MgbGlrZSB0aGVzZSBVU0IgbmV0d29yayBkcml2ZXJzLCBsaWtlIGBsYW43OHh4LmNgIGFuZCBgYXNpeF9kZXZpY2VzLmNgIOKAkyB0aGUgb25lcyB0aGF0IHVzZSBjaGlwcyBsaWtlIHRoZSBBWDg4NzcyIOKAkyB0aGV5J3JlIGxldmVyYWdpbmcgYHBoeWxpbmtgIGFuZCBgcGh5bGliYC4gSW50ZXJlc3RpbmcuIEFuZCBvZiBjb3Vyc2UsIHRoZXJlJ3MgYWxsIHRoaXMgZW11bGF0aW9uIHN0dWZmIHdpdGggVVNCOiBVU0IgUmF3LCBzeXprYWxsZXIsIFVTQiBnYWRnZXQsIHZoY2ksIGFuZCB0aGUgd29ybGQgb2YgdXNiLWZ1enppbmcgaXMgYWx3YXlzIG91dCB0aGVyZS4gVGhlbiB3ZSBoYXZlIERTQSwgc3RhbmRhcmQgZXRoZXJuZXQgZHJpdmVycyBsaWtlIHRoZSBjYWRlbmNlIG1hY2Igb3IgdGhlIGUxMDAwIGZhbWlseSwgc3RtbWFjLCBldGMuLCBhbmQgdGhlIE1ESU8vUEhZIHN1YnN5c3RlbXMuIFJpZ2h0LCBnb3QgaXQuXG5cbk5vdywgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLiBJIHNob3VsZCBleGFtaW5lIHRoZSBjb2RlIHRoYXQncyBiZWVuIHJlY2VudGx5IG1vZGlmaWVkIGluIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYHBoeV9kZXZpY2UuY2Ag4oCTIHNwZWNpZmljYWxseSBhcm91bmQgdGhhdCAxNzMwLTE5ODAgbGluZSByYW5nZSDigJMgYW5kIHRoZW4gZGl2ZSBpbnRvIGBwaHlsaW5rLmNgLCBhcm91bmQgbGluZXMgMjA4MC0yMzgwLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGVzZSBQSFkgc3Vic3lzdGVtcyB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTU5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjAxLjAzNDkyNDU1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MzAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3MzA6XFx0fVxcbjE3MzE6XFx0XFxuMTczMjpcXHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxcbjE3MzM6XFx0e1xcbjE3MzQ6XFx0XFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbjE3MzU6XFx0fVxcbjE3MzY6XFx0XFxuMTczNzpcXHQvKiBVbmRvIHRoZSBQSFlfUE9MTCB0aGF0IHBoeV9wcm9iZSgpIHNldHMgd2hlbiBhIGRyaXZlciB3aXRob3V0XFxuMTczODpcXHQgKiBpbnRlcnJ1cHQgY2FsbGJhY2tzIGJpbmRzLiBUaGUgYmluZCBjeWNsZSBuZXZlciB3cml0ZXMgYnVzLVxcdTAwM2VpcnFbXSxcXG4xNzM5OlxcdCAqIHNvIHRoZSB0YWJsZSBzdGlsbCBob2xkcyB0aGUgcHJlLWJpbmQgdmFsdWU7IGFueXRoaW5nIGVsc2UgdGhlIFBIWVxcbjE3NDA6XFx0ICogY2FycmllcyBkaWQgbm90IGNvbWUgZnJvbSB0aGUgYmluZCBhbmQgbXVzdCBzdGFuZC5cXG4xNzQxOlxcdCAqL1xcbjE3NDI6XFx0c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE3NDM6XFx0e1xcbjE3NDQ6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXJxID09IFBIWV9QT0xMKVxcbjE3NDU6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VpcnFbcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHJdO1xcbjE3NDY6XFx0fVxcbjE3NDc6XFx0XFxuMTc0ODpcXHQvKipcXG4xNzQ5OlxcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4xNzUwOlxcdCAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTE6XFx0ICogQHBoeWRldjogUG9pbnRlciB0byBwaHlfZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTI6XFx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJ3MgZGV2X2ZsYWdzXFxuMTc1MzpcXHQgKiBAaW50ZXJmYWNlOiBQSFkgZGV2aWNlJ3MgaW50ZXJmYWNlXFxuMTc1NDpcXHQgKlxcbjE3NTU6XFx0ICogRGVzY3JpcHRpb246IENhbGxlZCBieSBkcml2ZXJzIHRvIGF0dGFjaCB0byBhIHBhcnRpY3VsYXIgUEhZXFxuMTc1NjpcXHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxcbjE3NTc6XFx0ICogICAgIHRvIHRoZSBwaHlfZHJpdmVyLiAgSWYgbm8gZHJpdmVyIGlzIGF0dGFjaGVkLCB0aGVuIGFcXG4xNzU4OlxcdCAqICAgICBnZW5lcmljIGRyaXZlciBpcyB1c2VkLiAgVGhlIHBoeV9kZXZpY2UgaXMgZ2l2ZW4gYSBwdHIgdG9cXG4xNzU5OlxcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXFxuMTc2MDpcXHQgKiAgICAgY2hhbmdlLiAgVGhlIHBoeV9kZXZpY2UgaXMgcmV0dXJuZWQgdG8gdGhlIGF0dGFjaGluZyBkcml2ZXIuXFxuMTc2MTpcXHQgKiAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHJlZmVyZW5jZSBvbiB0aGUgcGh5IGRldmljZS5cXG4xNzYyOlxcdCAqL1xcbjE3NjM6XFx0aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuMTc2NDpcXHRcXHRcXHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuMTc2NTpcXHR7XFxuMTc2NjpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG4xNzY3OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmQgPSBcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldjtcXG4xNzY4OlxcdFxcdHN0cnVjdCBtb2R1bGUgKm5kZXZfb3duZXIgPSBOVUxMO1xcbjE3Njk6XFx0XFx0aW50IGVycjtcXG4xNzcwOlxcdFxcbjE3NzE6XFx0XFx0LyogRm9yIEV0aGVybmV0IGRldmljZSBkcml2ZXJzIHRoYXQgcmVnaXN0ZXIgdGhlaXIgb3duIE1ESU8gYnVzLCB3ZVxcbjE3NzI6XFx0XFx0ICogd2lsbCBoYXZlIGJ1cy1cXHUwMDNlb3duZXIgbWF0Y2ggbmRldl9tb2QsIHNvIHdlIGRvIG5vdCB3YW50IHRvIGluY3JlbWVudFxcbjE3NzM6XFx0XFx0ICogb3VyIG93biBtb2R1bGUtXFx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cXG4xNzc0OlxcdFxcdCAqIHVubG9hZCBsYXRlciBvbi5cXG4xNzc1OlxcdFxcdCAqL1xcbjE3NzY6XFx0XFx0aWYgKGRldilcXG4xNzc3OlxcdFxcdFxcdG5kZXZfb3duZXIgPSBkZXYtXFx1MDAzZWRldi5wYXJlbnQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXI7XFxuMTc3ODpcXHRcXHRpZiAobmRldl9vd25lciAhPSBidXMtXFx1MDAzZW93bmVyIFxcdTAwMjZcXHUwMDI2ICF0cnlfbW9kdWxlX2dldChidXMtXFx1MDAzZW93bmVyKSkge1xcbjE3Nzk6XFx0XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IHRoZSBidXMgbW9kdWxlXFxcXG5cXFwiKTtcXG4xNzgwOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjE3ODE6XFx0XFx0fVxcbjE3ODI6XFx0XFxuMTc4MzpcXHRcXHRnZXRfZGV2aWNlKGQpO1xcbjE3ODQ6XFx0XFxuMTc4NTpcXHRcXHQvKiBBc3N1bWUgdGhhdCBpZiB0aGVyZSBpcyBubyBkcml2ZXIsIHRoYXQgaXQgZG9lc24ndFxcbjE3ODY6XFx0XFx0ICogZXhpc3QsIGFuZCB3ZSBzaG91bGQgdXNlIHRoZSBnZW5waHkgZHJpdmVyLlxcbjE3ODc6XFx0XFx0ICovXFxuMTc4ODpcXHRcXHRpZiAoIWQtXFx1MDAzZWRyaXZlcikge1xcbjE3ODk6XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfYzQ1KVxcbjE3OTA6XFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHJpdmVyID0gXFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xcbjE3OTE6XFx0XFx0XFx0ZWxzZVxcbjE3OTI6XFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHJpdmVyID0gXFx1MDAyNmdlbnBoeV9kcml2ZXIubWRpb2Rydi5kcml2ZXI7XFxuMTc5MzpcXHRcXG4xNzk0OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDE7XFxuMTc5NTpcXHRcXHR9XFxuMTc5NjpcXHRcXG4xNzk3OlxcdFxcdGlmICghdHJ5X21vZHVsZV9nZXQoZC1cXHUwMDNlZHJpdmVyLVxcdTAwM2Vvd25lcikpIHtcXG4xNzk4OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiZmFpbGVkIHRvIGdldCB0aGUgZGV2aWNlIGRyaXZlciBtb2R1bGVcXFxcblxcXCIpO1xcbjE3OTk6XFx0XFx0XFx0ZXJyID0gLUVJTztcXG4xODAwOlxcdFxcdFxcdGdvdG8gZXJyb3JfcHV0X2RldmljZTtcXG4xODAxOlxcdFxcdH1cXG4xODAyOlxcdFxcbjE4MDM6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xcbjE4MDQ6XFx0XFx0XFx0ZXJyID0gZC1cXHUwMDNlZHJpdmVyLVxcdTAwM2Vwcm9iZShkKTtcXG4xODA1OlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzZT0gMClcXG4xODA2OlxcdFxcdFxcdFxcdGVyciA9IGRldmljZV9iaW5kX2RyaXZlcihkKTtcXG4xODA3OlxcdFxcbjE4MDg6XFx0XFx0XFx0aWYgKGVycilcXG4xODA5OlxcdFxcdFxcdFxcdGdvdG8gZXJyb3JfbW9kdWxlX3B1dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MDEuMDM1MTAxODA4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE4ODQ3OTUzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS5cblxuKipBbmFseXppbmcgYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgYHBoeV9kZXRhY2hgKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgaXMgdG8gdW5kZXJzdGFuZCB0aGUgb3BlcmF0aW9uIG9mIHRoZXNlIHR3byBzcGVjaWZpYyBmdW5jdGlvbnM6IGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYC4gSSdtIGZhbWlsaWFyIHdpdGggdGhpcyBjb2RlYmFzZSwgb3IgYXQgbGVhc3Qgd2l0aCB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBncmFzcCB0aGUgbnVhbmNlcyBvZiB0aGVpciBpbnRlcmFjdGlvbi4gSSB3aWxsIG5vdyBjYXJlZnVsbHkgcHJvY2VlZCB0byBkaXNzZWN0IHRoZSBzb3VyY2UgY29kZSBhbmQgZGlzY2VybiB0aGVpciBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgaW52b2x2ZSB1bmRlcnN0YW5kaW5nIHRoZSBwdXJwb3NlIG9mIGF0dGFjaGluZyBhbmQgZGV0YWNoaW5nIGEgUEhZIChQaHlzaWNhbCBMYXllcikgZGV2aWNlLiBJIG5lZWQgdG8gb2JzZXJ2ZSB0aGVpciBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXNlIGNhbGxzIGFyZSBtYWRlLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyB0aGV5IG1hbmlwdWxhdGUgYW5kIHdoYXQgcmVzb3VyY2VzIHRoZXkgYWxsb2NhdGUgb3IgZGVhbGxvY2F0ZS4gSSdtIGV4cGVjdGluZyBzb21lIHN0YW5kYXJkIFBIWSBpbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gc3RlcHMsIGFuZCBJIGFtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBhbnkgcG90ZW50aWFsIHJlc291cmNlIGxvY2tpbmcgb3IgY29uY3VycmVuY3kgY29uc2lkZXJhdGlvbnMuIEluIHNob3J0LCBsZXQncyBnZXQgZG93biB0byB0aGUgZ3JpdHR5IGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzgyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODowMy4yMjM1ODQzNTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg5MCxcbiAgXCJMaW5lQ291bnRcIjogOTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg5MDpcXHRcXHRwaHlfcmVzdW1lKHBoeWRldik7XFxuMTg5MTpcXHRcXG4xODkyOlxcdFxcdC8qKlxcbjE4OTM6XFx0XFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XFxuMTg5NDpcXHRcXHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXFxuMTg5NTpcXHRcXHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxcbjE4OTY6XFx0XFx0ICovXFxuMTg5NzpcXHRcXHRpZiAoZGV2IFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXBhcmVudCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWRldi5wYXJlbnQgIT0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlcGFyZW50KVxcbjE4OTg6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VkZXZsaW5rID0gZGV2aWNlX2xpbmtfYWRkKGRldi1cXHUwMDNlZGV2LnBhcmVudCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsXFxuMTg5OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIERMX0ZMQUdfUE1fUlVOVElNRSB8IERMX0ZMQUdfU1RBVEVMRVNTKTtcXG4xOTAwOlxcdFxcbjE5MDE6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTAyOlxcdFxcbjE5MDM6XFx0ZXJyb3I6XFxuMTkwNDpcXHRcXHQvKiBwaHlfZGV0YWNoKCkgZG9lcyBhbGwgb2YgdGhlIGNsZWFudXAgYmVsb3cgKi9cXG4xOTA1OlxcdFxcdHBoeV9kZXRhY2gocGh5ZGV2KTtcXG4xOTA2OlxcdFxcdHJldHVybiBlcnI7XFxuMTkwNzpcXHRcXG4xOTA4OlxcdGVycm9yX21vZHVsZV9wdXQ6XFxuMTkwOTpcXHRcXHRtb2R1bGVfcHV0KGQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXIpO1xcbjE5MTA6XFx0XFx0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xcbjE5MTE6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4xOTEyOlxcdFxcdGQtXFx1MDAzZWRyaXZlciA9IE5VTEw7XFxuMTkxMzpcXHRlcnJvcl9wdXRfZGV2aWNlOlxcbjE5MTQ6XFx0XFx0cHV0X2RldmljZShkKTtcXG4xOTE1OlxcdFxcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuMTkxNjpcXHRcXHRcXHRtb2R1bGVfcHV0KGJ1cy1cXHUwMDNlb3duZXIpO1xcbjE5MTc6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTE4OlxcdH1cXG4xOTE5OlxcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbjE5MjA6XFx0XFxuMTkyMTpcXHQvKipcXG4xOTIyOlxcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuMTkyMzpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4xOTI0OlxcdCAqXFxuMTkyNTpcXHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuMTkyNjpcXHQgKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXFxuMTkyNzpcXHQgKi9cXG4xOTI4OlxcdHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE5Mjk6XFx0e1xcbjE5MzA6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2O1xcbjE5MzE6XFx0XFx0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XFxuMTkzMjpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbjE5MzM6XFx0XFxuMTkzNDpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VkZXZsaW5rKSB7XFxuMTkzNTpcXHRcXHRcXHRkZXZpY2VfbGlua19kZWwocGh5ZGV2LVxcdTAwM2VkZXZsaW5rKTtcXG4xOTM2OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IE5VTEw7XFxuMTkzNzpcXHRcXHR9XFxuMTkzODpcXHRcXG4xOTM5OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXN5c2ZzX2xpbmtzKSB7XFxuMTk0MDpcXHRcXHRcXHRpZiAoZGV2KVxcbjE5NDE6XFx0XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2xpbmsoXFx1MDAyNmRldi1cXHUwMDNlZGV2LmtvYmosIFxcXCJwaHlkZXZcXFwiKTtcXG4xOTQyOlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosIFxcXCJhdHRhY2hlZF9kZXZcXFwiKTtcXG4xOTQzOlxcdFxcdH1cXG4xOTQ0OlxcdFxcbjE5NDU6XFx0XFx0aWYgKCFwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldilcXG4xOTQ2OlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9maWxlKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosXFxuMTk0NzpcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZkZXZfYXR0cl9waHlfc3RhbmRhbG9uZS5hdHRyKTtcXG4xOTQ4OlxcdFxcbjE5NDk6XFx0XFx0cGh5X3N1c3BlbmQocGh5ZGV2KTtcXG4xOTUwOlxcdFxcdGlmIChkZXYpIHtcXG4xOTUxOlxcdFxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xcbjE5NTI6XFx0XFxuMTk1MzpcXHRcXHRcXHQvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXRcXG4xOTU0OlxcdFxcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcXG4xOTU1OlxcdFxcdFxcdCAqL1xcbjE5NTY6XFx0XFx0XFx0aHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtXFx1MDAzZWh3cHJvdik7XFxuMTk1NzpcXHRcXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuMTk1ODpcXHRcXHRcXHRpZiAoaHdwcm92IFxcdTAwMjZcXHUwMDI2IGh3cHJvdi1cXHUwMDNlcGh5ZGV2ID09IHBoeWRldikge1xcbjE5NTk6XFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlaHdwcm92LCBOVUxMKTtcXG4xOTYwOlxcdFxcdFxcdFxcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcXG4xOTYxOlxcdFxcdFxcdH1cXG4xOTYyOlxcdFxcbjE5NjM6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuMTk2NDpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldiA9IE5VTEw7XFxuMTk2NTpcXHRcXHRcXHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xcbjE5NjY6XFx0XFx0fVxcbjE5Njc6XFx0XFxuMTk2ODpcXHRcXHRwaHlkZXYtXFx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XFxuMTk2OTpcXHRcXHRwaHlkZXYtXFx1MDAzZXBoeWxpbmsgPSBOVUxMO1xcbjE5NzA6XFx0XFxuMTk3MTpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5kcml2ZXIpXFxuMTk3MjpcXHRcXHRcXHRtb2R1bGVfcHV0KHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyLVxcdTAwM2Vvd25lcik7XFxuMTk3MzpcXHRcXG4xOTc0OlxcdFxcdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxcbjE5NzU6XFx0XFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXFxuMTk3NjpcXHRcXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3MgYSBjaGFuY2UgYVxcbjE5Nzc6XFx0XFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXFxuMTk3ODpcXHRcXHQgKi9cXG4xOTc5OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcXG4xOTgwOlxcdFxcdFxcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcXG4xOTgxOlxcdFxcdFxcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuMTk4MjpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbjE5ODM6XFx0XFx0fVxcbjE5ODQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjAzLjIyMzgxMzM5NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzE1NDc2MTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBEZWVwIGludG8gUGh5bGluay5jKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgbmV0d29yayBQSFkgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcGh5bGluay5jYCBmaWxlLiBJJ20gZm9jdXNpbmcgb24gbGluZXMgMjA4MCB0byAyMzgwLiBUaGF0IHJhbmdlIHVzdWFsbHkgZW5jb21wYXNzZXMgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBwaHlsaW5rIGFyY2hpdGVjdHVyZSwgcGVyaGFwcyByZWxhdGVkIHRvIGxpbmsgbWFuYWdlbWVudCwgZGV2aWNlIGludGVyYWN0aW9uLCBvciBjb25maWd1cmF0aW9uIG9mIHRoZSBQSFkgaXRzZWxmLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnksIGJ1dCBJIHN1c3BlY3QgdGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgY29kZSBJIGFtIGludmVzdGlnYXRpbmcuIEknbGwgYmUgbG9va2luZyBmb3IgbnVhbmNlcyB0byBmaW5kIG15IGlzc3VlLiBJJ2xsIGFwcHJvYWNoIHRoaXMgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ2xsIG5lZWQgdG8gcGFyc2UgdGhlIGludGVyYWN0aW9ucyB0byB0cnVseSBpZGVudGlmeSB3aGF0IGlzIG9jY3VycmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0OTQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjA1LjUzOTI5MzE3OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTgwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTkwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTkwOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVxcdTAwM2VzdXBwb3J0ZWQsXFxuMjE5MTpcXHRcXHRcXHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwaHktXFx1MDAzZWFkdmVydGlzaW5nKTtcXG4yMTkyOlxcdFxcbjIxOTM6XFx0XFx0aWYgKHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZW1hY19tYW5hZ2VkX3BtKVxcbjIxOTQ6XFx0XFx0XFx0cGh5LVxcdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuMjE5NTpcXHRcXG4yMTk2OlxcdFxcdC8qIEFsbG93IHRoZSBNQUMgdG8gc3RvcCBpdHMgY2xvY2sgaWYgdGhlIFBIWSBoYXMgdGhlIGNhcGFiaWxpdHkgKi9cXG4yMTk3OlxcdFxcdHBsLVxcdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShwaHkpIFxcdTAwM2UgMDtcXG4yMTk4OlxcdFxcbjIxOTk6XFx0XFx0aWYgKHBsLVxcdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xcbjIyMDA6XFx0XFx0XFx0LyogRXhwbGljaXRseSBjb25maWd1cmUgd2hldGhlciB0aGUgUEhZIGlzIGFsbG93ZWQgdG8gc3RvcCBpdCdzXFxuMjIwMTpcXHRcXHRcXHQgKiByZWNlaXZlIGNsb2NrLlxcbjIyMDI6XFx0XFx0XFx0ICovXFxuMjIwMzpcXHRcXHRcXHRyZXQgPSBwaHlfZWVlX3J4X2Nsb2NrX3N0b3AocGh5LFxcbjIyMDQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZWVlZV9yeF9jbGtfc3RvcF9lbmFibGUpO1xcbjIyMDU6XFx0XFx0XFx0aWYgKHJldCA9PSAtRU9QTk9UU1VQUClcXG4yMjA2OlxcdFxcdFxcdFxcdHJldCA9IDA7XFxuMjIwNzpcXHRcXHR9XFxuMjIwODpcXHRcXG4yMjA5OlxcdFxcdGlmIChyZXQgPT0gMCBcXHUwMDI2XFx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXFxuMjIxMDpcXHRcXHRcXHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcXG4yMjExOlxcdFxcbjIyMTI6XFx0XFx0aWYgKHJldCkge1xcbjIyMTM6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMjIxNDpcXHRcXHRcXHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcXG4yMjE1OlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMjIxNjpcXHRcXHR9XFxuMjIxNzpcXHRcXG4yMjE4OlxcdFxcdHJldHVybiByZXQ7XFxuMjIxOTpcXHR9XFxuMjIyMDpcXHRcXG4yMjIxOlxcdHN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4yMjIyOlxcdFxcdFxcdFxcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuMjIyMzpcXHR7XFxuMjIyNDpcXHRcXHR1MzIgZmxhZ3MgPSAwO1xcbjIyMjU6XFx0XFxuMjIyNjpcXHRcXHRpZiAoV0FSTl9PTihwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKVxcbjIyMjc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMjIyODpcXHRcXG4yMjI5OlxcdFxcdGlmIChwbC1cXHUwMDNlcGh5ZGV2KVxcbjIyMzA6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4yMjMxOlxcdFxcbjIyMzI6XFx0XFx0aWYgKHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZW1hY19yZXF1aXJlc19yeGMpXFxuMjIzMzpcXHRcXHRcXHRmbGFncyB8PSBQSFlfRl9SWENfQUxXQVlTX09OO1xcbjIyMzQ6XFx0XFxuMjIzNTpcXHRcXHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXFx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcXG4yMjM2OlxcdH1cXG4yMjM3OlxcdFxcbjIyMzg6XFx0LyoqXFxuMjIzOTpcXHQgKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuMjI0MDpcXHQgKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG4yMjQxOlxcdCAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cXG4yMjQyOlxcdCAqXFxuMjI0MzpcXHQgKiBDb25uZWN0IEBwaHkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2Ugc3BlY2lmaWVkIGJ5IEBwbCBieSBjYWxsaW5nXFxuMjI0NDpcXHQgKiBwaHlfYXR0YWNoX2RpcmVjdCgpLiBDb25maWd1cmUgdGhlIEBwaHkgYWNjb3JkaW5nIHRvIHRoZSBNQUMgZHJpdmVyJ3NcXG4yMjQ1OlxcdCAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcXG4yMjQ2OlxcdCAqIHRoYXQgdGhlIFBIWSBzdXBwb3J0cy5cXG4yMjQ3OlxcdCAqXFxuMjI0ODpcXHQgKiBUaGlzIHVwZGF0ZXMgdGhlIHBoeWxpbmsncyBldGh0b29sIHN1cHBvcnRlZCBhbmQgYWR2ZXJ0aXNpbmcgbGluayBtb2RlXFxuMjI0OTpcXHQgKiBtYXNrcy5cXG4yMjUwOlxcdCAqXFxuMjI1MTpcXHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm5vLlxcbjIyNTI6XFx0ICovXFxuMjI1MzpcXHRpbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuMjI1NDpcXHR7XFxuMjI1NTpcXHRcXHRpbnQgcmV0O1xcbjIyNTY6XFx0XFxuMjI1NzpcXHRcXHQvKiBVc2UgUEhZIGRldmljZS9kcml2ZXIgaW50ZXJmYWNlICovXFxuMjI1ODpcXHRcXHRpZiAocGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSkge1xcbjIyNTk6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlID0gcGh5LVxcdTAwM2VpbnRlcmZhY2U7XFxuMjI2MDpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gcGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlO1xcbjIyNjE6XFx0XFx0fVxcbjIyNjI6XFx0XFxuMjI2MzpcXHRcXHRyZXQgPSBwaHlsaW5rX2F0dGFjaF9waHkocGwsIHBoeSwgcGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlKTtcXG4yMjY0OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjIyNjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yMjY2OlxcdFxcbjIyNjc6XFx0XFx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5LCBwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKTtcXG4yMjY4OlxcdFxcdGlmIChyZXQpXFxuMjI2OTpcXHRcXHRcXHRwaHlfZGV0YWNoKHBoeSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjA1LjUzOTc5ODYwOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTY2NDgxNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgUEhZIExpbmsgQnJpbmd1cCBQcm9jZXNzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgcGwtXHUwMDNlcGh5ZGV2YCB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCB3aXRoaW4gdGhlIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCBmdW5jdGlvbi4gSSByZWNhbGwgdGhhdCBpdCdzIGJlZW4gc2V0IGF0IHNvbWUgcG9pbnQsIHNvIEknbGwgc3RhcnQgYnkgcmV2aXNpdGluZyB0aGUgZnVuY3Rpb24gaXRzZWxmLiBUaW1lIHRvIG1ldGljdWxvdXNseSB0cmFjZSBiYWNrIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgcGlucG9pbnQgdGhlIGV4YWN0IGxpbmUgb3IgbGluZXMgd2hlcmUgYHBsLVx1MDAzZXBoeWRldmAgaXMgYXNzaWduZWQgaXRzIHZhbHVlIHdpdGhpbiBgcGh5bGlua19icmluZ3VwX3BoeWAuIEknbGwgY2FyZWZ1bGx5IHJlLWV4YW1pbmUgdGhlIGNvZGUsIGxpbmUgYnkgbGluZSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZWFybGllciBwYXJ0cyBvZiB0aGUgZnVuY3Rpb24gdG8gc2VlIHdoZXJlIHRoaXMgY3J1Y2lhbCBhc3NpZ25tZW50IGhhcHBlbnMuIFRoaXMgcmVxdWlyZXMgYSBmb2N1c2VkIHJlYWQgb2YgYHBoeWxpbmtfYnJpbmd1cF9waHlgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTk0MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MDcuNzA2MjgzNDM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Mzg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMzAsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxMzA6XFx0XFx0cGh5LVxcdTAwM2VwaHlsaW5rID0gcGw7XFxuMjEzMTpcXHRcXHRwaHktXFx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IHBoeWxpbmtfcGh5X2NoYW5nZTtcXG4yMTMyOlxcdFxcbjIxMzM6XFx0XFx0aXJxX3N0ciA9IHBoeV9hdHRhY2hlZF9pbmZvX2lycShwaHkpO1xcbjIxMzQ6XFx0XFx0cGh5bGlua19pbmZvKHBsLFxcbjIxMzU6XFx0XFx0XFx0ICAgICBcXFwiUEhZIFslc10gZHJpdmVyIFslc10gKGlycT0lcylcXFxcblxcXCIsXFxuMjEzNjpcXHRcXHRcXHQgICAgIGRldl9uYW1lKFxcdTAwMjZwaHktXFx1MDAzZW1kaW8uZGV2KSwgcGh5LVxcdTAwM2VkcnYtXFx1MDAzZW5hbWUsIGlycV9zdHIpO1xcbjIxMzc6XFx0XFx0a2ZyZWUoaXJxX3N0cik7XFxuMjEzODpcXHRcXG4yMTM5OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbjIxNDA6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4yMTQxOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMjE0MjpcXHRcXHRwbC1cXHUwMDNlcGh5ZGV2ID0gcGh5O1xcbjIxNDM6XFx0XFx0cGwtXFx1MDAzZXBoeV9zdGF0ZS5pbnRlcmZhY2UgPSBpbnRlcmZhY2U7XFxuMjE0NDpcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnBhdXNlID0gTUxPX1BBVVNFX05PTkU7XFxuMjE0NTpcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4yMTQ2OlxcdFxcdHBsLVxcdTAwM2VwaHlfc3RhdGUuZHVwbGV4ID0gRFVQTEVYX1VOS05PV047XFxuMjE0NzpcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmcgPSBSQVRFX01BVENIX05PTkU7XFxuMjE0ODpcXHRcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIHN1cHBvcnRlZCk7XFxuMjE0OTpcXHRcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcXG4yMTUwOlxcdFxcbjIxNTE6XFx0XFx0LyogUmVzdHJpY3QgdGhlIHBoeSBhZHZlcnRpc2VtZW50IGFjY29yZGluZyB0byB0aGUgTUFDIHN1cHBvcnQuICovXFxuMjE1MjpcXHRcXHRsaW5rbW9kZV9jb3B5KHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcsIGNvbmZpZy5hZHZlcnRpc2luZyk7XFxuMjE1MzpcXHRcXG4yMTU0OlxcdFxcdC8qIElmIHRoZSBNQUMgc3VwcG9ydHMgcGh5bGluayBtYW5hZ2VkIEVFRSwgcmVzdHJpY3QgdGhlIEVFRVxcbjIxNTU6XFx0XFx0ICogYWR2ZXJ0aXNlbWVudCBhY2NvcmRpbmcgdG8gdGhlIE1BQydzIExQSSBjYXBhYmlsaXRpZXMuXFxuMjE1NjpcXHRcXHQgKi9cXG4yMTU3OlxcdFxcdGlmIChwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZSkge1xcbjIxNTg6XFx0XFx0XFx0LyogSWYgRUVFIGlzIGVuYWJsZWQsIHRoZW4gd2UgbmVlZCB0byBjYWxsIHBoeV9zdXBwb3J0X2VlZSgpXFxuMjE1OTpcXHRcXHRcXHQgKiB0byBlbnN1cmUgdGhhdCB0aGUgYWR2ZXJ0aXNpbmcgbWFzayBpcyBhcHByb3ByaWF0ZWx5IHNldC5cXG4yMTYwOlxcdFxcdFxcdCAqIFRoaXMgYWxzbyBlbmFibGVzIEVFRSBhdCB0aGUgUEhZLlxcbjIxNjE6XFx0XFx0XFx0ICovXFxuMjE2MjpcXHRcXHRcXHRpZiAocGwtXFx1MDAzZWVlZV9jZmcuZWVlX2VuYWJsZWQpXFxuMjE2MzpcXHRcXHRcXHRcXHRwaHlfc3VwcG9ydF9lZWUocGh5KTtcXG4yMTY0OlxcdFxcbjIxNjU6XFx0XFx0XFx0cGh5LVxcdTAwM2VlZWVfY2ZnLnR4X2xwaV9lbmFibGVkID0gcGwtXFx1MDAzZWVlZV9jZmcudHhfbHBpX2VuYWJsZWQ7XFxuMjE2NjpcXHRcXHRcXHRwaHktXFx1MDAzZWVlZV9jZmcudHhfbHBpX3RpbWVyID0gcGwtXFx1MDAzZWVlZV9jZmcudHhfbHBpX3RpbWVyO1xcbjIxNjc6XFx0XFxuMjE2ODpcXHRcXHRcXHQvKiBDb252ZXJ0IHRoZSBNQUMncyBMUEkgY2FwYWJpbGl0aWVzIHRvIGxpbmttb2RlcyAqL1xcbjIxNjk6XFx0XFx0XFx0bGlua21vZGVfemVybyhwbC1cXHUwMDNlc3VwcG9ydGVkX2xwaSk7XFxuMjE3MDpcXHRcXHRcXHRwaHlsaW5rX2NhcHNfdG9fbGlua21vZGVzKHBsLVxcdTAwM2VzdXBwb3J0ZWRfbHBpLFxcbjIxNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzKTtcXG4yMTcyOlxcdFxcbjIxNzM6XFx0XFx0XFx0LyogUmVzdHJpY3QgdGhlIFBIWXMgRUVFIHN1cHBvcnQvYWR2ZXJ0aXNlbWVudCB0byB0aGUgbW9kZXNcXG4yMTc0OlxcdFxcdFxcdCAqIHRoYXQgdGhlIE1BQyBzdXBwb3J0cy5cXG4yMTc1OlxcdFxcdFxcdCAqL1xcbjIxNzY6XFx0XFx0XFx0bGlua21vZGVfYW5kKHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBwaHktXFx1MDAzZWFkdmVydGlzaW5nX2VlZSxcXG4yMTc3OlxcdFxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZXN1cHBvcnRlZF9scGkpO1xcbjIxNzg6XFx0XFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMpIHtcXG4yMTc5OlxcdFxcdFxcdC8qIE1BQyBzdXBwb3J0cyBwaHlsaW5rIEVFRSwgYnV0IHdhbnRzIEVFRSBhbHdheXMgZGlzYWJsZWQuICovXFxuMjE4MDpcXHRcXHRcXHRwaHlfZGlzYWJsZV9lZWUocGh5KTtcXG4yMTgxOlxcdFxcdH1cXG4yMTgyOlxcdFxcbjIxODM6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbjIxODQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbjIxODU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMTg2OlxcdFxcbjIxODc6XFx0XFx0cGh5bGlua19kYmcocGwsXFxuMjE4ODpcXHRcXHRcXHQgICAgXFxcInBoeTogJXMgc2V0dGluZyBzdXBwb3J0ZWQgJSpwYiBhZHZlcnRpc2luZyAlKnBiXFxcXG5cXFwiLFxcbjIxODk6XFx0XFx0XFx0ICAgIHBoeV9tb2RlcyhpbnRlcmZhY2UpLFxcbjIxOTA6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZXN1cHBvcnRlZCxcXG4yMTkxOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbjIxOTI6XFx0XFxuMjE5MzpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX21hbmFnZWRfcG0pXFxuMjE5NDpcXHRcXHRcXHRwaHktXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xcbjIxOTc6XFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHBoeSkgXFx1MDAzZSAwO1xcbjIxOTg6XFx0XFxuMjE5OTpcXHRcXHRpZiAocGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjA3LjcwNjQ2OTE1OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MjUwOTY3ODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJ1ZyBGaXggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGJ1ZzogaXQgc2VlbXMgbGlrZSB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWUgaW4gdGhlIHBoeWxpbmsgYW5kIFBIWSBkZXZpY2UgaGFuZGxpbmcuIFNwZWNpZmljYWxseSwgaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgLCB0aGUgYHBsLVx1MDAzZXBoeWRldmAgcG9pbnRlciB3YXMgYmVpbmcgbWlzaGFuZGxlZC4gVGhlIGNvZGUgd291bGQgYXNzaWduIGBwaHlgIHRvIGBwbC1cdTAwM2VwaHlkZXZgLCBhbmQgdGhlbiBpZiBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBmYWlsZWQsIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCB3b3VsZCBiYWlsIG91dC4gVGhlIGNhbGxlciwgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBzdWJzZXF1ZW50bHkgY2FsbGVkIGBwaHlfZGV0YWNoKHBoeSlgLCBidXQgY3J1Y2lhbGx5LCBgcGwtXHUwMDNlcGh5ZGV2YCAqd2Fzbid0KiBjbGVhcmVkLiBUaGlzIGxlYWRzIHRvIHByb2JsZW1zIGxhdGVyIG9uLCBlaXRoZXIgd2l0aCBgLUVCVVNZYCBlcnJvcnMgZHVyaW5nIHJlLWF0dGFjaG1lbnQgb3Igd2l0aCBwaHlsaW5rIGFjY2Vzc2luZyBhIGRldGFjaGVkIFBIWSBkZXZpY2UuIFRoZSBmaXgsIGltcGxlbWVudGVkIGluIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAsIGxvb2tzIGNvcnJlY3QgYXMgaXQncyBjbGVhcmluZyB0aGUgYHBsLVx1MDAzZXBoeWRldmAgcG9pbnRlciwgYWxvbmcgd2l0aCBzb21lIHJlbGF0ZWQgZmxhZ3Mgd2hlbiBhbiBlcnJvciBvY2N1cnMuXG5cblRoZSBzZWNvbmQgcGFydCBvZiB0aGUgZml4IGluIGBwaHlfZGV2aWNlLmNgIGRlYWxzIHdpdGggcmVzdG9yaW5nIHRoZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBhZnRlciBwcm9iaW5nL3VuYmluZGluZy4gVGhlIGdlbmVyaWMgUEhZIGRyaXZlciwgd2hlbiBiaW5kaW5nLCBvdmVycmlkZXMgdGhlIGludGVycnVwdCB2YWx1ZSB0byBgUEhZX1BPTExgIGlmIHRoZSBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IGludGVycnVwdHMuIEhvd2V2ZXIsIG9uIHVuYmluZGluZyBvciBhdHRhY2htZW50IGZhaWx1cmUsIHRoZSBvcmlnaW5hbCBpbnRlcnJ1cHQgd2Fzbid0IGJlaW5nIHJlc3RvcmVkLCB3aGljaCBjb3VsZCBsZWFkIHRvIGxvc3Mgb2YgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgTURJTyBidXMgaW4gc3Vic2VxdWVudCBhdHRlbXB0cy4gVGhlIGZpeCBjb3JyZWN0bHkgcmVzdG9yZXMgdGhpcy5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSXMgdGhpcyBmdXp6YWJsZT8gVGltZSB0byBhcHBseSB0aGUgZ3VpZGVsaW5lcy4gVGhpcyBpcyAqbm90KiBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBvciBjb21tZW50IGNoYW5nZXMuIEl0J3Mgbm90IHB1cmUgbG9nZ2luZyBvciBkZWNvcmF0aXZlLiBObyBudW1lcmljIGNvbnN0YW50IG1vZGlmaWNhdGlvbnMuIEl0ICpkb2VzKiBtb2RpZnkgY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSBpbiB0aGUgUEhZIGFuZCBwaHlsaW5rIHN1YnN5c3RlbXMuIE5vdywgYXJlIHRoZXNlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/XG5cbkxldCdzIHNlZS4uLiB0aGUgY29kZSdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBXaGlsZSBzdGFuZGFyZCBRRU1VIGUxMDAwIGNvbmZpZ3VyYXRpb25zIG1heSBub3QgZGlyZWN0bHkgdXNlIHBoeWxpYi9waHlsaW5rLCB3ZSd2ZSBnb3QgdG8gY29uc2lkZXIgVVNCIGVtdWxhdGlvbiBhbmQgTURJTyBidXMgaW50ZXJhY3Rpb24uIFVTQiwgdmlhIHN5emthbGxlciwgc2VlbXMgcHJvbWlzaW5nLiBSYXctZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHVzYi1mdXp6aW5nIHdpdGggZHJpdmVycyBsaWtlIGBhc2l4YCBvciBgbGFuNzh4eGAgYXJlIHBvdGVudGlhbCBlbnRyeSBwb2ludHMuIElmIHN5emthbGxlciBjYW4gcmVhY2ggdGhvc2UsIHRoZSBmaXggd291bGQgYmUgcmVhY2hhYmxlLiBUaGUgb3RoZXIgcG9zc2liaWxpdHkgaXMgdGhlIE1ESU8gYnVzIGl0c2VsZi4gQ2FuIHdlIGNyZWF0ZSBvciBpbnRlcmFjdCB3aXRoIE1ESU8gLyBQSFkgZGV2aWNlcyB0aHJvdWdoIG5ldGxpbmssIGlvY3RsLCBzeXNmcywgb3IgbWF5YmUgZXZlbiBgbWRpby1ncGlvYCBvciBgZml4ZWQtcGh5YCBzZXR1cHMsIG9yIHRoZSBcImR1bW15XCIgZGV2aWNlcz9cblxuSWYgdGhvc2UgYXJlIHJlYWNoYWJsZSwgdGhlbiB0aGlzIGZpeCwgYW5kIHRoZSByZWxhdGVkIGNvZGUsIGlzIG1vc3QgbGlrZWx5IHdvcnRoIGZ1enppbmcuIFRoZSByaXNrIG9mIHVzZS1hZnRlci1mcmVlIG9yIGEgcmVsYXRlZCBkb3VibGUtZnJlZSBpcyByZWFsLCBhbmQgY291bGQgaGF2ZSBzZXJpb3VzIGNvbnNlcXVlbmNlcy4gSSdtIGdvaW5nIHRvIGxlYW4gdG93YXJkcyBcIldvcnRoRnV6emluZz10cnVlXCIgaWYgd2UgY2FuIHZlcmlmeSByZWFjaGFiaWxpdHkuIFRoZSBVU0IgZGV2aWNlIG9yIE1ESU8gYnVzIGlzIHRoZSBrZXkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0MjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODoxMy45NTc0NDA0MzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTcyOTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfYXR0YWNofHBoeV9jb25uZWN0fHBoeWxpbmtfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExNjY3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xNTI1PXZvaWQgYjUzX3BvcnRfZXZlbnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzItXFx0bGluayA9ICEhKHN0cyBcXHUwMDI2IEJJVChwb3J0KSk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzMzpcXHRkc2FfcG9ydF9waHlsaW5rX21hY19jaGFuZ2UoZHMsIHBvcnQsIGxpbmspO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzQtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTE1MzU9RVhQT1JUX1NZTUJPTChiNTNfcG9ydF9ldmVudCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzNi1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTM3OnN0YXRpYyB2b2lkIGI1M19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzODpcXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTc1LVxcdC8qIEdldCB0aGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgY2FwYWJpbGl0aWVzICovXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NjpcXHRpZiAoZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NzpcXHRcXHRkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhkZXYsIHBvcnQsIGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OC19XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTgwOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTgyLXtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTgzOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4NC1cXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4NjpcXHRpZiAoIWRldi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlsaW5rX21hY19zZWxlY3RfcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODctXFx0XFx0cmV0dXJuIE5VTEw7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4OC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTg5OlxcdHJldHVybiBkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19tYWNfc2VsZWN0X3BjcyhkZXYsIGRwLVxcdTAwM2VpbmRleCwgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkwLX1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkxLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTI6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkzLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTQ6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU5NS17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU5NjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTctXFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSA9IHN0YXRlLVxcdTAwM2VpbnRlcmZhY2U7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2MTU6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE2LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYxOC17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYxOTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MjAtXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MzgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYzOTpzdGF0aWMgdm9pZCBiNTNfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjQwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTY0NS17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTY0NjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2NDctXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHAtXFx1MDAzZWRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MjY5Mj1FWFBPUlRfU1lNQk9MX0dQTChiNTNfc2V0X2FnZWluZ190aW1lKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYjUzX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk1OlxcdC5tYWNfc2VsZWN0X3Bjc1xcdD0gYjUzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjY5NjpcXHQubWFjX2NvbmZpZ1xcdD0gYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk3OlxcdC5tYWNfbGlua19kb3duXFx0PSBiNTNfcGh5bGlua19tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTg6XFx0Lm1hY19saW5rX3VwXFx0PSBiNTNfcGh5bGlua19tYWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjk5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0yNzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgYjUzX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEwLVxcdC5waHlfd3JpdGVcXHRcXHQ9IGI1M19waHlfd3JpdGUxNixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNzExOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBiNTNfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEyLVxcdC5wb3J0X3NldHVwXFx0XFx0PSBiNTNfc2V0dXBfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTMxODM9c3RydWN0IGI1M19kZXZpY2UgKmI1M19zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMyMDYtXFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZiNTNfc3dpdGNoX29wcztcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMjA3OlxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2YjUzX3BoeWxpbmtfbWFjX29wcztcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjA4LVxcdGRldi1cXHUwMDNldmxhbl9lbmFibGVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0zND1zdHJ1Y3QgYjUzX2lvX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtNTAtXFx0dm9pZCAoKnBoeV9kaXNhYmxlKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjUxOlxcdHZvaWQgKCpwaHlsaW5rX2dldF9jYXBzKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTI6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTM6XFx0c3RydWN0IHBoeWxpbmtfcGNzICooKnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MpKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTU0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTExMT1zdHJ1Y3QgYjUzX3BjcyB7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjExMjpcXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0xMTMtXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjIwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGI1M19wY3MgKnBjc190b19iNTNfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jPTYxPXN0YXRpYyB1MTYgYjUzX3NlcmRlc19yZWFkKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IGxhbmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy02Ny1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzo2ODpzdGF0aWMgaW50IGI1M19zZXJkZXNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtNjktXFx0XFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtODgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6ODk6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwMS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDI6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDM6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYz0xNTc9RVhQT1JUX1NZTUJPTChiNTNfc2VyZGVzX2xpbmtfc2V0KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xNTgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTU5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIGI1M19wY3Nfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2MC1cXHQucGNzX2dldF9zdGF0ZSA9IGI1M19zZXJkZXNfZ2V0X3N0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE2NTp2b2lkIGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxNjY6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xOTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5MjpFWFBPUlRfU1lNQk9MKGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2Fwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5NDpzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19zZXJkZXNfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIwOS19XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MjEwOkVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0yMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC05OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMDA6c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaD0xMTA9dm9pZCBiNTNfc2VyZGVzX2xpbmtfc2V0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTEtXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGJvb2wgbGlua191cCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTEyOnN0cnVjdCBwaHlsaW5rX3BjcyAqYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTEzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExNC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTU6dm9pZCBiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTE2OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTE3LSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQzNT1zdGF0aWMgdm9pZCBiNTNfc3JhYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ0NjpzdGF0aWMgdm9pZCBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NDc6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDU3LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NTg6XFx0XFx0YjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKGRldiwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDU5LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ3OT1zdGF0aWMgY29uc3Qgc3RydWN0IGI1M19pb19vcHMgYjUzX3NyYWJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5MS1cXHQuaXJxX2Rpc2FibGUgPSBiNTNfc3JhYl9pcnFfZGlzYWJsZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDkyOlxcdC5waHlsaW5rX2dldF9jYXBzID0gYjUzX3NyYWJfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDkzLSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0OTQ6XFx0LnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MgPSBiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5NS1cXHQuc2VyZGVzX21hcF9sYW5lID0gYjUzX3NyYWJfc2VyZGVzX21hcF9sYW5lLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz00NTI9c3RhdGljIGlycXJldHVybl90IGJjbV9zZjJfc3dpdGNoXzFfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDYyLVxcdFxcdHByaXYtXFx1MDAzZXBvcnRfc3RzWzddLmxpbmsgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDYzOlxcdFxcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjYtXFx0XFx0cHJpdi1cXHUwMDNlcG9ydF9zdHNbN10ubGluayA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDY3OlxcdFxcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDY4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU2LVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjU3OlxcdC8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgb2ZfcGh5X2Nvbm5lY3QoKSB3aWxsIG5vdCB3b3JrIGJ5XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTgtXFx0ICogcmVtb3ZpbmcgdGhlICdwaGFuZGxlJyBhbmQgJ2xpbnV4LHBoYW5kbGUnIHByb3BlcnRpZXMgYW5kXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTcyND1zdGF0aWMgdm9pZCBiY21fc2YyX3N3X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3MjU6XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NDQtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDU6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ2LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDc6XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTc0OC17XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDk6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTc1MC1cXHR1MzIgaWRfbW9kZV9kaXMgPSAwLCBwb3J0X21vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTc5ND1zdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MTYtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4MTc6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODE4LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgyMC17XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4MjE6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgyMi1cXHRzdHJ1Y3QgYmNtX3NmMl9wcml2ICpwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MzctXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4Mzg6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgzOS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04NDQte1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6ODQ1OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04NDYtXFx0c3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9OTA2PXN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfZml4ZWRfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjkwNzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0dXMpXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy05MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMjAzPXN0YXRpYyBpbnQgYmNtX3NmMl9zd19nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjE1LVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIxNjpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBiY21fc2YyX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMTctXFx0Lm1hY19jb25maWdcXHQ9IGJjbV9zZjJfc3dfbWFjX2NvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTIyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGJjbV9zZjJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjMwLVxcdC5nZXRfcGh5X2ZsYWdzXFx0XFx0PSBiY21fc2YyX3N3X2dldF9waHlfZmxhZ3MsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjMxOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBiY21fc2YyX3N3X2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIzMjpcXHQucGh5bGlua19maXhlZF9zdGF0ZVxcdD0gYmNtX3NmMl9zd19maXhlZF9zdGF0ZSxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMzMtXFx0LnN1c3BlbmRcXHRcXHQ9IGJjbV9zZjJfc3dfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTM2NT1zdGF0aWMgaW50IGJjbV9zZjJfc3dfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTQyNi1cXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmJjbV9zZjJfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTQyNzpcXHRkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNmJjbV9zZjJfcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTQyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMyMT1zdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNzpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUxLVxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYz0xNDU4PXN0YXRpYyB2b2lkIGhlbGxjcmVla190ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xNDYzLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE0NjQ6c3RhdGljIHZvaWQgaGVsbGNyZWVrX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxNDY1OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTE5MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBoZWxsY3JlZWtfZHNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkwNi1cXHQuZ2V0X3RzX2luZm9cXHQgICAgICAgPSBoZWxsY3JlZWtfZ2V0X3RzX2luZm8sXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTkwNzpcXHQucGh5bGlua19nZXRfY2FwcyAgICAgID0gaGVsbGNyZWVrX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkwOC1cXHQucG9ydF9icmlkZ2VfZmxhZ3MgICAgID0gaGVsbGNyZWVrX2JyaWRnZV9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz00NDg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDQ5OmtzODk5NV9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDUwOlxcdFxcdCAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NDU0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjQ1NTprczg5OTVfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1Ni1cXHRcXHQgICB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NTgte1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NTk6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDYwLVxcdHN0cnVjdCBrczg5OTVfc3dpdGNoICprcyA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz01MDg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTA5OmtzODk5NV9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTEwLVxcdFxcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTExLXtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTEyOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTUxMy1cXHRzdHJ1Y3Qga3M4OTk1X3N3aXRjaCAqa3MgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTIzLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo1MjQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMga3M4OTk1X3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTI1LVxcdC5tYWNfY29uZmlnID0ga3M4OTk1X21hY19jb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NjAyPXN0YXRpYyB2b2lkIGtzODk5NV9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdTggc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNjQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo2NDk6c3RhdGljIHZvaWQga3M4OTk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjY1MDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTY1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NzMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMga3M4OTk1X2RzX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy03NDEtXFx0LnBvcnRfbWF4X210dSA9IGtzODk5NV9nZXRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NzQyOlxcdC5waHlsaW5rX2dldF9jYXBzID0ga3M4OTk1X3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTc0My19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTc0Nj1zdGF0aWMgaW50IGtzODk5NV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTgyMC1cXHRrcy1cXHUwMDNlZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZrczg5OTVfZHNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo4MjE6XFx0a3MtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2a3M4OTk1X3BoeWxpbmtfbWFjX29wcztcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtODIyLVxcdGtzLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdiA9IGtzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTEyODM9c3RhdGljIGludCBsYW45MzAzX3BvcnRfbWRiX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEyOTctXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEyOTg6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEyOTk6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMyMy1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMyNDpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMyNS1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMjY6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI5LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzMwOnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzMxLVxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMzNS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMzNjpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMzctXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzQyLXtcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM0MzpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzQ0LVxcdHN0cnVjdCBsYW45MzAzICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNzUtXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzY6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuOTMwM19waHlsaW5rX21hY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzc6XFx0Lm1hY19jb25maWdcXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzc4OlxcdC5tYWNfbGlua19kb3duXFx0PSBsYW45MzAzX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3OTpcXHQubWFjX2xpbmtfdXBcXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTM4MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBsYW45MzAzX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTM4Ny1cXHQucGh5X3dyaXRlXFx0XFx0PSBsYW45MzAzX3BoeV93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM4ODpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gbGFuOTMwM19waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzg5LVxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gbGFuOTMwM19nZXRfZXRodG9vbF9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYz0xNDA0PXN0YXRpYyBpbnQgbGFuOTMwM19yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGxhbjkzMDMgKmNoaXApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTQxMy1cXHRjaGlwLVxcdTAwM2Vkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmxhbjkzMDNfc3dpdGNoX29wcztcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTQxNDpcXHRjaGlwLVxcdTAwM2Vkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNmxhbjkzMDNfcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xNDE1LVxcdGNoaXAtXFx1MDAzZWRzLVxcdTAwM2VwaHlzX21paV9tYXNrID0gR0VOTUFTSyhMQU45MzAzX05VTV9QT1JUUyAtIDEsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz0yNz1zdHJ1Y3QgeHdheV9ncGh5X21hdGNoX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy0zMS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjMyOnN0YXRpYyB2b2lkIGdzd2lwX3hyeDIwMF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzozMzpcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy02Mi1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjYzOnN0YXRpYyB2b2lkIGdzd2lwX3hyeDMwMF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo2NDpcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz00NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBnc3dpcF9od19pbmZvIGdzd2lwX3hyeDIwMCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDc1LVxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0NzY6XFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBnc3dpcF94cngyMDBfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTQ3Ny1cXHQucGNlX21pY3JvY29kZSA9IFxcdTAwMjZnc3dpcF9wY2VfbWljcm9jb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBnc3dpcF9od19pbmZvIGdzd2lwX3hyeDMwMCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDk2LVxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0OTc6XFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBnc3dpcF94cngzMDBfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTQ5OC1cXHQucGNlX21pY3JvY29kZSA9IFxcdTAwMjZnc3dpcF9wY2VfbWljcm9jb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaD0yNTU9c3RydWN0IGdzd2lwX2h3X2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaC0yNjMtXFx0ZW51bSBkc2FfdGFnX3Byb3RvY29sIHRhZ19wcm90b2NvbDtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oOjI2NDpcXHR2b2lkICgqcGh5bGlua19nZXRfY2Fwcykoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oOjI2NTpcXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY2OlxcdHN0cnVjdCBwaHlsaW5rX3BjcyAqKCptYWNfc2VsZWN0X3Bjcykoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaC0yNjctXFx0XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMjY2PXN0YXRpYyBpbnQgZ3N3aXBfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBuZXdfbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5MS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjkyOnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjkzOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEyOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjk3OlxcdHByaXYtXFx1MDAzZWh3X2luZm8tXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5OC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMzc1PXN0YXRpYyB2b2lkIGdzd2lwX3BvcnRfc2V0X3BhdXNlKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2LCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0MDQtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQwNTpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwNi1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0MDc6XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDA4LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDA5OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQxMC1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTUtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ1NjpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1Ny1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NTkte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0NjA6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDYxLVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ2OS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDcwOnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ3MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ3Ni17XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ3NzpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NzgtXFx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNTU5PXN0YXRpYyBpbnQgZ3N3aXBfc2V0X21hY19lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NjctXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU2ODpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTY5LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTcwOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3MS1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NzYtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU3NzpzdGF0aWMgaW50IGdzd2lwX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3OC1cXHRcXHRcXHRcXHRcXHQgICB1MzIgdGltZXIsIGJvb2wgdHhfY2xvY2tfc3RvcClcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTc5LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTgwOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU4MS1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE1OTI9c3RhdGljIGJvb2wgZ3N3aXBfc3VwcG9ydF9lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDEtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYwMjpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpnc3dpcF9waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjA0LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjA1OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwNi1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MTMtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNDpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBnc3dpcF9waHlsaW5rX21hY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNTpcXHQubWFjX2NvbmZpZ1xcdFxcdD0gZ3N3aXBfcGh5bGlua19tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTY6XFx0Lm1hY19saW5rX2Rvd25cXHRcXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE3OlxcdC5tYWNfbGlua191cFxcdFxcdD0gZ3N3aXBfcGh5bGlua19tYWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE4OlxcdC5tYWNfZGlzYWJsZV90eF9scGlcXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTk6XFx0Lm1hY19lbmFibGVfdHhfbHBpXFx0PSBnc3dpcF9waHlsaW5rX21hY19lbmFibGVfdHhfbHBpLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MjA6XFx0Lm1hY19zZWxlY3RfcGNzXFx0XFx0PSBnc3dpcF9waHlsaW5rX21hY19zZWxlY3RfcGNzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MjEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBnc3dpcF9zd2l0Y2hfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY0My1cXHQucG9ydF9tYXhfbXR1XFx0XFx0PSBnc3dpcF9wb3J0X21heF9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTY0NDpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZ3N3aXBfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjQ1LVxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gZ3N3aXBfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNjc4PWludCBnc3dpcF9wcm9iZV9jb21tb24oc3RydWN0IGdzd2lwX3ByaXYgKnByaXYsIHUzMiB2ZXJzaW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY5MC1cXHRwcml2LVxcdTAwM2Vkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmdzd2lwX3N3aXRjaF9vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTY5MTpcXHRwcml2LVxcdTAwM2Vkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNmdzd2lwX3BoeWxpbmtfbWFjX29wcztcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjkyLVxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTI4PXN0cnVjdCBnc3cxeHhfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNC1cXHRzdHJ1Y3RcXHRcXHRcXHRyZWdtYXAgKnNoZWxsO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjM1OlxcdHN0cnVjdFxcdFxcdFxcdHBoeWxpbmtfcGNzIHBjcztcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNi1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrXFx0Y2xlYXJfcmFuZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz0xMjQ9c3RhdGljIHZvaWQgZ3N3MXh4X21kaW9fcmVnbWFwX3VubG9jayh2b2lkICptZGlvX2xvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMjgtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTI5OnN0YXRpYyB1bnNpZ25lZCBpbnQgZ3N3MXh4X3Bjc19pbmJhbmRfY2FwcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzAtXFx0XFx0XFx0XFx0XFx0ICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzNC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxMzU6c3RhdGljIHN0cnVjdCBnc3cxeHhfcHJpdiAqcGNzX3RvX2dzdzF4eChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTM5LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE0MDpzdGF0aWMgaW50IGdzdzF4eF9wY3NfZW5hYmxlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNDgtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTQ5OnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfZGlzYWJsZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTYxLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE2MjpzdGF0aWMgdm9pZCBnc3cxeHhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNjMtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNjQ6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz0yMzQ9c3RhdGljIGludCBnc3cxeHhfcGNzX3Jlc2V0KHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTMzNC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozMzU6c3RhdGljIGludCBnc3cxeHhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTMzNi1cXHRcXHRcXHQgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNjktXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzcwOlxcdHN3aXRjaCAocGh5bGlua19nZXRfbGlua190aW1lcl9ucyhpbnRlcmZhY2UpKSB7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzcxLVxcdGNhc2UgMTAwMDA6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zOTMtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6Mzk0OlxcdHR4YW5lZyA9IHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnQoaW50ZXJmYWNlLCBhZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzk1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9NDUzPXN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfY2xlYXJfcmFuZWcoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDYxLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjQ2MjpzdGF0aWMgdm9pZCBnc3cxeHhfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjE0LjIwNzE3ODY0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjczNDQ5OTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBOZXR3b3JraW5nIFN1YnN5c3RlbXMgLSBMZXQncyBEaWcgSW4qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGBwaHlsaW5rYCBhbmQgYHBoeWxpYmAuIFJpZ2h0LCB0aGV5J3JlIGZ1bmRhbWVudGFsLCBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC9waHkvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIEkgbmVlZCB0byB2ZXJpZnkgdGhlaXIgYXZhaWxhYmlsaXR5IGFuZCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBlbmFibGUgdGhlbS4gQmVzdCB3YXkgdG8gZG8gdGhhdD8gSW5zcGVjdCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIG9wdGlvbnMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjk0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MTYuNDgwNjMyODUxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkzNTY4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCfGNvbmZpZyBQSFlMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo2OmNvbmZpZyBQSFlMSU5LXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVxcdGRlZl9ib29sIE9GXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjE2LjUyODU3ODE5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTE4NDMwMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgUEhZIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFBIWSBkcml2ZXJzIGFyZSBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiB0aGUgY29udGV4dCwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gaGVhZCBzdHJhaWdodCBmb3IgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhpcyBhcmVhIGlzIHVzdWFsbHkgd2hlcmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZm9yIG5ldHdvcmsgUEhZIGRyaXZlcnMgaXMgZGVmaW5lZC4gSSBpbW1lZGlhdGVseSB3YW50IHRvIGZvY3VzIG9uIHNlY3Rpb25zIGNvbmNlcm5pbmcgYFBIWUxJTktgIGFuZCBgUEhZTElCYC4gVGhvc2UgYXJlIGNvcmUgY29uY2VwdHMgaW4gbmV0d29yayBQSFkgZHJpdmVyIG1hbmFnZW1lbnQsIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyB0aGV5J3JlIHdpcmVkIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyByZXZlYWxzIGFib3V0IHRoZWlyIGRlcGVuZGVuY2llcywgb3B0aW9ucywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgaW5kaXZpZHVhbCBQSFkgZHJpdmVyIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGdldHRpbmcgYSBoaWdoLWxldmVsIHZpZXcgb2YgdGhpcyBjb21wb25lbnQgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3MDIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODoyMC4wNDcwMTE0OTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIFBIWUxJTktcXG4gICA3OlxcdFxcdHRyaXN0YXRlXFxuICAgODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAgOTpcXHRcXHRzZWxlY3QgU1dQSFlcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXFxuICAxMjpcXHRcXHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcXG4gIDEzOlxcdFxcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRtZW51Y29uZmlnIFBIWUxJQlxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxcbiAgMTk6XFx0XFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXFxuICAyMDpcXHRcXHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRpZiBQSFlMSUJcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIFNXUEhZXFxuICAyNTpcXHRcXHRib29sXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBQSFlfUEFDS0FHRVxcbiAgMjg6XFx0XFx0IHRyaXN0YXRlXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgTEVEIHRyaWdnZXJzIGZvciB0cmFja2luZyBsaW5rIHN0YXRlXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIEFkZHMgc3VwcG9ydCBmb3IgYSBzZXQgb2YgTEVEIHRyaWdnZXIgZXZlbnRzIHBlci1QSFkuICBMaW5rXFxuICAzNTpcXHRcXHQgIHN0YXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgdGhlIGV2ZW50cywgZm9yIGNvbnN1bXB0aW9uIGJ5IGFuXFxuICAzNjpcXHRcXHQgIExFRCBjbGFzcyBkcml2ZXIuICBUaGVyZSBhcmUgdHJpZ2dlcnMgZm9yIGVhY2ggbGluayBzcGVlZCBjdXJyZW50bHlcXG4gIDM3OlxcdFxcdCAgc3VwcG9ydGVkIGJ5IHRoZSBQSFkgYW5kIGFsc28gYSBvbmUgY29tbW9uIFxcXCJsaW5rXFxcIiB0cmlnZ2VyIGFzIGFcXG4gIDM4OlxcdFxcdCAgbG9naWNhbC1vciBvZiBhbGwgdGhlIGxpbmsgc3BlZWQgb25lcy5cXG4gIDM5OlxcdFxcdCAgQWxsIHRoZXNlIHRyaWdnZXJzIGFyZSBuYW1lZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOlxcbiAgNDA6XFx0XFx0ICAgICAgXFx1MDAzY21paSBidXMgaWRcXHUwMDNlOlxcdTAwM2NwaHlcXHUwMDNlOlxcdTAwM2NzcGVlZFxcdTAwM2VcXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0ICBXaGVyZSBzcGVlZCBpcyBpbiB0aGUgZm9ybTpcXG4gIDQzOlxcdFxcdFxcdFxcdTAwM2NTcGVlZCBpbiBtZWdhYml0c1xcdTAwM2VNYnBzIE9SIFxcdTAwM2NTcGVlZCBpbiBnaWdhYml0c1xcdTAwM2VHYnBzIE9SIGxpbmtcXG4gIDQ0OlxcdFxcdFxcdGZvciBhbnkgc3BlZWQga25vd24gdG8gdGhlIFBIWS5cXG4gIDQ1OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODoyMC4wNDcwOTAwNjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM1MDE5MDEyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBgUEhZTElOS2AgYW5kIGBQSFlMSUJgIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaWd1cmUgb3V0IHdoYXQgZXhhY3RseSBpcyBjYWxsaW5nIG9yIHJlZmVyZW5jaW5nIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUsIHBpbnBvaW50IGFueSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgaW5kaXJlY3QgbGlua3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgY29tcG9uZW50cyBvciBtb2R1bGVzIHRoYXQgYXJlIGxldmVyYWdpbmcgdGhlc2UgbGlicmFyaWVzLiBUaGlzIHdpbGwgaGVscCBtZSBhc3Nlc3MgdGhlIGltcGFjdCBvZiBjaGFuZ2VzLCBpZGVudGlmeSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGFuZCBvdmVyYWxsLCBiZXR0ZXIgbWFpbnRhaW4gdGhlIHN5c3RlbS4gSSBhbHNvIHdhbnQgdG8gZGV0ZXJtaW5lIHRoZSBsZXZlbCBvZiBjb3VwbGluZyB0aGV5IGhhdmUgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgcHJvamVjdCwgcGVyaGFwcyBldmVuIHdpdGggc3BlY2lmaWMgYWxnb3JpdGhtcyBvciBkYXRhIHN0cnVjdHVyZXMuIEtub3dpbmcgdGhpcyBoZWxwcyB0byBwbGFuIGZ1dHVyZSBkZXZlbG9wbWVudCBhbmQgcmVmYWN0b3JpbmcgZWZmb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1MDIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjIyLjM5NzI4ODc2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNDYyNDAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEhZTElOS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTEtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDo5MjpcXHRzZWxlY3QgUEhZTElOS1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZz0yPWNvbmZpZyBBTFRFUkFfVFNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy02LVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZzo3OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctOC1cXHRzZWxlY3QgUENTX0xZTlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZz0yMD1jb25maWcgQUc3MVhYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjItXFx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc6MjM6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjQtXFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIyPWNvbmZpZyBNQUNCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyNjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNy1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTgwPWNvbmZpZyBVQ0NfR0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctODMtXFx0c2VsZWN0IEZTTF9QUV9NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6ODQ6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnPTI9bWVudWNvbmZpZyBGU0xfRFBBQV9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEZTTF9EUEFBIFxcdTAwMjZcXHUwMDI2IEZTTF9GTUFOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZzo1OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy02LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9Mj1jb25maWcgRlNMX0RQQUEyX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXFx1MDAyNlxcdTAwMjYgRlNMX01DX0RQSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo1OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNi1cXHRzZWxlY3QgUENTX0xZTlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTMzPWNvbmZpZyBGU0xfRFBBQTJfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zNy1cXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXFx1MDAyNlxcdTAwMjYgRlNMX01DX0RQSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM5LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9MzA9Y29uZmlnIEZTTF9FTkVUQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzctXFx0c2VsZWN0IE5YUF9FTkVUQ19QRl9DT01NT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzozODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM5LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NDg9Y29uZmlnIE5YUF9FTkVUQzRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTU1LVxcdHNlbGVjdCBOWFBfTlRNUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjU2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTctXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NjY9Y29uZmlnIEZTTF9FTkVUQ19WRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNzEtXFx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NzI6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03My1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnPTI9Y29uZmlnIEZTTF9GTUFOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTUtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy03LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZz0yPWNvbmZpZyBGU19FTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnLTUtXFx0c2VsZWN0IE1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWc6NjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjItXFx0c2VsZWN0IE1WTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2MzpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02NC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctODktXFx0c2VsZWN0IE1WTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc9Nj1jb25maWcgUFJFU1RFUkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTE6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNy1cXHRzZWxlY3QgUElOQ1RSTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTg6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE5LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MzA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzEtXFx0c2VsZWN0IFBMRE1GV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTUxLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjUyOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy05LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xPWNvbmZpZyBTUEFSWDVfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctOC1cXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo5OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTEwLVxcdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnPTE1PWNvbmZpZyBNU0NDX09DRUxPVF9TV0lUQ0hfTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTktXFx0c2VsZWN0IFBBQ0tJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc6MjA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz00Mj1jb25maWcgUkVORVNBU19FVEhFUl9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy00Ny1cXHRzZWxlY3QgTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnOjQ4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ5LVxcdHNlbGVjdCBSRU5FU0FTX0dFTjRfUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTEtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVxcdHNlbGVjdCBGV19MT0FERVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzozMTpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMC1cXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxMDE6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMi1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0yNj1jb25maWcgWElMSU5YX0FYSV9FTUFDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yOS1cXHRkZXBlbmRzIG9uIFhJTElOWF9ETUFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzozMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTMxLVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTg9Y29uZmlnIFBDU19YUENTXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXFxcIlxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjEwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTEzPWNvbmZpZyBVU0JfTEFONzhYWFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE1LVxcdHNlbGVjdCBNSUlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTY6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTctXFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTcwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTcxLVxcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTktXFx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcXG5uZXQvZHNhL0tjb25maWc6MTA6XFx0c2VsZWN0IFBIWUxJTktcXG5uZXQvZHNhL0tjb25maWctMTEtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjI0LjEzMTkyOTYzMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MjIyNjI5MjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIFBIWS9QaHlsaW5rIGZvciBGdXp6aW5nKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzIHdpdGhpbiB0aGUgUEhZIGFuZCBQaHlsaW5rIHN1YnN5c3RlbXMuIEZpcnN0LCBJIG5vdGljZWQgdGhhdCBgVVNCX0xBTjc4WFhgLCBgVVNCX05FVF9BWDg4MTdYYCwgYW5kIGBORVRfRFNBYCBhbGwgc2VsZWN0IGBQSFlMSU5LYCwgYW5kIGJvdGggYFBIWUxJQmAgYW5kIGBQSFlMSU5LYCBhcmUga2VybmVsIGZlYXR1cmVzLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBmb3IgZGVlcGVyIGZ1enppbmcuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uIG1vZGlmaWNhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIFNwZWNpZmljYWxseSwgSSBzYXcgdGhhdCBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2RldGFjaGAsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLCBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfYnJpbmd1cF9waHlgIHdlcmUgdGhlIG9uZXMgbW9kaWZpZWQuIEkgbmVlZCB0byBmaWx0ZXIgdGhlc2UgZG93bi5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgSSBuZWVkIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGlzIG1lYW5zIGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBTbywgbGV0J3Mgc2VwYXJhdGUgdGhlIHN0YXRpYyBmcm9tIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucy5cblxuQmFzZWQgb24gdGhlIGNvZGUsIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfZGV0YWNoYCwgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAsIGFuZCBgcGh5bGlua19vZl9waHlfY29ubmVjdGAgYXJlIHRoZSBmb2N1cy5cblxuQ2hlY2tpbmcgdGhlIGRlZmluaXRpb25zOlxuLSBgcGh5X2F0dGFjaF9kaXJlY3RgIChpbiBgcGh5X2RldmljZS5jYCkgaXMgYGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpYC5cbi0gYHBoeV9kZXRhY2hgIChpbiBgcGh5X2RldmljZS5jYCkgaXMgYHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KWAuXG4tIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCAoaW4gYHBoeWxpbmsuY2ApIGlzIGBpbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpYC5cbi0gYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIChpbiBgcGh5bGluay5jYCkgaXMgYHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpYC5cbi0gYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCAoaW4gYHBoeWxpbmsuY2ApIGlzIGBpbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLCB1MzIgZmxhZ3MpYC5cbi0gYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIChpbiBgcGh5bGluay5jYCkgaXMgYGludCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGRldmljZV9ub2RlICpkbiwgdTMyIGZsYWdzKWAuXG5cbkFsbCBvZiB0aGVzZSBhcmUgbm9uLXN0YXRpYyBhbmQgYXBwZWFyIHRvIGJlIEFQSSBlbnRyeSBwb2ludHMsIHdoaWNoIG1lYW5zIHRoZXkgYXJlIGdyZWF0IGNhbmRpZGF0ZXMuXG5cbkZpbmFsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYFBIWUxJQmAgaXMgYSBtZW51Y29uZmlnIGFuZCBjYW4gYmUgZGlyZWN0bHkgZW5hYmxlZCBpbiB0aGUgYC5jb25maWdgIGFzIGBDT05GSUdfUEhZTElCPXlgLiBgUEhZTElOS2AsIGhvd2V2ZXIsIGhhcyBubyBwcm9tcHQsIHNvIGl0IGdldHMgc2VsZWN0ZWQgYnkgb3RoZXIgZHJpdmVycyB0aGF0IGRlcGVuZCBvbiBpdC4gVGhpcyBtYWtlcyBmdXp6aW5nIG1vcmUgY2hhbGxlbmdpbmcgc2luY2UgaXQgd2lsbCByZXF1aXJlIGEgc3BlY2lmaWMgZHJpdmVyIHRvIGJlIGVuYWJsZWQgdG8gZW5hYmxlIHRoZSB0ZXN0cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvbnNpZGVyIGBORVRfRFNBYCwgYFVTQl9MQU43OFhYYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgLCBzaW5jZSB0aGVzZSBhcmUgZHJpdmVycyB0aGF0IHNlbGVjdCBgUEhZTElOS2AuIFRoZXkgYXJlIHRoZSBlYXNpZXN0IHdheSB0byBlbnN1cmUgYFBIWUxJTktgIGlzIGVuYWJsZWQuXG5cbkluIHN1bW1hcnk6IEkgd2lsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCBhbmQgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIGFuZCBJJ2xsIG1ha2Ugc3VyZSB0byBlbmFibGUgZHJpdmVycyBsaWtlIGBORVRfRFNBYCwgYFVTQl9MQU43OFhYYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgUEhZIGFuZCBQaHlsaW5rIGZ1bmN0aW9uYWxpdHkgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzkwOCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MzMuMzU0NTYxOTQ1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM5NjI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0xBTjc4WFh8Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTk5PWNvbmZpZyBVU0JfUlRMODE1Mlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTEyLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExMzpjb25maWcgVVNCX0xBTjc4WFhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTQtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBMQU43OFhYIEJhc2VkIFVTQiBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY1LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MzMuNDAxOTYyODQzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyNjM0ODQ4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2Nlc3M6XG5cbioqVVNCIExBTjc4WFggRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgVVNCX0xBTjc4WFhgIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCBpdHMgZGVwZW5kZW5jaWVzLCBlc3BlY2lhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBUaGlzIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBkcml2ZXIgZ2V0cyBidWlsdCBjb3JyZWN0bHksIGFuZCBpdCBoZWxwcyB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCBtaWdodCByZWx5IG9uLiBUaGlzIGFsc28gZ2l2ZXMgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiB3aGVyZSBpdCBzaXRzIGluIHRoZSBicm9hZGVyIG5ldHdvcmsgZHJpdmVyIGxhbmRzY2FwZSBhbmQgbWlnaHQgcmV2ZWFsIHBvdGVudGlhbCBjb25mbGljdHMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBsYXRlciBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAyMjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODozNi42NjU0NTA1MDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMTE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcjgxNTIuXFxuIDExMjpcXHRcXG4gMTEzOlxcdGNvbmZpZyBVU0JfTEFONzhYWFxcbiAxMTQ6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBMQU43OFhYIEJhc2VkIFVTQiBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG4gMTE1OlxcdFxcdHNlbGVjdCBNSUlcXG4gMTE2OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuIDExNzpcXHRcXHRzZWxlY3QgTUlDUk9DSElQX1BIWVxcbiAxMTg6XFx0XFx0c2VsZWN0IENSQzMyXFxuIDExOTpcXHRcXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuIDEyMDpcXHRcXHRoZWxwXFxuIDEyMTpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgTWljcm9jaGlwIExBTjc4WFggYmFzZWQgVVNCIDJcXG4gMTIyOlxcdFxcdCAgXFx1MDAyNiBVU0IgMyAxMC8xMDAvMTAwMCBFdGhlcm5ldCBhZGFwdGVycy5cXG4gMTIzOlxcdFxcdCAgTEFONzgwMCA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJcXG4gMTI0OlxcdFxcdCAgTEFONzg1MCA6IFVTQiAyIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJcXG4gMTI1OlxcdFxcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMzA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbGFuNzh4eC5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0Y29uZmlnIFVTQl9VU0JORVRcXG4gMTMzOlxcdFxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG4gMTM0OlxcdFxcdHNlbGVjdCBNSUlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6MzYuNjY1NTU3OTU3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MzcyNjIxMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipDaGVja2luZyBgTkVUX0RTQWAgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L2RzYS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkVUX0RTQWAuIFRoaXMgaXNuJ3QganVzdCBhIGNhc3VhbCBnbGFuY2U7IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoYXQgbWlnaHQgYXJpc2UgZHVyaW5nIGNvbmZpZ3VyYXRpb24gb3IgYnVpbGQuIEFyZSB0aGVyZSBhbnkgbmV3IGRlcGVuZGVuY2llcyBJIG1pc3NlZCwgYXJlIHRoZXJlIGFueSBpbnRlcmFjdGlvbnMgdGhhdCBtaWdodCBjYXVzZSBhIGNvbmZsaWN0IHdpdGggb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcz8gSSBuZWVkIHRvIGJlIHN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgY29ycmVjdCBhbmQgdXAtdG8tZGF0ZSB3aXRoIHRoaXMgdXBkYXRlIG9yIGNoZWNrLWluLiBUaGUgZ29hbCBpcyBhIGNsZWFuLCBzdGFibGUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjQxLjEwMjgyMjg5MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2RzYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdG1lbnVjb25maWcgTkVUX0RTQVxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkRpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmVcXFwiXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBIU1IgfHwgSFNSPW5cXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRERVZJQ0VTXFxuICAgODpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuICAgOTpcXHRcXHRzZWxlY3QgTkVUX1NXSVRDSERFVlxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTI6XFx0XFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIGhhcmR3YXJlIHN3aXRjaGVzIHN1cHBvcnRlZFxcbiAgMTU6XFx0XFx0ICBieSB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX0RTQVxcbiAgMTg6XFx0XFxuICAxOTpcXHQjIERyaXZlcnMgbXVzdCBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIHRhZ2dpbmcgZm9ybWF0KHMpXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBORVRfRFNBX1RBR19OT05FXFxuICAyMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTm8tb3AgdGFnIGRyaXZlclxcXCJcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgU2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3Igc3dpdGNoZXMgd2hpY2ggZG9uJ3QgdGFnXFxuICAyNTpcXHRcXHQgIGZyYW1lcyBvdmVyIHRoZSBDUFUgcG9ydC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6NDEuMTAyOTMyNDcxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNTExMDI1NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgTmV0d29ya2luZyBQSFkgTGF5ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRvIGFzc2Vzcy4gRmlyc3QsIEknbSBub3RpbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgb3B0aW9uczogYFBIWUxJQmAsIGBQSFlMSU5LYCwgYFVTQl9ORVRfQVg4ODE3WGAsIGBVU0JfTEFONzhYWGAsIGFuZCBgTkVUX0RTQWAuIEkndmUgbWFkZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIHRob3NlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZm9ybWF0IHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJyYXkgY29ycmVjdGx5LCB3aXRob3V0IHRoYXQgcGVza3kgXCJDT05GSUdfXCIgcHJlZml4LCBzbyBpdCdzIGp1c3QgdGhlIHBsYWluIHN5bWJvbCBuYW1lcy5cblxuTm93LCBpcyB0aGlzIGV2ZW4gd29ydGggYSBkZWVwIGRpdmU/IEFic29sdXRlbHkhIFRoaXMgcGF0Y2ggaXMgZml4aW5nIHNvbWUgcHJldHR5IGNyaXRpY2FsIHN0YXRlIHRyYWNraW5nIGFuZCBjbGVhbnVwIGlzc3VlcyB3aXRoaW4gdGhlIFBIWSBsYXllci4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGBwaHlsaWJgIChgcGh5X2RldmljZS5jYCkgYW5kIGBwaHlsaW5rYCAoYHBoeWxpbmsuY2ApLiBUaGUgZml4IGFkZHJlc3NlczpcblxuMS4gIEVycm9yIGhhbmRsaW5nIGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGBwaHlfZGV0YWNoYDogSXQgZW5zdXJlcyB0aGF0IGBwaHlkZXYtXHUwMDNlaXJxYCBpcyByZXN0b3JlZCBjb3JyZWN0bHkgd2hlbiBhIGdlbmVyaWMgUEhZIGRyaXZlciBpcyB1bmJvdW5kLCBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGRldGFpbCBmb3Igc3RhYmlsaXR5LlxuMi4gIEVycm9yIHBhdGggaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgOiBUaGlzIHBhdGNoIGlzIG1ha2luZyBzdXJlIHRoZSBgcGwtXHUwMDNlcGh5ZGV2YCBzdGF0ZSBpcyBwcm9wZXJseSBjbGVhcmVkIHVzaW5nIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgZHVyaW5nIGZhaWx1cmUgdG8gcHJldmVudCBkYW5nbGluZyBvciBpbmNvbnNpc3RlbnQgcG9pbnRlcnMgb24gc3Vic2VxdWVudCBhdHRhY2htZW50IGF0dGVtcHRzIG9yIGRpc2Nvbm5lY3RzLlxuXG5UaGlzIGlzIGNvcmUgbmV0d29ya2luZyBzdHVmZiDigJMgUEhZIGxheWVyIHN0YXRlIG1hbmFnZW1lbnQsIGhvdyBlcnJvcnMgYXJlIGhhbmRsZWQgZHVyaW5nIFBIWSBhdHRhY2gvZGV0YWNoL2JyaW5ndXAsIGFuZCB1bHRpbWF0ZWx5LCBuZXR3b3JrIGRldmljZSBzZXR1cCBhbmQgdGVhcmRvd24uIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gY2F1c2Ugc29tZSBuYXN0eSBpbnRlcm1pdHRlbnQgaXNzdWVzIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS5cblxuSSd2ZSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLCBzbyBJJ20gbGlzdGluZyB0aGVtIG91dDpcblxuKiAgIGBwaHlfYXR0YWNoX2RpcmVjdGBcbiogICBgcGh5X2RldGFjaGBcbiogICBgcGh5bGlua19jb25uZWN0X3BoeWBcbiogICBgcGh5bGlua19kaXNjb25uZWN0X3BoeWBcblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cy5cblxuSSd2ZSBjaGVja2VkIHRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIGNoYW5nZWQgb3IgYXJlIGNhbGxpbmcgdGhlIGNvZGUgdGhhdCB3YXMgY2hhbmdlZDpcblxuKiAgIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxYCBpcyBzdGF0aWMuXG4qICAgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBpcyBzdGF0aWMuXG4qICAgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGlzIHN0YXRpYy5cblRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBjYWxsaW5nIHRoZW06XG4qICAgYHBoeV9hdHRhY2hfZGlyZWN0YFxuKiAgIGBwaHlfZGV0YWNoYFxuKiAgIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YFxuKiAgIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YFxuKiAgIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YFxuKiAgIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGBcblxuT2theSwgdGhpcyBsaXN0IGlzIGFsbCBJIG5lZWQuIEkndmUgZ290IG15OlxuXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXCJwaHlfYXR0YWNoX2RpcmVjdFwiLCBcInBoeV9kZXRhY2hcIiwgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiXWBcbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXCJQSFlMSUJcIiwgXCJQSFlMSU5LXCIsIFwiVVNCX0xBTjc4WFhcIiwgXCJVU0JfTkVUX0FYODgxN1hcIiwgXCJORVRfRFNBXCJdYFxuXG5JJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRoaXMgcGF0Y2ggaXMgYWJvdXQgcm9idXN0aWZ5aW5nIHRoZSBQSFkgbGF5ZXIsIHByZXZlbnRpbmcgcG90ZW50aWFsIGlzc3VlcyB3aXRoIG9ycGhhbmVkIHBvaW50ZXJzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBpbXByb3ZpbmcgZXJyb3IgcGF0aHMgZHVyaW5nIGNyaXRpY2FsIFBIWSBvcGVyYXRpb25zLiBJJ20gY2FsbGluZyBpdCBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTM1NiwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODo1MS42MTM5NjE2NTFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzYyODM2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQSFlMSU5LXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJORVRfRFNBXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgICBcInBoeV9kZXRhY2hcIixcbiAgICBcInBoeWxpbmtfY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZGlzY29ubmVjdF9waHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBlcnJvciB1bndpbmRpbmcgaW4gUEhZTElCIGFuZCBQSFlMSU5LIHN1YnN5c3RlbXM6IHJlc3RvcmluZyBwaHlkZXYtXFx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIHVuYmluZC9hdHRhY2htZW50IGZhaWx1cmUgaW4gcGh5X2RldmljZS5jLCBhbmQgcHJvcGVybHkgY2xlYXJpbmcgcGwtXFx1MDAzZXBoeWRldiBzdGF0ZSB2aWEgcGh5bGlua19jbGVhcl9waHlkZXYgd2hlbiBwaHlsaW5rX2JyaW5ndXBfcGh5IGZhaWxzIGluIHBoeWxpbmsuYy4gVGhlc2UgY2hhbmdlcyBtb2RpZnkgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiBFdGhlcm5ldCBQSFkgbWFuYWdlbWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBIWUxJTktcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIk5FVF9EU0FcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiLFxuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHN0YXRlIG1hbmFnZW1lbnQgYW5kIGVycm9yIHVud2luZGluZyBpbiBQSFlMSUIgYW5kIFBIWUxJTksgc3Vic3lzdGVtczogcmVzdG9yaW5nIHBoeWRldi1cXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgdW5iaW5kL2F0dGFjaG1lbnQgZmFpbHVyZSBpbiBwaHlfZGV2aWNlLmMsIGFuZCBwcm9wZXJseSBjbGVhcmluZyBwbC1cXHUwMDNlcGh5ZGV2IHN0YXRlIHZpYSBwaHlsaW5rX2NsZWFyX3BoeWRldiB3aGVuIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMgaW4gcGh5bGluay5jLiBUaGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIEV0aGVybmV0IFBIWSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1ODo1MS42ODc1OTU1NzhaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTQ0NjcxMjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTg6NTEuNjg4MTc4MDE4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTcxNDQwODQ3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiB0aGUgUEhZIGFuZCBwaHlsaW5rIHN1YnN5c3RlbXMuIFNwZWNpZmljYWxseSwgaXQgcmVzdG9yZXMgdGhlIFBIWSBJUlEgY29uZmlndXJhdGlvbiB1cG9uIGRldGFjaG1lbnQvZXJyb3IgZm9yIGdlbmVyaWMgUEhZIGRyaXZlcnMgYW5kIGVuc3VyZXMgdGhhdCBwaHlsaW5rIHN0YXRlIGlzIHByb3Blcmx5IGNsZWFyZWQgaWYgcGh5IGJyaW5ndXAgZmFpbHMuXFxuXFxuVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUga2VybmVsLWludGVybmFsIHBvaW50ZXJzLCBib29sZWFuIHN0YXRlIGZsYWdzLCBhbmQgbXV0ZXggbG9ja2luZy4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGRhdGEgdHJhbnNmZXJyZWQgdG8gdXNlciBzcGFjZSAobm8gY29weV90b191c2VyLCBuZXRsaW5rIG1lc3NhZ2VzLCBpb2N0bHMsIGV0Yy4pLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbG9ja2luZyBvciB1c2UtYWZ0ZXItZnJlZS9OVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBkZXRlY3RlZCBieSBMT0NLREVQIG9yIEtBU0FOLCBub3QgS01TQU4uIEhlbmNlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMWFkY2QzY2MwMzc1NzlkZDVlNzExMjU1MmU1ODA0ZjBmNjkxYjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li4yMGZjMjkzNTVmNjBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MzQsNiArMTczNCwxNyBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIFVuZG8gdGhlIFBIWV9QT0xMIHRoYXQgcGh5X3Byb2JlKCkgc2V0cyB3aGVuIGEgZHJpdmVyIHdpdGhvdXRcbisgKiBpbnRlcnJ1cHQgY2FsbGJhY2tzIGJpbmRzLiBUaGUgYmluZCBjeWNsZSBuZXZlciB3cml0ZXMgYnVzLVx1MDAzZWlycVtdLFxuKyAqIHNvIHRoZSB0YWJsZSBzdGlsbCBob2xkcyB0aGUgcHJlLWJpbmQgdmFsdWU7IGFueXRoaW5nIGVsc2UgdGhlIFBIWVxuKyAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuXG4rICovXG4rc3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGlmIChwaHlkZXYtXHUwMDNlaXJxID09IFBIWV9QT0xMKVxuK1x0XHRwaHlkZXYtXHUwMDNlaXJxID0gcGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZWlycVtwaHlkZXYtXHUwMDNlbWRpby5hZGRyXTtcbit9XG4rXG4gLyoqXG4gICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuQEAgLTE4OTYsNiArMTkwNyw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIGVycm9yX21vZHVsZV9wdXQ6XG4gXHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdGQtXHUwMDNlZHJpdmVyID0gTlVMTDtcbiBlcnJvcl9wdXRfZGV2aWNlOlxuQEAgLTE5NjUsNiArMTk3Nyw3IEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4gXHQgKi9cbiBcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuK1x0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4gXHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuIFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbisvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC1cdTAwM2VwaHlkZXZfbXV0ZXguICovXG4rc3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuK1x0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbitcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aWYgKHJldCA9PSAwIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXG4gXHRcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xuIFxuK1x0aWYgKHJldCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdH1cbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIzNDcsMTUgKzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFx0cGh5ID0gcGwtXHUwMDNlcGh5ZGV2O1xuLVx0aWYgKHBoeSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4tXHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0fVxuK1x0aWYgKHBoeSlcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcbiBcdGlmIChwaHkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU4OjUxLjY4ODE3OTIxOFoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NzI0MzU5NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIEtNU0FOIGZ1enppbmcgaXMgbmVjZXNzYXJ5LiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyB0d28gZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L2AgZGlyZWN0b3J5OiBgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2AuIFRoYXQncyBhbHJlYWR5IHRlbGxpbmcuIFRoZSBuZXR3b3JrIFBIWSBsYXllciBpcyBvZnRlbiBhIHNvdXJjZSBvZiBzdWJ0bGUgaXNzdWVzLlxuXG5Mb29raW5nIGF0IGBwaHlfZGV2aWNlLmNgLCB0aGUga2V5IGFkZGl0aW9uIGlzIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKClgLiBUaGlzIHNlZW1zIHRvIGJlIGFib3V0IHJlc3RvcmluZyBhbiBpbnRlcnJ1cHQgcmVxdWVzdCBsaW5lLCBzcGVjaWZpY2FsbHkgZnJvbSB0aGUgTURJTyBidXMncyBJUlEgYXJyYXkgaWYgdGhlIGN1cnJlbnQgYHBoeWRldi1cdTAwM2VpcnFgIGlzIGBQSFlfUE9MTGAuIEludGVyZXN0aW5nLiBJdCdzIGNhbGxlZCBpbiBlcnJvciBwYXRocyBvZiBgcGh5X2F0dGFjaF9kaXJlY3QoKWAgYW5kIGBwaHlfZGV0YWNoKClgLiBUaGlzIHN1Z2dlc3RzIGl0J3MgYSBjbGVhbnVwIG9yIHJlY292ZXJ5IGZ1bmN0aW9uLCBoYW5kbGluZyBjYXNlcyB3aGVyZSBpbml0aWFsIGludGVycnVwdCBzZXR1cCBtaWdodCBmYWlsIG9yIG5lZWRzIHRvIGJlIHJldmVydGVkLiBUaGVzZSB0eXBlcyBvZiBlcnJvciBwYXRocyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgS01TQU4gY2hlY2tzLCBiZWNhdXNlIG9mdGVuIHlvdSdsbCBiZSBleGl0aW5nIGFuIGVycm9yIHBhdGgsIGJ1dCBoYXZlbid0IGFjdHVhbGx5IGRlYWxsb2NhdGVkLCBvciBoYXZlbid0IHByb3Blcmx5IHJlc2V0IHNvbWV0aGluZy4gVGhhdCdzIGFsd2F5cyBhIGdvb2QgcGxhY2UgdG8gbG9vayBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5OZXh0LCBgcGh5bGluay5jYCBhZGRzIGEgaGVscGVyIGZ1bmN0aW9uLCBgcGh5bGlua19jbGVhcl9waHlkZXYoKWAuIEl0IGxvb2tzIGxpa2UgaXQncyB1c2VkIGluIHRoZSBlcnJvciBwYXRoIG9mIGBwaHlsaW5rX2JyaW5ndXBfcGh5KClgIOKAkyB3aGljaCBpcyBhbm90aGVyIHJlZCBmbGFnLCBhIHNldHVwIGZ1bmN0aW9uIHdpdGggYSBzcGVjaWZpYyBlcnJvciBwYXRoLiBUaGlzIHN1Z2dlc3RzIHRoYXQgcmVzb3VyY2VzIG1pZ2h0IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjbGVhcmVkIGluIHRoZSBjYXNlIG9mIGZhaWx1cmUsIGFuZCB0aGUgYHBoeWxpbmtfZGlzY29ubmVjdF9waHkoKWAgZnVuY3Rpb24gaXMgcmVmYWN0b3JlZCB0byB1c2UgaXQuIFRoaXMgY291bGQgbWVhbiB3ZSdyZSBzZWVpbmcgaW1wcm92ZWQgcmVzb3VyY2UgbWFuYWdlbWVudCwgYnV0IGl0IGNvdWxkIGFsc28gaGlkZSBhIHN1YnRsZSBtZW1vcnkgaXNzdWUuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIGludGVycnVwdCBtYW5hZ2VtZW50IGFuZCBQSFkgZGV2aWNlIHNldHVwL3RlYXJkb3duIGluIHRoZXNlIGFyZWFzLCBJJ20gbGVhbmluZyB0b3dhcmRzICp5ZXMqLCB3ZSBtaWdodCBuZWVkIEtNU0FOIGZ1enppbmcgaGVyZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSB0byBjb25maXJtIG15IGluaXRpYWwgaW1wcmVzc2lvbi4gSSdsbCBuZWVkIHRvIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgdGhlIGNvbnRleHQgYXJvdW5kIHRoZXNlIG5ldyBmdW5jdGlvbnMgYW5kIHRoZSBlcnJvciBoYW5kbGluZyBpbiBib3RoIGZpbGVzIHRvIGZ1bGx5IGFzc2VzcyB0aGUgcmlzay4gSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgUEhZIGRldmljZXMgaW50ZXJhY3Qgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrIGFuZCBob3cgdGhlIGludGVycnVwdCBsb2dpYyBpcyBpbXBsZW1lbnRlZCwgbWFraW5nIHN1cmUgdGhhdCByZXNvdXJjZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLCByZWxlYXNlZCwgYW5kIHRoYXQgcmFjZSBjb25kaXRpb25zIGFyZSBhdm9pZGVkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU5OjAwLjQxMjU0MzAzM1oiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzMwOlxcdH1cXG4xNzMxOlxcdFxcbjE3MzI6XFx0c3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4xNzMzOlxcdHtcXG4xNzM0OlxcdFxcdHJldHVybiBwaHlkcnYtXFx1MDAzZWNvbmZpZ19pbnRyIFxcdTAwMjZcXHUwMDI2IHBoeWRydi1cXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcXG4xNzM1OlxcdH1cXG4xNzM2OlxcdFxcbjE3Mzc6XFx0LyogVW5kbyB0aGUgUEhZX1BPTEwgdGhhdCBwaHlfcHJvYmUoKSBzZXRzIHdoZW4gYSBkcml2ZXIgd2l0aG91dFxcbjE3Mzg6XFx0ICogaW50ZXJydXB0IGNhbGxiYWNrcyBiaW5kcy4gVGhlIGJpbmQgY3ljbGUgbmV2ZXIgd3JpdGVzIGJ1cy1cXHUwMDNlaXJxW10sXFxuMTczOTpcXHQgKiBzbyB0aGUgdGFibGUgc3RpbGwgaG9sZHMgdGhlIHByZS1iaW5kIHZhbHVlOyBhbnl0aGluZyBlbHNlIHRoZSBQSFlcXG4xNzQwOlxcdCAqIGNhcnJpZXMgZGlkIG5vdCBjb21lIGZyb20gdGhlIGJpbmQgYW5kIG11c3Qgc3RhbmQuXFxuMTc0MTpcXHQgKi9cXG4xNzQyOlxcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xNzQzOlxcdHtcXG4xNzQ0OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWlycSA9PSBQSFlfUE9MTClcXG4xNzQ1OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlaXJxID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlaXJxW3BoeWRldi1cXHUwMDNlbWRpby5hZGRyXTtcXG4xNzQ2OlxcdH1cXG4xNzQ3OlxcdFxcbjE3NDg6XFx0LyoqXFxuMTc0OTpcXHQgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXFxuMTc1MDpcXHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcXG4xNzUxOlxcdCAqIEBwaHlkZXY6IFBvaW50ZXIgdG8gcGh5X2RldmljZSB0byBhdHRhY2hcXG4xNzUyOlxcdCAqIEBmbGFnczogUEhZIGRldmljZSdzIGRldl9mbGFnc1xcbjE3NTM6XFx0ICogQGludGVyZmFjZTogUEhZIGRldmljZSdzIGludGVyZmFjZVxcbjE3NTQ6XFx0ICpcXG4xNzU1OlxcdCAqIERlc2NyaXB0aW9uOiBDYWxsZWQgYnkgZHJpdmVycyB0byBhdHRhY2ggdG8gYSBwYXJ0aWN1bGFyIFBIWVxcbjE3NTY6XFx0ICogICAgIGRldmljZS4gVGhlIHBoeV9kZXZpY2UgaXMgZm91bmQsIGFuZCBwcm9wZXJseSBob29rZWQgdXBcXG4xNzU3OlxcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXFxuMTc1ODpcXHQgKiAgICAgZ2VuZXJpYyBkcml2ZXIgaXMgdXNlZC4gIFRoZSBwaHlfZGV2aWNlIGlzIGdpdmVuIGEgcHRyIHRvXFxuMTc1OTpcXHQgKiAgICAgdGhlIGF0dGFjaGluZyBkZXZpY2UsIGFuZCBnaXZlbiBhIGNhbGxiYWNrIGZvciBsaW5rIHN0YXR1c1xcbjE3NjA6XFx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxcbjE3NjE6XFx0ICogICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSByZWZlcmVuY2Ugb24gdGhlIHBoeSBkZXZpY2UuXFxuMTc2MjpcXHQgKi9cXG4xNzYzOlxcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbjE3NjQ6XFx0XFx0XFx0ICAgICAgdTMyIGZsYWdzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjE3NjU6XFx0e1xcbjE3NjY6XFx0XFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cXHUwMDNlbWRpby5idXM7XFxuMTc2NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkID0gXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXY7XFxuMTc2ODpcXHRcXHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcXG4xNzY5OlxcdFxcdGludCBlcnI7XFxuMTc3MDpcXHRcXG4xNzcxOlxcdFxcdC8qIEZvciBFdGhlcm5ldCBkZXZpY2UgZHJpdmVycyB0aGF0IHJlZ2lzdGVyIHRoZWlyIG93biBNRElPIGJ1cywgd2VcXG4xNzcyOlxcdFxcdCAqIHdpbGwgaGF2ZSBidXMtXFx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcXG4xNzczOlxcdFxcdCAqIG91ciBvd24gbW9kdWxlLVxcdTAwM2VyZWZjbnQgaGVyZSwgb3RoZXJ3aXNlIHdlIHdvdWxkIG5vdCBiZSBhYmxlIHRvXFxuMTc3NDpcXHRcXHQgKiB1bmxvYWQgbGF0ZXIgb24uXFxuMTc3NTpcXHRcXHQgKi9cXG4xNzc2OlxcdFxcdGlmIChkZXYpXFxuMTc3NzpcXHRcXHRcXHRuZGV2X293bmVyID0gZGV2LVxcdTAwM2VkZXYucGFyZW50LVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyO1xcbjE3Nzg6XFx0XFx0aWYgKG5kZXZfb3duZXIgIT0gYnVzLVxcdTAwM2Vvd25lciBcXHUwMDI2XFx1MDAyNiAhdHJ5X21vZHVsZV9nZXQoYnVzLVxcdTAwM2Vvd25lcikpIHtcXG4xNzc5OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiZmFpbGVkIHRvIGdldCB0aGUgYnVzIG1vZHVsZVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU5OjAwLjQxMjgzODkyM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjExNDAxOTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipEaWdnaW5nIGludG8gUEhZIExpbmsgTWFuYWdlbWVudCoqXG5cbkFscmlnaHQsIEknbSBhbHJlYWR5IGluIHRoZSB0aGljayBvZiB0aGlzIFBIWSBkcml2ZXIgaXNzdWUsIGJ1dCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByYWJiaXQgaG9sZSwgSSBzaG91bGQgY2lyY2xlIGJhY2sgYW5kIHZlcmlmeSBzb21ldGhpbmcgY3J1Y2lhbC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBJJ3ZlIGFjY291bnRlZCBmb3IgZXZlcnkgcG90ZW50aWFsIGludGVyYWN0aW9uLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCBhbmQgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIFBIWSBsaW5rIGlzIGJlaW5nIGhhbmRsZWQgcHJvcGVybHkuIFRoZXNlIGFyZSBmdW5kYW1lbnRhbCBmb3IgdGhlIGRyaXZlciwgYW5kIEkgY2FuJ3QgYWZmb3JkIGFueSBvdmVyc2lnaHQgaGVyZS4gSSBrbm93IEkndmUgYmVlbiBmb2N1c2VkIG9uIFgsIFksIGFuZCBaLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29yZSBsaW5rIGVzdGFibGlzaG1lbnQgYW5kIHRha2Vkb3duIGFyZSByb2NrLXNvbGlkLCBvciBldmVyeXRoaW5nIGRvd25zdHJlYW0gaXMgZ29pbmcgdG8gYnJlYWsuIEl04oCZcyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaDsgYSBsaXR0bGUgZXh0cmEgdGltZSBub3cgY291bGQgc2F2ZSBhIGJpZyBoZWFkYWNoZSBsYXRlci4gSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgYnJpbmcgdXAgYW5kIGRpc2Nvbm5lY3Qgb3BlcmF0aW9ucyBpbiByZWxhdGlvbiB0byB0aGUgd2lkZXIgcHJvYmxlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgyMywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTk6MDQuMDI0MjQzNjQxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4Mjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxOTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxOTA6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZXN1cHBvcnRlZCxcXG4yMTkxOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbjIxOTI6XFx0XFxuMjE5MzpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX21hbmFnZWRfcG0pXFxuMjE5NDpcXHRcXHRcXHRwaHktXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xcbjIxOTc6XFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHBoeSkgXFx1MDAzZSAwO1xcbjIxOTg6XFx0XFxuMjE5OTpcXHRcXHRpZiAocGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XFxuMjIwMDpcXHRcXHRcXHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0J3NcXG4yMjAxOlxcdFxcdFxcdCAqIHJlY2VpdmUgY2xvY2suXFxuMjIwMjpcXHRcXHRcXHQgKi9cXG4yMjAzOlxcdFxcdFxcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXFxuMjIwNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XFxuMjIwNTpcXHRcXHRcXHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxcbjIyMDY6XFx0XFx0XFx0XFx0cmV0ID0gMDtcXG4yMjA3OlxcdFxcdH1cXG4yMjA4OlxcdFxcbjIyMDk6XFx0XFx0aWYgKHJldCA9PSAwIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcXG4yMjEwOlxcdFxcdFxcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xcbjIyMTE6XFx0XFxuMjIxMjpcXHRcXHRpZiAocmV0KSB7XFxuMjIxMzpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE0OlxcdFxcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbjIyMTU6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE2OlxcdFxcdH1cXG4yMjE3OlxcdFxcbjIyMTg6XFx0XFx0cmV0dXJuIHJldDtcXG4yMjE5OlxcdH1cXG4yMjIwOlxcdFxcbjIyMjE6XFx0c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbjIyMjI6XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4yMjIzOlxcdHtcXG4yMjI0OlxcdFxcdHUzMiBmbGFncyA9IDA7XFxuMjIyNTpcXHRcXG4yMjI2OlxcdFxcdGlmIChXQVJOX09OKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkpXFxuMjIyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yMjI4OlxcdFxcbjIyMjk6XFx0XFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYpXFxuMjIzMDpcXHRcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbjIyMzE6XFx0XFxuMjIzMjpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX3JlcXVpcmVzX3J4YylcXG4yMjMzOlxcdFxcdFxcdGZsYWdzIHw9IFBIWV9GX1JYQ19BTFdBWVNfT047XFxuMjIzNDpcXHRcXG4yMjM1OlxcdFxcdHJldHVybiBwaHlfYXR0YWNoX2RpcmVjdChwbC1cXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xcbjIyMzY6XFx0fVxcbjIyMzc6XFx0XFxuMjIzODpcXHQvKipcXG4yMjM5OlxcdCAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTk6MDQuMDI0NTI4NDEyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ4MDc3MTA4ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZL1BoeWxpbmsgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHBvdGVudGlhbCBJUlEgcmVzdG9yYXRpb24gaXNzdWVzIHdpdGggZ2VuZXJpYyBQSFkgZHJpdmVycy4gSXQgYXBwZWFycyB0aGF0IHdoZW4gYSBnZW5lcmljIFBIWSBkcml2ZXIgaW5pdGlhbGx5IGJpbmRzLCBpdCBtaWdodCBzZXQgdGhlIElSUSB0byBgUEhZX1BPTExgLiBJZiB0aGUgUEhZIGZhaWxzIHRvIGF0dGFjaCBvciBpcyBkZXRhY2hlZCwgdGhlIGNvZGUgbm93IGVuc3VyZXMgdGhhdCB0aGUgb3JpZ2luYWwgSVJRIChhcyBkZWZpbmVkIGJ5IHRoZSBNRElPIGJ1cykgaXMgcmVzdG9yZWQuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2Qgc2FmZWd1YXJkIHRvIHByZXZlbnQgYSBsYXRlciwgbW9yZSBzcGVjaWZpYyBkcml2ZXIgZnJvbSBpbmhlcml0aW5nIGFuIGluY29ycmVjdCBwb2xsaW5nIGNvbmZpZ3VyYXRpb24uIEl0IGFsc28gdG91Y2hlcyBgcGh5bGlua19icmluZ3VwX3BoeWAgdG8gaGFuZGxlIGVycm9ycyBkdXJpbmcgdGhlIGJyaW5ndXAgcHJvY2VzcywgZW5zdXJpbmcgcHJvcGVyIGNsZWFudXAgKHNldHRpbmcgYHBsLVx1MDAzZXBoeWRldmAgdG8gYE5VTExgIGFuZCBjbGVhcmluZyBmbGFncykgd2hlbiBhIGZhaWx1cmUgb2NjdXJzLiBUaGUgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIGZ1bmN0aW9uIGlzIGFsc28gcmVmYWN0b3JlZCB0byB1c2UgdGhpcyBuZXcgaGVscGVyLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgZm9yIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcywgb2YgY291cnNlLiBIb3dldmVyLCBhZnRlciBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIEknbSBub3Qgc2VlaW5nIGFueXRoaW5nIHRoYXQgc3RhbmRzIG91dC4gVGhpcyBpcyBnb29kOiBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyB1c2VyLXNwYWNlIGludGVyYWN0aW9ucywgbm8gbW9kaWZpZWQgY29weSBvcGVyYXRpb25zLCBhbmQgbm8gZXhwb3NlZCB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlc2UgY2hhbmdlcyBhcmUgY2xlYXJseSBmb2N1c2VkIG9uIGVycm9yIGhhbmRsaW5nLCBjbGVhbnVwIHByb2NlZHVyZXMsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUEhZL3BoeWxpbmsgc3ViLXN5c3RlbS5cblxuR2l2ZW4gdGhhdCBpdOKAmXMgc3RyaWN0bHkgZXJyb3IgaGFuZGxpbmcsIGNsZWFudXAsIGFuZCBsb2NraW5nLXJlbGF0ZWQgY2hhbmdlcywgdGhlIG1vc3QgbGlrZWx5IHJpc2tzIHdvdWxkIGJlIHJhY2UgY29uZGl0aW9ucywgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcywgbG9ja2luZyBwcm9ibGVtcywgYW5kIHBvdGVudGlhbGx5IHVzZS1hZnRlci1mcmVlIGJ1Z3MuIEJ1dCwgdGhhdCdzIHdoYXQgdG9vbHMgbGlrZSBLQVNBTiBhbmQgTE9DS0RFUCBhcmUgZm9yLCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBzaG91bGQgY2F0Y2ggdGhlIHJlc3QuIFRoZXJlZm9yZSwgSSBiZWxpZXZlIHRoYXQgYE5lZWRzS01TQU5gIHNob3VsZCBpbmRlZWQgYmUgc2V0IHRvIGBmYWxzZWAuIFRpbWUgdG8gbW92ZSBvbnRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4ODcsIk91dHB1dFRva2VucyI6MTg3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTk6MDguODMyMjQyNDdaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiB0aGUgUEhZIGFuZCBwaHlsaW5rIHN1YnN5c3RlbXMuIFNwZWNpZmljYWxseSwgaXQgcmVzdG9yZXMgdGhlIFBIWSBJUlEgY29uZmlndXJhdGlvbiB1cG9uIGRldGFjaG1lbnQvZXJyb3IgZm9yIGdlbmVyaWMgUEhZIGRyaXZlcnMgYW5kIGVuc3VyZXMgdGhhdCBwaHlsaW5rIHN0YXRlIGlzIHByb3Blcmx5IGNsZWFyZWQgaWYgcGh5IGJyaW5ndXAgZmFpbHMuXFxuXFxuVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUga2VybmVsLWludGVybmFsIHBvaW50ZXJzLCBib29sZWFuIHN0YXRlIGZsYWdzLCBhbmQgbXV0ZXggbG9ja2luZy4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGRhdGEgdHJhbnNmZXJyZWQgdG8gdXNlciBzcGFjZSAobm8gY29weV90b191c2VyLCBuZXRsaW5rIG1lc3NhZ2VzLCBpb2N0bHMsIGV0Yy4pLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbG9ja2luZyBvciB1c2UtYWZ0ZXItZnJlZS9OVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBkZXRlY3RlZCBieSBMT0NLREVQIG9yIEtBU0FOLCBub3QgS01TQU4uIEhlbmNlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gdGhlIFBIWSBhbmQgcGh5bGluayBzdWJzeXN0ZW1zLiBTcGVjaWZpY2FsbHksIGl0IHJlc3RvcmVzIHRoZSBQSFkgSVJRIGNvbmZpZ3VyYXRpb24gdXBvbiBkZXRhY2htZW50L2Vycm9yIGZvciBnZW5lcmljIFBIWSBkcml2ZXJzIGFuZCBlbnN1cmVzIHRoYXQgcGh5bGluayBzdGF0ZSBpcyBwcm9wZXJseSBjbGVhcmVkIGlmIHBoeSBicmluZ3VwIGZhaWxzLlxcblxcblRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIGtlcm5lbC1pbnRlcm5hbCBwb2ludGVycywgYm9vbGVhbiBzdGF0ZSBmbGFncywgYW5kIG11dGV4IGxvY2tpbmcuIFRoZXJlIGFyZSBubyBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBkYXRhIHRyYW5zZmVycmVkIHRvIHVzZXIgc3BhY2UgKG5vIGNvcHlfdG9fdXNlciwgbmV0bGluayBtZXNzYWdlcywgaW9jdGxzLCBldGMuKS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIGxvY2tpbmcgb3IgdXNlLWFmdGVyLWZyZWUvTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbm90IEtNU0FOLiBIZW5jZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[1] Phase: Succeeded StartedAt: 2026-09-02 21:59:21 +0000 UTC FinishedAt: 2026-09-02 21:59:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-02 21:59:21 +0000 UTC FinishedAt: 2026-09-02 21:59:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2] Phase: Succeeded StartedAt: 2026-09-02 21:59:21 +0000 UTC FinishedAt: 2026-09-02 23:39:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-02 21:59:21 +0000 UTC FinishedAt: 2026-09-02 23:39:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-02 21:59:21 +0000 UTC FinishedAt: 2026-09-02 21:59:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-02 21:59:21 +0000 UTC FinishedAt: 2026-09-02 21:59:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-convert-artifact-391783083/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-02 21:59:31 +0000 UTC FinishedAt: 2026-09-02 22:16:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-02 21:59:31 +0000 UTC FinishedAt: 2026-09-02 22:16:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd2df57b-4321-4c2a-8dc0-e2077c165cea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-convert-artifact-391783083/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "f42d86d8-af54-41fe-84f9-a976d3e37a9d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-1471001513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-02 21:59:31 +0000 UTC FinishedAt: 2026-09-02 22:16:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd2df57b-4321-4c2a-8dc0-e2077c165cea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-convert-artifact-391783083/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "f42d86d8-af54-41fe-84f9-a976d3e37a9d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-1471001513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-02 22:16:18 +0000 UTC FinishedAt: 2026-09-02 22:16:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-02 22:16:18 +0000 UTC FinishedAt: 2026-09-02 22:16:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-02 22:16:18 +0000 UTC FinishedAt: 2026-09-02 22:16:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-02 22:16:18 +0000 UTC FinishedAt: 2026-09-02 22:16:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-convert-artifact-3979719554/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-02 22:16:29 +0000 UTC FinishedAt: 2026-09-02 22:18:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-02 22:16:29 +0000 UTC FinishedAt: 2026-09-02 22:18:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f42d86d8-af54-41fe-84f9-a976d3e37a9d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-1471001513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-02 22:18:26 +0000 UTC FinishedAt: 2026-09-02 22:18:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-02 22:18:26 +0000 UTC FinishedAt: 2026-09-02 22:18:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-02 22:18:26 +0000 UTC FinishedAt: 2026-09-02 22:35:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-02 22:18:26 +0000 UTC FinishedAt: 2026-09-02 22:35:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd2df57b-4321-4c2a-8dc0-e2077c165cea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-convert-artifact-3979719554/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fd5bd5c9-3f67-4f8e-b0bf-7e11ba3adb58", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-845782486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-02 22:18:26 +0000 UTC FinishedAt: 2026-09-02 22:35:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd2df57b-4321-4c2a-8dc0-e2077c165cea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-convert-artifact-3979719554/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fd5bd5c9-3f67-4f8e-b0bf-7e11ba3adb58", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-845782486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-02 22:35:28 +0000 UTC FinishedAt: 2026-09-02 22:35:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-02 22:35:28 +0000 UTC FinishedAt: 2026-09-02 22:35:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-02 22:35:28 +0000 UTC FinishedAt: 2026-09-02 22:37:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-02 22:35:28 +0000 UTC FinishedAt: 2026-09-02 22:37:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fd5bd5c9-3f67-4f8e-b0bf-7e11ba3adb58,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-845782486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-02 22:37:26 +0000 UTC FinishedAt: 2026-09-02 23:39:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-02 22:37:26 +0000 UTC FinishedAt: 2026-09-02 23:39:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*f42d86d8-af54-41fe-84f9-a976d3e37a9d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fd5bd5c9-3f67-4f8e-b0bf-7e11ba3adb58,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-1471001513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-845782486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-02 22:37:26 +0000 UTC FinishedAt: 2026-09-02 22:37:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-02 22:37:26 +0000 UTC FinishedAt: 2026-09-02 22:37:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-convert-artifact-92952247/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-02 22:37:26 +0000 UTC FinishedAt: 2026-09-02 22:37:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-02 22:37:26 +0000 UTC FinishedAt: 2026-09-02 22:37:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-02 22:37:26 +0000 UTC FinishedAt: 2026-09-02 22:37:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-02 22:37:36 +0000 UTC FinishedAt: 2026-09-02 23:39:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmqmq9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK","USB_LAN78XX","USB_NET_AX8817X","NET_DSA"],"series_id":"015e48f6-eb4f-482f-a7aa-32fd5d59fe00","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-02 22:37:36 +0000 UTC FinishedAt: 2026-09-02 23:38:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f42d86d8-af54-41fe-84f9-a976d3e37a9d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fd5bd5c9-3f67-4f8e-b0bf-7e11ba3adb58,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-1471001513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-build-action-845782486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmqmq9/series-workflowmqmq9-convert-artifact-92952247/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}