Name: series-workflow2z7g2 Phase: Succeeded StartedAt: 2026-07-14 15:02:29 +0000 UTC FinishedAt: 2026-07-14 19:24:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[0] Phase: Succeeded StartedAt: 2026-07-14 15:02:29 +0000 UTC FinishedAt: 2026-07-14 15:20:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 15:02:30 +0000 UTC FinishedAt: 2026-07-14 15:20:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SUBTREES", "IPV6_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SUBTREES", "IPV6_MULTIPLE_TABLES" ], "series_id": "ff5e7ebd-5fdd-4f70-9406-a9020c08e453" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ipv6_saddr_rule5p5", "ipv6_fl_get_saddr", "ipv6_dev_get_saddr", "rt6_fill_node" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjZfU1VCVFJFRVMmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHY2X3NhZGRyX3J1bGU1cDUmIzM0OywKICAgICYjMzQ7aXB2Nl9mbF9nZXRfc2FkZHImIzM0OywKICAgICYjMzQ7aXB2Nl9kZXZfZ2V0X3NhZGRyJiMzNDssCiAgICAmIzM0O3J0Nl9maWxsX25vZGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBSRkM2NzI0IHJ1bGUgNS41IGZvciBJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBieSBpbnRyb2R1Y2luZyBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBhbmQgYGlwdjZfZmxfZ2V0X3NhZGRyYC4gSXQgbW9kaWZpZXMgY29yZSBJUHY2IHJvdXRpbmcgYW5kIGFkZHJlc3Mgc2VsZWN0aW9uIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIChlLmcuLCBjb25uZWN0LCBzZW5kbXNnKSBhbmQgbmV0bGluayByb3V0ZSBkdW1wcyAoYHJ0Nl9maWxsX25vZGVgKS4gVGhlIGZlYXR1cmUgcmVxdWlyZXMgYElQVjZfU1VCVFJFRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIHRvIGJlIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YTRkNTQ0MmMwMmIzOWI5MjU4MmZlMTFlYzhhZjIyYjRmYWRjODc4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MTc6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni1hZGRyc2VsLnJzdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZWQwMzJlNjk1NzA1Y1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3RcbkBAIC0wLDAgJiM0MzsxLDc1IEBAXG4mIzQzOy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO1xuJiM0Mzs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiYjNDM7SVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gdHJpdmlhXG4mIzQzOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJiM0MztcbiYjNDM7XG4mIzQzO1JGQzY3MjQgcnVsZSA1LjUgc3VwcG9ydFxuJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO1JGQzY3MjQgcnVsZSA1LjUgaXMgYSB2ZXJ5IHNob3J0IHBhcmFncmFwaCBpbiBhIGNvbXBsZXggUkZDIHRoYXQgaGFzIHR1cm5lZFxuJiM0MztvdXQgcXVpdGUgdHJpY2t5LCBidXQgYWxzbyBpbW1lbnNlbHkgdXNlZnVsIGluIG11bHRpaG9taW5nIHNjZW5hcmlvcy4gIEZvclxuJiM0MztyZWZlcmVuY2UsIGl0IHNheXM6XG4mIzQzO1xuJiM0Mzs6OlxuJiM0MztcbiYjNDM7ICAgUnVsZSA1LjU6IFByZWZlciBhZGRyZXNzZXMgaW4gYSBwcmVmaXggYWR2ZXJ0aXNlZCBieSB0aGUgbmV4dC1ob3AuXG4mIzQzOyAgIElmIFNBIG9yIFNBJiMzOTtzIHByZWZpeCBpcyBhc3NpZ25lZCBieSB0aGUgc2VsZWN0ZWQgbmV4dC1ob3AgdGhhdCB3aWxsXG4mIzQzOyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQiYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnRcbiYjNDM7ICAgbmV4dC1ob3AsIHRoZW4gcHJlZmVyIFNBLiAgU2ltaWxhcmx5LCBpZiBTQiBvciBTQiYjMzk7cyBwcmVmaXggaXNcbiYjNDM7ICAgYXNzaWduZWQgYnkgdGhlIG5leHQtaG9wIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNlbmQgdG8gRCBhbmQgU0Egb3JcbiYjNDM7ICAgU0EmIzM5O3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi5cbiYjNDM7XG4mIzQzO1RoZSB3YXkgdGhpcyB3b3JrcyBvbiBMaW51eCBpcyBhcyBmb2xsb3dzOlxuJiM0MztcbiYjNDM7LSBwcmlvciB0byBhbnkgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGhhcHBlbmluZywgd2hlbiByZWNlaXZpbmcgYSBSQSwgbW9yZVxuJiM0MzsgIHRoYW4gdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRlZmF1bHQgcm91dGUgKG9yIDo6LzEyOCByb3V0ZSkgbmVlZHMgdG8gaGFwcGVuOlxuJiM0MzsgIGZvciBlYWNoIFBJTywgYSBzb3VyY2Utc3BlY2lmaWMgKHN1YnRyZWUpIHJvdXRlIGlzICphZGRpdGlvbmFsbHkqIGluc3RhbGxlZC5cbiYjNDM7ICBUaGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCAqYWZ0ZXIqIGEgc291cmNlIGFkZHJlc3MgaGFzIGJlZW4gc2VsZWN0ZWQsIG9uZVxuJiM0MzsgIG9mIHRoZSByb3V0ZXJzIHRoYXQgYWR2ZXJ0aXNlZCBpdCB3aWxsIHJlbWFpbiBpbiB1c2UgKHRoaXMgaXMgKm5vdCogUkZDIDY3MjRcbiYjNDM7ICByZWxhdGVkLCBidXQgcmF0aGVyIFJGQyA4MDI4LikgIEF0IHRoZSBzYW1lIHRpbWUsIHRoZXNlIGV4dHJhIHJvdXRlcyBzZXJ2ZVxuJiM0MzsgIHRvIHJlbWVtYmVyIHdoaWNoIHJvdXRlciBhZHZlcnRpc2VkIHdoYXQuXG4mIzQzO1xuJiM0MzstIHBlciB1c3VhbCwgYSByb3V0ZSBsb29rdXAgZm9yIHRoZSBJUHY2IGRlc3RpbmF0aW9uIGFkZHJlc3MgaW4gY29uc2lkZXJhdGlvblxuJiM0MzsgIGlzIGRvbmUgZmlyc3QuICBUaGlzIGlzIHBhc3NlZCBhcm91bmQgaW4ga2VybmVsIGFzIGEgZHN0X2VudHJ5LlxuJiM0MztcbiYjNDM7LSB0aGUgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgdmFyaW91cyBydWxlcyBpblxuJiM0MzsgIFJGQyA2NzI0LlxuJiM0MztcbiYjNDM7LSBpZi93aGVuIHJ1bGUgNS41IGlzIHJlYWNoZWQsIGZpcnN0IG9mIGFsbCwgdGhlcmUgaXMgYSBjaGVjayBpZiAqYW55KiBzb3VyY2VcbiYjNDM7ICBzcGVjaWZpYyByb3V0ZXMgZXhpc3QgaW4gdGhlIHJvdXRpbmcgdGFibGUuICBJZiB0aGVyZSBhcmUgbm9uZSwgdGhlIGVudGlyZVxuJiM0MzsgIGNvZGUgZm9yIDUuNSBpcyBza2lwcGVkIGJlY2F1c2UgaXQgY2Fubm90IGhhdmUgYW55IGVmZmVjdCwgYnV0IGlzIG5vdCBmcmVlXG4mIzQzOyAgdG8gZXhlY3V0ZSAoY2FuIGludm9sdmUgbXVsdGlwbGUgcm91dGluZyBsb29rdXBzLikgICoqSW4gYXBwbGljYXRpb25zIHRoYXRcbiYjNDM7ICB1c2UgYSBsb3Qgb2YgdW5ib3VuZCAoZS5nLiBVRFApIHNvY2tldHMsIGluc3RhbGxpbmcgc3VidHJlZSByb3V0ZXMgc2hvdWxkXG4mIzQzOyAgdGhlcmVmb3JlIGJlIGF2b2lkZWQgdG8gbm90IGluY3VyIHRoaXMgY29zdCBvbiBlYWNoIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvblxuJiM0MzsgIHBhc3MuKiogIEFsdGVybmF0aXZlbHksIGFwcGxpY2F0aW9ucyBzaG91bGQgYmluZCB0aGVpciBzb2NrZXRzIHRvIGEgc3BlY2lmaWNcbiYjNDM7ICBzb3VyY2UgYWRkcmVzcyBzdWNoIHRoYXQgdGhlIHNlbGVjdGlvbiBjb2RlIGlzIG5ldmVyIGhpdC5cbiYjNDM7XG4mIzQzOy0gaWYgc3VidHJlZSByb3V0ZXMgZG8gZXhpc3QsIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gY29kZSBub3cgcmVwZWF0c1xuJiM0MzsgIHRoZSByb3V0aW5nIGxvb2t1cCBkb25lIGJlZm9yZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gaXMgZW50ZXJlZCwgZXhjZXB0XG4mIzQzOyAgd2l0aCB0aGUgc291cmNlIGFkZHJlc3MgdW5kZXIgY29uc2lkZXJhdGlvbiBmaWxsZWQgaW4uICBUaGlzIGxvb2t1cCB3aWxsIGhpdFxuJiM0MzsgIHRoZSBzdWJ0cmVlIHJvdXRlcyB0aGF0IHdlcmUgaW5zdGFsbGVkIChzZWUgZmlyc3QgaXRlbSksIGdpdmluZyBhIGZyZXNoXG4mIzQzOyAgZHN0X2VudHJ5LiAgSWYgdGhlIG5ldyBkc3RfZW50cnkgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgZHN0X2VudHJ5LCB0aGF0IG1lYW5zXG4mIzQzOyAgdGhlIG9yaWdpbmFsIHJvdXRlciBoYXMgaW4gZmFjdCBzZW50IFJBcyB3aXRoIFBJT3MgZm9yIHRoaXMgc291cmNlIGFkZHJlc3MsXG4mIzQzOyAgc28gaXQgaXMgcHJlZmVycmVkLiAgT3RoZXJ3aXNlIGl0IGlzIG5vdC5cbiYjNDM7XG4mIzQzO1xuJiM0MztUaGVyZSBhcmUgYSBmZXcgY2F2ZWF0cyB0byBjb25zaWRlcjpcbiYjNDM7XG4mIzQzOy0gdGhlIGtlcm5lbCBjdXJyZW50bHkgZG9lcyBub3QgY3JlYXRlIHRoZSBzdWJ0cmVlIHJvdXRlcyBtZW50aW9uZWQgaW4gdGhlXG4mIzQzOyAgZmlyc3QgaXRlbS4gIFRoaXMgaXMgYSBzZXBhcmF0ZSB3b3JrIGl0ZW0sIHBhcnRpYWxseSBkb25lIGF0IHRoZSB0aW1lIG9mXG4mIzQzOyAgd3JpdGluZyB0aGlzLiAgQnV0IHRoaXMgY2FuIGVxdWFsbHkgd2VsbCBiZSBwZXJmb3JtZWQgaW4gdXNlcnNwYWNlIHByb2Nlc3NpbmdcbiYjNDM7ICBvZiBSQXMsIGUuZy4gTmV0d29ya01hbmFnZXIgb3IgcGxhaW4gc3RhdGljIGNvbmZpZ3VyYXRpb24uXG4mIzQzO1xuJiM0MzstIHNpbmNlIGFkZHJlc3NlcyBjYW4gYWxzbyBiZSBhY3F1aXJlZCBmcm9tIERIQ1B2NiwgZXZlbiBSQS9QSU8gY29tYmluYXRpb25zXG4mIzQzOyAgdGhhdCBkaWRuJiMzOTt0IHJlc3VsdCBpbiB0aGUgY3JlYXRpb24gb2YgYW55IGFkZHJlc3NlcyAoZS5nLiBBPTApIHNob3VsZCBoYXZlXG4mIzQzOyAgc3VidHJlZSByb3V0ZXMgYWRkZWQuICBUaG9zZSByb3V0ZXMgKm1heSogYmUgcmVsZXZhbnQgZm9yIERIQ1B2Ni1nZW5lcmF0ZWRcbiYjNDM7ICBhZGRyZXNzZXMuXG4mIzQzO1xuJiM0MzstIHRoZSBcJiMzNDthbm5vdW5jZSBjaGVja1wmIzM0OyBsb29rdXAgZG9lcyBub3QgYmFja3RyYWNrLiAgT25seSB0aGUgZGVzdGluYXRpb24gcHJlZml4XG4mIzQzOyAgdGhhdCBwcm92aWRlZCB0aGUgXCYjMzQ7dW5zcGVjaWZpY1wmIzM0OyAoOjovMTI4KSBtYXRjaCBpcyBjaGVja2VkIGZvciBzb3VyY2UgcHJlZml4ZXNcbiYjNDM7ICB0byBzZWUgd2hhdCByb3V0ZXJzIGFkdmVydGlzZWQgd2hhdC4gIFRoaXMgbWVhbnMgdGhhdCBmb3IgZS5nLiBSSU9zLCBzdWJ0cmVlXG4mIzQzOyAgcm91dGVzIGFsc28gaGF2ZSB0byBiZSBjcmVhdGVkLiAgKEJhY2t0cmFja2luZyBmb3IgdGhpcyBjYXNlIHdvdWxkIGZ1cnRoZXJcbiYjNDM7ICBpbmNyZWFzZSB0aGUgY29zdCBvZiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24sIGZvciBhIHByZXR0eSByYXJlIHNpdHVhdGlvblxuJiM0MzsgIHRoYXQgaGFzIGFuIGVhc3kgZml4L3dvcmthcm91bmQuKVxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IGYzMjE4YWJlZmQwYzZiLi40ZWRmNDgzNjJhMDczMiAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4mIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSU1xuQEAgLTE4OTEyLDYgJiM0MzsxODkxMiw3IEBAIEY6XHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtYWRkci55YW1sXG4gRjpcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1uZWlnaC55YW1sXG4gRjpcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1yb3V0ZS55YW1sXG4gRjpcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1ydWxlLnlhbWxcbiYjNDM7RjpcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0XG4gRjpcdGluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXG4gRjpcdGluY2x1ZGUvbGludXgvbXJvdXRlKlxuIEY6XHRpbmNsdWRlL25ldC9hZGRyY29uZi5oXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaCBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbmluZGV4IDhjZWQyN2E4MjI5YjZlLi43YmMwNzExYjg3MTc5NiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbkBAIC0xNDIsNiAmIzQzOzE0MiwxMCBAQCBzdHJ1Y3QgaW5ldDZfaWZhZGRyICppcHY2X2dldF9pZmFkZHIoc3RydWN0IG5ldCAqbmV0LFxuIGludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgdW5zaWduZWQgaW50IHNyY3ByZWZzLFxuIFx0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7XG4mIzQzO2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcbiYjNDM7XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuJiM0MztcdFx0ICAgICAgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgc3JjcHJlZnMsXG4mIzQzO1x0XHQgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpO1xuIGludCBpcHY2X2dldF9sbGFkZHIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGluNl9hZGRyICphZGRyLFxuIFx0XHQgICAgdTMyIGJhbm5lZF9mbGFncyk7XG4gYm9vbCBpbmV0X3Jjdl9zYWRkcl9lcXVhbChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBzb2NrICpzazIsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmggYi9pbmNsdWRlL25ldC9pcDZfcm91dGUuaFxuaW5kZXggMDlmZmUwZjEzY2U3NTIuLmZlMTNjYjFkMzI1N2RiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oXG5AQCAtMTQwLDMyICYjNDM7MTQwLDYgQEAgdm9pZCBydDZfZmx1c2hfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9pbmZvICpmNmkpO1xuIHZvaWQgcnQ2X2FnZV9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSwgc3RydWN0IGZpYjZfZ2NfYXJncyAqZ2NfYXJncyxcbiBcdFx0XHR1bnNpZ25lZCBsb25nIG5vdyk7XG4gXG4tc3RhdGljIGlubGluZSBpbnQgaXA2X3JvdXRlX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSxcbi1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXG4tXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgcHJlZnMsIGludCBsM21kZXZfaW5kZXgsXG4tXHRcdFx0XHQgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxuLXtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7XG4tXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuLVx0Ym9vbCBzYW1lX3ZyZjtcbi1cdGludCBlcnIgPSAwO1xuLVxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVxuLVx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBsM21kZXZfaW5kZXgpO1xuLVx0aWYgKCFmNmkgfHwgIWY2aS1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbiB8fCBsM21kZXYpXG4tXHRcdGRldiA9IGY2aSA/IGZpYjZfaW5mb19uaF9kZXYoZjZpKSA6IE5VTEw7XG4tXHRzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2O1xuLVx0aWYgKGY2aSBcdTAwMjZcdTAwMjYgZjZpLVx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIFx1MDAyNlx1MDAyNiBzYW1lX3ZyZilcbi1cdFx0KnNhZGRyID0gZjZpLVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuLVx0ZWxzZVxuLVx0XHRlcnIgPSBpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgZGFkZHIsIHByZWZzLCBzYWRkcik7XG4tXG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbi1cbi1cdHJldHVybiBlcnI7XG4tfVxuLVxuIHN0cnVjdCBydDZfaW5mbyAqcnQ2X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsIGludCBvaWYsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBmbGFncyk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvS2NvbmZpZyBiL25ldC9pcHY2L0tjb25maWdcbmluZGV4IGMzODA2YzZhYzk2Zjk1Li4zOTY1OWU5YjUzYTNkYiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L0tjb25maWdcbkBAIC0yNDMsMTYgJiM0MzsyNDMsMjYgQEAgY29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG4gY29uZmlnIElQVjZfU1VCVFJFRVNcbiBcdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuIFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFU1xuJiM0MztcdGRlZmF1bHQgeVxuIFx0aGVscFxuIFx0ICBFbmFibGUgcm91dGluZyBieSBzb3VyY2UgYWRkcmVzcyBvciBwcmVmaXguXG4gXG4gXHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcbiBcdCAgbm9ybWFsIGFuZCBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcyBpbiB0aGUgc2FtZSByb3V0aW5nIHRhYmxlXG4tXHQgIG1heSBzb21ldGltZXMgbGVhZCB0byB1bmludGVuZGVkIHJvdXRpbmcgYmVoYXZpb3IuICBUaGlzIGNhbiBiZVxuLVx0ICBhdm9pZGVkIGJ5IGRlZmluaW5nIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBmb3IgdGhlIG5vcm1hbCBhbmRcbi1cdCAgc291cmNlIHByZWZpeCBzcGVjaWZpYyByb3V0ZXMuXG4mIzQzO1x0ICBtYXkgc29tZXRpbWVzIGxlYWQgdG8gdW5pbnRlbmRlZCByb3V0aW5nIGJlaGF2aW9yIGlmIHRoZSBvcmRlciBvZlxuJiM0MztcdCAgbG9va3VwcyBpcyBtaXN1bmRlcnN0b29kLiAgVG8gYWNoaWV2ZSBmdWxsIHNlcGFyYXRpb24gYmFzZWQgb24gc291cmNlXG4mIzQzO1x0ICBhZGRyZXNzLCBkaWZmZXJlbnQgcm91dGluZyB0YWJsZXMgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGVhY2ggc291cmNlXG4mIzQzO1x0ICBwcmVmaXguXG4gXG4tXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzQzO1x0ICBTdWJ0cmVlcyBzcGVjaWZpY2FsbHkgYWRkcmVzcyBzY2VuYXJpb3Mgd2hlcmUgbG9jYWwgY29ubmVjdGl2aXR5XG4mIzQzO1x0ICBiZXR3ZWVuIHNvdXJjZSBwcmVmaXhlcyBpcyBzaGFyZWQgYW5kIHVucmVzdHJpY3RlZCwgYnV0IHNvbWVcbiYjNDM7XHQgIGRlc3RpbmF0aW9ucyAoZS5nLiB0aGUgZGVmYXVsdCByb3V0ZSkgaGF2ZSBtb3JlIGZpbmUtZ3JhaW5lZCBydWxlcy5cbiYjNDM7XG4mIzQzO1x0ICBUaGlzIGZlYXR1cmUgaXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IHN1cHBvcnQgUkZDNjcyNCBydWxlIDUuNSBpblxuJiM0MztcdCAgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uLiAgUnVsZSA1LjUgaXMgYSBuZWNlc3NpdHkgZm9yIGdvb2RcbiYjNDM7XHQgIG11bHRpaG9taW5nLCByZW51bWJlcmluZyBhbmQgc291cmNlIHByZWZpeCBsaXZlbGluZXNzIGNoZWNrcy5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBZLlxuIFxuIGNvbmZpZyBJUFY2X01ST1VURVxuIFx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wmIzM0O1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FkZHJjb25mLmMgYi9uZXQvaXB2Ni9hZGRyY29uZi5jXG5pbmRleCBmMWZlOWVkZTFlZGIzNy4uZjVjMDQ5MjhhYTE0MmYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9hZGRyY29uZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9hZGRyY29uZi5jXG5AQCAtMTUyMiw2ICYjNDM7MTUyMiw3IEBAIGVudW0ge1xuIFx0SVBWNl9TQUREUl9SVUxFX0hPQSxcbiAjZW5kaWZcbiBcdElQVjZfU0FERFJfUlVMRV9PSUYsXG4mIzQzO1x0SVBWNl9TQUREUl9SVUxFX1BJT19CWV9ORVhUSE9QLFxuIFx0SVBWNl9TQUREUl9SVUxFX0xBQkVMLFxuIFx0SVBWNl9TQUREUl9SVUxFX1BSSVZBQ1ksXG4gXHRJUFY2X1NBRERSX1JVTEVfT1JDSElELFxuQEAgLTE1NDIsMTEgJiM0MzsxNTQzLDE0IEBAIHN0cnVjdCBpcHY2X3NhZGRyX3Njb3JlIHtcbiB9O1xuIFxuIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCB7XG4tXHRjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHI7XG4mIzQzO1x0c3RydWN0IGZsb3dpNiAqZmw2O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgaWZpbmRleDtcbiBcdGludCBzY29wZTtcbiBcdGludCBsYWJlbDtcbiBcdHVuc2lnbmVkIGludCBwcmVmcztcbiYjNDM7XHRzdHJ1Y3QgbmV0ICpuZXQ7XG4gfTtcbiBcbiBzdGF0aWMgaW5saW5lIGludCBpcHY2X3NhZGRyX3ByZWZlcnJlZChpbnQgdHlwZSlcbkBAIC0xNTkxLDYgJiM0MzsxNTk1LDgwIEBAIHN0YXRpYyBib29sIGlwdjZfYWxsb3dfb3B0aW1pc3RpY19kYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxuICNlbmRpZlxuIH1cbiBcbiYjNDM7LyogXCYjMzQ7c291cmNlIGFkZHJlc3MgaXMgcHJlZmVyYWJsZSBpZiB0aGUgY2hvc2VuIG5leHRob3AgYWR2ZXJ0aXNlZCBpdCBhcyBhIFBJT1wmIzM0O1xuJiM0MzsgKiA9XHUwMDNlIGNvbnNpZGVyICYjMzk7YWR2ZXJ0aXNlZCBhcyBhIFBJTyYjMzk7IHRvIGJlICYjMzk7dGhlIHJvdXRlcyBmb3IgdGhlIHNvdXJjZSYjMzk7cyBzdWJ0cmVlXG4mIzQzOyAqICAgIGluY2x1ZGUgb25lIHdpdGggdGhlIHNhbWUgbmV4dGhvcCYjMzk7XG4mIzQzOyAqXG4mIzQzOyAqIE5COiB0aGVyZSBpcyBubyBiYWNrdHJhY2tpbmcgaW4gdGhlIHN1YnRyZWUgaGVyZSwgdGhpcyBpcyBpbnRlbnRpb25hbCAtXG4mIzQzOyAqIGVhY2ggcHJlZml4IHNlZW4gKGFuZCBhY2NlcHRlZCkgaW4gUElPcyBjcmVhdGVzIGVzc2VudGlhbGx5IGEgXCYjMzQ7em9uZVwmIzM0OyB3aGljaFxuJiM0MzsgKiBpcyBvdXIgc2VhcmNoIHNjb3BlLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBpcHY2X3NhZGRyX3J1bGU1cDUoc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgKnNhZGRyX2RzdClcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydDZfaW5mbyAqcnQsICpjbXBfcnQ7XG4mIzQzO1x0c3RydWN0IGRzdF9lbnRyeSAqY21wX2RzdDtcbiYjNDM7XHRzdHJ1Y3QgZmliNl9pbmZvICpmNmk7XG4mIzQzO1x0aW50IHJldCA9IDA7XG4mIzQzO1xuJiM0MztcdHJ0ID0gY29udGFpbmVyX29mKHNhZGRyX2RzdC1cdTAwM2Vkc3QsIHN0cnVjdCBydDZfaW5mbywgZHN0KTtcbiYjNDM7XG4mIzQzO1x0LyogZmw2LVx1MDAzZXNhZGRyIGlzIDo6LCBjZi4gY2hlY2sgYXQgdGhlIHRvcCBvZiBpcHY2X2NvbW1vbl9nZXRfc2FkZHIoKSAqL1xuJiM0MztcdHNhZGRyX2RzdC1cdTAwM2VmbDYtXHUwMDNlc2FkZHIgPSBzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcjtcbiYjNDM7XHRjbXBfZHN0ID0gaXA2X3JvdXRlX291dHB1dChzYWRkcl9kc3QtXHUwMDNlbmV0LCBzYWRkcl9kc3QtXHUwMDNlc2ssXG4mIzQzO1x0XHRcdFx0ICAgc2FkZHJfZHN0LVx1MDAzZWZsNik7XG4mIzQzO1x0bWVtc2V0KFx1MDAyNnNhZGRyX2RzdC1cdTAwM2VmbDYtXHUwMDNlc2FkZHIsIDAsIHNpemVvZihzYWRkcl9kc3QtXHUwMDNlZmw2LVx1MDAzZXNhZGRyKSk7XG4mIzQzO1xuJiM0MztcdGlmIChjbXBfZHN0LVx1MDAzZWVycm9yKVxuJiM0MztcdFx0Z290byBvdXRfcmVsZWFzZV9kc3Q7XG4mIzQzO1xuJiM0MztcdGNtcF9ydCA9IGNvbnRhaW5lcl9vZihjbXBfZHN0LCBzdHJ1Y3QgcnQ2X2luZm8sIGRzdCk7XG4mIzQzO1xuJiM0MztcdC8qIHRoaXMgbXVzdCB3b3JrIGlmIF9hbnlfIG5leHRob3AgbWF0Y2hlczsgdGhlIG5vbi1zdWJ0cmVlIGJlc3QgbWF5XG4mIzQzO1x0ICogbm90IGJlIGluIHNhbWUgb3JkZXIgYXMgc3VidHJlZSBiZXN0XG4mIzQzO1x0ICovXG4mIzQzO1x0Zm9yIChmNmkgPSByY3VfZGVyZWZlcmVuY2UoY21wX3J0LVx1MDAzZWZyb20pOyBmNmk7XG4mIzQzO1x0ICAgICBmNmkgPSByY3VfZGVyZWZlcmVuY2UoZjZpLVx1MDAzZWZpYjZfbmV4dCkpIHtcbiYjNDM7XHRcdHN0cnVjdCBmaWI2X25oICpmNm4gPSBmNmktXHUwMDNlZmliNl9uaDtcbiYjNDM7XHRcdHN0cnVjdCBmaWI2X2luZm8gKnNpYmxpbmc7XG4mIzQzO1xuJiM0MztcdFx0Lyogbm9uLXN1YnRyZWUgcm91dGU6IHNheXMgbm90aGluZyBhYm91dCByb3V0ZXIgYWR2ZXJ0aXNpbmcgdGhpcyBzb3VyY2UgKi9cbiYjNDM7XHRcdGlmIChmNmktXHUwMDNlZmliNl9zcmMucGxlbiA9PSAwKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZGV2ICE9IHNhZGRyX2RzdC1cdTAwM2Vkc3QtXHUwMDNlZGV2IHx8XG4mIzQzO1x0XHQgICAgZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZ3dfZmFtaWx5ICE9IEFGX0lORVQ2KVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoaXB2Nl9hZGRyX2VxdWFsKFx1MDAyNmY2bi1cdTAwM2VuaF9jb21tb24ubmhjX2d3LmlwdjYsXG4mIzQzO1x0XHRcdFx0ICAgIFx1MDAyNnJ0LVx1MDAzZXJ0NmlfZ2F0ZXdheSkpIHtcbiYjNDM7XHRcdFx0cmV0ID0gMTtcbiYjNDM7XHRcdFx0Z290byBvdXRfcmVsZWFzZV9kc3Q7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFmNmktXHUwMDNlZmliNl9uc2libGluZ3MpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2libGluZywgXHUwMDI2ZjZpLVx1MDAzZWZpYjZfc2libGluZ3MsIGZpYjZfc2libGluZ3MpIHtcbiYjNDM7XHRcdFx0ZjZuID0gc2libGluZy1cdTAwM2VmaWI2X25oO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGY2bi1cdTAwM2VuaF9jb21tb24ubmhjX2RldiAhPSBzYWRkcl9kc3QtXHUwMDNlZHN0LVx1MDAzZWRldiB8fFxuJiM0MztcdFx0XHQgICAgZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZ3dfZmFtaWx5ICE9IEFGX0lORVQ2KVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGlwdjZfYWRkcl9lcXVhbChcdTAwMjZmNm4tXHUwMDNlbmhfY29tbW9uLm5oY19ndy5pcHY2LFxuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNnJ0LVx1MDAzZXJ0NmlfZ2F0ZXdheSkpIHtcbiYjNDM7XHRcdFx0XHRyZXQgPSAxO1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0X3JlbGVhc2VfZHN0O1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7b3V0X3JlbGVhc2VfZHN0OlxuJiM0MztcdGRzdF9yZWxlYXNlKGNtcF9kc3QpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHQgICAgICAgc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgKmRzdCxcbkBAIC0xNjE5LDcgJiM0MzsxNjk3LDcgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIElQVjZfU0FERFJfUlVMRV9MT0NBTDpcbiBcdFx0LyogUnVsZSAxOiBQcmVmZXIgc2FtZSBhZGRyZXNzICovXG4tXHRcdHJldCA9IGlwdjZfYWRkcl9lcXVhbChcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgZHN0LVx1MDAzZWFkZHIpO1xuJiM0MztcdFx0cmV0ID0gaXB2Nl9hZGRyX2VxdWFsKFx1MDAyNnNjb3JlLVx1MDAzZWlmYS1cdTAwM2VhZGRyLCBcdTAwMjZkc3QtXHUwMDNlZmw2LVx1MDAzZWRhZGRyKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIElQVjZfU0FERFJfUlVMRV9TQ09QRTpcbiBcdFx0LyogUnVsZSAyOiBQcmVmZXIgYXBwcm9wcmlhdGUgc2NvcGVcbkBAIC0xNjc1LDYgJiM0MzsxNzUzLDI0IEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdHJldCA9ICghZHN0LVx1MDAzZWlmaW5kZXggfHxcbiBcdFx0ICAgICAgIGRzdC1cdTAwM2VpZmluZGV4ID09IHNjb3JlLVx1MDAzZWlmYS1cdTAwM2VpZGV2LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4KTtcbiBcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1A6XG4mIzQzO1x0XHQvKiBSdWxlIDUuNTogUHJlZmVyIHNvdXJjZXMgYWR2ZXJ0aXNlZCBieSBjaG9zZW4gbmV4dC1ob3AgKi9cbiYjNDM7XG4mIzQzO1x0XHQvKiBXaXRob3V0IHN1YnRyZWVzLCB0aGUgc291cmNlIGFkZHJlc3Mgd2lsbCBtYWtlIG5vIGRpZmZlcmVuY2VcbiYjNDM7XHRcdCAqIGluIHRoZSBpcDZfcm91dGVfb3V0cHV0IGNhbGwgaW4gcnVsZTVwNS4gIFRoZXJlZm9yZSB0aGUgcnVsZVxuJiM0MztcdFx0ICogNS41IGNoZWNrIGJlY29tZXMgdXNlbGVzcy4gIFRoaXMgd291bGRuJiMzOTt0IHJlc3VsdCBpbiBhbnlcbiYjNDM7XHRcdCAqIGVycm9ycywgYnV0IGlwNl9yb3V0ZV9vdXRwdXQgaXNuJiMzOTt0IGZyZWUsIHNvIGlmIHN1YnRyZWVzIGFyZVxuJiM0MztcdFx0ICogZGlzYWJsZWQgc2F2ZSBzb21lIGN5Y2xlcyBieSBza2lwcGluZyB0aGlzIGVudGlyZWx5LlxuJiM0MztcdFx0ICpcbiYjNDM7XHRcdCAqIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHN1YnRyZWVzX2VuYWJsZWQgdG8gaGF2ZSB0aGUgY29kZVxuJiM0MztcdFx0ICogY29tcGlsZWQgcmVnYXJkbGVzcy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGZpYjZfcm91dGVzX3JlcXVpcmVfc3JjKG5ldCkgXHUwMDI2XHUwMDI2IGRzdC1cdTAwM2Vkc3RcbiYjNDM7XHRcdCAgICBcdTAwMjZcdTAwMjYgIWRzdC1cdTAwM2Vkc3QtXHUwMDNlZXJyb3IpXG4mIzQzO1x0XHRcdHJldCA9IGlwdjZfc2FkZHJfcnVsZTVwNShzY29yZSwgZHN0KTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmV0ID0gMTtcbiYjNDM7XHRcdGJyZWFrO1xuIFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfTEFCRUw6XG4gXHRcdC8qIFJ1bGUgNjogUHJlZmVyIG1hdGNoaW5nIGxhYmVsICovXG4gXHRcdHJldCA9IGlwdjZfYWRkcl9sYWJlbChuZXQsXG5AQCAtMTY5NywxMSAmIzQzOzE3OTMsMTEgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0ICpcdCAgICBub24tT1JDSElEIHZzIG5vbi1PUkNISURcbiBcdFx0ICovXG4gXHRcdHJldCA9ICEoaXB2Nl9hZGRyX29yY2hpZChcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcikgXlxuLVx0XHRcdGlwdjZfYWRkcl9vcmNoaWQoZHN0LVx1MDAzZWFkZHIpKTtcbiYjNDM7XHRcdFx0aXB2Nl9hZGRyX29yY2hpZChcdTAwMjZkc3QtXHUwMDNlZmw2LVx1MDAzZWRhZGRyKSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUFJFRklYOlxuIFx0XHQvKiBSdWxlIDg6IFVzZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeCAqL1xuLVx0XHRyZXQgPSBpcHY2X2FkZHJfZGlmZihcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgZHN0LVx1MDAzZWFkZHIpO1xuJiM0MztcdFx0cmV0ID0gaXB2Nl9hZGRyX2RpZmYoXHUwMDI2c2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHIsIFx1MDAyNmRzdC1cdTAwM2VmbDYtXHUwMDNlZGFkZHIpO1xuIFx0XHRpZiAocmV0IFx1MDAzZSBzY29yZS1cdTAwM2VpZmEtXHUwMDNlcHJlZml4X2xlbilcbiBcdFx0XHRyZXQgPSBzY29yZS1cdTAwM2VpZmEtXHUwMDNlcHJlZml4X2xlbjtcbiBcdFx0c2NvcmUtXHUwMDNlbWF0Y2hsZW4gPSByZXQ7XG5AQCAtMTgxOSw5ICYjNDM7MTkxNSwxMCBAQCBzdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX21hc3RlcihzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRyZXR1cm4gaGlzY29yZV9pZHg7XG4gfVxuIFxuLWludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2Rldixcbi1cdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsIHVuc2lnbmVkIGludCBwcmVmcyxcbi1cdFx0ICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpXG4mIzQzO2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSxcbiYjNDM7XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuJiM0MztcdFx0ICAgICAgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgcHJlZnMsXG4mIzQzO1x0XHQgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpXG4ge1xuIFx0c3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgc2NvcmVzWzJdLCAqaGlzY29yZTtcbiBcdHN0cnVjdCBpcHY2X3NhZGRyX2RzdCBkc3Q7XG5AQCAtMTgzMiwxMSAmIzQzOzE5MjksMTggQEAgaW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuIFx0aW50IGhpc2NvcmVfaWR4ID0gMDtcbiBcdGludCByZXQgPSAwO1xuIFxuLVx0ZHN0X3R5cGUgPSBfX2lwdjZfYWRkcl90eXBlKGRhZGRyKTtcbi1cdGRzdC5hZGRyID0gZGFkZHI7XG4mIzQzO1x0Lyogd2Ugc2hvdWxkIG5ldmVyIGVuZCB1cCBoZXJlIHdpdGggYSBub24tZW1wdHkgc2FkZHIuICovXG4mIzQzO1x0aWYgKFdBUk5fT05fT05DRSghaXB2Nl9hZGRyX2FueShcdTAwMjZmbDYtXHUwMDNlc2FkZHIpKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoXHUwMDI2Zmw2LVx1MDAzZWRhZGRyKTtcbiYjNDM7XHRkc3QubmV0ID0gbmV0O1xuJiM0MztcdGRzdC5mbDYgPSBmbDY7XG4mIzQzO1x0ZHN0LnNrID0gc2s7XG4mIzQzO1x0ZHN0LmRzdCA9IGRzdF9lbnRyeTtcbiBcdGRzdC5pZmluZGV4ID0gZHN0X2RldiA/IGRzdF9kZXYtXHUwMDNlaWZpbmRleCA6IDA7XG4gXHRkc3Quc2NvcGUgPSBfX2lwdjZfYWRkcl9zcmNfc2NvcGUoZHN0X3R5cGUpO1xuLVx0ZHN0LmxhYmVsID0gaXB2Nl9hZGRyX2xhYmVsKG5ldCwgZGFkZHIsIGRzdF90eXBlLCBkc3QuaWZpbmRleCk7XG4mIzQzO1x0ZHN0LmxhYmVsID0gaXB2Nl9hZGRyX2xhYmVsKG5ldCwgXHUwMDI2Zmw2LVx1MDAzZWRhZGRyLCBkc3RfdHlwZSwgZHN0LmlmaW5kZXgpO1xuIFx0ZHN0LnByZWZzID0gcHJlZnM7XG4gXG4gXHRzY29yZXNbaGlzY29yZV9pZHhdLnJ1bGUgPSAtMTtcbkBAIC0xOTExLDExICYjNDM7MjAxNSwyOSBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4gXHRpZiAoIWhpc2NvcmUtXHUwMDNlaWZhKVxuIFx0XHRyZXQgPSAtRUFERFJOT1RBVkFJTDtcbiBcdGVsc2Vcbi1cdFx0KnNhZGRyID0gaGlzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcjtcbiYjNDM7XHRcdGZsNi1cdTAwM2VzYWRkciA9IGhpc2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHI7XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuJiM0MztFWFBPUlRfU1lNQk9MKGlwdjZfZmxfZ2V0X3NhZGRyKTtcbiYjNDM7XG4mIzQzO2ludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcbiYjNDM7XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgcHJlZnMsXG4mIzQzO1x0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmbG93aTYgZmw2O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdG1lbXNldChcdTAwMjZmbDYsIDAsIHNpemVvZihmbDYpKTtcbiYjNDM7XHRmbDYuZGFkZHIgPSAqZGFkZHI7XG4mIzQzO1xuJiM0MztcdHJldCA9IGlwdjZfZmxfZ2V0X3NhZGRyKG5ldCwgTlVMTCwgZHN0X2RldiwgTlVMTCwgcHJlZnMsIFx1MDAyNmZsNik7XG4mIzQzO1x0aWYgKCFyZXQpXG4mIzQzO1x0XHQqc2FkZHIgPSBmbDYuc2FkZHI7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiBFWFBPUlRfU1lNQk9MKGlwdjZfZGV2X2dldF9zYWRkcik7XG4gXG4gc3RhdGljIGludCBfX2lwdjZfZ2V0X2xsYWRkcihzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHIsXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2ZpYi5jIGIvbmV0L2lwdjYvaXA2X2ZpYi5jXG5pbmRleCBhMTMwY2RmYWViZmJlZS4uMjczZjJiZmM1Mjg2NjkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9maWIuY1xuQEAgLTE2NTYsOCAmIzQzOzE2NTYsMTEgQEAgc3RhdGljIHN0cnVjdCBmaWI2X25vZGUgKmZpYjZfbm9kZV9sb29rdXBfMShzdHJ1Y3QgZmliNl9ub2RlICpyb290LFxuIFx0XHRcdFx0XHRzdHJ1Y3QgZmliNl9ub2RlICpzZm47XG4gXHRcdFx0XHRcdHNmbiA9IGZpYjZfbm9kZV9sb29rdXBfMShzdWJ0cmVlLFxuIFx0XHRcdFx0XHRcdFx0XHQgYXJncyAmIzQzOyAxKTtcbi1cdFx0XHRcdFx0aWYgKCFzZm4pXG4mIzQzO1x0XHRcdFx0XHRpZiAoIXNmbikge1xuJiM0MztcdFx0XHRcdFx0XHRpZiAoZm4tXHUwMDNlZm5fZmxhZ3MgXHUwMDI2IFJUTl9SVElORk8pXG4mIzQzO1x0XHRcdFx0XHRcdFx0cmV0dXJuIGZuO1xuIFx0XHRcdFx0XHRcdGdvdG8gYmFja3RyYWNrO1xuJiM0MztcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHRmbiA9IHNmbjtcbiBcdFx0XHRcdH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbmluZGV4IDM2OGU0ZmEzYjQzY2EyLi4wM2I4ZDQyZDlkZjllZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5AQCAtMTE0MywyNyAmIzQzOzExNDMsNDAgQEAgc3RhdGljIGludCBpcDZfZHN0X2xvb2t1cF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuIFx0aW50IGZsYWdzID0gMDtcbiBcbiBcdC8qIFRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byBkb1xuLVx0ICogaXA2X3JvdXRlX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcbiYjNDM7XHQgKiBpcHY2X2ZsX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcbiBcdCAqIHRoZSByb3V0ZS1zcGVjaWZpYyBwcmVmZXJyZWQgc291cmNlIGZvcmNlcyB0aGVcbi1cdCAqIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBfYmVmb3JlXyBpcDZfcm91dGVfZ2V0X3NhZGRyLlxuJiM0MztcdCAqIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBfYmVmb3JlXyBpcHY2X2ZsX2dldF9zYWRkci5cbiBcdCAqXG4gXHQgKiBJbiBzb3VyY2Ugc3BlY2lmaWMgcm91dGluZyAobm8gc3JjPWFueSBkZWZhdWx0IHJvdXRlKSxcbiBcdCAqIGlwNl9yb3V0ZV9vdXRwdXQgd2lsbCBmYWlsIGdpdmVuIHNyYz1hbnkgc2FkZHIsIHRob3VnaCwgc29cbiBcdCAqIHRoYXQmIzM5O3Mgd2h5IHdlIHRyeSBpdCBhZ2FpbiBsYXRlci5cbiBcdCAqL1xuIFx0aWYgKGlwdjZfYWRkcl9hbnkoXHUwMDI2Zmw2LVx1MDAzZXNhZGRyKSkge1xuJiM0MztcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmwzbWRldjtcbiYjNDM7XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXHRcdHN0cnVjdCBmaWI2X2luZm8gKmZyb207XG4gXHRcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XG4mIzQzO1x0XHRib29sIHNhbWVfdnJmO1xuIFxuIFx0XHQqZHN0ID0gaXA2X3JvdXRlX291dHB1dChuZXQsIHNrLCBmbDYpO1xuIFx0XHRydCA9ICgqZHN0KS1cdTAwM2VlcnJvciA/IE5VTEwgOiBkc3RfcnQ2X2luZm8oKmRzdCk7XG4gXG4gXHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0ZnJvbSA9IHJ0ID8gcmN1X2RlcmVmZXJlbmNlKHJ0LVx1MDAzZWZyb20pIDogTlVMTDtcbi1cdFx0ZXJyID0gaXA2X3JvdXRlX2dldF9zYWRkcihuZXQsIGZyb20sIFx1MDAyNmZsNi1cdTAwM2VkYWRkcixcbi1cdFx0XHRcdFx0ICBzayA/IFJFQURfT05DRShpbmV0Nl9zayhzayktXHUwMDNlc3JjcHJlZnMpIDogMCxcbi1cdFx0XHRcdFx0ICBmbDYtXHUwMDNlZmxvd2k2X2wzbWRldixcbi1cdFx0XHRcdFx0ICBcdTAwMjZmbDYtXHUwMDNlc2FkZHIpO1xuJiM0MztcbiYjNDM7XHRcdGwzbWRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmw2LVx1MDAzZWZsb3dpNl9sM21kZXYpO1xuJiM0MztcdFx0aWYgKCFmcm9tIHx8ICFmcm9tLVx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIHx8IGwzbWRldilcbiYjNDM7XHRcdFx0ZGV2ID0gZnJvbSA/IGZpYjZfaW5mb19uaF9kZXYoZnJvbSkgOiBOVUxMO1xuJiM0MztcdFx0c2FtZV92cmYgPSAhbDNtZGV2IHx8IGwzbWRldl9tYXN0ZXJfZGV2X3JjdShkZXYpID09IGwzbWRldjtcbiYjNDM7XHRcdGlmIChmcm9tIFx1MDAyNlx1MDAyNiBmcm9tLVx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIFx1MDAyNlx1MDAyNiBzYW1lX3ZyZikge1xuJiM0MztcdFx0XHRmbDYtXHUwMDNlc2FkZHIgPSBmcm9tLVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuJiM0MztcdFx0XHRlcnIgPSAwO1xuJiM0MztcdFx0fSBlbHNlXG4mIzQzO1x0XHRcdGVyciA9IGlwdjZfZmxfZ2V0X3NhZGRyKG5ldCwgKmRzdCxcbiYjNDM7XHRcdFx0XHRcdFx0c2FtZV92cmYgPyBkZXYgOiBsM21kZXYsIHNrLFxuJiM0MztcdFx0XHRcdFx0XHRzayA/IFJFQURfT05DRShpbmV0Nl9zayhzayktXHUwMDNlc3JjcHJlZnMpIDogMCxcbiYjNDM7XHRcdFx0XHRcdFx0Zmw2KTtcbiYjNDM7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuIFx0XHRpZiAoZXJyKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jXG5pbmRleCBhMTMwMTMzNGRhNDhjMC4uNzA0YWZlMmRkZWE3YzIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9yb3V0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9yb3V0ZS5jXG5AQCAtNTg1MCw5ICYjNDM7NTg1MCwxOSBAQCBzdGF0aWMgaW50IHJ0Nl9maWxsX25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdGlmIChubGFfcHV0X3UzMihza2IsIFJUQV9JSUYsIGlpZikpXG4gXHRcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdH0gZWxzZSBpZiAoZGVzdCkge1xuLVx0XHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmO1xuLVx0XHRpZiAoaXA2X3JvdXRlX2dldF9zYWRkcihuZXQsIHJ0LCBkZXN0LCAwLCAwLCBcdTAwMjZzYWRkcl9idWYpID09IDAgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIFx1MDAyNnNhZGRyX2J1ZikpXG4mIzQzO1x0XHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmLCAqc2FkZHIgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRcdGlmIChydC1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbikge1xuJiM0MztcdFx0XHRzYWRkciA9IFx1MDAyNnJ0LVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGZpYjZfaW5mb19uaF9kZXYocnQpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGlwdjZfZGV2X2dldF9zYWRkcihuZXQsIGRldiwgZGVzdCwgMCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBcdTAwMjZzYWRkcl9idWYpID09IDApXG4mIzQzO1x0XHRcdFx0c2FkZHIgPSBcdTAwMjZzYWRkcl9idWY7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKHNhZGRyIFx1MDAyNlx1MDAyNiBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIHNhZGRyKSlcbiBcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi5jMDdkMmFlYmFkNjk1NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5AQCAtNTMsNiAmIzQzOzUzLDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxuIFx0aXB2Nl9mbG93bGFiZWwuc2ggXFxcbiBcdGlwdjZfZm9yY2VfZm9yd2FyZGluZy5zaCBcXFxuIFx0aXB2Nl9yb3V0ZV91cGRhdGVfc29mdF9sb2NrdXAuc2ggXFxcbiYjNDM7XHRpcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5IFxcXG4gXHRpcHZ0YXBfdGVzdC5zaCBcXFxuIFx0bDJfdG9zX3R0bF9pbmhlcml0LnNoIFxcXG4gXHRsMnRwLnNoIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWdcbmluZGV4IGUxY2UzNWMyYWJiZWYzLi5iMGI2NjQxMmI5ZjNlMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWdcbkBAIC00OCw2ICYjNDM7NDgsNyBAQCBDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15XG4gQ09ORklHX0lQVjZfUlBMX0xXVFVOTkVMPXlcbiBDT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcbiBDT05GSUdfSVBWNl9TSVQ9eVxuJiM0MztDT05GSUdfSVBWNl9TVUJUUkVFUz15XG4gQ09ORklHX0lQVjZfVlRJPXlcbiBDT05GSUdfSVBWTEFOPW1cbiBDT05GSUdfSVBWVEFQPW1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjY4MmIzOWJhOTkxZGE5XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weVxuQEAgLTAsMCAmIzQzOzEsMjMxIEBAXG4mIzQzOyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjIENvcHlyaWdodCAoQykgMjAyMy0yMDI2ICBEYXZpZCAmIzM5O2VxdWlub3gmIzM5OyBMYW1wYXJ0ZXJcbiYjNDM7XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1JGQyA2NzI0IChJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbikgcnVsZSA1LjUgdGVzdHNcbiYjNDM7XG4mIzQzO0ZvciByZWZlcmVuY2U6XG4mIzQzO1xuJiM0MzsgICBSdWxlIDUuNTogUHJlZmVyIGFkZHJlc3NlcyBpbiBhIHByZWZpeCBhZHZlcnRpc2VkIGJ5IHRoZSBuZXh0LWhvcC5cbiYjNDM7ICAgSWYgU0Egb3IgU0EmIzM5O3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IHRoZSBzZWxlY3RlZCBuZXh0LWhvcCB0aGF0IHdpbGxcbiYjNDM7ICAgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNCIG9yIFNCJiMzOTtzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudFxuJiM0MzsgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJiMzOTtzIHByZWZpeCBpc1xuJiM0MzsgICBhc3NpZ25lZCBieSB0aGUgbmV4dC1ob3AgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQSBvclxuJiM0MzsgICBTQSYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnQgbmV4dC1ob3AsIHRoZW4gcHJlZmVyIFNCLlxuJiM0MztcbiYjNDM7KGFuZCBzaW5jZSBpdCBwcm92aWRlcyB0aGUgXCYjMzQ7Y291bnRlcnBvaW50XCYjMzQ7OilcbiYjNDM7XG4mIzQzOyAgIFJ1bGUgODogVXNlIGxvbmdlc3QgbWF0Y2hpbmcgcHJlZml4LlxuJiM0MzsgICBJZiBDb21tb25QcmVmaXhMZW4oU0EsIEQpIFx1MDAzZSBDb21tb25QcmVmaXhMZW4oU0IsIEQpLCB0aGVuIHByZWZlciBTQS5cbiYjNDM7ICAgU2ltaWxhcmx5LCBpZiBDb21tb25QcmVmaXhMZW4oU0IsIEQpIFx1MDAzZSBDb21tb25QcmVmaXhMZW4oU0EsIEQpLCB0aGVuXG4mIzQzOyAgIHByZWZlciBTQi5cbiYjNDM7XG4mIzQzO05vdGUgcnVsZSA1LjUgd2FzIG9yaWdpbmFsbHkgb3B0aW9uYWwgYnV0IG1hZGUgbWFuZGF0b3J5IGJ5XG4mIzQzO2RyYWZ0LWlldGYtNm1hbi1yZmM2NzI0LXVwZGF0ZSAod2hpY2ggYXQgdGhlIHBvaW50IG9mIGNyZWF0aW9uIG9mIHRoaXMgdGVzdFxuJiM0Mzt3YXMgYWxyZWFkeSBcJiMzNDtkb25lXCYjMzQ7IGF0IHRoZSBJRVRGIGJ1dCB3YWl0aW5nIGluIHRoZSBSRkMgZWRpdG9yIHF1ZXVlIGR1ZSB0byBhXG4mIzQzO2Jsb2NraW5nIGRlcGVuZGVuY3kuKVxuJiM0MztcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzO2Zyb20gc29ja2V0IGltcG9ydCBzb2NrZXQsIEFGX0lORVQ2LCBTT0NLX0RHUkFNXG4mIzQzO2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwc1xuJiM0Mztmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGVcbiYjNDM7XG4mIzQzO2Zyb20gbGliLnB5IGltcG9ydCBrc2Z0X3J1biwga3NmdF9leGl0LCBrc2Z0X2VxXG4mIzQzO2Zyb20gbGliLnB5IGltcG9ydCBOZXROUywgTmV0TlNFbnRlclxuJiM0Mztmcm9tIGxpYi5weSBpbXBvcnQgaXBcbiYjNDM7XG4mIzQzO1xuJiM0MztkZWYgc2VsZWN0X2FkZHIoZGVzdCk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIGNvbm5lY3QoKSAmIzQzOyBnZXRzb2NrbmFtZSgpIHRvIGZpZ3VyZSBvdXQgd2hhdCB3YXMgc2VsZWN0ZWQgYXMgc291cmNlIGFkZHJlc3NcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAgc29jayA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgMClcbiYjNDM7ICAgIHNvY2suY29ubmVjdCgoZGVzdCwgMTIzNDUpKVxuJiM0MzsgICAgcmV0dXJuIHNvY2suZ2V0c29ja25hbWUoKVswXVxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBpbl9uZXRucyhmdW5jOiBDYWxsYWJsZVtbXSwgTm9uZV0pIC1cdTAwM2UgQ2FsbGFibGVbW10sIE5vbmVdOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBweXRob24gZGVjb3JhdG9yIHRvIHB1dCB0ZXN0IGZ1bmN0aW9uIGluIG5ldG5zXG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBAd3JhcHMoZnVuYylcbiYjNDM7ICAgIGRlZiB3cmFwcGVkKCkgLVx1MDAzZSBOb25lOlxuJiM0MzsgICAgICAgIHdpdGggTmV0TlMoKSBhcyB0ZXN0bnM6XG4mIzQzOyAgICAgICAgICAgIHdpdGggTmV0TlNFbnRlcihzdHIodGVzdG5zKSk6XG4mIzQzOyAgICAgICAgICAgICAgICBmdW5jKClcbiYjNDM7XG4mIzQzOyAgICByZXR1cm4gd3JhcHBlZFxuJiM0MztcbiYjNDM7XG4mIzQzO0Bpbl9uZXRuc1xuJiM0MztkZWYgdGVzdF9iYXNpYygpIC1cdTAwM2UgTm9uZTpcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAgU2ltcGxlIFx1MDAyNiBtb3N0IGNvbW1vbiBjYXNlIGZvciBSRkM2NzI0IHJ1bGUgNS41OiBtdWx0aXBsZSBkZWZhdWx0IHJvdXRlc1xuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIGFkZCB0eXBlIHZldGhcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIHNldCB2ZXRoMCB1cFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgc2V0IHZldGgxIHVwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7YWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODoxMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTA6OjFcJiMzNDssIFwmIzM0O2Jhc2VsaW5lIHBhc3NcJiMzNDspXG4mIzQzOyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTAwMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41IFx1MDAzZSBydWxlIDhcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgZGVsIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODoxMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTAwMDo6MVwmIzM0OywgXCYjMzQ7YmFzZWxpbmUgcGFzc1wmIzM0OylcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTAwMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTAwMDo6MVwmIzM0OywgXCYjMzQ7cnVsZSA1LjUgXHUwMDNlIHJ1bGUgOFwmIzM0OylcbiYjNDM7XG4mIzQzO1xuJiM0MztAaW5fbmV0bnNcbiYjNDM7ZGVmIHRlc3Rfbmhfb2JqKCkgLVx1MDAzZSBOb25lOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBTYW1lIGFzIGFib3ZlLCBidXQgd2l0aCBuZXh0aG9wIG9iamVjdHMgZm9yIHRoZSBkZWZhdWx0IHJvdXRlXG4mIzQzO1xuJiM0MzsgICAgTkI6IFRoZSBrZXJuZWwgZG9lc24mIzM5O3QgY3VycmVudGx5IGFsbG93IG5leHRob3Agb2JqZWN0cyBmb3Igc3VidHJlZSByb3V0ZXMuXG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIGFkZCB0eXBlIHZldGhcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIHNldCB2ZXRoMCB1cFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgc2V0IHZldGgxIHVwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7YWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICAjIGRpc3RpbmN0IG5leHRob3Agb2JqZWN0cyBhcmUgdXNlZCwgYmVjYXVzZSB3aGF0IG1hdHRlcnMgaXMgdGhlIG5leHRob3BcbiYjNDM7ICAgICMgaXRzZWxmLCBub3QgdGhlIG5leHRob3Agb2JqZWN0LiAgVG8gY292ZXIgZXZlcnl0aGluZywgbWFrZSBhIGdyb3VwLlxuJiM0MzsgICAgaXAoXCYjMzQ7bmV4dGhvcCBhZGQgaWQgMTAxIHZpYSBmZTgwOjoxIGRldiB2ZXRoMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O25leHRob3AgYWRkIGlkIDIwMSBncm91cCAxMDFcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtuZXh0aG9wIGFkZCBpZCAxMDIgdmlhIGZlODA6OjIgZGV2IHZldGgwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7bmV4dGhvcCBhZGQgaWQgMjAyIGdyb3VwIDEwMlwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgbmhpZCAyMDIgbWV0cmljIDIwMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCAgIHZpYSBmZTgwOjoxIGRldiB2ZXRoMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjExOjpcJiMzNDspLCBcJiMzNDsyMDAxOmRiODoxMDo6MVwmIzM0OywgXCYjMzQ7YmFzZWxpbmUgcGFzc1wmIzM0OylcbiYjNDM7ICAgICMgcnVsZSA4IHdvdWxkIHJlc3VsdCBpbiB0aGUgdXNlIG9mIHRoZSA6MTAwMTogYWRkcmVzcywgYnV0IHJ1bGUgNS41IGFwcGxpZXMgYmVmb3JlLlxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODoxMDAxOjpcJiMzNDspLCBcJiMzNDsyMDAxOmRiODoxMDo6MVwmIzM0OywgXCYjMzQ7cnVsZSA1LjUgXHUwMDNlIHJ1bGUgOFwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBkZWwgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O2Jhc2VsaW5lIHBhc3NcJiMzNDspXG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjEwMDE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41IFx1MDAzZSBydWxlIDhcJiMzNDspXG4mIzQzO1xuJiM0MztcbiYjNDM7QGluX25ldG5zXG4mIzQzO2RlZiB0ZXN0X2xvd19tZXRyaWMoKSAtXHUwMDNlIE5vbmU6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIENoZWNrIHRoYXQgc3VidHJlZSByb3V0ZXMgdGFrZSBlZmZlY3QgZXZlbiBpZiB0aGV5IGFyZSBoaWdoZXIgbWV0cmljXG4mIzQzO1xuJiM0MzsgICAgRm9yIGNoZWNraW5nIHRoYXQgXCYjMzQ7cm91dGVyIGFkdmVydGlzZWQgcHJlZml4XCYjMzQ7LCBtZXRyaWMgaXMgaXJyZWxldmFudC4gIEl0XG4mIzQzOyAgICBtYXR0ZXJzIGZvciB0aGUgaW5pdGlhbCB1bnNwZWNpZmljIGxvb2t1cCB0byBmaW5kIGEgbmV4dGhvcCB0byBiZWdpbiB3aXRoLlxuJiM0MzsgICAgKFRoZSBsYXRlciBzb3VyY2UgYWRkcmVzcyBjaGVjayBsb29rdXAgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSBuZXh0aG9wLCBpLmUuXG4mIzQzOyAgICB0aGUgZWZmZWN0cyBvZiBtZXRyaWNzIGFyZSBhbHJlYWR5IGRvbmUuKVxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIGFkZCB0eXBlIHZldGhcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIHNldCB2ZXRoMCB1cFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgc2V0IHZldGgxIHVwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7YWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MyBkZXYgdmV0aDAgbWV0cmljIDUwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtiYXNlbGluZSBwYXNzXCYjMzQ7KVxuJiM0MzsgICAgIyBydWxlIDggd291bGQgcmVzdWx0IGluIHRoZSB1c2Ugb2YgdGhlIDoxMDAxOiBhZGRyZXNzLCBidXQgcnVsZSA1LjUgYXBwbGllcyBiZWZvcmUuXG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjEwMDE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtydWxlIDUuNSBcdTAwM2UgcnVsZSA4XCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGRlbCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O2Jhc2VsaW5lIHBhc3NcJiMzNDspXG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjEwMDE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41IFx1MDAzZSBydWxlIDhcJiMzNDspXG4mIzQzO1xuJiM0MztcbiYjNDM7QGluX25ldG5zXG4mIzQzO2RlZiB0ZXN0X25vX3N1YnRyZWUoKSAtXHUwMDNlIE5vbmU6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIEVuc3VyZSB0aGF0IG1hdGNoaW5nIG9uIGEgbm9uLXN1YnRyZWUgcm91dGUgZG9lc24mIzM5O3QgdHJpZ2dlciBydWxlIDUuNVxuJiM0MztcbiYjNDM7ICAgIChUaGlzIHdhcyBub24tb2J2aW91c2x5IGJyb2tlbiBpbiBlYXJsaWVyIHZlcnNpb25zIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMsXG4mIzQzOyAgICBhIG5vbi1zdWJ0cmVlIHJvdXRlIHdvdWxkIHN0aWxsIG1hdGNoLiAgTWFrZSBzdXJlIGl0IGRvZXNuJiMzOTt0IGJyZWFrIGFnYWluLilcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAgaXAoXCYjMzQ7bGluayBhZGQgdHlwZSB2ZXRoXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7bGluayBzZXQgdmV0aDAgdXBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIHNldCB2ZXRoMSB1cFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODoxMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTA6OjFcJiMzNDssIFwmIzM0O2Jhc2VsaW5lIHBhc3NcJiMzNDspXG4mIzQzOyAgICBrc2Z0X2VxKFxuJiM0MzsgICAgICAgIHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjEwMDE6OlwmIzM0OyksXG4mIzQzOyAgICAgICAgXCYjMzQ7MjAwMTpkYjg6MTA6OjFcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7cnVsZSA1LjUgXHUwMDNlIHJ1bGUgOCwgaWdub3Jpbmcgbm9uLVNBRFJcJiMzNDssXG4mIzQzOyAgICApXG4mIzQzO1xuJiM0MztcbiYjNDM7QGluX25ldG5zXG4mIzQzO2RlZiB0ZXN0X2xvbmdlcigpIC1cdTAwM2UgTm9uZTpcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAgQ2hlY2sgZnVuY3Rpb25hbGl0eSBmb3Igbm9uLWRlZmF1bHQgZGVzdGluYXRpb24uXG4mIzQzO1xuJiM0MzsgICAgVGhpcyBpcyBleHBlY3RlZCB0byBiZSB2ZXJ5IHJhcmUgaW4gYWN0dWFsIHByYWN0aWNlLCBhbmQgZG9lc24mIzM5O3QgZG9cbiYjNDM7ICAgIGJhY2t0cmFja2luZyAoYWxzbyByZWZlciB0byBrZXJuZWwgZG9jcy4pXG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgYWRkIHR5cGUgdmV0aFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgc2V0IHZldGgwIHVwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7bGluayBzZXQgdmV0aDEgdXBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCAyMDAxOmRiODo1MDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOjovNDggZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtiYXNlbGluZSBwYXNzXCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41XCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6YWFhOjpcJiMzNDspLCBcJiMzNDsyMDAxOmRiODoxMDAwOjoxXCYjMzQ7LCBcJiMzNDtydWxlIDUuNVwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOmFhYTo6LzY0IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtiYXNlbGluZSBwYXNzXCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41XCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6YWFhOjpcJiMzNDspLCBcJiMzNDsyMDAxOmRiODoxMDo6MVwmIzM0OywgXCYjMzQ7bm8gYmFja3RyYWNraW5nXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGRlbCAyMDAxOmRiODo1MDA6Oi80OCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtiYXNlbGluZSBwYXNzXCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtubyBiYWNrdHJhY2tpbmdcJiMzNDspXG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjUwMDphYWE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtubyBiYWNrdHJhY2tpbmdcJiMzNDspXG4mIzQzO1xuJiM0MztcbiYjNDM7ZGVmIG1haW4oKSAtXHUwMDNlIE5vbmU6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIFJGQzY3MjQgcnVsZSA1LjUgdGVzdCBkcml2ZXJcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAga3NmdF9ydW4oXG4mIzQzOyAgICAgICAgW1xuJiM0MzsgICAgICAgICAgICB0ZXN0X2Jhc2ljLFxuJiM0MzsgICAgICAgICAgICB0ZXN0X25oX29iaixcbiYjNDM7ICAgICAgICAgICAgdGVzdF9sb3dfbWV0cmljLFxuJiM0MzsgICAgICAgICAgICB0ZXN0X25vX3N1YnRyZWUsXG4mIzQzOyAgICAgICAgICAgIHRlc3RfbG9uZ2VyLFxuJiM0MzsgICAgICAgIF1cbiYjNDM7ICAgIClcbiYjNDM7ICAgIGtzZnRfZXhpdCgpXG4mIzQzO1xuJiM0MztcbiYjNDM7aWYgX19uYW1lX18gPT0gXCYjMzQ7X19tYWluX19cJiMzNDs6XG4mIzQzOyAgICBtYWluKClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NVQlRSRUVTJiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2Nl9zYWRkcl9ydWxlNXA1JiMzNDssCiAgICAmIzM0O2lwdjZfZmxfZ2V0X3NhZGRyJiMzNDssCiAgICAmIzM0O2lwdjZfZGV2X2dldF9zYWRkciYjMzQ7LAogICAgJiMzNDtydDZfZmlsbF9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgUkZDNjcyNCBydWxlIDUuNSBmb3IgSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gYnkgaW50cm9kdWNpbmcgYGlwdjZfc2FkZHJfcnVsZTVwNWAgYW5kIGBpcHY2X2ZsX2dldF9zYWRkcmAuIEl0IG1vZGlmaWVzIGNvcmUgSVB2NiByb3V0aW5nIGFuZCBhZGRyZXNzIHNlbGVjdGlvbiBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzb2NrZXQgb3BlcmF0aW9ucyAoZS5nLiwgY29ubmVjdCwgc2VuZG1zZykgYW5kIG5ldGxpbmsgcm91dGUgZHVtcHMgKGBydDZfZmlsbF9ub2RlYCkuIFRoZSBmZWF0dXJlIHJlcXVpcmVzIGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYCB0byBiZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YTRkNTQ0MmMwMmIzOWI5MjU4MmZlMTFlYzhhZjIyYjRmYWRjODc4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MTc6MjUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni1hZGRyc2VsLnJzdCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZWQwMzJlNjk1NzA1YwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0CkBAIC0wLDAgJiM0MzsxLDc1IEBACiYjNDM7Li4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsKJiM0Mzs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KJiM0MztJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiB0cml2aWEKJiM0Mzs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KJiM0MzsKJiM0MzsKJiM0MztSRkM2NzI0IHJ1bGUgNS41IHN1cHBvcnQKJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MztSRkM2NzI0IHJ1bGUgNS41IGlzIGEgdmVyeSBzaG9ydCBwYXJhZ3JhcGggaW4gYSBjb21wbGV4IFJGQyB0aGF0IGhhcyB0dXJuZWQKJiM0MztvdXQgcXVpdGUgdHJpY2t5LCBidXQgYWxzbyBpbW1lbnNlbHkgdXNlZnVsIGluIG11bHRpaG9taW5nIHNjZW5hcmlvcy4gIEZvcgomIzQzO3JlZmVyZW5jZSwgaXQgc2F5czoKJiM0MzsKJiM0Mzs6OgomIzQzOwomIzQzOyAgIFJ1bGUgNS41OiBQcmVmZXIgYWRkcmVzc2VzIGluIGEgcHJlZml4IGFkdmVydGlzZWQgYnkgdGhlIG5leHQtaG9wLgomIzQzOyAgIElmIFNBIG9yIFNBJiMzOTtzIHByZWZpeCBpcyBhc3NpZ25lZCBieSB0aGUgc2VsZWN0ZWQgbmV4dC1ob3AgdGhhdCB3aWxsCiYjNDM7ICAgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNCIG9yIFNCJiMzOTtzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudAomIzQzOyAgIG5leHQtaG9wLCB0aGVuIHByZWZlciBTQS4gIFNpbWlsYXJseSwgaWYgU0Igb3IgU0ImIzM5O3MgcHJlZml4IGlzCiYjNDM7ICAgYXNzaWduZWQgYnkgdGhlIG5leHQtaG9wIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNlbmQgdG8gRCBhbmQgU0Egb3IKJiM0MzsgICBTQSYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnQgbmV4dC1ob3AsIHRoZW4gcHJlZmVyIFNCLgomIzQzOwomIzQzO1RoZSB3YXkgdGhpcyB3b3JrcyBvbiBMaW51eCBpcyBhcyBmb2xsb3dzOgomIzQzOwomIzQzOy0gcHJpb3IgdG8gYW55IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBoYXBwZW5pbmcsIHdoZW4gcmVjZWl2aW5nIGEgUkEsIG1vcmUKJiM0MzsgIHRoYW4gdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRlZmF1bHQgcm91dGUgKG9yIDo6LzEyOCByb3V0ZSkgbmVlZHMgdG8gaGFwcGVuOgomIzQzOyAgZm9yIGVhY2ggUElPLCBhIHNvdXJjZS1zcGVjaWZpYyAoc3VidHJlZSkgcm91dGUgaXMgKmFkZGl0aW9uYWxseSogaW5zdGFsbGVkLgomIzQzOyAgVGhlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgKmFmdGVyKiBhIHNvdXJjZSBhZGRyZXNzIGhhcyBiZWVuIHNlbGVjdGVkLCBvbmUKJiM0MzsgIG9mIHRoZSByb3V0ZXJzIHRoYXQgYWR2ZXJ0aXNlZCBpdCB3aWxsIHJlbWFpbiBpbiB1c2UgKHRoaXMgaXMgKm5vdCogUkZDIDY3MjQKJiM0MzsgIHJlbGF0ZWQsIGJ1dCByYXRoZXIgUkZDIDgwMjguKSAgQXQgdGhlIHNhbWUgdGltZSwgdGhlc2UgZXh0cmEgcm91dGVzIHNlcnZlCiYjNDM7ICB0byByZW1lbWJlciB3aGljaCByb3V0ZXIgYWR2ZXJ0aXNlZCB3aGF0LgomIzQzOwomIzQzOy0gcGVyIHVzdWFsLCBhIHJvdXRlIGxvb2t1cCBmb3IgdGhlIElQdjYgZGVzdGluYXRpb24gYWRkcmVzcyBpbiBjb25zaWRlcmF0aW9uCiYjNDM7ICBpcyBkb25lIGZpcnN0LiAgVGhpcyBpcyBwYXNzZWQgYXJvdW5kIGluIGtlcm5lbCBhcyBhIGRzdF9lbnRyeS4KJiM0MzsKJiM0MzstIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gY29kZSBpdGVyYXRlcyB0aHJvdWdoIHRoZSB2YXJpb3VzIHJ1bGVzIGluCiYjNDM7ICBSRkMgNjcyNC4KJiM0MzsKJiM0MzstIGlmL3doZW4gcnVsZSA1LjUgaXMgcmVhY2hlZCwgZmlyc3Qgb2YgYWxsLCB0aGVyZSBpcyBhIGNoZWNrIGlmICphbnkqIHNvdXJjZQomIzQzOyAgc3BlY2lmaWMgcm91dGVzIGV4aXN0IGluIHRoZSByb3V0aW5nIHRhYmxlLiAgSWYgdGhlcmUgYXJlIG5vbmUsIHRoZSBlbnRpcmUKJiM0MzsgIGNvZGUgZm9yIDUuNSBpcyBza2lwcGVkIGJlY2F1c2UgaXQgY2Fubm90IGhhdmUgYW55IGVmZmVjdCwgYnV0IGlzIG5vdCBmcmVlCiYjNDM7ICB0byBleGVjdXRlIChjYW4gaW52b2x2ZSBtdWx0aXBsZSByb3V0aW5nIGxvb2t1cHMuKSAgKipJbiBhcHBsaWNhdGlvbnMgdGhhdAomIzQzOyAgdXNlIGEgbG90IG9mIHVuYm91bmQgKGUuZy4gVURQKSBzb2NrZXRzLCBpbnN0YWxsaW5nIHN1YnRyZWUgcm91dGVzIHNob3VsZAomIzQzOyAgdGhlcmVmb3JlIGJlIGF2b2lkZWQgdG8gbm90IGluY3VyIHRoaXMgY29zdCBvbiBlYWNoIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbgomIzQzOyAgcGFzcy4qKiAgQWx0ZXJuYXRpdmVseSwgYXBwbGljYXRpb25zIHNob3VsZCBiaW5kIHRoZWlyIHNvY2tldHMgdG8gYSBzcGVjaWZpYwomIzQzOyAgc291cmNlIGFkZHJlc3Mgc3VjaCB0aGF0IHRoZSBzZWxlY3Rpb24gY29kZSBpcyBuZXZlciBoaXQuCiYjNDM7CiYjNDM7LSBpZiBzdWJ0cmVlIHJvdXRlcyBkbyBleGlzdCwgdGhlIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBjb2RlIG5vdyByZXBlYXRzCiYjNDM7ICB0aGUgcm91dGluZyBsb29rdXAgZG9uZSBiZWZvcmUgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGlzIGVudGVyZWQsIGV4Y2VwdAomIzQzOyAgd2l0aCB0aGUgc291cmNlIGFkZHJlc3MgdW5kZXIgY29uc2lkZXJhdGlvbiBmaWxsZWQgaW4uICBUaGlzIGxvb2t1cCB3aWxsIGhpdAomIzQzOyAgdGhlIHN1YnRyZWUgcm91dGVzIHRoYXQgd2VyZSBpbnN0YWxsZWQgKHNlZSBmaXJzdCBpdGVtKSwgZ2l2aW5nIGEgZnJlc2gKJiM0MzsgIGRzdF9lbnRyeS4gIElmIHRoZSBuZXcgZHN0X2VudHJ5IG1hdGNoZXMgdGhlIG9yaWdpbmFsIGRzdF9lbnRyeSwgdGhhdCBtZWFucwomIzQzOyAgdGhlIG9yaWdpbmFsIHJvdXRlciBoYXMgaW4gZmFjdCBzZW50IFJBcyB3aXRoIFBJT3MgZm9yIHRoaXMgc291cmNlIGFkZHJlc3MsCiYjNDM7ICBzbyBpdCBpcyBwcmVmZXJyZWQuICBPdGhlcndpc2UgaXQgaXMgbm90LgomIzQzOwomIzQzOwomIzQzO1RoZXJlIGFyZSBhIGZldyBjYXZlYXRzIHRvIGNvbnNpZGVyOgomIzQzOwomIzQzOy0gdGhlIGtlcm5lbCBjdXJyZW50bHkgZG9lcyBub3QgY3JlYXRlIHRoZSBzdWJ0cmVlIHJvdXRlcyBtZW50aW9uZWQgaW4gdGhlCiYjNDM7ICBmaXJzdCBpdGVtLiAgVGhpcyBpcyBhIHNlcGFyYXRlIHdvcmsgaXRlbSwgcGFydGlhbGx5IGRvbmUgYXQgdGhlIHRpbWUgb2YKJiM0MzsgIHdyaXRpbmcgdGhpcy4gIEJ1dCB0aGlzIGNhbiBlcXVhbGx5IHdlbGwgYmUgcGVyZm9ybWVkIGluIHVzZXJzcGFjZSBwcm9jZXNzaW5nCiYjNDM7ICBvZiBSQXMsIGUuZy4gTmV0d29ya01hbmFnZXIgb3IgcGxhaW4gc3RhdGljIGNvbmZpZ3VyYXRpb24uCiYjNDM7CiYjNDM7LSBzaW5jZSBhZGRyZXNzZXMgY2FuIGFsc28gYmUgYWNxdWlyZWQgZnJvbSBESENQdjYsIGV2ZW4gUkEvUElPIGNvbWJpbmF0aW9ucwomIzQzOyAgdGhhdCBkaWRuJiMzOTt0IHJlc3VsdCBpbiB0aGUgY3JlYXRpb24gb2YgYW55IGFkZHJlc3NlcyAoZS5nLiBBPTApIHNob3VsZCBoYXZlCiYjNDM7ICBzdWJ0cmVlIHJvdXRlcyBhZGRlZC4gIFRob3NlIHJvdXRlcyAqbWF5KiBiZSByZWxldmFudCBmb3IgREhDUHY2LWdlbmVyYXRlZAomIzQzOyAgYWRkcmVzc2VzLgomIzQzOwomIzQzOy0gdGhlICYjMzQ7YW5ub3VuY2UgY2hlY2smIzM0OyBsb29rdXAgZG9lcyBub3QgYmFja3RyYWNrLiAgT25seSB0aGUgZGVzdGluYXRpb24gcHJlZml4CiYjNDM7ICB0aGF0IHByb3ZpZGVkIHRoZSAmIzM0O3Vuc3BlY2lmaWMmIzM0OyAoOjovMTI4KSBtYXRjaCBpcyBjaGVja2VkIGZvciBzb3VyY2UgcHJlZml4ZXMKJiM0MzsgIHRvIHNlZSB3aGF0IHJvdXRlcnMgYWR2ZXJ0aXNlZCB3aGF0LiAgVGhpcyBtZWFucyB0aGF0IGZvciBlLmcuIFJJT3MsIHN1YnRyZWUKJiM0MzsgIHJvdXRlcyBhbHNvIGhhdmUgdG8gYmUgY3JlYXRlZC4gIChCYWNrdHJhY2tpbmcgZm9yIHRoaXMgY2FzZSB3b3VsZCBmdXJ0aGVyCiYjNDM7ICBpbmNyZWFzZSB0aGUgY29zdCBvZiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24sIGZvciBhIHByZXR0eSByYXJlIHNpdHVhdGlvbgomIzQzOyAgdGhhdCBoYXMgYW4gZWFzeSBmaXgvd29ya2Fyb3VuZC4pCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGYzMjE4YWJlZmQwYzZiLi40ZWRmNDgzNjJhMDczMiAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlMKQEAgLTE4OTEyLDYgJiM0MzsxODkxMiw3IEBAIEY6CURvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1hZGRyLnlhbWwKIEY6CURvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1uZWlnaC55YW1sCiBGOglEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtcm91dGUueWFtbAogRjoJRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LXJ1bGUueWFtbAomIzQzO0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0CiBGOglpbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaAogRjoJaW5jbHVkZS9saW51eC9tcm91dGUqCiBGOglpbmNsdWRlL25ldC9hZGRyY29uZi5oCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaAppbmRleCA4Y2VkMjdhODIyOWI2ZS4uN2JjMDcxMWI4NzE3OTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaApAQCAtMTQyLDYgJiM0MzsxNDIsMTAgQEAgc3RydWN0IGluZXQ2X2lmYWRkciAqaXB2Nl9nZXRfaWZhZGRyKHN0cnVjdCBuZXQgKm5ldCwKIGludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkgICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgdW5zaWduZWQgaW50IHNyY3ByZWZzLAogCQkgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7CiYjNDM7aW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0LAomIzQzOwkJICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsCiYjNDM7CQkgICAgICBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBzcmNwcmVmcywKJiM0MzsJCSAgICAgIHN0cnVjdCBmbG93aTYgKmZsNik7CiBpbnQgaXB2Nl9nZXRfbGxhZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpbjZfYWRkciAqYWRkciwKIAkJICAgIHUzMiBiYW5uZWRfZmxhZ3MpOwogYm9vbCBpbmV0X3Jjdl9zYWRkcl9lcXVhbChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBzb2NrICpzazIsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcDZfcm91dGUuaCBiL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oCmluZGV4IDA5ZmZlMGYxM2NlNzUyLi5mZTEzY2IxZDMyNTdkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmgKQEAgLTE0MCwzMiAmIzQzOzE0MCw2IEBAIHZvaWQgcnQ2X2ZsdXNoX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfaW5mbyAqZjZpKTsKIHZvaWQgcnQ2X2FnZV9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSwgc3RydWN0IGZpYjZfZ2NfYXJncyAqZ2NfYXJncywKIAkJCXVuc2lnbmVkIGxvbmcgbm93KTsKIAotc3RhdGljIGlubGluZSBpbnQgaXA2X3JvdXRlX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSwKLQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLAotCQkJCSAgICAgIHVuc2lnbmVkIGludCBwcmVmcywgaW50IGwzbWRldl9pbmRleCwKLQkJCQkgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKQotewotCXN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7Ci0Jc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKLQlib29sIHNhbWVfdnJmOwotCWludCBlcnIgPSAwOwotCi0JcmN1X3JlYWRfbG9jaygpOwotCi0JbDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBsM21kZXZfaW5kZXgpOwotCWlmICghZjZpIHx8ICFmNmktJmd0O2ZpYjZfcHJlZnNyYy5wbGVuIHx8IGwzbWRldikKLQkJZGV2ID0gZjZpID8gZmliNl9pbmZvX25oX2RldihmNmkpIDogTlVMTDsKLQlzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2OwotCWlmIChmNmkgJmFtcDsmYW1wOyBmNmktJmd0O2ZpYjZfcHJlZnNyYy5wbGVuICZhbXA7JmFtcDsgc2FtZV92cmYpCi0JCSpzYWRkciA9IGY2aS0mZ3Q7ZmliNl9wcmVmc3JjLmFkZHI7Ci0JZWxzZQotCQllcnIgPSBpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgZGFkZHIsIHByZWZzLCBzYWRkcik7Ci0KLQlyY3VfcmVhZF91bmxvY2soKTsKLQotCXJldHVybiBlcnI7Ci19Ci0KIHN0cnVjdCBydDZfaW5mbyAqcnQ2X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsCiAJCQkgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpzYWRkciwgaW50IG9pZiwKIAkJCSAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvS2NvbmZpZyBiL25ldC9pcHY2L0tjb25maWcKaW5kZXggYzM4MDZjNmFjOTZmOTUuLjM5NjU5ZTliNTNhM2RiIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L0tjb25maWcKQEAgLTI0MywxNiAmIzQzOzI0MywyNiBAQCBjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVMKIGNvbmZpZyBJUFY2X1NVQlRSRUVTCiAJYm9vbCAmIzM0O0lQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmcmIzM0OwogCWRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMKJiM0MzsJZGVmYXVsdCB5CiAJaGVscAogCSAgRW5hYmxlIHJvdXRpbmcgYnkgc291cmNlIGFkZHJlc3Mgb3IgcHJlZml4LgogCiAJICBUaGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyBzdGlsbCB0aGUgcHJpbWFyeSByb3V0aW5nIGtleSwgc28gbWl4aW5nCiAJICBub3JtYWwgYW5kIHNvdXJjZSBwcmVmaXggc3BlY2lmaWMgcm91dGVzIGluIHRoZSBzYW1lIHJvdXRpbmcgdGFibGUKLQkgIG1heSBzb21ldGltZXMgbGVhZCB0byB1bmludGVuZGVkIHJvdXRpbmcgYmVoYXZpb3IuICBUaGlzIGNhbiBiZQotCSAgYXZvaWRlZCBieSBkZWZpbmluZyBkaWZmZXJlbnQgcm91dGluZyB0YWJsZXMgZm9yIHRoZSBub3JtYWwgYW5kCi0JICBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcy4KJiM0MzsJICBtYXkgc29tZXRpbWVzIGxlYWQgdG8gdW5pbnRlbmRlZCByb3V0aW5nIGJlaGF2aW9yIGlmIHRoZSBvcmRlciBvZgomIzQzOwkgIGxvb2t1cHMgaXMgbWlzdW5kZXJzdG9vZC4gIFRvIGFjaGlldmUgZnVsbCBzZXBhcmF0aW9uIGJhc2VkIG9uIHNvdXJjZQomIzQzOwkgIGFkZHJlc3MsIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBzaG91bGQgYmUgZGVmaW5lZCBmb3IgZWFjaCBzb3VyY2UKJiM0MzsJICBwcmVmaXguCiAKLQkgIElmIHVuc3VyZSwgc2F5IE4uCiYjNDM7CSAgU3VidHJlZXMgc3BlY2lmaWNhbGx5IGFkZHJlc3Mgc2NlbmFyaW9zIHdoZXJlIGxvY2FsIGNvbm5lY3Rpdml0eQomIzQzOwkgIGJldHdlZW4gc291cmNlIHByZWZpeGVzIGlzIHNoYXJlZCBhbmQgdW5yZXN0cmljdGVkLCBidXQgc29tZQomIzQzOwkgIGRlc3RpbmF0aW9ucyAoZS5nLiB0aGUgZGVmYXVsdCByb3V0ZSkgaGF2ZSBtb3JlIGZpbmUtZ3JhaW5lZCBydWxlcy4KJiM0MzsKJiM0MzsJICBUaGlzIGZlYXR1cmUgaXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IHN1cHBvcnQgUkZDNjcyNCBydWxlIDUuNSBpbgomIzQzOwkgIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbi4gIFJ1bGUgNS41IGlzIGEgbmVjZXNzaXR5IGZvciBnb29kCiYjNDM7CSAgbXVsdGlob21pbmcsIHJlbnVtYmVyaW5nIGFuZCBzb3VyY2UgcHJlZml4IGxpdmVsaW5lc3MgY2hlY2tzLgomIzQzOwomIzQzOwkgIElmIHVuc3VyZSwgc2F5IFkuCiAKIGNvbmZpZyBJUFY2X01ST1VURQogCWJvb2wgJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZyYjMzQ7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9hZGRyY29uZi5jIGIvbmV0L2lwdjYvYWRkcmNvbmYuYwppbmRleCBmMWZlOWVkZTFlZGIzNy4uZjVjMDQ5MjhhYTE0MmYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2FkZHJjb25mLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWRkcmNvbmYuYwpAQCAtMTUyMiw2ICYjNDM7MTUyMiw3IEBAIGVudW0gewogCUlQVjZfU0FERFJfUlVMRV9IT0EsCiAjZW5kaWYKIAlJUFY2X1NBRERSX1JVTEVfT0lGLAomIzQzOwlJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1AsCiAJSVBWNl9TQUREUl9SVUxFX0xBQkVMLAogCUlQVjZfU0FERFJfUlVMRV9QUklWQUNZLAogCUlQVjZfU0FERFJfUlVMRV9PUkNISUQsCkBAIC0xNTQyLDExICYjNDM7MTU0MywxNCBAQCBzdHJ1Y3QgaXB2Nl9zYWRkcl9zY29yZSB7CiB9OwogCiBzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgewotCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqYWRkcjsKJiM0MzsJc3RydWN0IGZsb3dpNiAqZmw2OwomIzQzOwljb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiYjNDM7CWNvbnN0IHN0cnVjdCBzb2NrICpzazsKIAlpbnQgaWZpbmRleDsKIAlpbnQgc2NvcGU7CiAJaW50IGxhYmVsOwogCXVuc2lnbmVkIGludCBwcmVmczsKJiM0MzsJc3RydWN0IG5ldCAqbmV0OwogfTsKIAogc3RhdGljIGlubGluZSBpbnQgaXB2Nl9zYWRkcl9wcmVmZXJyZWQoaW50IHR5cGUpCkBAIC0xNTkxLDYgJiM0MzsxNTk1LDgwIEBAIHN0YXRpYyBib29sIGlwdjZfYWxsb3dfb3B0aW1pc3RpY19kYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LAogI2VuZGlmCiB9CiAKJiM0MzsvKiAmIzM0O3NvdXJjZSBhZGRyZXNzIGlzIHByZWZlcmFibGUgaWYgdGhlIGNob3NlbiBuZXh0aG9wIGFkdmVydGlzZWQgaXQgYXMgYSBQSU8mIzM0OwomIzQzOyAqID0mZ3Q7IGNvbnNpZGVyICYjMzk7YWR2ZXJ0aXNlZCBhcyBhIFBJTyYjMzk7IHRvIGJlICYjMzk7dGhlIHJvdXRlcyBmb3IgdGhlIHNvdXJjZSYjMzk7cyBzdWJ0cmVlCiYjNDM7ICogICAgaW5jbHVkZSBvbmUgd2l0aCB0aGUgc2FtZSBuZXh0aG9wJiMzOTsKJiM0MzsgKgomIzQzOyAqIE5COiB0aGVyZSBpcyBubyBiYWNrdHJhY2tpbmcgaW4gdGhlIHN1YnRyZWUgaGVyZSwgdGhpcyBpcyBpbnRlbnRpb25hbCAtCiYjNDM7ICogZWFjaCBwcmVmaXggc2VlbiAoYW5kIGFjY2VwdGVkKSBpbiBQSU9zIGNyZWF0ZXMgZXNzZW50aWFsbHkgYSAmIzM0O3pvbmUmIzM0OyB3aGljaAomIzQzOyAqIGlzIG91ciBzZWFyY2ggc2NvcGUuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBpcHY2X3NhZGRyX3J1bGU1cDUoc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLAomIzQzOwkJCSAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqc2FkZHJfZHN0KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHJ0Nl9pbmZvICpydCwgKmNtcF9ydDsKJiM0MzsJc3RydWN0IGRzdF9lbnRyeSAqY21wX2RzdDsKJiM0MzsJc3RydWN0IGZpYjZfaW5mbyAqZjZpOwomIzQzOwlpbnQgcmV0ID0gMDsKJiM0MzsKJiM0MzsJcnQgPSBjb250YWluZXJfb2Yoc2FkZHJfZHN0LSZndDtkc3QsIHN0cnVjdCBydDZfaW5mbywgZHN0KTsKJiM0MzsKJiM0MzsJLyogZmw2LSZndDtzYWRkciBpcyA6OiwgY2YuIGNoZWNrIGF0IHRoZSB0b3Agb2YgaXB2Nl9jb21tb25fZ2V0X3NhZGRyKCkgKi8KJiM0MzsJc2FkZHJfZHN0LSZndDtmbDYtJmd0O3NhZGRyID0gc2NvcmUtJmd0O2lmYS0mZ3Q7YWRkcjsKJiM0MzsJY21wX2RzdCA9IGlwNl9yb3V0ZV9vdXRwdXQoc2FkZHJfZHN0LSZndDtuZXQsIHNhZGRyX2RzdC0mZ3Q7c2ssCiYjNDM7CQkJCSAgIHNhZGRyX2RzdC0mZ3Q7Zmw2KTsKJiM0MzsJbWVtc2V0KCZhbXA7c2FkZHJfZHN0LSZndDtmbDYtJmd0O3NhZGRyLCAwLCBzaXplb2Yoc2FkZHJfZHN0LSZndDtmbDYtJmd0O3NhZGRyKSk7CiYjNDM7CiYjNDM7CWlmIChjbXBfZHN0LSZndDtlcnJvcikKJiM0MzsJCWdvdG8gb3V0X3JlbGVhc2VfZHN0OwomIzQzOwomIzQzOwljbXBfcnQgPSBjb250YWluZXJfb2YoY21wX2RzdCwgc3RydWN0IHJ0Nl9pbmZvLCBkc3QpOwomIzQzOwomIzQzOwkvKiB0aGlzIG11c3Qgd29yayBpZiBfYW55XyBuZXh0aG9wIG1hdGNoZXM7IHRoZSBub24tc3VidHJlZSBiZXN0IG1heQomIzQzOwkgKiBub3QgYmUgaW4gc2FtZSBvcmRlciBhcyBzdWJ0cmVlIGJlc3QKJiM0MzsJICovCiYjNDM7CWZvciAoZjZpID0gcmN1X2RlcmVmZXJlbmNlKGNtcF9ydC0mZ3Q7ZnJvbSk7IGY2aTsKJiM0MzsJICAgICBmNmkgPSByY3VfZGVyZWZlcmVuY2UoZjZpLSZndDtmaWI2X25leHQpKSB7CiYjNDM7CQlzdHJ1Y3QgZmliNl9uaCAqZjZuID0gZjZpLSZndDtmaWI2X25oOwomIzQzOwkJc3RydWN0IGZpYjZfaW5mbyAqc2libGluZzsKJiM0MzsKJiM0MzsJCS8qIG5vbi1zdWJ0cmVlIHJvdXRlOiBzYXlzIG5vdGhpbmcgYWJvdXQgcm91dGVyIGFkdmVydGlzaW5nIHRoaXMgc291cmNlICovCiYjNDM7CQlpZiAoZjZpLSZndDtmaWI2X3NyYy5wbGVuID09IDApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlpZiAoZjZuLSZndDtuaF9jb21tb24ubmhjX2RldiAhPSBzYWRkcl9kc3QtJmd0O2RzdC0mZ3Q7ZGV2IHx8CiYjNDM7CQkgICAgZjZuLSZndDtuaF9jb21tb24ubmhjX2d3X2ZhbWlseSAhPSBBRl9JTkVUNikKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCWlmIChpcHY2X2FkZHJfZXF1YWwoJmFtcDtmNm4tJmd0O25oX2NvbW1vbi5uaGNfZ3cuaXB2NiwKJiM0MzsJCQkJICAgICZhbXA7cnQtJmd0O3J0NmlfZ2F0ZXdheSkpIHsKJiM0MzsJCQlyZXQgPSAxOwomIzQzOwkJCWdvdG8gb3V0X3JlbGVhc2VfZHN0OwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKCFmNmktJmd0O2ZpYjZfbnNpYmxpbmdzKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShzaWJsaW5nLCAmYW1wO2Y2aS0mZ3Q7ZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncykgewomIzQzOwkJCWY2biA9IHNpYmxpbmctJmd0O2ZpYjZfbmg7CiYjNDM7CiYjNDM7CQkJaWYgKGY2bi0mZ3Q7bmhfY29tbW9uLm5oY19kZXYgIT0gc2FkZHJfZHN0LSZndDtkc3QtJmd0O2RldiB8fAomIzQzOwkJCSAgICBmNm4tJmd0O25oX2NvbW1vbi5uaGNfZ3dfZmFtaWx5ICE9IEFGX0lORVQ2KQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCQlpZiAoaXB2Nl9hZGRyX2VxdWFsKCZhbXA7ZjZuLSZndDtuaF9jb21tb24ubmhjX2d3LmlwdjYsCiYjNDM7CQkJCQkgICAgJmFtcDtydC0mZ3Q7cnQ2aV9nYXRld2F5KSkgewomIzQzOwkJCQlyZXQgPSAxOwomIzQzOwkJCQlnb3RvIG91dF9yZWxlYXNlX2RzdDsKJiM0MzsJCQl9CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MztvdXRfcmVsZWFzZV9kc3Q6CiYjNDM7CWRzdF9yZWxlYXNlKGNtcF9kc3QpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsCiAJCQkgICAgICAgc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLAogCQkJICAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqZHN0LApAQCAtMTYxOSw3ICYjNDM7MTY5Nyw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsCiAJCWJyZWFrOwogCWNhc2UgSVBWNl9TQUREUl9SVUxFX0xPQ0FMOgogCQkvKiBSdWxlIDE6IFByZWZlciBzYW1lIGFkZHJlc3MgKi8KLQkJcmV0ID0gaXB2Nl9hZGRyX2VxdWFsKCZhbXA7c2NvcmUtJmd0O2lmYS0mZ3Q7YWRkciwgZHN0LSZndDthZGRyKTsKJiM0MzsJCXJldCA9IGlwdjZfYWRkcl9lcXVhbCgmYW1wO3Njb3JlLSZndDtpZmEtJmd0O2FkZHIsICZhbXA7ZHN0LSZndDtmbDYtJmd0O2RhZGRyKTsKIAkJYnJlYWs7CiAJY2FzZSBJUFY2X1NBRERSX1JVTEVfU0NPUEU6CiAJCS8qIFJ1bGUgMjogUHJlZmVyIGFwcHJvcHJpYXRlIHNjb3BlCkBAIC0xNjc1LDYgJiM0MzsxNzUzLDI0IEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsCiAJCXJldCA9ICghZHN0LSZndDtpZmluZGV4IHx8CiAJCSAgICAgICBkc3QtJmd0O2lmaW5kZXggPT0gc2NvcmUtJmd0O2lmYS0mZ3Q7aWRldi0mZ3Q7ZGV2LSZndDtpZmluZGV4KTsKIAkJYnJlYWs7CiYjNDM7CWNhc2UgSVBWNl9TQUREUl9SVUxFX1BJT19CWV9ORVhUSE9QOgomIzQzOwkJLyogUnVsZSA1LjU6IFByZWZlciBzb3VyY2VzIGFkdmVydGlzZWQgYnkgY2hvc2VuIG5leHQtaG9wICovCiYjNDM7CiYjNDM7CQkvKiBXaXRob3V0IHN1YnRyZWVzLCB0aGUgc291cmNlIGFkZHJlc3Mgd2lsbCBtYWtlIG5vIGRpZmZlcmVuY2UKJiM0MzsJCSAqIGluIHRoZSBpcDZfcm91dGVfb3V0cHV0IGNhbGwgaW4gcnVsZTVwNS4gIFRoZXJlZm9yZSB0aGUgcnVsZQomIzQzOwkJICogNS41IGNoZWNrIGJlY29tZXMgdXNlbGVzcy4gIFRoaXMgd291bGRuJiMzOTt0IHJlc3VsdCBpbiBhbnkKJiM0MzsJCSAqIGVycm9ycywgYnV0IGlwNl9yb3V0ZV9vdXRwdXQgaXNuJiMzOTt0IGZyZWUsIHNvIGlmIHN1YnRyZWVzIGFyZQomIzQzOwkJICogZGlzYWJsZWQgc2F2ZSBzb21lIGN5Y2xlcyBieSBza2lwcGluZyB0aGlzIGVudGlyZWx5LgomIzQzOwkJICoKJiM0MzsJCSAqIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHN1YnRyZWVzX2VuYWJsZWQgdG8gaGF2ZSB0aGUgY29kZQomIzQzOwkJICogY29tcGlsZWQgcmVnYXJkbGVzcy4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGZpYjZfcm91dGVzX3JlcXVpcmVfc3JjKG5ldCkgJmFtcDsmYW1wOyBkc3QtJmd0O2RzdAomIzQzOwkJICAgICZhbXA7JmFtcDsgIWRzdC0mZ3Q7ZHN0LSZndDtlcnJvcikKJiM0MzsJCQlyZXQgPSBpcHY2X3NhZGRyX3J1bGU1cDUoc2NvcmUsIGRzdCk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcmV0ID0gMTsKJiM0MzsJCWJyZWFrOwogCWNhc2UgSVBWNl9TQUREUl9SVUxFX0xBQkVMOgogCQkvKiBSdWxlIDY6IFByZWZlciBtYXRjaGluZyBsYWJlbCAqLwogCQlyZXQgPSBpcHY2X2FkZHJfbGFiZWwobmV0LApAQCAtMTY5NywxMSAmIzQzOzE3OTMsMTEgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCwKIAkJICoJICAgIG5vbi1PUkNISUQgdnMgbm9uLU9SQ0hJRAogCQkgKi8KIAkJcmV0ID0gIShpcHY2X2FkZHJfb3JjaGlkKCZhbXA7c2NvcmUtJmd0O2lmYS0mZ3Q7YWRkcikgXgotCQkJaXB2Nl9hZGRyX29yY2hpZChkc3QtJmd0O2FkZHIpKTsKJiM0MzsJCQlpcHY2X2FkZHJfb3JjaGlkKCZhbXA7ZHN0LSZndDtmbDYtJmd0O2RhZGRyKSk7CiAJCWJyZWFrOwogCWNhc2UgSVBWNl9TQUREUl9SVUxFX1BSRUZJWDoKIAkJLyogUnVsZSA4OiBVc2UgbG9uZ2VzdCBtYXRjaGluZyBwcmVmaXggKi8KLQkJcmV0ID0gaXB2Nl9hZGRyX2RpZmYoJmFtcDtzY29yZS0mZ3Q7aWZhLSZndDthZGRyLCBkc3QtJmd0O2FkZHIpOwomIzQzOwkJcmV0ID0gaXB2Nl9hZGRyX2RpZmYoJmFtcDtzY29yZS0mZ3Q7aWZhLSZndDthZGRyLCAmYW1wO2RzdC0mZ3Q7Zmw2LSZndDtkYWRkcik7CiAJCWlmIChyZXQgJmd0OyBzY29yZS0mZ3Q7aWZhLSZndDtwcmVmaXhfbGVuKQogCQkJcmV0ID0gc2NvcmUtJmd0O2lmYS0mZ3Q7cHJlZml4X2xlbjsKIAkJc2NvcmUtJmd0O21hdGNobGVuID0gcmV0OwpAQCAtMTgxOSw5ICYjNDM7MTkxNSwxMCBAQCBzdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX21hc3RlcihzdHJ1Y3QgbmV0ICpuZXQsCiAJcmV0dXJuIGhpc2NvcmVfaWR4OwogfQogCi1pbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsCi0JCSAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgcHJlZnMsCi0JCSAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKQomIzQzO2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSwKJiM0MzsJCSAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LAomIzQzOwkJICAgICAgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgcHJlZnMsCiYjNDM7CQkgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpCiB7CiAJc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgc2NvcmVzWzJdLCAqaGlzY29yZTsKIAlzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgZHN0OwpAQCAtMTgzMiwxMSAmIzQzOzE5MjksMTggQEAgaW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LAogCWludCBoaXNjb3JlX2lkeCA9IDA7CiAJaW50IHJldCA9IDA7CiAKLQlkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoZGFkZHIpOwotCWRzdC5hZGRyID0gZGFkZHI7CiYjNDM7CS8qIHdlIHNob3VsZCBuZXZlciBlbmQgdXAgaGVyZSB3aXRoIGEgbm9uLWVtcHR5IHNhZGRyLiAqLwomIzQzOwlpZiAoV0FSTl9PTl9PTkNFKCFpcHY2X2FkZHJfYW55KCZhbXA7Zmw2LSZndDtzYWRkcikpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWRzdF90eXBlID0gX19pcHY2X2FkZHJfdHlwZSgmYW1wO2ZsNi0mZ3Q7ZGFkZHIpOwomIzQzOwlkc3QubmV0ID0gbmV0OwomIzQzOwlkc3QuZmw2ID0gZmw2OwomIzQzOwlkc3Quc2sgPSBzazsKJiM0MzsJZHN0LmRzdCA9IGRzdF9lbnRyeTsKIAlkc3QuaWZpbmRleCA9IGRzdF9kZXYgPyBkc3RfZGV2LSZndDtpZmluZGV4IDogMDsKIAlkc3Quc2NvcGUgPSBfX2lwdjZfYWRkcl9zcmNfc2NvcGUoZHN0X3R5cGUpOwotCWRzdC5sYWJlbCA9IGlwdjZfYWRkcl9sYWJlbChuZXQsIGRhZGRyLCBkc3RfdHlwZSwgZHN0LmlmaW5kZXgpOwomIzQzOwlkc3QubGFiZWwgPSBpcHY2X2FkZHJfbGFiZWwobmV0LCAmYW1wO2ZsNi0mZ3Q7ZGFkZHIsIGRzdF90eXBlLCBkc3QuaWZpbmRleCk7CiAJZHN0LnByZWZzID0gcHJlZnM7CiAKIAlzY29yZXNbaGlzY29yZV9pZHhdLnJ1bGUgPSAtMTsKQEAgLTE5MTEsMTEgJiM0MzsyMDE1LDI5IEBAIGludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldiwKIAlpZiAoIWhpc2NvcmUtJmd0O2lmYSkKIAkJcmV0ID0gLUVBRERSTk9UQVZBSUw7CiAJZWxzZQotCQkqc2FkZHIgPSBoaXNjb3JlLSZndDtpZmEtJmd0O2FkZHI7CiYjNDM7CQlmbDYtJmd0O3NhZGRyID0gaGlzY29yZS0mZ3Q7aWZhLSZndDthZGRyOwogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIHJldDsKIH0KJiM0MztFWFBPUlRfU1lNQk9MKGlwdjZfZmxfZ2V0X3NhZGRyKTsKJiM0MzsKJiM0MztpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsCiYjNDM7CQkgICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgdW5zaWduZWQgaW50IHByZWZzLAomIzQzOwkJICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZmxvd2k2IGZsNjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJbWVtc2V0KCZhbXA7Zmw2LCAwLCBzaXplb2YoZmw2KSk7CiYjNDM7CWZsNi5kYWRkciA9ICpkYWRkcjsKJiM0MzsKJiM0MzsJcmV0ID0gaXB2Nl9mbF9nZXRfc2FkZHIobmV0LCBOVUxMLCBkc3RfZGV2LCBOVUxMLCBwcmVmcywgJmFtcDtmbDYpOwomIzQzOwlpZiAoIXJldCkKJiM0MzsJCSpzYWRkciA9IGZsNi5zYWRkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiBFWFBPUlRfU1lNQk9MKGlwdjZfZGV2X2dldF9zYWRkcik7CiAKIHN0YXRpYyBpbnQgX19pcHY2X2dldF9sbGFkZHIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IGluNl9hZGRyICphZGRyLApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2ZpYi5jIGIvbmV0L2lwdjYvaXA2X2ZpYi5jCmluZGV4IGExMzBjZGZhZWJmYmVlLi4yNzNmMmJmYzUyODY2OSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X2ZpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9maWIuYwpAQCAtMTY1Niw4ICYjNDM7MTY1NiwxMSBAQCBzdGF0aWMgc3RydWN0IGZpYjZfbm9kZSAqZmliNl9ub2RlX2xvb2t1cF8xKHN0cnVjdCBmaWI2X25vZGUgKnJvb3QsCiAJCQkJCXN0cnVjdCBmaWI2X25vZGUgKnNmbjsKIAkJCQkJc2ZuID0gZmliNl9ub2RlX2xvb2t1cF8xKHN1YnRyZWUsCiAJCQkJCQkJCSBhcmdzICYjNDM7IDEpOwotCQkJCQlpZiAoIXNmbikKJiM0MzsJCQkJCWlmICghc2ZuKSB7CiYjNDM7CQkJCQkJaWYgKGZuLSZndDtmbl9mbGFncyAmYW1wOyBSVE5fUlRJTkZPKQomIzQzOwkJCQkJCQlyZXR1cm4gZm47CiAJCQkJCQlnb3RvIGJhY2t0cmFjazsKJiM0MzsJCQkJCX0KIAkJCQkJZm4gPSBzZm47CiAJCQkJfQogI2VuZGlmCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKaW5kZXggMzY4ZTRmYTNiNDNjYTIuLjAzYjhkNDJkOWRmOWVmIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC0xMTQzLDI3ICYjNDM7MTE0Myw0MCBAQCBzdGF0aWMgaW50IGlwNl9kc3RfbG9va3VwX3RhaWwoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssCiAJaW50IGZsYWdzID0gMDsKIAogCS8qIFRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byBkbwotCSAqIGlwNl9yb3V0ZV9nZXRfc2FkZHIsIGFuZCB0aGVuIGlwNl9yb3V0ZV9vdXRwdXQ7IGhvd2V2ZXIsCiYjNDM7CSAqIGlwdjZfZmxfZ2V0X3NhZGRyLCBhbmQgdGhlbiBpcDZfcm91dGVfb3V0cHV0OyBob3dldmVyLAogCSAqIHRoZSByb3V0ZS1zcGVjaWZpYyBwcmVmZXJyZWQgc291cmNlIGZvcmNlcyB0aGUKLQkgKiBpcDZfcm91dGVfb3V0cHV0IGNhbGwgX2JlZm9yZV8gaXA2X3JvdXRlX2dldF9zYWRkci4KJiM0MzsJICogaXA2X3JvdXRlX291dHB1dCBjYWxsIF9iZWZvcmVfIGlwdjZfZmxfZ2V0X3NhZGRyLgogCSAqCiAJICogSW4gc291cmNlIHNwZWNpZmljIHJvdXRpbmcgKG5vIHNyYz1hbnkgZGVmYXVsdCByb3V0ZSksCiAJICogaXA2X3JvdXRlX291dHB1dCB3aWxsIGZhaWwgZ2l2ZW4gc3JjPWFueSBzYWRkciwgdGhvdWdoLCBzbwogCSAqIHRoYXQmIzM5O3Mgd2h5IHdlIHRyeSBpdCBhZ2FpbiBsYXRlci4KIAkgKi8KIAlpZiAoaXB2Nl9hZGRyX2FueSgmYW1wO2ZsNi0mZ3Q7c2FkZHIpKSB7CiYjNDM7CQlzdHJ1Y3QgbmV0X2RldmljZSAqbDNtZGV2OwomIzQzOwkJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKIAkJc3RydWN0IGZpYjZfaW5mbyAqZnJvbTsKIAkJc3RydWN0IHJ0Nl9pbmZvICpydDsKJiM0MzsJCWJvb2wgc2FtZV92cmY7CiAKIAkJKmRzdCA9IGlwNl9yb3V0ZV9vdXRwdXQobmV0LCBzaywgZmw2KTsKIAkJcnQgPSAoKmRzdCktJmd0O2Vycm9yID8gTlVMTCA6IGRzdF9ydDZfaW5mbygqZHN0KTsKIAogCQlyY3VfcmVhZF9sb2NrKCk7CiAJCWZyb20gPSBydCA/IHJjdV9kZXJlZmVyZW5jZShydC0mZ3Q7ZnJvbSkgOiBOVUxMOwotCQllcnIgPSBpcDZfcm91dGVfZ2V0X3NhZGRyKG5ldCwgZnJvbSwgJmFtcDtmbDYtJmd0O2RhZGRyLAotCQkJCQkgIHNrID8gUkVBRF9PTkNFKGluZXQ2X3NrKHNrKS0mZ3Q7c3JjcHJlZnMpIDogMCwKLQkJCQkJICBmbDYtJmd0O2Zsb3dpNl9sM21kZXYsCi0JCQkJCSAgJmFtcDtmbDYtJmd0O3NhZGRyKTsKJiM0MzsKJiM0MzsJCWwzbWRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmw2LSZndDtmbG93aTZfbDNtZGV2KTsKJiM0MzsJCWlmICghZnJvbSB8fCAhZnJvbS0mZ3Q7ZmliNl9wcmVmc3JjLnBsZW4gfHwgbDNtZGV2KQomIzQzOwkJCWRldiA9IGZyb20gPyBmaWI2X2luZm9fbmhfZGV2KGZyb20pIDogTlVMTDsKJiM0MzsJCXNhbWVfdnJmID0gIWwzbWRldiB8fCBsM21kZXZfbWFzdGVyX2Rldl9yY3UoZGV2KSA9PSBsM21kZXY7CiYjNDM7CQlpZiAoZnJvbSAmYW1wOyZhbXA7IGZyb20tJmd0O2ZpYjZfcHJlZnNyYy5wbGVuICZhbXA7JmFtcDsgc2FtZV92cmYpIHsKJiM0MzsJCQlmbDYtJmd0O3NhZGRyID0gZnJvbS0mZ3Q7ZmliNl9wcmVmc3JjLmFkZHI7CiYjNDM7CQkJZXJyID0gMDsKJiM0MzsJCX0gZWxzZQomIzQzOwkJCWVyciA9IGlwdjZfZmxfZ2V0X3NhZGRyKG5ldCwgKmRzdCwKJiM0MzsJCQkJCQlzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgc2ssCiYjNDM7CQkJCQkJc2sgPyBSRUFEX09OQ0UoaW5ldDZfc2soc2spLSZndDtzcmNwcmVmcykgOiAwLAomIzQzOwkJCQkJCWZsNik7CiYjNDM7CiAJCXJjdV9yZWFkX3VubG9jaygpOwogCiAJCWlmIChlcnIpCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuYwppbmRleCBhMTMwMTMzNGRhNDhjMC4uNzA0YWZlMmRkZWE3YzIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtNTg1MCw5ICYjNDM7NTg1MCwxOSBAQCBzdGF0aWMgaW50IHJ0Nl9maWxsX25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJaWYgKG5sYV9wdXRfdTMyKHNrYiwgUlRBX0lJRiwgaWlmKSkKIAkJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAl9IGVsc2UgaWYgKGRlc3QpIHsKLQkJc3RydWN0IGluNl9hZGRyIHNhZGRyX2J1ZjsKLQkJaWYgKGlwNl9yb3V0ZV9nZXRfc2FkZHIobmV0LCBydCwgZGVzdCwgMCwgMCwgJmFtcDtzYWRkcl9idWYpID09IDAgJmFtcDsmYW1wOwotCQkgICAgbmxhX3B1dF9pbjZfYWRkcihza2IsIFJUQV9QUkVGU1JDLCAmYW1wO3NhZGRyX2J1ZikpCiYjNDM7CQlzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmLCAqc2FkZHIgPSBOVUxMOwomIzQzOwomIzQzOwkJaWYgKHJ0LSZndDtmaWI2X3ByZWZzcmMucGxlbikgewomIzQzOwkJCXNhZGRyID0gJmFtcDtydC0mZ3Q7ZmliNl9wcmVmc3JjLmFkZHI7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBmaWI2X2luZm9fbmhfZGV2KHJ0KTsKJiM0MzsKJiM0MzsJCQlpZiAoaXB2Nl9kZXZfZ2V0X3NhZGRyKG5ldCwgZGV2LCBkZXN0LCAwLAomIzQzOwkJCQkJICAgICAgICZhbXA7c2FkZHJfYnVmKSA9PSAwKQomIzQzOwkJCQlzYWRkciA9ICZhbXA7c2FkZHJfYnVmOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKHNhZGRyICZhbXA7JmFtcDsgbmxhX3B1dF9pbjZfYWRkcihza2IsIFJUQV9QUkVGU1JDLCBzYWRkcikpCiAJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQppbmRleCA3MDhkOTYwYWUwN2Q1Yi4uYzA3ZDJhZWJhZDY5NTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKQEAgLTUzLDYgJiM0Mzs1Myw3IEBAIFRFU1RfUFJPR1MgOj0gXAogCWlwdjZfZmxvd2xhYmVsLnNoIFwKIAlpcHY2X2ZvcmNlX2ZvcndhcmRpbmcuc2ggXAogCWlwdjZfcm91dGVfdXBkYXRlX3NvZnRfbG9ja3VwLnNoIFwKJiM0MzsJaXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weSBcCiAJaXB2dGFwX3Rlc3Quc2ggXAogCWwyX3Rvc190dGxfaW5oZXJpdC5zaCBcCiAJbDJ0cC5zaCBcCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZwppbmRleCBlMWNlMzVjMmFiYmVmMy4uYjBiNjY0MTJiOWYzZTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZwpAQCAtNDgsNiAmIzQzOzQ4LDcgQEAgQ09ORklHX0lQVjZfUk9VVEVSX1BSRUY9eQogQ09ORklHX0lQVjZfUlBMX0xXVFVOTkVMPXkKIENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUw9eQogQ09ORklHX0lQVjZfU0lUPXkKJiM0MztDT05GSUdfSVBWNl9TVUJUUkVFUz15CiBDT05GSUdfSVBWNl9WVEk9eQogQ09ORklHX0lQVkxBTj1tCiBDT05GSUdfSVBWVEFQPW0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjY4MmIzOWJhOTkxZGE5Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHkKQEAgLTAsMCAmIzQzOzEsMjMxIEBACiYjNDM7IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjIENvcHlyaWdodCAoQykgMjAyMy0yMDI2ICBEYXZpZCAmIzM5O2VxdWlub3gmIzM5OyBMYW1wYXJ0ZXIKJiM0MzsmIzM0OyYjMzQ7JiMzNDsKJiM0MztSRkMgNjcyNCAoSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24pIHJ1bGUgNS41IHRlc3RzCiYjNDM7CiYjNDM7Rm9yIHJlZmVyZW5jZToKJiM0MzsKJiM0MzsgICBSdWxlIDUuNTogUHJlZmVyIGFkZHJlc3NlcyBpbiBhIHByZWZpeCBhZHZlcnRpc2VkIGJ5IHRoZSBuZXh0LWhvcC4KJiM0MzsgICBJZiBTQSBvciBTQSYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgdGhlIHNlbGVjdGVkIG5leHQtaG9wIHRoYXQgd2lsbAomIzQzOyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQiYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnQKJiM0MzsgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJiMzOTtzIHByZWZpeCBpcwomIzQzOyAgIGFzc2lnbmVkIGJ5IHRoZSBuZXh0LWhvcCB0aGF0IHdpbGwgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNBIG9yCiYjNDM7ICAgU0EmIzM5O3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi4KJiM0MzsKJiM0MzsoYW5kIHNpbmNlIGl0IHByb3ZpZGVzIHRoZSAmIzM0O2NvdW50ZXJwb2ludCYjMzQ7OikKJiM0MzsKJiM0MzsgICBSdWxlIDg6IFVzZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeC4KJiM0MzsgICBJZiBDb21tb25QcmVmaXhMZW4oU0EsIEQpICZndDsgQ29tbW9uUHJlZml4TGVuKFNCLCBEKSwgdGhlbiBwcmVmZXIgU0EuCiYjNDM7ICAgU2ltaWxhcmx5LCBpZiBDb21tb25QcmVmaXhMZW4oU0IsIEQpICZndDsgQ29tbW9uUHJlZml4TGVuKFNBLCBEKSwgdGhlbgomIzQzOyAgIHByZWZlciBTQi4KJiM0MzsKJiM0MztOb3RlIHJ1bGUgNS41IHdhcyBvcmlnaW5hbGx5IG9wdGlvbmFsIGJ1dCBtYWRlIG1hbmRhdG9yeSBieQomIzQzO2RyYWZ0LWlldGYtNm1hbi1yZmM2NzI0LXVwZGF0ZSAod2hpY2ggYXQgdGhlIHBvaW50IG9mIGNyZWF0aW9uIG9mIHRoaXMgdGVzdAomIzQzO3dhcyBhbHJlYWR5ICYjMzQ7ZG9uZSYjMzQ7IGF0IHRoZSBJRVRGIGJ1dCB3YWl0aW5nIGluIHRoZSBSRkMgZWRpdG9yIHF1ZXVlIGR1ZSB0byBhCiYjNDM7YmxvY2tpbmcgZGVwZW5kZW5jeS4pCiYjNDM7JiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ZnJvbSBzb2NrZXQgaW1wb3J0IHNvY2tldCwgQUZfSU5FVDYsIFNPQ0tfREdSQU0KJiM0Mztmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKJiM0Mztmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKJiM0MzsKJiM0Mztmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9lcQomIzQzO2Zyb20gbGliLnB5IGltcG9ydCBOZXROUywgTmV0TlNFbnRlcgomIzQzO2Zyb20gbGliLnB5IGltcG9ydCBpcAomIzQzOwomIzQzOwomIzQzO2RlZiBzZWxlY3RfYWRkcihkZXN0KToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIGNvbm5lY3QoKSAmIzQzOyBnZXRzb2NrbmFtZSgpIHRvIGZpZ3VyZSBvdXQgd2hhdCB3YXMgc2VsZWN0ZWQgYXMgc291cmNlIGFkZHJlc3MKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIHNvY2sgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfREdSQU0sIDApCiYjNDM7ICAgIHNvY2suY29ubmVjdCgoZGVzdCwgMTIzNDUpKQomIzQzOyAgICByZXR1cm4gc29jay5nZXRzb2NrbmFtZSgpWzBdCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIGluX25ldG5zKGZ1bmM6IENhbGxhYmxlW1tdLCBOb25lXSkgLSZndDsgQ2FsbGFibGVbW10sIE5vbmVdOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgcHl0aG9uIGRlY29yYXRvciB0byBwdXQgdGVzdCBmdW5jdGlvbiBpbiBuZXRucwomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgICAgQHdyYXBzKGZ1bmMpCiYjNDM7ICAgIGRlZiB3cmFwcGVkKCkgLSZndDsgTm9uZToKJiM0MzsgICAgICAgIHdpdGggTmV0TlMoKSBhcyB0ZXN0bnM6CiYjNDM7ICAgICAgICAgICAgd2l0aCBOZXROU0VudGVyKHN0cih0ZXN0bnMpKToKJiM0MzsgICAgICAgICAgICAgICAgZnVuYygpCiYjNDM7CiYjNDM7ICAgIHJldHVybiB3cmFwcGVkCiYjNDM7CiYjNDM7CiYjNDM7QGluX25ldG5zCiYjNDM7ZGVmIHRlc3RfYmFzaWMoKSAtJmd0OyBOb25lOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgU2ltcGxlICZhbXA7IG1vc3QgY29tbW9uIGNhc2UgZm9yIFJGQzY3MjQgcnVsZSA1LjU6IG11bHRpcGxlIGRlZmF1bHQgcm91dGVzCiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBpcCgmIzM0O2xpbmsgYWRkIHR5cGUgdmV0aCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2xpbmsgc2V0IHZldGgwIHVwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bGluayBzZXQgdmV0aDEgdXAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCAgIGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCAgIHZpYSBmZTgwOjoxIGRldiB2ZXRoMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCYjMzQ7KQomIzQzOwomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6MTE6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDo6MSYjMzQ7LCAmIzM0O2Jhc2VsaW5lIHBhc3MmIzM0OykKJiM0MzsgICAgIyBydWxlIDggd291bGQgcmVzdWx0IGluIHRoZSB1c2Ugb2YgdGhlIDoxMDAxOiBhZGRyZXNzLCBidXQgcnVsZSA1LjUgYXBwbGllcyBiZWZvcmUuCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMDAxOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywgJiMzNDtydWxlIDUuNSAmZ3Q7IHJ1bGUgOCYjMzQ7KQomIzQzOwomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGRlbCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwJiMzNDspCiYjNDM7CiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwMDA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMDAxOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41ICZndDsgcnVsZSA4JiMzNDspCiYjNDM7CiYjNDM7CiYjNDM7QGluX25ldG5zCiYjNDM7ZGVmIHRlc3Rfbmhfb2JqKCkgLSZndDsgTm9uZToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIG5leHRob3Agb2JqZWN0cyBmb3IgdGhlIGRlZmF1bHQgcm91dGUKJiM0MzsKJiM0MzsgICAgTkI6IFRoZSBrZXJuZWwgZG9lc24mIzM5O3QgY3VycmVudGx5IGFsbG93IG5leHRob3Agb2JqZWN0cyBmb3Igc3VidHJlZSByb3V0ZXMuCiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzOyAgICBpcCgmIzM0O2xpbmsgYWRkIHR5cGUgdmV0aCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2xpbmsgc2V0IHZldGgwIHVwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bGluayBzZXQgdmV0aDEgdXAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCAgIGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkJiMzNDspCiYjNDM7CiYjNDM7ICAgICMgZGlzdGluY3QgbmV4dGhvcCBvYmplY3RzIGFyZSB1c2VkLCBiZWNhdXNlIHdoYXQgbWF0dGVycyBpcyB0aGUgbmV4dGhvcAomIzQzOyAgICAjIGl0c2VsZiwgbm90IHRoZSBuZXh0aG9wIG9iamVjdC4gIFRvIGNvdmVyIGV2ZXJ5dGhpbmcsIG1ha2UgYSBncm91cC4KJiM0MzsgICAgaXAoJiMzNDtuZXh0aG9wIGFkZCBpZCAxMDEgdmlhIGZlODA6OjEgZGV2IHZldGgwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bmV4dGhvcCBhZGQgaWQgMjAxIGdyb3VwIDEwMSYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O25leHRob3AgYWRkIGlkIDEwMiB2aWEgZmU4MDo6MiBkZXYgdmV0aDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDtuZXh0aG9wIGFkZCBpZCAyMDIgZ3JvdXAgMTAyJiMzNDspCiYjNDM7CiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgbmhpZCAyMDEgbWV0cmljIDEwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IG5oaWQgMjAyIG1ldHJpYyAyMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAmIzM0OykKJiM0MzsKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjExOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgICMgcnVsZSA4IHdvdWxkIHJlc3VsdCBpbiB0aGUgdXNlIG9mIHRoZSA6MTAwMTogYWRkcmVzcywgYnV0IHJ1bGUgNS41IGFwcGxpZXMgYmVmb3JlLgomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6MTAwMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7cnVsZSA1LjUgJmd0OyBydWxlIDgmIzM0OykKJiM0MzsKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBkZWwgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwJiMzNDspCiYjNDM7CiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwMDA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMDAxOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41ICZndDsgcnVsZSA4JiMzNDspCiYjNDM7CiYjNDM7CiYjNDM7QGluX25ldG5zCiYjNDM7ZGVmIHRlc3RfbG93X21ldHJpYygpIC0mZ3Q7IE5vbmU6CiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBDaGVjayB0aGF0IHN1YnRyZWUgcm91dGVzIHRha2UgZWZmZWN0IGV2ZW4gaWYgdGhleSBhcmUgaGlnaGVyIG1ldHJpYwomIzQzOwomIzQzOyAgICBGb3IgY2hlY2tpbmcgdGhhdCAmIzM0O3JvdXRlciBhZHZlcnRpc2VkIHByZWZpeCYjMzQ7LCBtZXRyaWMgaXMgaXJyZWxldmFudC4gIEl0CiYjNDM7ICAgIG1hdHRlcnMgZm9yIHRoZSBpbml0aWFsIHVuc3BlY2lmaWMgbG9va3VwIHRvIGZpbmQgYSBuZXh0aG9wIHRvIGJlZ2luIHdpdGguCiYjNDM7ICAgIChUaGUgbGF0ZXIgc291cmNlIGFkZHJlc3MgY2hlY2sgbG9va3VwIGRvZXNuJiMzOTt0IGNoYW5nZSB0aGUgbmV4dGhvcCwgaS5lLgomIzQzOyAgICB0aGUgZWZmZWN0cyBvZiBtZXRyaWNzIGFyZSBhbHJlYWR5IGRvbmUuKQomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgaXAoJiMzNDtsaW5rIGFkZCB0eXBlIHZldGgmIzM0OykKJiM0MzsgICAgaXAoJiMzNDtsaW5rIHNldCB2ZXRoMCB1cCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2xpbmsgc2V0IHZldGgxIHVwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7YWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWQmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MyBkZXYgdmV0aDAgbWV0cmljIDUwJiMzNDspCiYjNDM7CiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7YmFzZWxpbmUgcGFzcyYjMzQ7KQomIzQzOyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS4KJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjEwMDE6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41ICZndDsgcnVsZSA4JiMzNDspCiYjNDM7CiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgZGVsIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDAmIzM0OykKJiM0MzsKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjExOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O2Jhc2VsaW5lIHBhc3MmIzM0OykKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjEwMDE6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDAwOjoxJiMzNDssICYjMzQ7cnVsZSA1LjUgJmd0OyBydWxlIDgmIzM0OykKJiM0MzsKJiM0MzsKJiM0MztAaW5fbmV0bnMKJiM0MztkZWYgdGVzdF9ub19zdWJ0cmVlKCkgLSZndDsgTm9uZToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIEVuc3VyZSB0aGF0IG1hdGNoaW5nIG9uIGEgbm9uLXN1YnRyZWUgcm91dGUgZG9lc24mIzM5O3QgdHJpZ2dlciBydWxlIDUuNQomIzQzOwomIzQzOyAgICAoVGhpcyB3YXMgbm9uLW9idmlvdXNseSBicm9rZW4gaW4gZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgaW1wbGVtZW50YXRpb25zLAomIzQzOyAgICBhIG5vbi1zdWJ0cmVlIHJvdXRlIHdvdWxkIHN0aWxsIG1hdGNoLiAgTWFrZSBzdXJlIGl0IGRvZXNuJiMzOTt0IGJyZWFrIGFnYWluLikKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIGlwKCYjMzQ7bGluayBhZGQgdHlwZSB2ZXRoJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bGluayBzZXQgdmV0aDAgdXAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDtsaW5rIHNldCB2ZXRoMSB1cCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwOjoxLzY0IGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAmIzM0OykKJiM0MzsKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjExOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoCiYjNDM7ICAgICAgICBzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjEwMDE6OiYjMzQ7KSwKJiM0MzsgICAgICAgICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7cnVsZSA1LjUgJmd0OyBydWxlIDgsIGlnbm9yaW5nIG5vbi1TQURSJiMzNDssCiYjNDM7ICAgICkKJiM0MzsKJiM0MzsKJiM0MztAaW5fbmV0bnMKJiM0MztkZWYgdGVzdF9sb25nZXIoKSAtJmd0OyBOb25lOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgQ2hlY2sgZnVuY3Rpb25hbGl0eSBmb3Igbm9uLWRlZmF1bHQgZGVzdGluYXRpb24uCiYjNDM7CiYjNDM7ICAgIFRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgdmVyeSByYXJlIGluIGFjdHVhbCBwcmFjdGljZSwgYW5kIGRvZXNuJiMzOTt0IGRvCiYjNDM7ICAgIGJhY2t0cmFja2luZyAoYWxzbyByZWZlciB0byBrZXJuZWwgZG9jcy4pCiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBpcCgmIzM0O2xpbmsgYWRkIHR5cGUgdmV0aCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2xpbmsgc2V0IHZldGgwIHVwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bGluayBzZXQgdmV0aDEgdXAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWQmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCAyMDAxOmRiODo1MDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOjovNDggZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwJiMzNDspCiYjNDM7CiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7YmFzZWxpbmUgcGFzcyYjMzQ7KQomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6NTAwOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41JiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODo1MDA6YWFhOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41JiMzNDspCiYjNDM7CiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIDIwMDE6ZGI4OjUwMDphYWE6Oi82NCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMCYjMzQ7KQomIzQzOwomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6MTE6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDo6MSYjMzQ7LCAmIzM0O2Jhc2VsaW5lIHBhc3MmIzM0OykKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjUwMDo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwMDA6OjEmIzM0OywgJiMzNDtydWxlIDUuNSYjMzQ7KQomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6NTAwOmFhYTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7bm8gYmFja3RyYWNraW5nJiMzNDspCiYjNDM7CiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgZGVsIDIwMDE6ZGI4OjUwMDo6LzQ4IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAmIzM0OykKJiM0MzsKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjExOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODo1MDA6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDo6MSYjMzQ7LCAmIzM0O25vIGJhY2t0cmFja2luZyYjMzQ7KQomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6NTAwOmFhYTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7bm8gYmFja3RyYWNraW5nJiMzNDspCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIG1haW4oKSAtJmd0OyBOb25lOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgUkZDNjcyNCBydWxlIDUuNSB0ZXN0IGRyaXZlcgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAga3NmdF9ydW4oCiYjNDM7ICAgICAgICBbCiYjNDM7ICAgICAgICAgICAgdGVzdF9iYXNpYywKJiM0MzsgICAgICAgICAgICB0ZXN0X25oX29iaiwKJiM0MzsgICAgICAgICAgICB0ZXN0X2xvd19tZXRyaWMsCiYjNDM7ICAgICAgICAgICAgdGVzdF9ub19zdWJ0cmVlLAomIzQzOyAgICAgICAgICAgIHRlc3RfbG9uZ2VyLAomIzQzOyAgICAgICAgXQomIzQzOyAgICApCiYjNDM7ICAgIGtzZnRfZXhpdCgpCiYjNDM7CiYjNDM7CiYjNDM7aWYgX19uYW1lX18gPT0gJiMzNDtfX21haW5fXyYjMzQ7OgomIzQzOyAgICBtYWluKCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxNDkKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA1NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjYgU291cmNlIEFkZHJlc3MgU2VsZWN0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyB0aGUgSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gdG8gYWxpZ24gd2l0aCBSRkM2NzI0IHJ1bGUgNS41LiBMb29rcyBsaWtlIGl0JiMzOTtzIGludHJvZHVjaW5nIGBpcHY2X2ZsX2dldF9zYWRkcmAsIGFuZCBpdCYjMzk7cyBhbHNvIGFsdGVyaW5nIHRoZSBiZWhhdmlvciBvZiBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCBhbmQgZnVuZGFtZW50YWxseSBjaGFuZ2luZyBgaXA2X3JvdXRlX2dldF9zYWRkcmAg4oCTIHJlbW92aW5nIGFuZCByZXBsYWNpbmcgaXQgZW50aXJlbHksIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgYXJjaGl0ZWN0dXJhbCBzaGlmdC4gSXQgdG91Y2hlcyBxdWl0ZSBhIGZldyBrZXkgZmlsZXMgaW4gdGhlIElQdjYgbmV0d29ya2luZyBzdGFjaywgbmFtZWx5IGBuZXQvaXB2Ni9hZGRyY29uZi5jYCwgYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2AsIGBuZXQvaXB2Ni9yb3V0ZS5jYCwgYW5kIGBuZXQvaXB2Ni9pcDZfZmliLmNgLgoKTXkgZmlyc3QgY29uY2VybiwgYXMgYWx3YXlzLCBpcyByZWFjaGFiaWxpdHkgYW5kIGNvcnJlY3RuZXNzLiBHaXZlbiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucywgSSBuZWVkIHRvIHZlcmlmeSB0aGlzIHZlcnkgY2FyZWZ1bGx5LiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBpcHY2X3NhZGRyX3J1bGU1cDVgIHdpdGhpbiBgbmV0L2lwdjYvYWRkcmNvbmYuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIG5ldyBydWxlIGlzIGltcGxlbWVudGVkLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIGBpcDZfcm91dGVfb3V0cHV0YCBhbmQgYW4gaXRlcmF0aW9uIG92ZXIgYGZpYjZfaW5mb2AuCgpJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzLiBUaGUgY3JpdGljYWwgZnVuY3Rpb25zIGhlcmUgYXJlOgoKKiAgIGBpcHY2X3NhZGRyX3J1bGU1cDVgCiogICBgaXB2Nl9mbF9nZXRfc2FkZHJgCiogICBgaXB2Nl9kZXZfZ2V0X3NhZGRyYAoqICAgYGlwdjZfZ2V0X3NhZGRyX2V2YWxgCgpSZWdhcmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24sIHRoZSBwYXRjaCBzZWVtcyB0byByZXF1aXJlIGBJUFY2X1NVQlRSRUVTYCwgaW5kaWNhdGVkIGJ5IGNoYW5nZXMgaW4gYG5ldC9pcHY2L0tjb25maWdgLiBJdOKAmXMgZGVwZW5kZW50IG9uIGBJUFY2X01VTFRJUExFX1RBQkxFU2AuIFRoaXMgaXMgY3JpdGljYWwgZm9yIFJGQzY3MjQgcnVsZSA1LjUgc3VwcG9ydC4gU28sIEkgbmVlZCB0byBlbnN1cmUgYm90aCBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYXJlIGVuYWJsZWQgaW4gbXkgdGVzdCBzZXR1cC4KCk5vdywgbGV0JiMzOTtzIHNlZSBob3cgYGlwdjZfc2FkZHJfcnVsZTVwNWAgaXMgYWN0dWFsbHkgdXNlZC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYGlwdjZfZ2V0X3NhZGRyX2V2YWxgIHVuZGVyIGBJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1BgLiBgaXB2Nl9nZXRfc2FkZHJfZXZhbGAgaXMgdGhlbiBjYWxsZWQgZnJvbSBgaXB2Nl9nZXRfc2FkZHJfbWFzdGVyYC4gRmluYWxseSwgYGlwdjZfZ2V0X3NhZGRyX21hc3RlcmAgaXMgY2FsbGVkIGJ5IGBpcHY2X2ZsX2dldF9zYWRkcmAsIGFuZCBjcnVjaWFsbHksIGBpcHY2X2ZsX2dldF9zYWRkcmAgaXMgY2FsbGVkIGZyb20gYGlwNl9kc3RfbG9va3VwX3RhaWxgIHdpdGhpbiBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gVGhpcyBsYXN0IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBpcDZfZHN0X2xvb2t1cF9mbG93YC4gVGhpcyBwcm92aWRlcyB0aGUgY29tcGxldGUgY2hhaW4uIEkgbmVlZCB0byBrZWVwIHRoaXMgY2hhaW4gaW4gbWluZCB3aGVuIGNvbmZpZ3VyaW5nIHRlc3RjYXNlcyBhbmQgaGFybmVzc2VzLgoKVGltZSB0byB1c2UgbXkgdG9vbHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB2Nl9zYWRkcl9ydWxlNXA1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2FkZHJjb25mLmM9MTU4Mj1zdGF0aWMgYm9vbCBpcHY2X2FsbG93X29wdGltaXN0aWNfZGFkKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTE2MDUtICovXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjE2MDY6c3RhdGljIGludCBpcHY2X3NhZGRyX3J1bGU1cDUoc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLFxubmV0L2lwdjYvYWRkcmNvbmYuYy0xNjA3LVx0XHRcdCAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqc2FkZHJfZHN0KVxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MTY3Mj1zdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX2V2YWwoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmMtMTc2OS1cdFx0ICAgIFx1MDAyNlx1MDAyNiAhZHN0LVx1MDAzZWRzdC1cdTAwM2VlcnJvcilcbm5ldC9pcHY2L2FkZHJjb25mLmM6MTc3MDpcdFx0XHRyZXQgPSBpcHY2X3NhZGRyX3J1bGU1cDUoc2NvcmUsIGRzdCk7XG5uZXQvaXB2Ni9hZGRyY29uZi5jLTE3NzEtXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDYwOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgTmV3IElQdjYgU291cmNlIEFkZHJlc3MgRmVhdHVyZXMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY291cGxlIG9mIG5ldyBwaWVjZXMgcmVsYXRlZCB0byBJUHY2IHNvdXJjZSBhZGRyZXNzZXM6IGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHVuZGVyc3RhbmQgaG93IHRoYXQgc2Vjb25kIGZ1bmN0aW9uLCBgaXB2Nl9mbF9nZXRfc2FkZHJgLCBpcyBiZWluZyB1c2VkLiBXaGVyZSBpcyB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5IGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgZmxvdyBzZXR1cD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGJlIGtleSB0byBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBvbiBleGlzdGluZyBuZXR3b3JrIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucy4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY2X2ZsX2dldF9zYWRkciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9hZGRyY29uZi5oPTE0Mj1pbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL25ldC9hZGRyY29uZi5oLTE0NC1cdFx0ICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpO1xuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaDoxNDU6aW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaC0xNDYtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MTg5Nj1zdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX21hc3RlcihzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0xOTE3LVxubmV0L2lwdjYvYWRkcmNvbmYuYzoxOTE4OmludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTkxOS1cdFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yMDIyLX1cbm5ldC9pcHY2L2FkZHJjb25mLmM6MjAyMzpFWFBPUlRfU1lNQk9MKGlwdjZfZmxfZ2V0X3NhZGRyKTtcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjAyNC1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MjAyNT1pbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yMDM0LVxubmV0L2lwdjYvYWRkcmNvbmYuYzoyMDM1Olx0cmV0ID0gaXB2Nl9mbF9nZXRfc2FkZHIobmV0LCBOVUxMLCBkc3RfZGV2LCBOVUxMLCBwcmVmcywgXHUwMDI2Zmw2KTtcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjAzNi1cdGlmICghcmV0KVxuLS1cbm5ldC9pcHY2L2lwNl9vdXRwdXQuYz0xMTM1PXN0YXRpYyBpbnQgaXA2X2RzdF9sb29rdXBfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE0NS1cdC8qIFRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byBkb1xubmV0L2lwdjYvaXA2X291dHB1dC5jOjExNDY6XHQgKiBpcHY2X2ZsX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xMTQ3LVx0ICogdGhlIHJvdXRlLXNwZWNpZmljIHByZWZlcnJlZCBzb3VyY2UgZm9yY2VzIHRoZVxubmV0L2lwdjYvaXA2X291dHB1dC5jOjExNDg6XHQgKiBpcDZfcm91dGVfb3V0cHV0IGNhbGwgX2JlZm9yZV8gaXB2Nl9mbF9nZXRfc2FkZHIuXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE0OS1cdCAqXG4tLVxubmV0L2lwdjYvaXA2X291dHB1dC5jLTExNzQtXHRcdH0gZWxzZVxubmV0L2lwdjYvaXA2X291dHB1dC5jOjExNzU6XHRcdFx0ZXJyID0gaXB2Nl9mbF9nZXRfc2FkZHIobmV0LCAqZHN0LFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTExNzYtXHRcdFx0XHRcdFx0c2FtZV92cmYgPyBkZXYgOiBsM21kZXYsIHNrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTUzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgSVB2NiBTb3VyY2UgQWRkcmVzcyBTZWxlY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBrZXkgY2hhbmdlcyB0byBob3cgSVB2NiBzb3VyY2UgYWRkcmVzc2VzIGFyZSBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0JiMzOTtzIHJlZmFjdG9yaW5nIGBpcHY2X2Rldl9nZXRfc2FkZHJgIHRvIGNhbGwgYGlwdjZfZmxfZ2V0X3NhZGRyYC4gVGhlbiwgaXQmIzM5O3MgYWxzbyBpbnRlZ3JhdGluZyBgaXB2Nl9mbF9nZXRfc2FkZHJgIGludG8gYGlwNl9kc3RfbG9va3VwX3RhaWxgLiAgVGhpcyBpcyBwcm9taXNpbmc7IGJvdGggb2YgdGhvc2UgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IHdpdGhpbiB0aGUgaG90IHBhdGgsIHNvIHRoaXMgc2hvdWxkIGJlIGhpdHRpbmcgdGhlIGRlc2lyZWQgdXNlIGNhc2UgYW5kIGZ1bmN0aW9uYWxpdHkuCgpJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbnMuIEl0JiMzOTtzIHVzaW5nIGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gSG9sZCBvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIHByb3Blcmx5IGhhbmRsZWQuIFllcywgYElQVjZfU1VCVFJFRVNgIHJlbGllcyBvbiBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBBbHJpZ2h0LCBqdXN0IG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBpbiBgbmV0L2lwdjYvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2X1NVQlRSRUVTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9MjM3PWNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjQyLVxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwMTEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIGZvciBDb25maWcgT3ZlcmxhcCoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpdmluZyBpbi4gQmVmb3JlIEkgbWFrZSBhbnkgc2lnbmlmaWNhbnQgY2hhbmdlcyBvciBhc3N1bXB0aW9ucywgYSBxdWljayBzYW5pdHkgY2hlY2sgaXMgZXNzZW50aWFsLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiAmIzM0O0xldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gZmlsZXMgb3Igc2V0dGluZ3MgYXQgcGxheSBoZXJlLiYjMzQ7IEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG92ZXJsb29raW5nIHNvbWV0aGluZywgZXNwZWNpYWxseSBpbiBhIGNvbXBsZXggc3lzdGVtLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGluaGVyaXRhbmNlLCBjYXNjYWRpbmcgY29uZmlndXJhdGlvbnMsIGVudmlyb25tZW50IHZhcmlhYmxlcywgb3IgZXZlbiBzb21lIG9ic2N1cmUgb3ZlcnJpZGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIGNvbmZsaWN0aW5nIGNvbmZpZ3Mgb3IgdGhhdCBJIGFtIG5vdCBlZGl0aW5nIHRoZSB3cm9uZyBjb25maWcgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciB0aGF0IEkgY2FuIGFjY291bnQgZm9yIGFsbCB0aGUgY29uZmlncyB1c2VkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0ZXAgdG8gYXZvaWQgd2FzdGVkIHRpbWUgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgYWJvdXQgZHVlIGRpbGlnZW5jZSBhbmQgcHJldmVudGluZyBhIGZydXN0cmF0aW5nIGRlYnVnZ2luZyBzZXNzaW9uIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzNzpcdGNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xuIDIzODpcdFx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuIDIzOTpcdFx0c2VsZWN0IEZJQl9SVUxFU1xuIDI0MDpcdFx0aGVscFxuIDI0MTpcdFx0ICBTdXBwb3J0IG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLlxuIDI0MjpcdFxuIDI0MzpcdGNvbmZpZyBJUFY2X1NVQlRSRUVTXG4gMjQ0Olx0XHRib29sIFwmIzM0O0lQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcJiMzNDtcbiAyNDU6XHRcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVNcbiAyNDY6XHRcdGRlZmF1bHQgeVxuIDI0NzpcdFx0aGVscFxuIDI0ODpcdFx0ICBFbmFibGUgcm91dGluZyBieSBzb3VyY2UgYWRkcmVzcyBvciBwcmVmaXguXG4gMjQ5Olx0XG4gMjUwOlx0XHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcbiAyNTE6XHRcdCAgbm9ybWFsIGFuZCBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcyBpbiB0aGUgc2FtZSByb3V0aW5nIHRhYmxlXG4gMjUyOlx0XHQgIG1heSBzb21ldGltZXMgbGVhZCB0byB1bmludGVuZGVkIHJvdXRpbmcgYmVoYXZpb3IgaWYgdGhlIG9yZGVyIG9mXG4gMjUzOlx0XHQgIGxvb2t1cHMgaXMgbWlzdW5kZXJzdG9vZC4gIFRvIGFjaGlldmUgZnVsbCBzZXBhcmF0aW9uIGJhc2VkIG9uIHNvdXJjZVxuIDI1NDpcdFx0ICBhZGRyZXNzLCBkaWZmZXJlbnQgcm91dGluZyB0YWJsZXMgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGVhY2ggc291cmNlXG4gMjU1Olx0XHQgIHByZWZpeC5cbiAyNTY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NDMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIElQdjYgUm91dGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2UgSVB2NiBjb25maWd1cmF0aW9uczogYElQVjZfTVVMVElQTEVfVEFCTEVTYCBhbmQgYElQVjZfU1VCVFJFRVNgLiAgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYElQVjZfU1VCVFJFRVNgIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvICYjMzQ7eSYjMzQ7IChlbmFibGVkKSBpZiBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBrZXkgZGVwZW5kZW5jeS4gTm93IEkgbmVlZCB0byBleGFtaW5lIHRoZXNlIHJlbGF0ZWQgZnVuY3Rpb25zLCBpbiB0aGUgY29udGV4dCBvZiB0aG9zZSBjb25maWdzLgoKSSBzZWUgdGhhdCBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBhbmQgYGlwdjZfZmxfZ2V0X3NhZGRyYCBhcmUgaW1wb3J0YW50IHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGV5IGFyZSAqRm9jdXNTeW1ib2xzKiBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZWlyIGJlaGF2aW91ci4KCkkgYWxzbyB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIHRoYXQgaGFzIGJlZW4gbW9kaWZpZWQsIHNvIEkmIzM5O2xsIGNoZWNrIG90aGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSBgcnQ2X2ZpbGxfbm9kZWAgaW4gYG5ldC9pcHY2L3JvdXRlLmNgIGFuZCBgZmliNl9ub2RlX2xvb2t1cF8xYCBpbiBgbmV0L2lwdjYvaXA2X2ZpYi5jYCBhcmUgYWxzbyB3b3J0aCBjb25zaWRlcmluZy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSAqRm9jdXNTeW1ib2xzKi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmliNl9ub2RlX2xvb2t1cF8xJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYz0xNjA2PXN0cnVjdCBsb29rdXBfYXJncyB7XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTE2MTAtXG5uZXQvaXB2Ni9pcDZfZmliLmM6MTYxMTpzdGF0aWMgc3RydWN0IGZpYjZfbm9kZSAqZmliNl9ub2RlX2xvb2t1cF8xKHN0cnVjdCBmaWI2X25vZGUgKnJvb3QsXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTYxMi1cdFx0XHRcdFx0ICAgIHN0cnVjdCBsb29rdXBfYXJncyAqYXJncylcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTY1Ni1cdFx0XHRcdFx0c3RydWN0IGZpYjZfbm9kZSAqc2ZuO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjE2NTc6XHRcdFx0XHRcdHNmbiA9IGZpYjZfbm9kZV9sb29rdXBfMShzdWJ0cmVlLFxubmV0L2lwdjYvaXA2X2ZpYi5jLTE2NTgtXHRcdFx0XHRcdFx0XHRcdCBhcmdzICYjNDM7IDEpO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz0xNjgzPXN0cnVjdCBmaWI2X25vZGUgKmZpYjZfbm9kZV9sb29rdXAoc3RydWN0IGZpYjZfbm9kZSAqcm9vdCxcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTcwMy1cbm5ldC9pcHY2L2lwNl9maWIuYzoxNzA0Olx0Zm4gPSBmaWI2X25vZGVfbG9va3VwXzEocm9vdCwgZGFkZHIgPyBhcmdzIDogYXJncyAmIzQzOyAxKTtcbm5ldC9pcHY2L2lwNl9maWIuYy0xNzA1LVx0aWYgKCFmbiB8fCBmbi1cdTAwM2Vmbl9mbGFncyBcdTAwMjYgUlROX1RMX1JPT1QpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzQwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIGBmaWI2X25vZGVfbG9va3VwXzFgIGFuZCBgcnQ2X2ZpbGxfbm9kZWAqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoYXQgYGZpYjZfbm9kZV9sb29rdXBfMWAgaXMgZGVjbGFyZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIG1lYW5zIGl0JiMzOTtzIHNjb3BlZCB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIGxpbWl0cyBpdHMgdmlzaWJpbGl0eSBhbmQgcG90ZW50aWFsIGZvciByZXVzZSBlbHNld2hlcmUgaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0cmFjaW5nIGNhbGxzIHRvIGl0OyBpdCBwcm9iYWJseSBwbGF5cyBhIGtleSByb2xlIGluIHNvbWUgc3BlY2lmaWMgcm91dGluZyB0YWJsZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGlzIG1vZHVsZS4KCkFuZCB0aGVuLCBJIHNlZSB0aGF0IHdlIGhhdmUgYHJ0Nl9maWxsX25vZGVgIGFzIGFub3RoZXIgbW9kaWZpZWQgZnVuY3Rpb24gdGhhdCBJIHdpbGwgYmUgZm9jdXNpbmcgb24uIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGhvdyB0aGVzZSB0d28gZnVuY3Rpb25zIGludGVyYWN0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXNlIHR3byBmdW5jdGlvbnMgZml0IHRvZ2V0aGVyIGluIHRoZSBiaWdnZXIgcGljdHVyZSwgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiBgcnQ2X2ZpbGxfbm9kZWAgYW5kIGhvdyBgZmliNl9ub2RlX2xvb2t1cF8xYCBpcyBiZWluZyB1c2VkIGluc2lkZSBpdC4gSXMgYGZpYjZfbm9kZV9sb29rdXBfMWAgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGJ1aWxkaW5nIHJvdXRpbmcgdGFibGUgZW50cmllcz8gQXJlIHRoZXJlIGFueSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgcGFzc2VkIGJldHdlZW4gdGhlbSwgYW5kIGhvdyBhcmUgdGhlc2UgbW9kaWZpZWQgc3RydWN0dXJlcyBiZWluZyB1c2VkPyBEb2VzIHRoZSBtb2RpZmljYXRpb24gb2YgYHJ0Nl9maWxsX25vZGVgIGNoYW5nZSBvciBpbnRyb2R1Y2UgYnVncz8gS25vd2luZyB0aGF0IHRoZXNlIHR3byBhcmUgYmVpbmcgbW9kaWZpZWQgc2ltdWx0YW5lb3VzbHkgcmFpc2VzIHRoZSByZWQgZmxhZyBvZiBhbiBBUEkgY2hhbmdlLCBvciBhbiB1bmRlcmx5aW5nIGZ1bmRhbWVudGFsIGNoYW5nZSB0byBob3cgd2UgYXJlIGRvaW5nIHRoaXMuIEl0JiMzOTtzIHRpbWUgdG8gZm9sbG93IHRoZSB0cmFpbCBvZiBsb2dpYyBhbmQgZGF0YS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQ2X2ZpbGxfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTEwOT1zdGF0aWMgc2l6ZV90IHJ0Nl9ubG1zZ19zaXplKHN0cnVjdCBmaWI2X2luZm8gKmY2aSk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjExMDpzdGF0aWMgaW50IHJ0Nl9maWxsX25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvcm91dGUuYy0xMTEtXHRcdFx0IHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXG4tLVxubmV0L2lwdjYvcm91dGUuYz00MDA3PXN0YXRpYyBpbnQgX19pcDZfZGVsX3J0X3NpYmxpbmdzKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZmliNl9jb25maWcgKmNmZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQwMjgtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQwMjk6XHRcdFx0aWYgKHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIHJ0LCBOVUxMLFxubmV0L2lwdjYvcm91dGUuYy00MDMwLVx0XHRcdFx0XHQgIE5VTEwsIE5VTEwsIDAsIFJUTV9ERUxST1VURSxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTU2OTk9c3RhdGljIHNpemVfdCBydDZfbmxtc2dfc2l6ZShzdHJ1Y3QgZmliNl9pbmZvICpmNmkpXG4tLVxubmV0L2lwdjYvcm91dGUuYy01NzQ0LVxubmV0L2lwdjYvcm91dGUuYzo1NzQ1OnN0YXRpYyBpbnQgcnQ2X2ZpbGxfbm9kZV9uZXh0aG9wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcbm5ldC9pcHY2L3JvdXRlLmMtNTc0Ni1cdFx0XHRcdCB1bnNpZ25lZCBjaGFyICpmbGFncylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTU3NzMtXG5uZXQvaXB2Ni9yb3V0ZS5jOjU3NzQ6c3RhdGljIGludCBydDZfZmlsbF9ub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY2L3JvdXRlLmMtNTc3NS1cdFx0XHQgc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTU5MzctXHRcdGlmIChSRUFEX09OQ0UobmV0LVx1MDAzZWlwdjQuc3lzY3RsX25leHRob3BfY29tcGF0X21vZGUpIFx1MDAyNlx1MDAyNlxubmV0L2lwdjYvcm91dGUuYzo1OTM4Olx0XHQgICAgcnQ2X2ZpbGxfbm9kZV9uZXh0aG9wKHNrYiwgcnQtXHUwMDNlbmgsIFx1MDAyNm5oX2ZsYWdzKSBcdTAwM2MgMClcbm5ldC9pcHY2L3JvdXRlLmMtNTkzOS1cdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwMjk9c3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNjA2My1cbm5ldC9pcHY2L3JvdXRlLmM6NjA2NDpcdFx0XHRlcnIgPSBydDZfZmlsbF9ub2RlKGR1bXAtXHUwMDNlbmV0LCBkdW1wLVx1MDAzZXNrYiwgdy1cdTAwM2VydCxcbm5ldC9pcHY2L3JvdXRlLmMtNjA2NS1cdFx0XHRcdFx0ICAgIFx1MDAyNnJ0Nl9leC1cdTAwM2VydDZpLVx1MDAzZWRzdCwgTlVMTCwgTlVMTCwgMCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwODE9aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXG4tLVxubmV0L2lwdjYvcm91dGUuYy02MTEyLVx0XHR9IGVsc2Uge1xubmV0L2lwdjYvcm91dGUuYzo2MTEzOlx0XHRcdGlmIChydDZfZmlsbF9ub2RlKG5ldCwgYXJnLVx1MDAzZXNrYiwgcnQsIE5VTEwsIE5VTEwsIE5VTEwsXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxMTQtXHRcdFx0XHRcdCAgMCwgUlRNX05FV1JPVVRFLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NjIyMz1zdGF0aWMgaW50IGluZXQ2X3J0bV9nZXRyb3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzNDUtXHRcdGlmIChmaWJtYXRjaClcbm5ldC9pcHY2L3JvdXRlLmM6NjM0NjpcdFx0XHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBmcm9tLCBOVUxMLCBOVUxMLCBOVUxMLFxubmV0L2lwdjYvcm91dGUuYy02MzQ3LVx0XHRcdFx0XHQgICAgaWlmLCBSVE1fTkVXUk9VVEUsXG4tLVxubmV0L2lwdjYvcm91dGUuYy02MzUwLVx0XHRlbHNlXG5uZXQvaXB2Ni9yb3V0ZS5jOjYzNTE6XHRcdFx0ZXJyID0gcnQ2X2ZpbGxfbm9kZShuZXQsIHNrYiwgZnJvbSwgZHN0LCBcdTAwMjZmbDYuZGFkZHIsXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzNTItXHRcdFx0XHRcdCAgICBcdTAwMjZmbDYuc2FkZHIsIGlpZiwgUlRNX05FV1JPVVRFLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NjM3MD12b2lkIGluZXQ2X3J0X25vdGlmeShpbnQgZXZlbnQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzODgtXG5uZXQvaXB2Ni9yb3V0ZS5jOjYzODk6XHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBydCwgTlVMTCwgTlVMTCwgTlVMTCwgMCxcbm5ldC9pcHY2L3JvdXRlLmMtNjM5MC1cdFx0XHQgICAgZXZlbnQsIGluZm8tXHUwMDNlcG9ydGlkLCBzZXEsIG5sbV9mbGFncyk7XG4tLVxubmV0L2lwdjYvcm91dGUuYz02NDExPXZvaWQgZmliNl9ydF91cGRhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9pbmZvICpydCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTY0MjEtXG5uZXQvaXB2Ni9yb3V0ZS5jOjY0MjI6XHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBydCwgTlVMTCwgTlVMTCwgTlVMTCwgMCxcbm5ldC9pcHY2L3JvdXRlLmMtNjQyMy1cdFx0XHQgICAgUlRNX05FV1JPVVRFLCBpbmZvLVx1MDAzZXBvcnRpZCwgc2VxLCBOTE1fRl9SRVBMQUNFKTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTY0Mzc9dm9pZCBmaWI2X2luZm9faHdfZmxhZ3Nfc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYjZfaW5mbyAqZjZpLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNjQ3NC1cbm5ldC9pcHY2L3JvdXRlLmM6NjQ3NTpcdGVyciA9IHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIGY2aSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgUlRNX05FV1JPVVRFLCAwLFxubmV0L2lwdjYvcm91dGUuYy02NDc2LVx0XHRcdCAgICAwLCAwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9Njc9c3RhdGljIHZvaWQgX19pcF92c19kZWxfc2VydmljZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBib29sIGNsZWFudXApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy03MC0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo3MTovKiBUYWtlbiBmcm9tIHJ0Nl9maWxsX25vZGUoKSBpbiBuZXQvaXB2Ni9yb3V0ZS5jLCBpcyB0aGVyZSBhIGJldHRlciB3YXk/ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNzItc3RhdGljIGJvb2wgX19pcF92c19hZGRyX2lzX2xvY2FsX3Y2KHN0cnVjdCBuZXQgKm5ldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzMTUKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogMTYxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgSVB2NiBTb3VyY2UgQWRkcmVzcyBTZWxlY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYHJ0Nl9maWxsX25vZGVgLCBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIHVwZGF0aW5nIGl0cyBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMuIEl0JiMzOTtzIHN3YXBwaW5nIG91dCBgaXA2X3JvdXRlX2dldF9zYWRkcmAgZm9yIGBpcHY2X2Rldl9nZXRfc2FkZHJgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCk15IGluaXRpYWwgZm9jdXMgZ29lcyB0byB0aGUgZnVuY3Rpb25zIGludm9sdmVkOiBgaXB2Nl9mbF9nZXRfc2FkZHJgLCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCwgYW5kIGBpcHY2X3NhZGRyX3J1bGU1cDVgLiBgaXB2Nl9mbF9nZXRfc2FkZHJgIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBpcyBzdGF0aWMgYnV0IGFjY2Vzc2libGUgdGhyb3VnaCBTeXprYWxsZXIsIHNvIGl0JiMzOTtzIHN0aWxsIGEgdmlhYmxlIHRhcmdldC4gSSBhbHNvIGtub3cgdGhhdCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCBpcyB1c2VkIGluIG1hbnkgcGxhY2VzLgoKSSBxdWlja2x5IHZlcmlmeSB0aGF0IGFsbCBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUsIGluY2x1ZGluZyBgaXB2Nl9zYWRkcl9ydWxlNXA1YCAocmVhY2hhYmxlIHZpYSBgaXB2Nl9nZXRfc2FkZHJfZXZhbGApLCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCwgYGlwdjZfZmxfZ2V0X3NhZGRyYCAodXNlZCBpbiBgaXA2X2RzdF9sb29rdXBfdGFpbGApLCBhbmQgYHJ0Nl9maWxsX25vZGVgICh1c2VkIGJ5IGBpbmV0Nl9ydG1fZ2V0cm91dGVgLCBldGMuKS4gVGhpcyB0ZWxscyBtZSB0aGUgcGF0Y2ggaXMgY29ycmVjdGx5IGludGVncmF0ZWQgYW5kIHRoZSBuZXcgbG9naWMgc2hvdWxkIGJlIGV4ZXJjaXNlZC4gSSBhbHNvIGNvbmZpcm0gYGZpYjZfbm9kZV9sb29rdXBfMWAgaXMgcmVhY2hhYmxlLgoKTm93LCBJIHplcm8gaW4gb24gZm9jdXMgc3ltYm9scyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBUaGUga2V5IHN5bWJvbHMgaWRlbnRpZmllZCBhcmU6IGBpcHY2X3NhZGRyX3J1bGU1cDVgLCBgaXB2Nl9mbF9nZXRfc2FkZHJgLCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCwgYHJ0Nl9maWxsX25vZGVgLCBhbmQgYGZpYjZfbm9kZV9sb29rdXBfMWAuIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGlzIGVzcGVjaWFsbHkgcmVsZXZhbnQgYmVjYXVzZSBpdCYjMzk7cyBhIG5ldyBmdW5jdGlvbiBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaC4KCkkgY2hlY2sgZm9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGFuZCBJIHNlZSB0aGF0IGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYCBhcmUgY3J1Y2lhbCwgYW5kIGBJUFY2X1NVQlRSRUVTYCBzaG91bGQgYWxyZWFkeSBiZSBlbmFibGVkLgoKSSBxdWlja2x5IGNvbmZpcm0gdGhhdCBhbGwgZm9jdXMgc3ltYm9scywgaW5jbHVkaW5nIHRoZSBzdGF0aWMgb25lcywgYXJlIGFjY2Vzc2libGUgdG8gU3l6a2FsbGVyLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIOKAnGhvdCBwYXRo4oCdIGltcGxpY2F0aW9ucy4gYGlwdjZfc2FkZHJfcnVsZTVwNWAsIGBpcHY2X2ZsX2dldF9zYWRkcmAsIGFuZCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCBhcmUgcmVsYXRlZCB0byBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24uIFJvdXRlIGxvb2t1cCBpcyBvbiBhIHBhdGggdGhhdCBpcyBjYWxsZWQgbW9yZSB0aGFuIG9uZSB0aW1lLiBUaGVyZWZvcmUgSSBoYXZlIHRvIGNvbnNpZGVyIGV4Y2x1ZGluZyBpdC4gYHJ0Nl9maWxsX25vZGVgIGlzIGludm9sdmVkIGluIG5ldGxpbmsgcm91dGUgZHVtcGluZywgc28gbm90IGEgaG90IHBhdGguCgpUaGVyZWZvcmUgdGhlIGZvY3VzIHN5bWJvbHMgYXJlOgpgaXB2Nl9zYWRkcl9ydWxlNXA1YApgaXB2Nl9mbF9nZXRfc2FkZHJgCmBpcHY2X2Rldl9nZXRfc2FkZHJgCmBydDZfZmlsbF9ub2RlYAoKVGhpcyBwYXRjaCBpcyBpbXBsZW1lbnRpbmcgUkZDNjcyNCBydWxlIDUuNS4gSXQgbW9kaWZpZXMgY29yZSBJUHY2IHJvdXRpbmcgbG9naWMuCgpPa2F5LCBsZXQmIzM5O3MgZW5hYmxlIGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gSSB3aWxsIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjb25maWdzLgpOby4KCkV2ZXJ5dGhpbmcgc2VlbXMgdG8gYmUgaW4gb3JkZXIuIExldCYjMzk7cyBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNl9TVUJUUkVFUyYjMzQ7LAogICAgJiMzNDtJUFY2X01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwdjZfc2FkZHJfcnVsZTVwNSYjMzQ7LAogICAgJiMzNDtpcHY2X2ZsX2dldF9zYWRkciYjMzQ7LAogICAgJiMzNDtpcHY2X2Rldl9nZXRfc2FkZHImIzM0OywKICAgICYjMzQ7cnQ2X2ZpbGxfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIFJGQzY3MjQgcnVsZSA1LjUgZm9yIElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGJ5IGludHJvZHVjaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBJdCBtb2RpZmllcyBjb3JlIElQdjYgcm91dGluZyBhbmQgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgKGUuZy4sIGNvbm5lY3QsIHNlbmRtc2cpIGFuZCBuZXRsaW5rIHJvdXRlIGR1bXBzIChgcnQ2X2ZpbGxfbm9kZWApLiBUaGUgZmVhdHVyZSByZXF1aXJlcyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNl9TVUJUUkVFUyYjMzQ7LAogICAgJiMzNDtJUFY2X01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwdjZfc2FkZHJfcnVsZTVwNSYjMzQ7LAogICAgJiMzNDtpcHY2X2ZsX2dldF9zYWRkciYjMzQ7LAogICAgJiMzNDtpcHY2X2Rldl9nZXRfc2FkZHImIzM0OywKICAgICYjMzQ7cnQ2X2ZpbGxfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIFJGQzY3MjQgcnVsZSA1LjUgZm9yIElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGJ5IGludHJvZHVjaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBJdCBtb2RpZmllcyBjb3JlIElQdjYgcm91dGluZyBhbmQgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgKGUuZy4sIGNvbm5lY3QsIHNlbmRtc2cpIGFuZCBuZXRsaW5rIHJvdXRlIGR1bXBzIChgcnQ2X2ZpbGxfbm9kZWApLiBUaGUgZmVhdHVyZSByZXF1aXJlcyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjE3OjI2LjgxMTQ1NDUzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2MDIwNzc5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TVUJUUkVFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHY2X3NhZGRyX3J1bGU1cDVcIixcbiAgICBcImlwdjZfZmxfZ2V0X3NhZGRyXCIsXG4gICAgXCJpcHY2X2Rldl9nZXRfc2FkZHJcIixcbiAgICBcInJ0Nl9maWxsX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIFJGQzY3MjQgcnVsZSA1LjUgZm9yIElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGJ5IGludHJvZHVjaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBJdCBtb2RpZmllcyBjb3JlIElQdjYgcm91dGluZyBhbmQgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgKGUuZy4sIGNvbm5lY3QsIHNlbmRtc2cpIGFuZCBuZXRsaW5rIHJvdXRlIGR1bXBzIChgcnQ2X2ZpbGxfbm9kZWApLiBUaGUgZmVhdHVyZSByZXF1aXJlcyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdG8gYmUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MTc6MjYuODExNDU5MjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMzQ1ODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlhNGQ1NDQyYzAyYjM5YjkyNTgyZmUxMWVjOGFmMjJiNGZhZGM4NzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MTc6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni1hZGRyc2VsLnJzdFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJlZDAzMmU2OTU3MDVjXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0XFxuQEAgLTAsMCArMSw3NSBAQFxcbisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbitcXG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuK0lQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIHRyaXZpYVxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4rXFxuK1xcbitSRkM2NzI0IHJ1bGUgNS41IHN1cHBvcnRcXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitSRkM2NzI0IHJ1bGUgNS41IGlzIGEgdmVyeSBzaG9ydCBwYXJhZ3JhcGggaW4gYSBjb21wbGV4IFJGQyB0aGF0IGhhcyB0dXJuZWRcXG4rb3V0IHF1aXRlIHRyaWNreSwgYnV0IGFsc28gaW1tZW5zZWx5IHVzZWZ1bCBpbiBtdWx0aWhvbWluZyBzY2VuYXJpb3MuICBGb3JcXG4rcmVmZXJlbmNlLCBpdCBzYXlzOlxcbitcXG4rOjpcXG4rXFxuKyAgIFJ1bGUgNS41OiBQcmVmZXIgYWRkcmVzc2VzIGluIGEgcHJlZml4IGFkdmVydGlzZWQgYnkgdGhlIG5leHQtaG9wLlxcbisgICBJZiBTQSBvciBTQSdzIHByZWZpeCBpcyBhc3NpZ25lZCBieSB0aGUgc2VsZWN0ZWQgbmV4dC1ob3AgdGhhdCB3aWxsXFxuKyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQidzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudFxcbisgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJ3MgcHJlZml4IGlzXFxuKyAgIGFzc2lnbmVkIGJ5IHRoZSBuZXh0LWhvcCB0aGF0IHdpbGwgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNBIG9yXFxuKyAgIFNBJ3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi5cXG4rXFxuK1RoZSB3YXkgdGhpcyB3b3JrcyBvbiBMaW51eCBpcyBhcyBmb2xsb3dzOlxcbitcXG4rLSBwcmlvciB0byBhbnkgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGhhcHBlbmluZywgd2hlbiByZWNlaXZpbmcgYSBSQSwgbW9yZVxcbisgIHRoYW4gdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRlZmF1bHQgcm91dGUgKG9yIDo6LzEyOCByb3V0ZSkgbmVlZHMgdG8gaGFwcGVuOlxcbisgIGZvciBlYWNoIFBJTywgYSBzb3VyY2Utc3BlY2lmaWMgKHN1YnRyZWUpIHJvdXRlIGlzICphZGRpdGlvbmFsbHkqIGluc3RhbGxlZC5cXG4rICBUaGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCAqYWZ0ZXIqIGEgc291cmNlIGFkZHJlc3MgaGFzIGJlZW4gc2VsZWN0ZWQsIG9uZVxcbisgIG9mIHRoZSByb3V0ZXJzIHRoYXQgYWR2ZXJ0aXNlZCBpdCB3aWxsIHJlbWFpbiBpbiB1c2UgKHRoaXMgaXMgKm5vdCogUkZDIDY3MjRcXG4rICByZWxhdGVkLCBidXQgcmF0aGVyIFJGQyA4MDI4LikgIEF0IHRoZSBzYW1lIHRpbWUsIHRoZXNlIGV4dHJhIHJvdXRlcyBzZXJ2ZVxcbisgIHRvIHJlbWVtYmVyIHdoaWNoIHJvdXRlciBhZHZlcnRpc2VkIHdoYXQuXFxuK1xcbistIHBlciB1c3VhbCwgYSByb3V0ZSBsb29rdXAgZm9yIHRoZSBJUHY2IGRlc3RpbmF0aW9uIGFkZHJlc3MgaW4gY29uc2lkZXJhdGlvblxcbisgIGlzIGRvbmUgZmlyc3QuICBUaGlzIGlzIHBhc3NlZCBhcm91bmQgaW4ga2VybmVsIGFzIGEgZHN0X2VudHJ5LlxcbitcXG4rLSB0aGUgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgdmFyaW91cyBydWxlcyBpblxcbisgIFJGQyA2NzI0LlxcbitcXG4rLSBpZi93aGVuIHJ1bGUgNS41IGlzIHJlYWNoZWQsIGZpcnN0IG9mIGFsbCwgdGhlcmUgaXMgYSBjaGVjayBpZiAqYW55KiBzb3VyY2VcXG4rICBzcGVjaWZpYyByb3V0ZXMgZXhpc3QgaW4gdGhlIHJvdXRpbmcgdGFibGUuICBJZiB0aGVyZSBhcmUgbm9uZSwgdGhlIGVudGlyZVxcbisgIGNvZGUgZm9yIDUuNSBpcyBza2lwcGVkIGJlY2F1c2UgaXQgY2Fubm90IGhhdmUgYW55IGVmZmVjdCwgYnV0IGlzIG5vdCBmcmVlXFxuKyAgdG8gZXhlY3V0ZSAoY2FuIGludm9sdmUgbXVsdGlwbGUgcm91dGluZyBsb29rdXBzLikgICoqSW4gYXBwbGljYXRpb25zIHRoYXRcXG4rICB1c2UgYSBsb3Qgb2YgdW5ib3VuZCAoZS5nLiBVRFApIHNvY2tldHMsIGluc3RhbGxpbmcgc3VidHJlZSByb3V0ZXMgc2hvdWxkXFxuKyAgdGhlcmVmb3JlIGJlIGF2b2lkZWQgdG8gbm90IGluY3VyIHRoaXMgY29zdCBvbiBlYWNoIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvblxcbisgIHBhc3MuKiogIEFsdGVybmF0aXZlbHksIGFwcGxpY2F0aW9ucyBzaG91bGQgYmluZCB0aGVpciBzb2NrZXRzIHRvIGEgc3BlY2lmaWNcXG4rICBzb3VyY2UgYWRkcmVzcyBzdWNoIHRoYXQgdGhlIHNlbGVjdGlvbiBjb2RlIGlzIG5ldmVyIGhpdC5cXG4rXFxuKy0gaWYgc3VidHJlZSByb3V0ZXMgZG8gZXhpc3QsIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gY29kZSBub3cgcmVwZWF0c1xcbisgIHRoZSByb3V0aW5nIGxvb2t1cCBkb25lIGJlZm9yZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gaXMgZW50ZXJlZCwgZXhjZXB0XFxuKyAgd2l0aCB0aGUgc291cmNlIGFkZHJlc3MgdW5kZXIgY29uc2lkZXJhdGlvbiBmaWxsZWQgaW4uICBUaGlzIGxvb2t1cCB3aWxsIGhpdFxcbisgIHRoZSBzdWJ0cmVlIHJvdXRlcyB0aGF0IHdlcmUgaW5zdGFsbGVkIChzZWUgZmlyc3QgaXRlbSksIGdpdmluZyBhIGZyZXNoXFxuKyAgZHN0X2VudHJ5LiAgSWYgdGhlIG5ldyBkc3RfZW50cnkgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgZHN0X2VudHJ5LCB0aGF0IG1lYW5zXFxuKyAgdGhlIG9yaWdpbmFsIHJvdXRlciBoYXMgaW4gZmFjdCBzZW50IFJBcyB3aXRoIFBJT3MgZm9yIHRoaXMgc291cmNlIGFkZHJlc3MsXFxuKyAgc28gaXQgaXMgcHJlZmVycmVkLiAgT3RoZXJ3aXNlIGl0IGlzIG5vdC5cXG4rXFxuK1xcbitUaGVyZSBhcmUgYSBmZXcgY2F2ZWF0cyB0byBjb25zaWRlcjpcXG4rXFxuKy0gdGhlIGtlcm5lbCBjdXJyZW50bHkgZG9lcyBub3QgY3JlYXRlIHRoZSBzdWJ0cmVlIHJvdXRlcyBtZW50aW9uZWQgaW4gdGhlXFxuKyAgZmlyc3QgaXRlbS4gIFRoaXMgaXMgYSBzZXBhcmF0ZSB3b3JrIGl0ZW0sIHBhcnRpYWxseSBkb25lIGF0IHRoZSB0aW1lIG9mXFxuKyAgd3JpdGluZyB0aGlzLiAgQnV0IHRoaXMgY2FuIGVxdWFsbHkgd2VsbCBiZSBwZXJmb3JtZWQgaW4gdXNlcnNwYWNlIHByb2Nlc3NpbmdcXG4rICBvZiBSQXMsIGUuZy4gTmV0d29ya01hbmFnZXIgb3IgcGxhaW4gc3RhdGljIGNvbmZpZ3VyYXRpb24uXFxuK1xcbistIHNpbmNlIGFkZHJlc3NlcyBjYW4gYWxzbyBiZSBhY3F1aXJlZCBmcm9tIERIQ1B2NiwgZXZlbiBSQS9QSU8gY29tYmluYXRpb25zXFxuKyAgdGhhdCBkaWRuJ3QgcmVzdWx0IGluIHRoZSBjcmVhdGlvbiBvZiBhbnkgYWRkcmVzc2VzIChlLmcuIEE9MCkgc2hvdWxkIGhhdmVcXG4rICBzdWJ0cmVlIHJvdXRlcyBhZGRlZC4gIFRob3NlIHJvdXRlcyAqbWF5KiBiZSByZWxldmFudCBmb3IgREhDUHY2LWdlbmVyYXRlZFxcbisgIGFkZHJlc3Nlcy5cXG4rXFxuKy0gdGhlIFxcXCJhbm5vdW5jZSBjaGVja1xcXCIgbG9va3VwIGRvZXMgbm90IGJhY2t0cmFjay4gIE9ubHkgdGhlIGRlc3RpbmF0aW9uIHByZWZpeFxcbisgIHRoYXQgcHJvdmlkZWQgdGhlIFxcXCJ1bnNwZWNpZmljXFxcIiAoOjovMTI4KSBtYXRjaCBpcyBjaGVja2VkIGZvciBzb3VyY2UgcHJlZml4ZXNcXG4rICB0byBzZWUgd2hhdCByb3V0ZXJzIGFkdmVydGlzZWQgd2hhdC4gIFRoaXMgbWVhbnMgdGhhdCBmb3IgZS5nLiBSSU9zLCBzdWJ0cmVlXFxuKyAgcm91dGVzIGFsc28gaGF2ZSB0byBiZSBjcmVhdGVkLiAgKEJhY2t0cmFja2luZyBmb3IgdGhpcyBjYXNlIHdvdWxkIGZ1cnRoZXJcXG4rICBpbmNyZWFzZSB0aGUgY29zdCBvZiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24sIGZvciBhIHByZXR0eSByYXJlIHNpdHVhdGlvblxcbisgIHRoYXQgaGFzIGFuIGVhc3kgZml4L3dvcmthcm91bmQuKVxcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXFxuaW5kZXggZjMyMThhYmVmZDBjNmIuLjRlZGY0ODM2MmEwNzMyIDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMTg5MTIsNiArMTg5MTIsNyBAQCBGOlxcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1hZGRyLnlhbWxcXG4gRjpcXHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbmVpZ2gueWFtbFxcbiBGOlxcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1yb3V0ZS55YW1sXFxuIEY6XFx0RG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LXJ1bGUueWFtbFxcbitGOlxcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0XFxuIEY6XFx0aW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmhcXG4gRjpcXHRpbmNsdWRlL2xpbnV4L21yb3V0ZSpcXG4gRjpcXHRpbmNsdWRlL25ldC9hZGRyY29uZi5oXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmggYi9pbmNsdWRlL25ldC9hZGRyY29uZi5oXFxuaW5kZXggOGNlZDI3YTgyMjliNmUuLjdiYzA3MTFiODcxNzk2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcXG4rKysgYi9pbmNsdWRlL25ldC9hZGRyY29uZi5oXFxuQEAgLTE0Miw2ICsxNDIsMTAgQEAgc3RydWN0IGluZXQ2X2lmYWRkciAqaXB2Nl9nZXRfaWZhZGRyKHN0cnVjdCBuZXQgKm5ldCxcXG4gaW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgc3JjcHJlZnMsXFxuIFxcdFxcdCAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKTtcXG4raW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxcbitcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcXG4rXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgc3JjcHJlZnMsXFxuK1xcdFxcdCAgICAgIHN0cnVjdCBmbG93aTYgKmZsNik7XFxuIGludCBpcHY2X2dldF9sbGFkZHIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGluNl9hZGRyICphZGRyLFxcbiBcXHRcXHQgICAgdTMyIGJhbm5lZF9mbGFncyk7XFxuIGJvb2wgaW5ldF9yY3Zfc2FkZHJfZXF1YWwoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2syLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcDZfcm91dGUuaCBiL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oXFxuaW5kZXggMDlmZmUwZjEzY2U3NTIuLmZlMTNjYjFkMzI1N2RiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhcXG5AQCAtMTQwLDMyICsxNDAsNiBAQCB2b2lkIHJ0Nl9mbHVzaF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSk7XFxuIHZvaWQgcnQ2X2FnZV9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSwgc3RydWN0IGZpYjZfZ2NfYXJncyAqZ2NfYXJncyxcXG4gXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBub3cpO1xcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgaXA2X3JvdXRlX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkcixcXG4tXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHByZWZzLCBpbnQgbDNtZGV2X2luZGV4LFxcbi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxcbi17XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuLVxcdGJvb2wgc2FtZV92cmY7XFxuLVxcdGludCBlcnIgPSAwO1xcbi1cXG4tXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXG4tXFx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBsM21kZXZfaW5kZXgpO1xcbi1cXHRpZiAoIWY2aSB8fCAhZjZpLVxcdTAwM2VmaWI2X3ByZWZzcmMucGxlbiB8fCBsM21kZXYpXFxuLVxcdFxcdGRldiA9IGY2aSA/IGZpYjZfaW5mb19uaF9kZXYoZjZpKSA6IE5VTEw7XFxuLVxcdHNhbWVfdnJmID0gIWwzbWRldiB8fCBsM21kZXZfbWFzdGVyX2Rldl9yY3UoZGV2KSA9PSBsM21kZXY7XFxuLVxcdGlmIChmNmkgXFx1MDAyNlxcdTAwMjYgZjZpLVxcdTAwM2VmaWI2X3ByZWZzcmMucGxlbiBcXHUwMDI2XFx1MDAyNiBzYW1lX3ZyZilcXG4tXFx0XFx0KnNhZGRyID0gZjZpLVxcdTAwM2VmaWI2X3ByZWZzcmMuYWRkcjtcXG4tXFx0ZWxzZVxcbi1cXHRcXHRlcnIgPSBpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgZGFkZHIsIHByZWZzLCBzYWRkcik7XFxuLVxcbi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFxuLVxcdHJldHVybiBlcnI7XFxuLX1cXG4tXFxuIHN0cnVjdCBydDZfaW5mbyAqcnQ2X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXFxuIFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyLCBpbnQgb2lmLFxcbiBcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGZsYWdzKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvS2NvbmZpZyBiL25ldC9pcHY2L0tjb25maWdcXG5pbmRleCBjMzgwNmM2YWM5NmY5NS4uMzk2NTllOWI1M2EzZGIgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvS2NvbmZpZ1xcbisrKyBiL25ldC9pcHY2L0tjb25maWdcXG5AQCAtMjQzLDE2ICsyNDMsMjYgQEAgY29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxuIGNvbmZpZyBJUFY2X1NVQlRSRUVTXFxuIFxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxuIFxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG4rXFx0ZGVmYXVsdCB5XFxuIFxcdGhlbHBcXG4gXFx0ICBFbmFibGUgcm91dGluZyBieSBzb3VyY2UgYWRkcmVzcyBvciBwcmVmaXguXFxuIFxcbiBcXHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcXG4gXFx0ICBub3JtYWwgYW5kIHNvdXJjZSBwcmVmaXggc3BlY2lmaWMgcm91dGVzIGluIHRoZSBzYW1lIHJvdXRpbmcgdGFibGVcXG4tXFx0ICBtYXkgc29tZXRpbWVzIGxlYWQgdG8gdW5pbnRlbmRlZCByb3V0aW5nIGJlaGF2aW9yLiAgVGhpcyBjYW4gYmVcXG4tXFx0ICBhdm9pZGVkIGJ5IGRlZmluaW5nIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBmb3IgdGhlIG5vcm1hbCBhbmRcXG4tXFx0ICBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcy5cXG4rXFx0ICBtYXkgc29tZXRpbWVzIGxlYWQgdG8gdW5pbnRlbmRlZCByb3V0aW5nIGJlaGF2aW9yIGlmIHRoZSBvcmRlciBvZlxcbitcXHQgIGxvb2t1cHMgaXMgbWlzdW5kZXJzdG9vZC4gIFRvIGFjaGlldmUgZnVsbCBzZXBhcmF0aW9uIGJhc2VkIG9uIHNvdXJjZVxcbitcXHQgIGFkZHJlc3MsIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBzaG91bGQgYmUgZGVmaW5lZCBmb3IgZWFjaCBzb3VyY2VcXG4rXFx0ICBwcmVmaXguXFxuIFxcbi1cXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuK1xcdCAgU3VidHJlZXMgc3BlY2lmaWNhbGx5IGFkZHJlc3Mgc2NlbmFyaW9zIHdoZXJlIGxvY2FsIGNvbm5lY3Rpdml0eVxcbitcXHQgIGJldHdlZW4gc291cmNlIHByZWZpeGVzIGlzIHNoYXJlZCBhbmQgdW5yZXN0cmljdGVkLCBidXQgc29tZVxcbitcXHQgIGRlc3RpbmF0aW9ucyAoZS5nLiB0aGUgZGVmYXVsdCByb3V0ZSkgaGF2ZSBtb3JlIGZpbmUtZ3JhaW5lZCBydWxlcy5cXG4rXFxuK1xcdCAgVGhpcyBmZWF0dXJlIGlzIHJlcXVpcmVkIHRvIGNvcnJlY3RseSBzdXBwb3J0IFJGQzY3MjQgcnVsZSA1LjUgaW5cXG4rXFx0ICBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24uICBSdWxlIDUuNSBpcyBhIG5lY2Vzc2l0eSBmb3IgZ29vZFxcbitcXHQgIG11bHRpaG9taW5nLCByZW51bWJlcmluZyBhbmQgc291cmNlIHByZWZpeCBsaXZlbGluZXNzIGNoZWNrcy5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gXFxuIGNvbmZpZyBJUFY2X01ST1VURVxcbiBcXHRib29sIFxcXCJJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1xcXCJcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBiL25ldC9pcHY2L2FkZHJjb25mLmNcXG5pbmRleCBmMWZlOWVkZTFlZGIzNy4uZjVjMDQ5MjhhYTE0MmYgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvYWRkcmNvbmYuY1xcbisrKyBiL25ldC9pcHY2L2FkZHJjb25mLmNcXG5AQCAtMTUyMiw2ICsxNTIyLDcgQEAgZW51bSB7XFxuIFxcdElQVjZfU0FERFJfUlVMRV9IT0EsXFxuICNlbmRpZlxcbiBcXHRJUFY2X1NBRERSX1JVTEVfT0lGLFxcbitcXHRJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1AsXFxuIFxcdElQVjZfU0FERFJfUlVMRV9MQUJFTCxcXG4gXFx0SVBWNl9TQUREUl9SVUxFX1BSSVZBQ1ksXFxuIFxcdElQVjZfU0FERFJfUlVMRV9PUkNISUQsXFxuQEAgLTE1NDIsMTEgKzE1NDMsMTQgQEAgc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUge1xcbiB9O1xcbiBcXG4gc3RydWN0IGlwdjZfc2FkZHJfZHN0IHtcXG4tXFx0Y29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyO1xcbitcXHRzdHJ1Y3QgZmxvd2k2ICpmbDY7XFxuK1xcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcXG4rXFx0Y29uc3Qgc3RydWN0IHNvY2sgKnNrO1xcbiBcXHRpbnQgaWZpbmRleDtcXG4gXFx0aW50IHNjb3BlO1xcbiBcXHRpbnQgbGFiZWw7XFxuIFxcdHVuc2lnbmVkIGludCBwcmVmcztcXG4rXFx0c3RydWN0IG5ldCAqbmV0O1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZSBpbnQgaXB2Nl9zYWRkcl9wcmVmZXJyZWQoaW50IHR5cGUpXFxuQEAgLTE1OTEsNiArMTU5NSw4MCBAQCBzdGF0aWMgYm9vbCBpcHY2X2FsbG93X29wdGltaXN0aWNfZGFkKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcXG4gI2VuZGlmXFxuIH1cXG4gXFxuKy8qIFxcXCJzb3VyY2UgYWRkcmVzcyBpcyBwcmVmZXJhYmxlIGlmIHRoZSBjaG9zZW4gbmV4dGhvcCBhZHZlcnRpc2VkIGl0IGFzIGEgUElPXFxcIlxcbisgKiA9XFx1MDAzZSBjb25zaWRlciAnYWR2ZXJ0aXNlZCBhcyBhIFBJTycgdG8gYmUgJ3RoZSByb3V0ZXMgZm9yIHRoZSBzb3VyY2UncyBzdWJ0cmVlXFxuKyAqICAgIGluY2x1ZGUgb25lIHdpdGggdGhlIHNhbWUgbmV4dGhvcCdcXG4rICpcXG4rICogTkI6IHRoZXJlIGlzIG5vIGJhY2t0cmFja2luZyBpbiB0aGUgc3VidHJlZSBoZXJlLCB0aGlzIGlzIGludGVudGlvbmFsIC1cXG4rICogZWFjaCBwcmVmaXggc2VlbiAoYW5kIGFjY2VwdGVkKSBpbiBQSU9zIGNyZWF0ZXMgZXNzZW50aWFsbHkgYSBcXFwiem9uZVxcXCIgd2hpY2hcXG4rICogaXMgb3VyIHNlYXJjaCBzY29wZS5cXG4rICovXFxuK3N0YXRpYyBpbnQgaXB2Nl9zYWRkcl9ydWxlNXA1KHN0cnVjdCBpcHY2X3NhZGRyX3Njb3JlICpzY29yZSxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IGlwdjZfc2FkZHJfZHN0ICpzYWRkcl9kc3QpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0Nl9pbmZvICpydCwgKmNtcF9ydDtcXG4rXFx0c3RydWN0IGRzdF9lbnRyeSAqY21wX2RzdDtcXG4rXFx0c3RydWN0IGZpYjZfaW5mbyAqZjZpO1xcbitcXHRpbnQgcmV0ID0gMDtcXG4rXFxuK1xcdHJ0ID0gY29udGFpbmVyX29mKHNhZGRyX2RzdC1cXHUwMDNlZHN0LCBzdHJ1Y3QgcnQ2X2luZm8sIGRzdCk7XFxuK1xcbitcXHQvKiBmbDYtXFx1MDAzZXNhZGRyIGlzIDo6LCBjZi4gY2hlY2sgYXQgdGhlIHRvcCBvZiBpcHY2X2NvbW1vbl9nZXRfc2FkZHIoKSAqL1xcbitcXHRzYWRkcl9kc3QtXFx1MDAzZWZsNi1cXHUwMDNlc2FkZHIgPSBzY29yZS1cXHUwMDNlaWZhLVxcdTAwM2VhZGRyO1xcbitcXHRjbXBfZHN0ID0gaXA2X3JvdXRlX291dHB1dChzYWRkcl9kc3QtXFx1MDAzZW5ldCwgc2FkZHJfZHN0LVxcdTAwM2VzayxcXG4rXFx0XFx0XFx0XFx0ICAgc2FkZHJfZHN0LVxcdTAwM2VmbDYpO1xcbitcXHRtZW1zZXQoXFx1MDAyNnNhZGRyX2RzdC1cXHUwMDNlZmw2LVxcdTAwM2VzYWRkciwgMCwgc2l6ZW9mKHNhZGRyX2RzdC1cXHUwMDNlZmw2LVxcdTAwM2VzYWRkcikpO1xcbitcXG4rXFx0aWYgKGNtcF9kc3QtXFx1MDAzZWVycm9yKVxcbitcXHRcXHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcXG4rXFxuK1xcdGNtcF9ydCA9IGNvbnRhaW5lcl9vZihjbXBfZHN0LCBzdHJ1Y3QgcnQ2X2luZm8sIGRzdCk7XFxuK1xcbitcXHQvKiB0aGlzIG11c3Qgd29yayBpZiBfYW55XyBuZXh0aG9wIG1hdGNoZXM7IHRoZSBub24tc3VidHJlZSBiZXN0IG1heVxcbitcXHQgKiBub3QgYmUgaW4gc2FtZSBvcmRlciBhcyBzdWJ0cmVlIGJlc3RcXG4rXFx0ICovXFxuK1xcdGZvciAoZjZpID0gcmN1X2RlcmVmZXJlbmNlKGNtcF9ydC1cXHUwMDNlZnJvbSk7IGY2aTtcXG4rXFx0ICAgICBmNmkgPSByY3VfZGVyZWZlcmVuY2UoZjZpLVxcdTAwM2VmaWI2X25leHQpKSB7XFxuK1xcdFxcdHN0cnVjdCBmaWI2X25oICpmNm4gPSBmNmktXFx1MDAzZWZpYjZfbmg7XFxuK1xcdFxcdHN0cnVjdCBmaWI2X2luZm8gKnNpYmxpbmc7XFxuK1xcbitcXHRcXHQvKiBub24tc3VidHJlZSByb3V0ZTogc2F5cyBub3RoaW5nIGFib3V0IHJvdXRlciBhZHZlcnRpc2luZyB0aGlzIHNvdXJjZSAqL1xcbitcXHRcXHRpZiAoZjZpLVxcdTAwM2VmaWI2X3NyYy5wbGVuID09IDApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0aWYgKGY2bi1cXHUwMDNlbmhfY29tbW9uLm5oY19kZXYgIT0gc2FkZHJfZHN0LVxcdTAwM2Vkc3QtXFx1MDAzZWRldiB8fFxcbitcXHRcXHQgICAgZjZuLVxcdTAwM2VuaF9jb21tb24ubmhjX2d3X2ZhbWlseSAhPSBBRl9JTkVUNilcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRpZiAoaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZmNm4tXFx1MDAzZW5oX2NvbW1vbi5uaGNfZ3cuaXB2NixcXG4rXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZydC1cXHUwMDNlcnQ2aV9nYXRld2F5KSkge1xcbitcXHRcXHRcXHRyZXQgPSAxO1xcbitcXHRcXHRcXHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0aWYgKCFmNmktXFx1MDAzZWZpYjZfbnNpYmxpbmdzKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2libGluZywgXFx1MDAyNmY2aS1cXHUwMDNlZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncykge1xcbitcXHRcXHRcXHRmNm4gPSBzaWJsaW5nLVxcdTAwM2VmaWI2X25oO1xcbitcXG4rXFx0XFx0XFx0aWYgKGY2bi1cXHUwMDNlbmhfY29tbW9uLm5oY19kZXYgIT0gc2FkZHJfZHN0LVxcdTAwM2Vkc3QtXFx1MDAzZWRldiB8fFxcbitcXHRcXHRcXHQgICAgZjZuLVxcdTAwM2VuaF9jb21tb24ubmhjX2d3X2ZhbWlseSAhPSBBRl9JTkVUNilcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRcXHRpZiAoaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZmNm4tXFx1MDAzZW5oX2NvbW1vbi5uaGNfZ3cuaXB2NixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZydC1cXHUwMDNlcnQ2aV9nYXRld2F5KSkge1xcbitcXHRcXHRcXHRcXHRyZXQgPSAxO1xcbitcXHRcXHRcXHRcXHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK291dF9yZWxlYXNlX2RzdDpcXG4rXFx0ZHN0X3JlbGVhc2UoY21wX2RzdCk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXB2Nl9zYWRkcl9zY29yZSAqc2NvcmUsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgKmRzdCxcXG5AQCAtMTYxOSw3ICsxNjk3LDcgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgSVBWNl9TQUREUl9SVUxFX0xPQ0FMOlxcbiBcXHRcXHQvKiBSdWxlIDE6IFByZWZlciBzYW1lIGFkZHJlc3MgKi9cXG4tXFx0XFx0cmV0ID0gaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZzY29yZS1cXHUwMDNlaWZhLVxcdTAwM2VhZGRyLCBkc3QtXFx1MDAzZWFkZHIpO1xcbitcXHRcXHRyZXQgPSBpcHY2X2FkZHJfZXF1YWwoXFx1MDAyNnNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWFkZHIsIFxcdTAwMjZkc3QtXFx1MDAzZWZsNi1cXHUwMDNlZGFkZHIpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfU0NPUEU6XFxuIFxcdFxcdC8qIFJ1bGUgMjogUHJlZmVyIGFwcHJvcHJpYXRlIHNjb3BlXFxuQEAgLTE2NzUsNiArMTc1MywyNCBAQCBzdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX2V2YWwoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHRcXHRyZXQgPSAoIWRzdC1cXHUwMDNlaWZpbmRleCB8fFxcbiBcXHRcXHQgICAgICAgZHN0LVxcdTAwM2VpZmluZGV4ID09IHNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWlkZXYtXFx1MDAzZWRldi1cXHUwMDNlaWZpbmRleCk7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlIElQVjZfU0FERFJfUlVMRV9QSU9fQllfTkVYVEhPUDpcXG4rXFx0XFx0LyogUnVsZSA1LjU6IFByZWZlciBzb3VyY2VzIGFkdmVydGlzZWQgYnkgY2hvc2VuIG5leHQtaG9wICovXFxuK1xcbitcXHRcXHQvKiBXaXRob3V0IHN1YnRyZWVzLCB0aGUgc291cmNlIGFkZHJlc3Mgd2lsbCBtYWtlIG5vIGRpZmZlcmVuY2VcXG4rXFx0XFx0ICogaW4gdGhlIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBpbiBydWxlNXA1LiAgVGhlcmVmb3JlIHRoZSBydWxlXFxuK1xcdFxcdCAqIDUuNSBjaGVjayBiZWNvbWVzIHVzZWxlc3MuICBUaGlzIHdvdWxkbid0IHJlc3VsdCBpbiBhbnlcXG4rXFx0XFx0ICogZXJyb3JzLCBidXQgaXA2X3JvdXRlX291dHB1dCBpc24ndCBmcmVlLCBzbyBpZiBzdWJ0cmVlcyBhcmVcXG4rXFx0XFx0ICogZGlzYWJsZWQgc2F2ZSBzb21lIGN5Y2xlcyBieSBza2lwcGluZyB0aGlzIGVudGlyZWx5LlxcbitcXHRcXHQgKlxcbitcXHRcXHQgKiBUaGlzIGlzIGRvbmUgdGhyb3VnaCBzdWJ0cmVlc19lbmFibGVkIHRvIGhhdmUgdGhlIGNvZGVcXG4rXFx0XFx0ICogY29tcGlsZWQgcmVnYXJkbGVzcy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChmaWI2X3JvdXRlc19yZXF1aXJlX3NyYyhuZXQpIFxcdTAwMjZcXHUwMDI2IGRzdC1cXHUwMDNlZHN0XFxuK1xcdFxcdCAgICBcXHUwMDI2XFx1MDAyNiAhZHN0LVxcdTAwM2Vkc3QtXFx1MDAzZWVycm9yKVxcbitcXHRcXHRcXHRyZXQgPSBpcHY2X3NhZGRyX3J1bGU1cDUoc2NvcmUsIGRzdCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cmV0ID0gMTtcXG4rXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgSVBWNl9TQUREUl9SVUxFX0xBQkVMOlxcbiBcXHRcXHQvKiBSdWxlIDY6IFByZWZlciBtYXRjaGluZyBsYWJlbCAqL1xcbiBcXHRcXHRyZXQgPSBpcHY2X2FkZHJfbGFiZWwobmV0LFxcbkBAIC0xNjk3LDExICsxNzkzLDExIEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdCAqXFx0ICAgIG5vbi1PUkNISUQgdnMgbm9uLU9SQ0hJRFxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0cmV0ID0gIShpcHY2X2FkZHJfb3JjaGlkKFxcdTAwMjZzY29yZS1cXHUwMDNlaWZhLVxcdTAwM2VhZGRyKSBeXFxuLVxcdFxcdFxcdGlwdjZfYWRkcl9vcmNoaWQoZHN0LVxcdTAwM2VhZGRyKSk7XFxuK1xcdFxcdFxcdGlwdjZfYWRkcl9vcmNoaWQoXFx1MDAyNmRzdC1cXHUwMDNlZmw2LVxcdTAwM2VkYWRkcikpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUFJFRklYOlxcbiBcXHRcXHQvKiBSdWxlIDg6IFVzZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeCAqL1xcbi1cXHRcXHRyZXQgPSBpcHY2X2FkZHJfZGlmZihcXHUwMDI2c2NvcmUtXFx1MDAzZWlmYS1cXHUwMDNlYWRkciwgZHN0LVxcdTAwM2VhZGRyKTtcXG4rXFx0XFx0cmV0ID0gaXB2Nl9hZGRyX2RpZmYoXFx1MDAyNnNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWFkZHIsIFxcdTAwMjZkc3QtXFx1MDAzZWZsNi1cXHUwMDNlZGFkZHIpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2Ugc2NvcmUtXFx1MDAzZWlmYS1cXHUwMDNlcHJlZml4X2xlbilcXG4gXFx0XFx0XFx0cmV0ID0gc2NvcmUtXFx1MDAzZWlmYS1cXHUwMDNlcHJlZml4X2xlbjtcXG4gXFx0XFx0c2NvcmUtXFx1MDAzZW1hdGNobGVuID0gcmV0O1xcbkBAIC0xODE5LDkgKzE5MTUsMTAgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9tYXN0ZXIoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHRyZXR1cm4gaGlzY29yZV9pZHg7XFxuIH1cXG4gXFxuLWludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcXG4tXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsIHVuc2lnbmVkIGludCBwcmVmcyxcXG4tXFx0XFx0ICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpXFxuK2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSxcXG4rXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXFxuK1xcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IHByZWZzLFxcbitcXHRcXHQgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpXFxuIHtcXG4gXFx0c3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgc2NvcmVzWzJdLCAqaGlzY29yZTtcXG4gXFx0c3RydWN0IGlwdjZfc2FkZHJfZHN0IGRzdDtcXG5AQCAtMTgzMiwxMSArMTkyOSwxOCBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXFxuIFxcdGludCBoaXNjb3JlX2lkeCA9IDA7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4tXFx0ZHN0X3R5cGUgPSBfX2lwdjZfYWRkcl90eXBlKGRhZGRyKTtcXG4tXFx0ZHN0LmFkZHIgPSBkYWRkcjtcXG4rXFx0Lyogd2Ugc2hvdWxkIG5ldmVyIGVuZCB1cCBoZXJlIHdpdGggYSBub24tZW1wdHkgc2FkZHIuICovXFxuK1xcdGlmIChXQVJOX09OX09OQ0UoIWlwdjZfYWRkcl9hbnkoXFx1MDAyNmZsNi1cXHUwMDNlc2FkZHIpKSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoXFx1MDAyNmZsNi1cXHUwMDNlZGFkZHIpO1xcbitcXHRkc3QubmV0ID0gbmV0O1xcbitcXHRkc3QuZmw2ID0gZmw2O1xcbitcXHRkc3Quc2sgPSBzaztcXG4rXFx0ZHN0LmRzdCA9IGRzdF9lbnRyeTtcXG4gXFx0ZHN0LmlmaW5kZXggPSBkc3RfZGV2ID8gZHN0X2Rldi1cXHUwMDNlaWZpbmRleCA6IDA7XFxuIFxcdGRzdC5zY29wZSA9IF9faXB2Nl9hZGRyX3NyY19zY29wZShkc3RfdHlwZSk7XFxuLVxcdGRzdC5sYWJlbCA9IGlwdjZfYWRkcl9sYWJlbChuZXQsIGRhZGRyLCBkc3RfdHlwZSwgZHN0LmlmaW5kZXgpO1xcbitcXHRkc3QubGFiZWwgPSBpcHY2X2FkZHJfbGFiZWwobmV0LCBcXHUwMDI2Zmw2LVxcdTAwM2VkYWRkciwgZHN0X3R5cGUsIGRzdC5pZmluZGV4KTtcXG4gXFx0ZHN0LnByZWZzID0gcHJlZnM7XFxuIFxcbiBcXHRzY29yZXNbaGlzY29yZV9pZHhdLnJ1bGUgPSAtMTtcXG5AQCAtMTkxMSwxMSArMjAxNSwyOSBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXFxuIFxcdGlmICghaGlzY29yZS1cXHUwMDNlaWZhKVxcbiBcXHRcXHRyZXQgPSAtRUFERFJOT1RBVkFJTDtcXG4gXFx0ZWxzZVxcbi1cXHRcXHQqc2FkZHIgPSBoaXNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWFkZHI7XFxuK1xcdFxcdGZsNi1cXHUwMDNlc2FkZHIgPSBoaXNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWFkZHI7XFxuIFxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbitFWFBPUlRfU1lNQk9MKGlwdjZfZmxfZ2V0X3NhZGRyKTtcXG4rXFxuK2ludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcXG4rXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsIHVuc2lnbmVkIGludCBwcmVmcyxcXG4rXFx0XFx0ICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpXFxuK3tcXG4rXFx0c3RydWN0IGZsb3dpNiBmbDY7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRtZW1zZXQoXFx1MDAyNmZsNiwgMCwgc2l6ZW9mKGZsNikpO1xcbitcXHRmbDYuZGFkZHIgPSAqZGFkZHI7XFxuK1xcbitcXHRyZXQgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsIE5VTEwsIGRzdF9kZXYsIE5VTEwsIHByZWZzLCBcXHUwMDI2Zmw2KTtcXG4rXFx0aWYgKCFyZXQpXFxuK1xcdFxcdCpzYWRkciA9IGZsNi5zYWRkcjtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4gRVhQT1JUX1NZTUJPTChpcHY2X2Rldl9nZXRfc2FkZHIpO1xcbiBcXG4gc3RhdGljIGludCBfX2lwdjZfZ2V0X2xsYWRkcihzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHIsXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9maWIuYyBiL25ldC9pcHY2L2lwNl9maWIuY1xcbmluZGV4IGExMzBjZGZhZWJmYmVlLi4yNzNmMmJmYzUyODY2OSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmliLmNcXG4rKysgYi9uZXQvaXB2Ni9pcDZfZmliLmNcXG5AQCAtMTY1Niw4ICsxNjU2LDExIEBAIHN0YXRpYyBzdHJ1Y3QgZmliNl9ub2RlICpmaWI2X25vZGVfbG9va3VwXzEoc3RydWN0IGZpYjZfbm9kZSAqcm9vdCxcXG4gXFx0XFx0XFx0XFx0XFx0c3RydWN0IGZpYjZfbm9kZSAqc2ZuO1xcbiBcXHRcXHRcXHRcXHRcXHRzZm4gPSBmaWI2X25vZGVfbG9va3VwXzEoc3VidHJlZSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGFyZ3MgKyAxKTtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKCFzZm4pXFxuK1xcdFxcdFxcdFxcdFxcdGlmICghc2ZuKSB7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdGlmIChmbi1cXHUwMDNlZm5fZmxhZ3MgXFx1MDAyNiBSVE5fUlRJTkZPKVxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZm47XFxuIFxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gYmFja3RyYWNrO1xcbitcXHRcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdFxcdFxcdGZuID0gc2ZuO1xcbiBcXHRcXHRcXHRcXHR9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcXG5pbmRleCAzNjhlNGZhM2I0M2NhMi4uMDNiOGQ0MmQ5ZGY5ZWYgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXFxuQEAgLTExNDMsMjcgKzExNDMsNDAgQEAgc3RhdGljIGludCBpcDZfZHN0X2xvb2t1cF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbiBcXHRpbnQgZmxhZ3MgPSAwO1xcbiBcXG4gXFx0LyogVGhlIGNvcnJlY3Qgd2F5IHRvIGhhbmRsZSB0aGlzIHdvdWxkIGJlIHRvIGRvXFxuLVxcdCAqIGlwNl9yb3V0ZV9nZXRfc2FkZHIsIGFuZCB0aGVuIGlwNl9yb3V0ZV9vdXRwdXQ7IGhvd2V2ZXIsXFxuK1xcdCAqIGlwdjZfZmxfZ2V0X3NhZGRyLCBhbmQgdGhlbiBpcDZfcm91dGVfb3V0cHV0OyBob3dldmVyLFxcbiBcXHQgKiB0aGUgcm91dGUtc3BlY2lmaWMgcHJlZmVycmVkIHNvdXJjZSBmb3JjZXMgdGhlXFxuLVxcdCAqIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBfYmVmb3JlXyBpcDZfcm91dGVfZ2V0X3NhZGRyLlxcbitcXHQgKiBpcDZfcm91dGVfb3V0cHV0IGNhbGwgX2JlZm9yZV8gaXB2Nl9mbF9nZXRfc2FkZHIuXFxuIFxcdCAqXFxuIFxcdCAqIEluIHNvdXJjZSBzcGVjaWZpYyByb3V0aW5nIChubyBzcmM9YW55IGRlZmF1bHQgcm91dGUpLFxcbiBcXHQgKiBpcDZfcm91dGVfb3V0cHV0IHdpbGwgZmFpbCBnaXZlbiBzcmM9YW55IHNhZGRyLCB0aG91Z2gsIHNvXFxuIFxcdCAqIHRoYXQncyB3aHkgd2UgdHJ5IGl0IGFnYWluIGxhdGVyLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGlwdjZfYWRkcl9hbnkoXFx1MDAyNmZsNi1cXHUwMDNlc2FkZHIpKSB7XFxuK1xcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7XFxuK1xcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcdFxcdHN0cnVjdCBmaWI2X2luZm8gKmZyb207XFxuIFxcdFxcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XFxuK1xcdFxcdGJvb2wgc2FtZV92cmY7XFxuIFxcbiBcXHRcXHQqZHN0ID0gaXA2X3JvdXRlX291dHB1dChuZXQsIHNrLCBmbDYpO1xcbiBcXHRcXHRydCA9ICgqZHN0KS1cXHUwMDNlZXJyb3IgPyBOVUxMIDogZHN0X3J0Nl9pbmZvKCpkc3QpO1xcbiBcXG4gXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRmcm9tID0gcnQgPyByY3VfZGVyZWZlcmVuY2UocnQtXFx1MDAzZWZyb20pIDogTlVMTDtcXG4tXFx0XFx0ZXJyID0gaXA2X3JvdXRlX2dldF9zYWRkcihuZXQsIGZyb20sIFxcdTAwMjZmbDYtXFx1MDAzZWRhZGRyLFxcbi1cXHRcXHRcXHRcXHRcXHQgIHNrID8gUkVBRF9PTkNFKGluZXQ2X3NrKHNrKS1cXHUwMDNlc3JjcHJlZnMpIDogMCxcXG4tXFx0XFx0XFx0XFx0XFx0ICBmbDYtXFx1MDAzZWZsb3dpNl9sM21kZXYsXFxuLVxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmZsNi1cXHUwMDNlc2FkZHIpO1xcbitcXG4rXFx0XFx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBmbDYtXFx1MDAzZWZsb3dpNl9sM21kZXYpO1xcbitcXHRcXHRpZiAoIWZyb20gfHwgIWZyb20tXFx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIHx8IGwzbWRldilcXG4rXFx0XFx0XFx0ZGV2ID0gZnJvbSA/IGZpYjZfaW5mb19uaF9kZXYoZnJvbSkgOiBOVUxMO1xcbitcXHRcXHRzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2O1xcbitcXHRcXHRpZiAoZnJvbSBcXHUwMDI2XFx1MDAyNiBmcm9tLVxcdTAwM2VmaWI2X3ByZWZzcmMucGxlbiBcXHUwMDI2XFx1MDAyNiBzYW1lX3ZyZikge1xcbitcXHRcXHRcXHRmbDYtXFx1MDAzZXNhZGRyID0gZnJvbS1cXHUwMDNlZmliNl9wcmVmc3JjLmFkZHI7XFxuK1xcdFxcdFxcdGVyciA9IDA7XFxuK1xcdFxcdH0gZWxzZVxcbitcXHRcXHRcXHRlcnIgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsICpkc3QsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHNhbWVfdnJmID8gZGV2IDogbDNtZGV2LCBzayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0c2sgPyBSRUFEX09OQ0UoaW5ldDZfc2soc2spLVxcdTAwM2VzcmNwcmVmcykgOiAwLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRmbDYpO1xcbitcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcbiBcXHRcXHRpZiAoZXJyKVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xcbmluZGV4IGExMzAxMzM0ZGE0OGMwLi43MDRhZmUyZGRlYTdjMiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9yb3V0ZS5jXFxuKysrIGIvbmV0L2lwdjYvcm91dGUuY1xcbkBAIC01ODUwLDkgKzU4NTAsMTkgQEAgc3RhdGljIGludCBydDZfZmlsbF9ub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgUlRBX0lJRiwgaWlmKSlcXG4gXFx0XFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcdH0gZWxzZSBpZiAoZGVzdCkge1xcbi1cXHRcXHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmO1xcbi1cXHRcXHRpZiAoaXA2X3JvdXRlX2dldF9zYWRkcihuZXQsIHJ0LCBkZXN0LCAwLCAwLCBcXHUwMDI2c2FkZHJfYnVmKSA9PSAwIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIFxcdTAwMjZzYWRkcl9idWYpKVxcbitcXHRcXHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmLCAqc2FkZHIgPSBOVUxMO1xcbitcXG4rXFx0XFx0aWYgKHJ0LVxcdTAwM2VmaWI2X3ByZWZzcmMucGxlbikge1xcbitcXHRcXHRcXHRzYWRkciA9IFxcdTAwMjZydC1cXHUwMDNlZmliNl9wcmVmc3JjLmFkZHI7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBmaWI2X2luZm9fbmhfZGV2KHJ0KTtcXG4rXFxuK1xcdFxcdFxcdGlmIChpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBkZXYsIGRlc3QsIDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2c2FkZHJfYnVmKSA9PSAwKVxcbitcXHRcXHRcXHRcXHRzYWRkciA9IFxcdTAwMjZzYWRkcl9idWY7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmIChzYWRkciBcXHUwMDI2XFx1MDAyNiBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIHNhZGRyKSlcXG4gXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi5jMDdkMmFlYmFkNjk1NyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG5AQCAtNTMsNiArNTMsNyBAQCBURVNUX1BST0dTIDo9IFxcXFxcXG4gXFx0aXB2Nl9mbG93bGFiZWwuc2ggXFxcXFxcbiBcXHRpcHY2X2ZvcmNlX2ZvcndhcmRpbmcuc2ggXFxcXFxcbiBcXHRpcHY2X3JvdXRlX3VwZGF0ZV9zb2Z0X2xvY2t1cC5zaCBcXFxcXFxuK1xcdGlwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHkgXFxcXFxcbiBcXHRpcHZ0YXBfdGVzdC5zaCBcXFxcXFxuIFxcdGwyX3Rvc190dGxfaW5oZXJpdC5zaCBcXFxcXFxuIFxcdGwydHAuc2ggXFxcXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZ1xcbmluZGV4IGUxY2UzNWMyYWJiZWYzLi5iMGI2NjQxMmI5ZjNlMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZ1xcbkBAIC00OCw2ICs0OCw3IEBAIENPTkZJR19JUFY2X1JPVVRFUl9QUkVGPXlcXG4gQ09ORklHX0lQVjZfUlBMX0xXVFVOTkVMPXlcXG4gQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTD15XFxuIENPTkZJR19JUFY2X1NJVD15XFxuK0NPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4gQ09ORklHX0lQVjZfVlRJPXlcXG4gQ09ORklHX0lQVkxBTj1tXFxuIENPTkZJR19JUFZUQVA9bVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5XFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjgyYjM5YmE5OTFkYTlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHlcXG5AQCAtMCwwICsxLDIzMSBAQFxcbisjIS91c3IvYmluL2VudiBweXRob24zXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rIyBDb3B5cmlnaHQgKEMpIDIwMjMtMjAyNiAgRGF2aWQgJ2VxdWlub3gnIExhbXBhcnRlclxcbitcXFwiXFxcIlxcXCJcXG4rUkZDIDY3MjQgKElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uKSBydWxlIDUuNSB0ZXN0c1xcbitcXG4rRm9yIHJlZmVyZW5jZTpcXG4rXFxuKyAgIFJ1bGUgNS41OiBQcmVmZXIgYWRkcmVzc2VzIGluIGEgcHJlZml4IGFkdmVydGlzZWQgYnkgdGhlIG5leHQtaG9wLlxcbisgICBJZiBTQSBvciBTQSdzIHByZWZpeCBpcyBhc3NpZ25lZCBieSB0aGUgc2VsZWN0ZWQgbmV4dC1ob3AgdGhhdCB3aWxsXFxuKyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQidzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudFxcbisgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJ3MgcHJlZml4IGlzXFxuKyAgIGFzc2lnbmVkIGJ5IHRoZSBuZXh0LWhvcCB0aGF0IHdpbGwgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNBIG9yXFxuKyAgIFNBJ3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi5cXG4rXFxuKyhhbmQgc2luY2UgaXQgcHJvdmlkZXMgdGhlIFxcXCJjb3VudGVycG9pbnRcXFwiOilcXG4rXFxuKyAgIFJ1bGUgODogVXNlIGxvbmdlc3QgbWF0Y2hpbmcgcHJlZml4LlxcbisgICBJZiBDb21tb25QcmVmaXhMZW4oU0EsIEQpIFxcdTAwM2UgQ29tbW9uUHJlZml4TGVuKFNCLCBEKSwgdGhlbiBwcmVmZXIgU0EuXFxuKyAgIFNpbWlsYXJseSwgaWYgQ29tbW9uUHJlZml4TGVuKFNCLCBEKSBcXHUwMDNlIENvbW1vblByZWZpeExlbihTQSwgRCksIHRoZW5cXG4rICAgcHJlZmVyIFNCLlxcbitcXG4rTm90ZSBydWxlIDUuNSB3YXMgb3JpZ2luYWxseSBvcHRpb25hbCBidXQgbWFkZSBtYW5kYXRvcnkgYnlcXG4rZHJhZnQtaWV0Zi02bWFuLXJmYzY3MjQtdXBkYXRlICh3aGljaCBhdCB0aGUgcG9pbnQgb2YgY3JlYXRpb24gb2YgdGhpcyB0ZXN0XFxuK3dhcyBhbHJlYWR5IFxcXCJkb25lXFxcIiBhdCB0aGUgSUVURiBidXQgd2FpdGluZyBpbiB0aGUgUkZDIGVkaXRvciBxdWV1ZSBkdWUgdG8gYVxcbitibG9ja2luZyBkZXBlbmRlbmN5LilcXG4rXFxcIlxcXCJcXFwiXFxuK1xcbitmcm9tIHNvY2tldCBpbXBvcnQgc29ja2V0LCBBRl9JTkVUNiwgU09DS19ER1JBTVxcbitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHNcXG4rZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlXFxuK1xcbitmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9lcVxcbitmcm9tIGxpYi5weSBpbXBvcnQgTmV0TlMsIE5ldE5TRW50ZXJcXG4rZnJvbSBsaWIucHkgaW1wb3J0IGlwXFxuK1xcbitcXG4rZGVmIHNlbGVjdF9hZGRyKGRlc3QpOlxcbisgICAgXFxcIlxcXCJcXFwiXFxuKyAgICBjb25uZWN0KCkgKyBnZXRzb2NrbmFtZSgpIHRvIGZpZ3VyZSBvdXQgd2hhdCB3YXMgc2VsZWN0ZWQgYXMgc291cmNlIGFkZHJlc3NcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgc29jayA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgMClcXG4rICAgIHNvY2suY29ubmVjdCgoZGVzdCwgMTIzNDUpKVxcbisgICAgcmV0dXJuIHNvY2suZ2V0c29ja25hbWUoKVswXVxcbitcXG4rXFxuK2RlZiBpbl9uZXRucyhmdW5jOiBDYWxsYWJsZVtbXSwgTm9uZV0pIC1cXHUwMDNlIENhbGxhYmxlW1tdLCBOb25lXTpcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgcHl0aG9uIGRlY29yYXRvciB0byBwdXQgdGVzdCBmdW5jdGlvbiBpbiBuZXRuc1xcbisgICAgXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgQHdyYXBzKGZ1bmMpXFxuKyAgICBkZWYgd3JhcHBlZCgpIC1cXHUwMDNlIE5vbmU6XFxuKyAgICAgICAgd2l0aCBOZXROUygpIGFzIHRlc3RuczpcXG4rICAgICAgICAgICAgd2l0aCBOZXROU0VudGVyKHN0cih0ZXN0bnMpKTpcXG4rICAgICAgICAgICAgICAgIGZ1bmMoKVxcbitcXG4rICAgIHJldHVybiB3cmFwcGVkXFxuK1xcbitcXG4rQGluX25ldG5zXFxuK2RlZiB0ZXN0X2Jhc2ljKCkgLVxcdTAwM2UgTm9uZTpcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgU2ltcGxlIFxcdTAwMjYgbW9zdCBjb21tb24gY2FzZSBmb3IgUkZDNjcyNCBydWxlIDUuNTogbXVsdGlwbGUgZGVmYXVsdCByb3V0ZXNcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgaXAoXFxcImxpbmsgYWRkIHR5cGUgdmV0aFxcXCIpXFxuKyAgICBpcChcXFwibGluayBzZXQgdmV0aDAgdXBcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgxIHVwXFxcIilcXG4rICAgIGlwKFxcXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCAgIGRldiB2ZXRoMCBub2RhZFxcXCIpXFxuKyAgICBpcChcXFwiYWRkciBhZGQgMjAwMTpkYjg6MTAwMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcImJhc2VsaW5lIHBhc3NcXFwiKVxcbisgICAgIyBydWxlIDggd291bGQgcmVzdWx0IGluIHRoZSB1c2Ugb2YgdGhlIDoxMDAxOiBhZGRyZXNzLCBidXQgcnVsZSA1LjUgYXBwbGllcyBiZWZvcmUuXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMDAxOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcInJ1bGUgNS41IFxcdTAwM2UgcnVsZSA4XFxcIilcXG4rXFxuKyAgICBpcChcXFwiLTYgcm91dGUgZGVsIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMDAxOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwicnVsZSA1LjUgXFx1MDAzZSBydWxlIDhcXFwiKVxcbitcXG4rXFxuK0Bpbl9uZXRuc1xcbitkZWYgdGVzdF9uaF9vYmooKSAtXFx1MDAzZSBOb25lOlxcbisgICAgXFxcIlxcXCJcXFwiXFxuKyAgICBTYW1lIGFzIGFib3ZlLCBidXQgd2l0aCBuZXh0aG9wIG9iamVjdHMgZm9yIHRoZSBkZWZhdWx0IHJvdXRlXFxuK1xcbisgICAgTkI6IFRoZSBrZXJuZWwgZG9lc24ndCBjdXJyZW50bHkgYWxsb3cgbmV4dGhvcCBvYmplY3RzIGZvciBzdWJ0cmVlIHJvdXRlcy5cXG4rICAgIFxcXCJcXFwiXFxcIlxcbitcXG4rICAgIGlwKFxcXCJsaW5rIGFkZCB0eXBlIHZldGhcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgwIHVwXFxcIilcXG4rICAgIGlwKFxcXCJsaW5rIHNldCB2ZXRoMSB1cFxcXCIpXFxuKyAgICBpcChcXFwiYWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcImFkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXFxcIilcXG4rXFxuKyAgICAjIGRpc3RpbmN0IG5leHRob3Agb2JqZWN0cyBhcmUgdXNlZCwgYmVjYXVzZSB3aGF0IG1hdHRlcnMgaXMgdGhlIG5leHRob3BcXG4rICAgICMgaXRzZWxmLCBub3QgdGhlIG5leHRob3Agb2JqZWN0LiAgVG8gY292ZXIgZXZlcnl0aGluZywgbWFrZSBhIGdyb3VwLlxcbisgICAgaXAoXFxcIm5leHRob3AgYWRkIGlkIDEwMSB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcXFwiKVxcbisgICAgaXAoXFxcIm5leHRob3AgYWRkIGlkIDIwMSBncm91cCAxMDFcXFwiKVxcbisgICAgaXAoXFxcIm5leHRob3AgYWRkIGlkIDEwMiB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcXFwiKVxcbisgICAgaXAoXFxcIm5leHRob3AgYWRkIGlkIDIwMiBncm91cCAxMDJcXFwiKVxcbitcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBuaGlkIDIwMiBtZXRyaWMgMjAwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFxcXCIpXFxuK1xcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjEwMDE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwicnVsZSA1LjUgXFx1MDAzZSBydWxlIDhcXFwiKVxcbitcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBkZWwgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXFxcIilcXG4rXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMTo6XFxcIiksIFxcXCIyMDAxOmRiODoxMDAwOjoxXFxcIiwgXFxcImJhc2VsaW5lIHBhc3NcXFwiKVxcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTAwMTo6XFxcIiksIFxcXCIyMDAxOmRiODoxMDAwOjoxXFxcIiwgXFxcInJ1bGUgNS41IFxcdTAwM2UgcnVsZSA4XFxcIilcXG4rXFxuK1xcbitAaW5fbmV0bnNcXG4rZGVmIHRlc3RfbG93X21ldHJpYygpIC1cXHUwMDNlIE5vbmU6XFxuKyAgICBcXFwiXFxcIlxcXCJcXG4rICAgIENoZWNrIHRoYXQgc3VidHJlZSByb3V0ZXMgdGFrZSBlZmZlY3QgZXZlbiBpZiB0aGV5IGFyZSBoaWdoZXIgbWV0cmljXFxuK1xcbisgICAgRm9yIGNoZWNraW5nIHRoYXQgXFxcInJvdXRlciBhZHZlcnRpc2VkIHByZWZpeFxcXCIsIG1ldHJpYyBpcyBpcnJlbGV2YW50LiAgSXRcXG4rICAgIG1hdHRlcnMgZm9yIHRoZSBpbml0aWFsIHVuc3BlY2lmaWMgbG9va3VwIHRvIGZpbmQgYSBuZXh0aG9wIHRvIGJlZ2luIHdpdGguXFxuKyAgICAoVGhlIGxhdGVyIHNvdXJjZSBhZGRyZXNzIGNoZWNrIGxvb2t1cCBkb2Vzbid0IGNoYW5nZSB0aGUgbmV4dGhvcCwgaS5lLlxcbisgICAgdGhlIGVmZmVjdHMgb2YgbWV0cmljcyBhcmUgYWxyZWFkeSBkb25lLilcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgaXAoXFxcImxpbmsgYWRkIHR5cGUgdmV0aFxcXCIpXFxuKyAgICBpcChcXFwibGluayBzZXQgdmV0aDAgdXBcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgxIHVwXFxcIilcXG4rICAgIGlwKFxcXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCAgIGRldiB2ZXRoMCBub2RhZFxcXCIpXFxuKyAgICBpcChcXFwiYWRkciBhZGQgMjAwMTpkYjg6MTAwMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMDBcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjozIGRldiB2ZXRoMCBtZXRyaWMgNTBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcImJhc2VsaW5lIHBhc3NcXFwiKVxcbisgICAgIyBydWxlIDggd291bGQgcmVzdWx0IGluIHRoZSB1c2Ugb2YgdGhlIDoxMDAxOiBhZGRyZXNzLCBidXQgcnVsZSA1LjUgYXBwbGllcyBiZWZvcmUuXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMDAxOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcInJ1bGUgNS41IFxcdTAwM2UgcnVsZSA4XFxcIilcXG4rXFxuKyAgICBpcChcXFwiLTYgcm91dGUgZGVsIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMDAxOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwicnVsZSA1LjUgXFx1MDAzZSBydWxlIDhcXFwiKVxcbitcXG4rXFxuK0Bpbl9uZXRuc1xcbitkZWYgdGVzdF9ub19zdWJ0cmVlKCkgLVxcdTAwM2UgTm9uZTpcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgRW5zdXJlIHRoYXQgbWF0Y2hpbmcgb24gYSBub24tc3VidHJlZSByb3V0ZSBkb2Vzbid0IHRyaWdnZXIgcnVsZSA1LjVcXG4rXFxuKyAgICAoVGhpcyB3YXMgbm9uLW9idmlvdXNseSBicm9rZW4gaW4gZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgaW1wbGVtZW50YXRpb25zLFxcbisgICAgYSBub24tc3VidHJlZSByb3V0ZSB3b3VsZCBzdGlsbCBtYXRjaC4gIE1ha2Ugc3VyZSBpdCBkb2Vzbid0IGJyZWFrIGFnYWluLilcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgaXAoXFxcImxpbmsgYWRkIHR5cGUgdmV0aFxcXCIpXFxuKyAgICBpcChcXFwibGluayBzZXQgdmV0aDAgdXBcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgxIHVwXFxcIilcXG4rICAgIGlwKFxcXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcImFkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcImJhc2VsaW5lIHBhc3NcXFwiKVxcbisgICAga3NmdF9lcShcXG4rICAgICAgICBzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTAwMTo6XFxcIiksXFxuKyAgICAgICAgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIixcXG4rICAgICAgICBcXFwicnVsZSA1LjUgXFx1MDAzZSBydWxlIDgsIGlnbm9yaW5nIG5vbi1TQURSXFxcIixcXG4rICAgIClcXG4rXFxuK1xcbitAaW5fbmV0bnNcXG4rZGVmIHRlc3RfbG9uZ2VyKCkgLVxcdTAwM2UgTm9uZTpcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgQ2hlY2sgZnVuY3Rpb25hbGl0eSBmb3Igbm9uLWRlZmF1bHQgZGVzdGluYXRpb24uXFxuK1xcbisgICAgVGhpcyBpcyBleHBlY3RlZCB0byBiZSB2ZXJ5IHJhcmUgaW4gYWN0dWFsIHByYWN0aWNlLCBhbmQgZG9lc24ndCBkb1xcbisgICAgYmFja3RyYWNraW5nIChhbHNvIHJlZmVyIHRvIGtlcm5lbCBkb2NzLilcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgaXAoXFxcImxpbmsgYWRkIHR5cGUgdmV0aFxcXCIpXFxuKyAgICBpcChcXFwibGluayBzZXQgdmV0aDAgdXBcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgxIHVwXFxcIilcXG4rICAgIGlwKFxcXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcImFkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCAyMDAxOmRiODo1MDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgICAgICAgICAgIGZyb20gMjAwMTpkYjg6MTA6Oi80OCAgIHZpYSBmZTgwOjoxIGRldiB2ZXRoMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIDIwMDE6ZGI4OjUwMDo6LzQ4IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFxcXCIpXFxuK1xcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODo1MDA6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTAwMDo6MVxcXCIsIFxcXCJydWxlIDUuNVxcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODo1MDA6YWFhOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwicnVsZSA1LjVcXFwiKVxcbitcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOmFhYTo6LzY0IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCBtZXRyaWMgMTAwXFxcIilcXG4rXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMTo6XFxcIiksIFxcXCIyMDAxOmRiODoxMDo6MVxcXCIsIFxcXCJiYXNlbGluZSBwYXNzXFxcIilcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjUwMDo6XFxcIiksIFxcXCIyMDAxOmRiODoxMDAwOjoxXFxcIiwgXFxcInJ1bGUgNS41XFxcIilcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjUwMDphYWE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwibm8gYmFja3RyYWNraW5nXFxcIilcXG4rXFxuKyAgICBpcChcXFwiLTYgcm91dGUgZGVsIDIwMDE6ZGI4OjUwMDo6LzQ4IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgICAgICAgICAgIGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFxcXCIpXFxuK1xcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODo1MDA6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwibm8gYmFja3RyYWNraW5nXFxcIilcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjUwMDphYWE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwibm8gYmFja3RyYWNraW5nXFxcIilcXG4rXFxuK1xcbitkZWYgbWFpbigpIC1cXHUwMDNlIE5vbmU6XFxuKyAgICBcXFwiXFxcIlxcXCJcXG4rICAgIFJGQzY3MjQgcnVsZSA1LjUgdGVzdCBkcml2ZXJcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAga3NmdF9ydW4oXFxuKyAgICAgICAgW1xcbisgICAgICAgICAgICB0ZXN0X2Jhc2ljLFxcbisgICAgICAgICAgICB0ZXN0X25oX29iaixcXG4rICAgICAgICAgICAgdGVzdF9sb3dfbWV0cmljLFxcbisgICAgICAgICAgICB0ZXN0X25vX3N1YnRyZWUsXFxuKyAgICAgICAgICAgIHRlc3RfbG9uZ2VyLFxcbisgICAgICAgIF1cXG4rICAgIClcXG4rICAgIGtzZnRfZXhpdCgpXFxuK1xcbitcXG4raWYgX19uYW1lX18gPT0gXFxcIl9fbWFpbl9fXFxcIjpcXG4rICAgIG1haW4oKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzoyNy41NDU5MjQ0NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODY3NTk3NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU1VCVFJFRVNcIixcbiAgICBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2Nl9zYWRkcl9ydWxlNXA1XCIsXG4gICAgXCJpcHY2X2ZsX2dldF9zYWRkclwiLFxuICAgIFwiaXB2Nl9kZXZfZ2V0X3NhZGRyXCIsXG4gICAgXCJydDZfZmlsbF9ub2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBSRkM2NzI0IHJ1bGUgNS41IGZvciBJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBieSBpbnRyb2R1Y2luZyBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBhbmQgYGlwdjZfZmxfZ2V0X3NhZGRyYC4gSXQgbW9kaWZpZXMgY29yZSBJUHY2IHJvdXRpbmcgYW5kIGFkZHJlc3Mgc2VsZWN0aW9uIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIChlLmcuLCBjb25uZWN0LCBzZW5kbXNnKSBhbmQgbmV0bGluayByb3V0ZSBkdW1wcyAoYHJ0Nl9maWxsX25vZGVgKS4gVGhlIGZlYXR1cmUgcmVxdWlyZXMgYElQVjZfU1VCVFJFRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWE0ZDU0NDJjMDJiMzliOTI1ODJmZTExZWM4YWYyMmI0ZmFkYzg3OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDE1OjE3OjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni1hZGRyc2VsLnJzdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZWQwMzJlNjk1NzA1Y1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3RcbkBAIC0wLDAgKzEsNzUgQEBcbisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuK1xuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuK0lQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIHRyaXZpYVxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuK1xuK1xuK1JGQzY3MjQgcnVsZSA1LjUgc3VwcG9ydFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuK1JGQzY3MjQgcnVsZSA1LjUgaXMgYSB2ZXJ5IHNob3J0IHBhcmFncmFwaCBpbiBhIGNvbXBsZXggUkZDIHRoYXQgaGFzIHR1cm5lZFxuK291dCBxdWl0ZSB0cmlja3ksIGJ1dCBhbHNvIGltbWVuc2VseSB1c2VmdWwgaW4gbXVsdGlob21pbmcgc2NlbmFyaW9zLiAgRm9yXG4rcmVmZXJlbmNlLCBpdCBzYXlzOlxuK1xuKzo6XG4rXG4rICAgUnVsZSA1LjU6IFByZWZlciBhZGRyZXNzZXMgaW4gYSBwcmVmaXggYWR2ZXJ0aXNlZCBieSB0aGUgbmV4dC1ob3AuXG4rICAgSWYgU0Egb3IgU0EncyBwcmVmaXggaXMgYXNzaWduZWQgYnkgdGhlIHNlbGVjdGVkIG5leHQtaG9wIHRoYXQgd2lsbFxuKyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQidzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudFxuKyAgIG5leHQtaG9wLCB0aGVuIHByZWZlciBTQS4gIFNpbWlsYXJseSwgaWYgU0Igb3IgU0IncyBwcmVmaXggaXNcbisgICBhc3NpZ25lZCBieSB0aGUgbmV4dC1ob3AgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQSBvclxuKyAgIFNBJ3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi5cbitcbitUaGUgd2F5IHRoaXMgd29ya3Mgb24gTGludXggaXMgYXMgZm9sbG93czpcbitcbistIHByaW9yIHRvIGFueSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gaGFwcGVuaW5nLCB3aGVuIHJlY2VpdmluZyBhIFJBLCBtb3JlXG4rICB0aGFuIHRoZSBpbnN0YWxsYXRpb24gb2YgYSBkZWZhdWx0IHJvdXRlIChvciA6Oi8xMjggcm91dGUpIG5lZWRzIHRvIGhhcHBlbjpcbisgIGZvciBlYWNoIFBJTywgYSBzb3VyY2Utc3BlY2lmaWMgKHN1YnRyZWUpIHJvdXRlIGlzICphZGRpdGlvbmFsbHkqIGluc3RhbGxlZC5cbisgIFRoZSBlZmZlY3Qgb2YgdGhpcyBpcyB0aGF0ICphZnRlciogYSBzb3VyY2UgYWRkcmVzcyBoYXMgYmVlbiBzZWxlY3RlZCwgb25lXG4rICBvZiB0aGUgcm91dGVycyB0aGF0IGFkdmVydGlzZWQgaXQgd2lsbCByZW1haW4gaW4gdXNlICh0aGlzIGlzICpub3QqIFJGQyA2NzI0XG4rICByZWxhdGVkLCBidXQgcmF0aGVyIFJGQyA4MDI4LikgIEF0IHRoZSBzYW1lIHRpbWUsIHRoZXNlIGV4dHJhIHJvdXRlcyBzZXJ2ZVxuKyAgdG8gcmVtZW1iZXIgd2hpY2ggcm91dGVyIGFkdmVydGlzZWQgd2hhdC5cbitcbistIHBlciB1c3VhbCwgYSByb3V0ZSBsb29rdXAgZm9yIHRoZSBJUHY2IGRlc3RpbmF0aW9uIGFkZHJlc3MgaW4gY29uc2lkZXJhdGlvblxuKyAgaXMgZG9uZSBmaXJzdC4gIFRoaXMgaXMgcGFzc2VkIGFyb3VuZCBpbiBrZXJuZWwgYXMgYSBkc3RfZW50cnkuXG4rXG4rLSB0aGUgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgdmFyaW91cyBydWxlcyBpblxuKyAgUkZDIDY3MjQuXG4rXG4rLSBpZi93aGVuIHJ1bGUgNS41IGlzIHJlYWNoZWQsIGZpcnN0IG9mIGFsbCwgdGhlcmUgaXMgYSBjaGVjayBpZiAqYW55KiBzb3VyY2VcbisgIHNwZWNpZmljIHJvdXRlcyBleGlzdCBpbiB0aGUgcm91dGluZyB0YWJsZS4gIElmIHRoZXJlIGFyZSBub25lLCB0aGUgZW50aXJlXG4rICBjb2RlIGZvciA1LjUgaXMgc2tpcHBlZCBiZWNhdXNlIGl0IGNhbm5vdCBoYXZlIGFueSBlZmZlY3QsIGJ1dCBpcyBub3QgZnJlZVxuKyAgdG8gZXhlY3V0ZSAoY2FuIGludm9sdmUgbXVsdGlwbGUgcm91dGluZyBsb29rdXBzLikgICoqSW4gYXBwbGljYXRpb25zIHRoYXRcbisgIHVzZSBhIGxvdCBvZiB1bmJvdW5kIChlLmcuIFVEUCkgc29ja2V0cywgaW5zdGFsbGluZyBzdWJ0cmVlIHJvdXRlcyBzaG91bGRcbisgIHRoZXJlZm9yZSBiZSBhdm9pZGVkIHRvIG5vdCBpbmN1ciB0aGlzIGNvc3Qgb24gZWFjaCBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb25cbisgIHBhc3MuKiogIEFsdGVybmF0aXZlbHksIGFwcGxpY2F0aW9ucyBzaG91bGQgYmluZCB0aGVpciBzb2NrZXRzIHRvIGEgc3BlY2lmaWNcbisgIHNvdXJjZSBhZGRyZXNzIHN1Y2ggdGhhdCB0aGUgc2VsZWN0aW9uIGNvZGUgaXMgbmV2ZXIgaGl0LlxuK1xuKy0gaWYgc3VidHJlZSByb3V0ZXMgZG8gZXhpc3QsIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gY29kZSBub3cgcmVwZWF0c1xuKyAgdGhlIHJvdXRpbmcgbG9va3VwIGRvbmUgYmVmb3JlIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBpcyBlbnRlcmVkLCBleGNlcHRcbisgIHdpdGggdGhlIHNvdXJjZSBhZGRyZXNzIHVuZGVyIGNvbnNpZGVyYXRpb24gZmlsbGVkIGluLiAgVGhpcyBsb29rdXAgd2lsbCBoaXRcbisgIHRoZSBzdWJ0cmVlIHJvdXRlcyB0aGF0IHdlcmUgaW5zdGFsbGVkIChzZWUgZmlyc3QgaXRlbSksIGdpdmluZyBhIGZyZXNoXG4rICBkc3RfZW50cnkuICBJZiB0aGUgbmV3IGRzdF9lbnRyeSBtYXRjaGVzIHRoZSBvcmlnaW5hbCBkc3RfZW50cnksIHRoYXQgbWVhbnNcbisgIHRoZSBvcmlnaW5hbCByb3V0ZXIgaGFzIGluIGZhY3Qgc2VudCBSQXMgd2l0aCBQSU9zIGZvciB0aGlzIHNvdXJjZSBhZGRyZXNzLFxuKyAgc28gaXQgaXMgcHJlZmVycmVkLiAgT3RoZXJ3aXNlIGl0IGlzIG5vdC5cbitcbitcbitUaGVyZSBhcmUgYSBmZXcgY2F2ZWF0cyB0byBjb25zaWRlcjpcbitcbistIHRoZSBrZXJuZWwgY3VycmVudGx5IGRvZXMgbm90IGNyZWF0ZSB0aGUgc3VidHJlZSByb3V0ZXMgbWVudGlvbmVkIGluIHRoZVxuKyAgZmlyc3QgaXRlbS4gIFRoaXMgaXMgYSBzZXBhcmF0ZSB3b3JrIGl0ZW0sIHBhcnRpYWxseSBkb25lIGF0IHRoZSB0aW1lIG9mXG4rICB3cml0aW5nIHRoaXMuICBCdXQgdGhpcyBjYW4gZXF1YWxseSB3ZWxsIGJlIHBlcmZvcm1lZCBpbiB1c2Vyc3BhY2UgcHJvY2Vzc2luZ1xuKyAgb2YgUkFzLCBlLmcuIE5ldHdvcmtNYW5hZ2VyIG9yIHBsYWluIHN0YXRpYyBjb25maWd1cmF0aW9uLlxuK1xuKy0gc2luY2UgYWRkcmVzc2VzIGNhbiBhbHNvIGJlIGFjcXVpcmVkIGZyb20gREhDUHY2LCBldmVuIFJBL1BJTyBjb21iaW5hdGlvbnNcbisgIHRoYXQgZGlkbid0IHJlc3VsdCBpbiB0aGUgY3JlYXRpb24gb2YgYW55IGFkZHJlc3NlcyAoZS5nLiBBPTApIHNob3VsZCBoYXZlXG4rICBzdWJ0cmVlIHJvdXRlcyBhZGRlZC4gIFRob3NlIHJvdXRlcyAqbWF5KiBiZSByZWxldmFudCBmb3IgREhDUHY2LWdlbmVyYXRlZFxuKyAgYWRkcmVzc2VzLlxuK1xuKy0gdGhlIFwiYW5ub3VuY2UgY2hlY2tcIiBsb29rdXAgZG9lcyBub3QgYmFja3RyYWNrLiAgT25seSB0aGUgZGVzdGluYXRpb24gcHJlZml4XG4rICB0aGF0IHByb3ZpZGVkIHRoZSBcInVuc3BlY2lmaWNcIiAoOjovMTI4KSBtYXRjaCBpcyBjaGVja2VkIGZvciBzb3VyY2UgcHJlZml4ZXNcbisgIHRvIHNlZSB3aGF0IHJvdXRlcnMgYWR2ZXJ0aXNlZCB3aGF0LiAgVGhpcyBtZWFucyB0aGF0IGZvciBlLmcuIFJJT3MsIHN1YnRyZWVcbisgIHJvdXRlcyBhbHNvIGhhdmUgdG8gYmUgY3JlYXRlZC4gIChCYWNrdHJhY2tpbmcgZm9yIHRoaXMgY2FzZSB3b3VsZCBmdXJ0aGVyXG4rICBpbmNyZWFzZSB0aGUgY29zdCBvZiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24sIGZvciBhIHByZXR0eSByYXJlIHNpdHVhdGlvblxuKyAgdGhhdCBoYXMgYW4gZWFzeSBmaXgvd29ya2Fyb3VuZC4pXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggZjMyMThhYmVmZDBjNmIuLjRlZGY0ODM2MmEwNzMyIDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbisrKyBiL01BSU5UQUlORVJTXG5AQCAtMTg5MTIsNiArMTg5MTIsNyBAQCBGOlx0RG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWFkZHIueWFtbFxuIEY6XHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbmVpZ2gueWFtbFxuIEY6XHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtcm91dGUueWFtbFxuIEY6XHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtcnVsZS55YW1sXG4rRjpcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0XG4gRjpcdGluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXG4gRjpcdGluY2x1ZGUvbGludXgvbXJvdXRlKlxuIEY6XHRpbmNsdWRlL25ldC9hZGRyY29uZi5oXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaCBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbmluZGV4IDhjZWQyN2E4MjI5YjZlLi43YmMwNzExYjg3MTc5NiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbisrKyBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbkBAIC0xNDIsNiArMTQyLDEwIEBAIHN0cnVjdCBpbmV0Nl9pZmFkZHIgKmlwdjZfZ2V0X2lmYWRkcihzdHJ1Y3QgbmV0ICpuZXQsXG4gaW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgc3JjcHJlZnMsXG4gXHRcdCAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKTtcbitpbnQgaXB2Nl9mbF9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXG4rXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuK1x0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBzcmNwcmVmcyxcbitcdFx0ICAgICAgc3RydWN0IGZsb3dpNiAqZmw2KTtcbiBpbnQgaXB2Nl9nZXRfbGxhZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpbjZfYWRkciAqYWRkcixcbiBcdFx0ICAgIHUzMiBiYW5uZWRfZmxhZ3MpO1xuIGJvb2wgaW5ldF9yY3Zfc2FkZHJfZXF1YWwoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2syLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhcbmluZGV4IDA5ZmZlMGYxM2NlNzUyLi5mZTEzY2IxZDMyNTdkYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oXG4rKysgYi9pbmNsdWRlL25ldC9pcDZfcm91dGUuaFxuQEAgLTE0MCwzMiArMTQwLDYgQEAgdm9pZCBydDZfZmx1c2hfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9pbmZvICpmNmkpO1xuIHZvaWQgcnQ2X2FnZV9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSwgc3RydWN0IGZpYjZfZ2NfYXJncyAqZ2NfYXJncyxcbiBcdFx0XHR1bnNpZ25lZCBsb25nIG5vdyk7XG4gXG4tc3RhdGljIGlubGluZSBpbnQgaXA2X3JvdXRlX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSxcbi1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXG4tXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgcHJlZnMsIGludCBsM21kZXZfaW5kZXgsXG4tXHRcdFx0XHQgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxuLXtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7XG4tXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuLVx0Ym9vbCBzYW1lX3ZyZjtcbi1cdGludCBlcnIgPSAwO1xuLVxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVxuLVx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBsM21kZXZfaW5kZXgpO1xuLVx0aWYgKCFmNmkgfHwgIWY2aS1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbiB8fCBsM21kZXYpXG4tXHRcdGRldiA9IGY2aSA/IGZpYjZfaW5mb19uaF9kZXYoZjZpKSA6IE5VTEw7XG4tXHRzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2O1xuLVx0aWYgKGY2aSBcdTAwMjZcdTAwMjYgZjZpLVx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIFx1MDAyNlx1MDAyNiBzYW1lX3ZyZilcbi1cdFx0KnNhZGRyID0gZjZpLVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuLVx0ZWxzZVxuLVx0XHRlcnIgPSBpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgZGFkZHIsIHByZWZzLCBzYWRkcik7XG4tXG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbi1cbi1cdHJldHVybiBlcnI7XG4tfVxuLVxuIHN0cnVjdCBydDZfaW5mbyAqcnQ2X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsIGludCBvaWYsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBmbGFncyk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvS2NvbmZpZyBiL25ldC9pcHY2L0tjb25maWdcbmluZGV4IGMzODA2YzZhYzk2Zjk1Li4zOTY1OWU5YjUzYTNkYiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L0tjb25maWdcbisrKyBiL25ldC9pcHY2L0tjb25maWdcbkBAIC0yNDMsMTYgKzI0MywyNiBAQCBjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbiBjb25maWcgSVBWNl9TVUJUUkVFU1xuIFx0Ym9vbCBcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcIlxuIFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFU1xuK1x0ZGVmYXVsdCB5XG4gXHRoZWxwXG4gXHQgIEVuYWJsZSByb3V0aW5nIGJ5IHNvdXJjZSBhZGRyZXNzIG9yIHByZWZpeC5cbiBcbiBcdCAgVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgc3RpbGwgdGhlIHByaW1hcnkgcm91dGluZyBrZXksIHNvIG1peGluZ1xuIFx0ICBub3JtYWwgYW5kIHNvdXJjZSBwcmVmaXggc3BlY2lmaWMgcm91dGVzIGluIHRoZSBzYW1lIHJvdXRpbmcgdGFibGVcbi1cdCAgbWF5IHNvbWV0aW1lcyBsZWFkIHRvIHVuaW50ZW5kZWQgcm91dGluZyBiZWhhdmlvci4gIFRoaXMgY2FuIGJlXG4tXHQgIGF2b2lkZWQgYnkgZGVmaW5pbmcgZGlmZmVyZW50IHJvdXRpbmcgdGFibGVzIGZvciB0aGUgbm9ybWFsIGFuZFxuLVx0ICBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcy5cbitcdCAgbWF5IHNvbWV0aW1lcyBsZWFkIHRvIHVuaW50ZW5kZWQgcm91dGluZyBiZWhhdmlvciBpZiB0aGUgb3JkZXIgb2ZcbitcdCAgbG9va3VwcyBpcyBtaXN1bmRlcnN0b29kLiAgVG8gYWNoaWV2ZSBmdWxsIHNlcGFyYXRpb24gYmFzZWQgb24gc291cmNlXG4rXHQgIGFkZHJlc3MsIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBzaG91bGQgYmUgZGVmaW5lZCBmb3IgZWFjaCBzb3VyY2VcbitcdCAgcHJlZml4LlxuIFxuLVx0ICBJZiB1bnN1cmUsIHNheSBOLlxuK1x0ICBTdWJ0cmVlcyBzcGVjaWZpY2FsbHkgYWRkcmVzcyBzY2VuYXJpb3Mgd2hlcmUgbG9jYWwgY29ubmVjdGl2aXR5XG4rXHQgIGJldHdlZW4gc291cmNlIHByZWZpeGVzIGlzIHNoYXJlZCBhbmQgdW5yZXN0cmljdGVkLCBidXQgc29tZVxuK1x0ICBkZXN0aW5hdGlvbnMgKGUuZy4gdGhlIGRlZmF1bHQgcm91dGUpIGhhdmUgbW9yZSBmaW5lLWdyYWluZWQgcnVsZXMuXG4rXG4rXHQgIFRoaXMgZmVhdHVyZSBpcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgc3VwcG9ydCBSRkM2NzI0IHJ1bGUgNS41IGluXG4rXHQgIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbi4gIFJ1bGUgNS41IGlzIGEgbmVjZXNzaXR5IGZvciBnb29kXG4rXHQgIG11bHRpaG9taW5nLCByZW51bWJlcmluZyBhbmQgc291cmNlIHByZWZpeCBsaXZlbGluZXNzIGNoZWNrcy5cbitcbitcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiBcbiBjb25maWcgSVBWNl9NUk9VVEVcbiBcdGJvb2wgXCJJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wiXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBiL25ldC9pcHY2L2FkZHJjb25mLmNcbmluZGV4IGYxZmU5ZWRlMWVkYjM3Li5mNWMwNDkyOGFhMTQyZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2FkZHJjb25mLmNcbisrKyBiL25ldC9pcHY2L2FkZHJjb25mLmNcbkBAIC0xNTIyLDYgKzE1MjIsNyBAQCBlbnVtIHtcbiBcdElQVjZfU0FERFJfUlVMRV9IT0EsXG4gI2VuZGlmXG4gXHRJUFY2X1NBRERSX1JVTEVfT0lGLFxuK1x0SVBWNl9TQUREUl9SVUxFX1BJT19CWV9ORVhUSE9QLFxuIFx0SVBWNl9TQUREUl9SVUxFX0xBQkVMLFxuIFx0SVBWNl9TQUREUl9SVUxFX1BSSVZBQ1ksXG4gXHRJUFY2X1NBRERSX1JVTEVfT1JDSElELFxuQEAgLTE1NDIsMTEgKzE1NDMsMTQgQEAgc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUge1xuIH07XG4gXG4gc3RydWN0IGlwdjZfc2FkZHJfZHN0IHtcbi1cdGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqYWRkcjtcbitcdHN0cnVjdCBmbG93aTYgKmZsNjtcbitcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbitcdGNvbnN0IHN0cnVjdCBzb2NrICpzaztcbiBcdGludCBpZmluZGV4O1xuIFx0aW50IHNjb3BlO1xuIFx0aW50IGxhYmVsO1xuIFx0dW5zaWduZWQgaW50IHByZWZzO1xuK1x0c3RydWN0IG5ldCAqbmV0O1xuIH07XG4gXG4gc3RhdGljIGlubGluZSBpbnQgaXB2Nl9zYWRkcl9wcmVmZXJyZWQoaW50IHR5cGUpXG5AQCAtMTU5MSw2ICsxNTk1LDgwIEBAIHN0YXRpYyBib29sIGlwdjZfYWxsb3dfb3B0aW1pc3RpY19kYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxuICNlbmRpZlxuIH1cbiBcbisvKiBcInNvdXJjZSBhZGRyZXNzIGlzIHByZWZlcmFibGUgaWYgdGhlIGNob3NlbiBuZXh0aG9wIGFkdmVydGlzZWQgaXQgYXMgYSBQSU9cIlxuKyAqID1cdTAwM2UgY29uc2lkZXIgJ2FkdmVydGlzZWQgYXMgYSBQSU8nIHRvIGJlICd0aGUgcm91dGVzIGZvciB0aGUgc291cmNlJ3Mgc3VidHJlZVxuKyAqICAgIGluY2x1ZGUgb25lIHdpdGggdGhlIHNhbWUgbmV4dGhvcCdcbisgKlxuKyAqIE5COiB0aGVyZSBpcyBubyBiYWNrdHJhY2tpbmcgaW4gdGhlIHN1YnRyZWUgaGVyZSwgdGhpcyBpcyBpbnRlbnRpb25hbCAtXG4rICogZWFjaCBwcmVmaXggc2VlbiAoYW5kIGFjY2VwdGVkKSBpbiBQSU9zIGNyZWF0ZXMgZXNzZW50aWFsbHkgYSBcInpvbmVcIiB3aGljaFxuKyAqIGlzIG91ciBzZWFyY2ggc2NvcGUuXG4rICovXG4rc3RhdGljIGludCBpcHY2X3NhZGRyX3J1bGU1cDUoc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqc2FkZHJfZHN0KVxuK3tcbitcdGNvbnN0IHN0cnVjdCBydDZfaW5mbyAqcnQsICpjbXBfcnQ7XG4rXHRzdHJ1Y3QgZHN0X2VudHJ5ICpjbXBfZHN0O1xuK1x0c3RydWN0IGZpYjZfaW5mbyAqZjZpO1xuK1x0aW50IHJldCA9IDA7XG4rXG4rXHRydCA9IGNvbnRhaW5lcl9vZihzYWRkcl9kc3QtXHUwMDNlZHN0LCBzdHJ1Y3QgcnQ2X2luZm8sIGRzdCk7XG4rXG4rXHQvKiBmbDYtXHUwMDNlc2FkZHIgaXMgOjosIGNmLiBjaGVjayBhdCB0aGUgdG9wIG9mIGlwdjZfY29tbW9uX2dldF9zYWRkcigpICovXG4rXHRzYWRkcl9kc3QtXHUwMDNlZmw2LVx1MDAzZXNhZGRyID0gc2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHI7XG4rXHRjbXBfZHN0ID0gaXA2X3JvdXRlX291dHB1dChzYWRkcl9kc3QtXHUwMDNlbmV0LCBzYWRkcl9kc3QtXHUwMDNlc2ssXG4rXHRcdFx0XHQgICBzYWRkcl9kc3QtXHUwMDNlZmw2KTtcbitcdG1lbXNldChcdTAwMjZzYWRkcl9kc3QtXHUwMDNlZmw2LVx1MDAzZXNhZGRyLCAwLCBzaXplb2Yoc2FkZHJfZHN0LVx1MDAzZWZsNi1cdTAwM2VzYWRkcikpO1xuK1xuK1x0aWYgKGNtcF9kc3QtXHUwMDNlZXJyb3IpXG4rXHRcdGdvdG8gb3V0X3JlbGVhc2VfZHN0O1xuK1xuK1x0Y21wX3J0ID0gY29udGFpbmVyX29mKGNtcF9kc3QsIHN0cnVjdCBydDZfaW5mbywgZHN0KTtcbitcbitcdC8qIHRoaXMgbXVzdCB3b3JrIGlmIF9hbnlfIG5leHRob3AgbWF0Y2hlczsgdGhlIG5vbi1zdWJ0cmVlIGJlc3QgbWF5XG4rXHQgKiBub3QgYmUgaW4gc2FtZSBvcmRlciBhcyBzdWJ0cmVlIGJlc3RcbitcdCAqL1xuK1x0Zm9yIChmNmkgPSByY3VfZGVyZWZlcmVuY2UoY21wX3J0LVx1MDAzZWZyb20pOyBmNmk7XG4rXHQgICAgIGY2aSA9IHJjdV9kZXJlZmVyZW5jZShmNmktXHUwMDNlZmliNl9uZXh0KSkge1xuK1x0XHRzdHJ1Y3QgZmliNl9uaCAqZjZuID0gZjZpLVx1MDAzZWZpYjZfbmg7XG4rXHRcdHN0cnVjdCBmaWI2X2luZm8gKnNpYmxpbmc7XG4rXG4rXHRcdC8qIG5vbi1zdWJ0cmVlIHJvdXRlOiBzYXlzIG5vdGhpbmcgYWJvdXQgcm91dGVyIGFkdmVydGlzaW5nIHRoaXMgc291cmNlICovXG4rXHRcdGlmIChmNmktXHUwMDNlZmliNl9zcmMucGxlbiA9PSAwKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRpZiAoZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZGV2ICE9IHNhZGRyX2RzdC1cdTAwM2Vkc3QtXHUwMDNlZGV2IHx8XG4rXHRcdCAgICBmNm4tXHUwMDNlbmhfY29tbW9uLm5oY19nd19mYW1pbHkgIT0gQUZfSU5FVDYpXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdGlmIChpcHY2X2FkZHJfZXF1YWwoXHUwMDI2ZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZ3cuaXB2NixcbitcdFx0XHRcdCAgICBcdTAwMjZydC1cdTAwM2VydDZpX2dhdGV3YXkpKSB7XG4rXHRcdFx0cmV0ID0gMTtcbitcdFx0XHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcbitcdFx0fVxuK1xuK1x0XHRpZiAoIWY2aS1cdTAwM2VmaWI2X25zaWJsaW5ncylcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzaWJsaW5nLCBcdTAwMjZmNmktXHUwMDNlZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncykge1xuK1x0XHRcdGY2biA9IHNpYmxpbmctXHUwMDNlZmliNl9uaDtcbitcbitcdFx0XHRpZiAoZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZGV2ICE9IHNhZGRyX2RzdC1cdTAwM2Vkc3QtXHUwMDNlZGV2IHx8XG4rXHRcdFx0ICAgIGY2bi1cdTAwM2VuaF9jb21tb24ubmhjX2d3X2ZhbWlseSAhPSBBRl9JTkVUNilcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRcdGlmIChpcHY2X2FkZHJfZXF1YWwoXHUwMDI2ZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZ3cuaXB2NixcbitcdFx0XHRcdFx0ICAgIFx1MDAyNnJ0LVx1MDAzZXJ0NmlfZ2F0ZXdheSkpIHtcbitcdFx0XHRcdHJldCA9IDE7XG4rXHRcdFx0XHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcbitcdFx0XHR9XG4rXHRcdH1cbitcdH1cbitcbitvdXRfcmVsZWFzZV9kc3Q6XG4rXHRkc3RfcmVsZWFzZShjbXBfZHN0KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX3Njb3JlICpzY29yZSxcbiBcdFx0XHQgICAgICAgc3RydWN0IGlwdjZfc2FkZHJfZHN0ICpkc3QsXG5AQCAtMTYxOSw3ICsxNjk3LDcgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIElQVjZfU0FERFJfUlVMRV9MT0NBTDpcbiBcdFx0LyogUnVsZSAxOiBQcmVmZXIgc2FtZSBhZGRyZXNzICovXG4tXHRcdHJldCA9IGlwdjZfYWRkcl9lcXVhbChcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgZHN0LVx1MDAzZWFkZHIpO1xuK1x0XHRyZXQgPSBpcHY2X2FkZHJfZXF1YWwoXHUwMDI2c2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHIsIFx1MDAyNmRzdC1cdTAwM2VmbDYtXHUwMDNlZGFkZHIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgSVBWNl9TQUREUl9SVUxFX1NDT1BFOlxuIFx0XHQvKiBSdWxlIDI6IFByZWZlciBhcHByb3ByaWF0ZSBzY29wZVxuQEAgLTE2NzUsNiArMTc1MywyNCBAQCBzdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX2V2YWwoc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRyZXQgPSAoIWRzdC1cdTAwM2VpZmluZGV4IHx8XG4gXHRcdCAgICAgICBkc3QtXHUwMDNlaWZpbmRleCA9PSBzY29yZS1cdTAwM2VpZmEtXHUwMDNlaWRldi1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCk7XG4gXHRcdGJyZWFrO1xuK1x0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1A6XG4rXHRcdC8qIFJ1bGUgNS41OiBQcmVmZXIgc291cmNlcyBhZHZlcnRpc2VkIGJ5IGNob3NlbiBuZXh0LWhvcCAqL1xuK1xuK1x0XHQvKiBXaXRob3V0IHN1YnRyZWVzLCB0aGUgc291cmNlIGFkZHJlc3Mgd2lsbCBtYWtlIG5vIGRpZmZlcmVuY2VcbitcdFx0ICogaW4gdGhlIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBpbiBydWxlNXA1LiAgVGhlcmVmb3JlIHRoZSBydWxlXG4rXHRcdCAqIDUuNSBjaGVjayBiZWNvbWVzIHVzZWxlc3MuICBUaGlzIHdvdWxkbid0IHJlc3VsdCBpbiBhbnlcbitcdFx0ICogZXJyb3JzLCBidXQgaXA2X3JvdXRlX291dHB1dCBpc24ndCBmcmVlLCBzbyBpZiBzdWJ0cmVlcyBhcmVcbitcdFx0ICogZGlzYWJsZWQgc2F2ZSBzb21lIGN5Y2xlcyBieSBza2lwcGluZyB0aGlzIGVudGlyZWx5LlxuK1x0XHQgKlxuK1x0XHQgKiBUaGlzIGlzIGRvbmUgdGhyb3VnaCBzdWJ0cmVlc19lbmFibGVkIHRvIGhhdmUgdGhlIGNvZGVcbitcdFx0ICogY29tcGlsZWQgcmVnYXJkbGVzcy5cbitcdFx0ICovXG4rXHRcdGlmIChmaWI2X3JvdXRlc19yZXF1aXJlX3NyYyhuZXQpIFx1MDAyNlx1MDAyNiBkc3QtXHUwMDNlZHN0XG4rXHRcdCAgICBcdTAwMjZcdTAwMjYgIWRzdC1cdTAwM2Vkc3QtXHUwMDNlZXJyb3IpXG4rXHRcdFx0cmV0ID0gaXB2Nl9zYWRkcl9ydWxlNXA1KHNjb3JlLCBkc3QpO1xuK1x0XHRlbHNlXG4rXHRcdFx0cmV0ID0gMTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIElQVjZfU0FERFJfUlVMRV9MQUJFTDpcbiBcdFx0LyogUnVsZSA2OiBQcmVmZXIgbWF0Y2hpbmcgbGFiZWwgKi9cbiBcdFx0cmV0ID0gaXB2Nl9hZGRyX2xhYmVsKG5ldCxcbkBAIC0xNjk3LDExICsxNzkzLDExIEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdCAqXHQgICAgbm9uLU9SQ0hJRCB2cyBub24tT1JDSElEXG4gXHRcdCAqL1xuIFx0XHRyZXQgPSAhKGlwdjZfYWRkcl9vcmNoaWQoXHUwMDI2c2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHIpIF5cbi1cdFx0XHRpcHY2X2FkZHJfb3JjaGlkKGRzdC1cdTAwM2VhZGRyKSk7XG4rXHRcdFx0aXB2Nl9hZGRyX29yY2hpZChcdTAwMjZkc3QtXHUwMDNlZmw2LVx1MDAzZWRhZGRyKSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUFJFRklYOlxuIFx0XHQvKiBSdWxlIDg6IFVzZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeCAqL1xuLVx0XHRyZXQgPSBpcHY2X2FkZHJfZGlmZihcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgZHN0LVx1MDAzZWFkZHIpO1xuK1x0XHRyZXQgPSBpcHY2X2FkZHJfZGlmZihcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgXHUwMDI2ZHN0LVx1MDAzZWZsNi1cdTAwM2VkYWRkcik7XG4gXHRcdGlmIChyZXQgXHUwMDNlIHNjb3JlLVx1MDAzZWlmYS1cdTAwM2VwcmVmaXhfbGVuKVxuIFx0XHRcdHJldCA9IHNjb3JlLVx1MDAzZWlmYS1cdTAwM2VwcmVmaXhfbGVuO1xuIFx0XHRzY29yZS1cdTAwM2VtYXRjaGxlbiA9IHJldDtcbkBAIC0xODE5LDkgKzE5MTUsMTAgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9tYXN0ZXIoc3RydWN0IG5ldCAqbmV0LFxuIFx0cmV0dXJuIGhpc2NvcmVfaWR4O1xuIH1cbiBcbi1pbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4tXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgcHJlZnMsXG4tXHRcdCAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxuK2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSxcbitcdFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4rXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IHByZWZzLFxuK1x0XHQgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpXG4ge1xuIFx0c3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgc2NvcmVzWzJdLCAqaGlzY29yZTtcbiBcdHN0cnVjdCBpcHY2X3NhZGRyX2RzdCBkc3Q7XG5AQCAtMTgzMiwxMSArMTkyOSwxOCBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4gXHRpbnQgaGlzY29yZV9pZHggPSAwO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHRkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoZGFkZHIpO1xuLVx0ZHN0LmFkZHIgPSBkYWRkcjtcbitcdC8qIHdlIHNob3VsZCBuZXZlciBlbmQgdXAgaGVyZSB3aXRoIGEgbm9uLWVtcHR5IHNhZGRyLiAqL1xuK1x0aWYgKFdBUk5fT05fT05DRSghaXB2Nl9hZGRyX2FueShcdTAwMjZmbDYtXHUwMDNlc2FkZHIpKSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoXHUwMDI2Zmw2LVx1MDAzZWRhZGRyKTtcbitcdGRzdC5uZXQgPSBuZXQ7XG4rXHRkc3QuZmw2ID0gZmw2O1xuK1x0ZHN0LnNrID0gc2s7XG4rXHRkc3QuZHN0ID0gZHN0X2VudHJ5O1xuIFx0ZHN0LmlmaW5kZXggPSBkc3RfZGV2ID8gZHN0X2Rldi1cdTAwM2VpZmluZGV4IDogMDtcbiBcdGRzdC5zY29wZSA9IF9faXB2Nl9hZGRyX3NyY19zY29wZShkc3RfdHlwZSk7XG4tXHRkc3QubGFiZWwgPSBpcHY2X2FkZHJfbGFiZWwobmV0LCBkYWRkciwgZHN0X3R5cGUsIGRzdC5pZmluZGV4KTtcbitcdGRzdC5sYWJlbCA9IGlwdjZfYWRkcl9sYWJlbChuZXQsIFx1MDAyNmZsNi1cdTAwM2VkYWRkciwgZHN0X3R5cGUsIGRzdC5pZmluZGV4KTtcbiBcdGRzdC5wcmVmcyA9IHByZWZzO1xuIFxuIFx0c2NvcmVzW2hpc2NvcmVfaWR4XS5ydWxlID0gLTE7XG5AQCAtMTkxMSwxMSArMjAxNSwyOSBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4gXHRpZiAoIWhpc2NvcmUtXHUwMDNlaWZhKVxuIFx0XHRyZXQgPSAtRUFERFJOT1RBVkFJTDtcbiBcdGVsc2Vcbi1cdFx0KnNhZGRyID0gaGlzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcjtcbitcdFx0Zmw2LVx1MDAzZXNhZGRyID0gaGlzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcjtcbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4rRVhQT1JUX1NZTUJPTChpcHY2X2ZsX2dldF9zYWRkcik7XG4rXG4raW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuK1x0XHQgICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgdW5zaWduZWQgaW50IHByZWZzLFxuK1x0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcilcbit7XG4rXHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbitcdGludCByZXQ7XG4rXG4rXHRtZW1zZXQoXHUwMDI2Zmw2LCAwLCBzaXplb2YoZmw2KSk7XG4rXHRmbDYuZGFkZHIgPSAqZGFkZHI7XG4rXG4rXHRyZXQgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsIE5VTEwsIGRzdF9kZXYsIE5VTEwsIHByZWZzLCBcdTAwMjZmbDYpO1xuK1x0aWYgKCFyZXQpXG4rXHRcdCpzYWRkciA9IGZsNi5zYWRkcjtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuIEVYUE9SVF9TWU1CT0woaXB2Nl9kZXZfZ2V0X3NhZGRyKTtcbiBcbiBzdGF0aWMgaW50IF9faXB2Nl9nZXRfbGxhZGRyKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHN0cnVjdCBpbjZfYWRkciAqYWRkcixcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmliLmMgYi9uZXQvaXB2Ni9pcDZfZmliLmNcbmluZGV4IGExMzBjZGZhZWJmYmVlLi4yNzNmMmJmYzUyODY2OSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9maWIuY1xuKysrIGIvbmV0L2lwdjYvaXA2X2ZpYi5jXG5AQCAtMTY1Niw4ICsxNjU2LDExIEBAIHN0YXRpYyBzdHJ1Y3QgZmliNl9ub2RlICpmaWI2X25vZGVfbG9va3VwXzEoc3RydWN0IGZpYjZfbm9kZSAqcm9vdCxcbiBcdFx0XHRcdFx0c3RydWN0IGZpYjZfbm9kZSAqc2ZuO1xuIFx0XHRcdFx0XHRzZm4gPSBmaWI2X25vZGVfbG9va3VwXzEoc3VidHJlZSxcbiBcdFx0XHRcdFx0XHRcdFx0IGFyZ3MgKyAxKTtcbi1cdFx0XHRcdFx0aWYgKCFzZm4pXG4rXHRcdFx0XHRcdGlmICghc2ZuKSB7XG4rXHRcdFx0XHRcdFx0aWYgKGZuLVx1MDAzZWZuX2ZsYWdzIFx1MDAyNiBSVE5fUlRJTkZPKVxuK1x0XHRcdFx0XHRcdFx0cmV0dXJuIGZuO1xuIFx0XHRcdFx0XHRcdGdvdG8gYmFja3RyYWNrO1xuK1x0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGZuID0gc2ZuO1xuIFx0XHRcdFx0fVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuaW5kZXggMzY4ZTRmYTNiNDNjYTIuLjAzYjhkNDJkOWRmOWVmIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXG4rKysgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbkBAIC0xMTQzLDI3ICsxMTQzLDQwIEBAIHN0YXRpYyBpbnQgaXA2X2RzdF9sb29rdXBfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbiBcdGludCBmbGFncyA9IDA7XG4gXG4gXHQvKiBUaGUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIHRoaXMgd291bGQgYmUgdG8gZG9cbi1cdCAqIGlwNl9yb3V0ZV9nZXRfc2FkZHIsIGFuZCB0aGVuIGlwNl9yb3V0ZV9vdXRwdXQ7IGhvd2V2ZXIsXG4rXHQgKiBpcHY2X2ZsX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcbiBcdCAqIHRoZSByb3V0ZS1zcGVjaWZpYyBwcmVmZXJyZWQgc291cmNlIGZvcmNlcyB0aGVcbi1cdCAqIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBfYmVmb3JlXyBpcDZfcm91dGVfZ2V0X3NhZGRyLlxuK1x0ICogaXA2X3JvdXRlX291dHB1dCBjYWxsIF9iZWZvcmVfIGlwdjZfZmxfZ2V0X3NhZGRyLlxuIFx0ICpcbiBcdCAqIEluIHNvdXJjZSBzcGVjaWZpYyByb3V0aW5nIChubyBzcmM9YW55IGRlZmF1bHQgcm91dGUpLFxuIFx0ICogaXA2X3JvdXRlX291dHB1dCB3aWxsIGZhaWwgZ2l2ZW4gc3JjPWFueSBzYWRkciwgdGhvdWdoLCBzb1xuIFx0ICogdGhhdCdzIHdoeSB3ZSB0cnkgaXQgYWdhaW4gbGF0ZXIuXG4gXHQgKi9cbiBcdGlmIChpcHY2X2FkZHJfYW55KFx1MDAyNmZsNi1cdTAwM2VzYWRkcikpIHtcbitcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmwzbWRldjtcbitcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiBcdFx0c3RydWN0IGZpYjZfaW5mbyAqZnJvbTtcbiBcdFx0c3RydWN0IHJ0Nl9pbmZvICpydDtcbitcdFx0Ym9vbCBzYW1lX3ZyZjtcbiBcbiBcdFx0KmRzdCA9IGlwNl9yb3V0ZV9vdXRwdXQobmV0LCBzaywgZmw2KTtcbiBcdFx0cnQgPSAoKmRzdCktXHUwMDNlZXJyb3IgPyBOVUxMIDogZHN0X3J0Nl9pbmZvKCpkc3QpO1xuIFxuIFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdGZyb20gPSBydCA/IHJjdV9kZXJlZmVyZW5jZShydC1cdTAwM2Vmcm9tKSA6IE5VTEw7XG4tXHRcdGVyciA9IGlwNl9yb3V0ZV9nZXRfc2FkZHIobmV0LCBmcm9tLCBcdTAwMjZmbDYtXHUwMDNlZGFkZHIsXG4tXHRcdFx0XHRcdCAgc2sgPyBSRUFEX09OQ0UoaW5ldDZfc2soc2spLVx1MDAzZXNyY3ByZWZzKSA6IDAsXG4tXHRcdFx0XHRcdCAgZmw2LVx1MDAzZWZsb3dpNl9sM21kZXYsXG4tXHRcdFx0XHRcdCAgXHUwMDI2Zmw2LVx1MDAzZXNhZGRyKTtcbitcbitcdFx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBmbDYtXHUwMDNlZmxvd2k2X2wzbWRldik7XG4rXHRcdGlmICghZnJvbSB8fCAhZnJvbS1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbiB8fCBsM21kZXYpXG4rXHRcdFx0ZGV2ID0gZnJvbSA/IGZpYjZfaW5mb19uaF9kZXYoZnJvbSkgOiBOVUxMO1xuK1x0XHRzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2O1xuK1x0XHRpZiAoZnJvbSBcdTAwMjZcdTAwMjYgZnJvbS1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbiBcdTAwMjZcdTAwMjYgc2FtZV92cmYpIHtcbitcdFx0XHRmbDYtXHUwMDNlc2FkZHIgPSBmcm9tLVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuK1x0XHRcdGVyciA9IDA7XG4rXHRcdH0gZWxzZVxuK1x0XHRcdGVyciA9IGlwdjZfZmxfZ2V0X3NhZGRyKG5ldCwgKmRzdCxcbitcdFx0XHRcdFx0XHRzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgc2ssXG4rXHRcdFx0XHRcdFx0c2sgPyBSRUFEX09OQ0UoaW5ldDZfc2soc2spLVx1MDAzZXNyY3ByZWZzKSA6IDAsXG4rXHRcdFx0XHRcdFx0Zmw2KTtcbitcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gXHRcdGlmIChlcnIpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcbmluZGV4IGExMzAxMzM0ZGE0OGMwLi43MDRhZmUyZGRlYTdjMiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC01ODUwLDkgKzU4NTAsMTkgQEAgc3RhdGljIGludCBydDZfZmlsbF9ub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRpZiAobmxhX3B1dF91MzIoc2tiLCBSVEFfSUlGLCBpaWYpKVxuIFx0XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXHR9IGVsc2UgaWYgKGRlc3QpIHtcbi1cdFx0c3RydWN0IGluNl9hZGRyIHNhZGRyX2J1Zjtcbi1cdFx0aWYgKGlwNl9yb3V0ZV9nZXRfc2FkZHIobmV0LCBydCwgZGVzdCwgMCwgMCwgXHUwMDI2c2FkZHJfYnVmKSA9PSAwIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgbmxhX3B1dF9pbjZfYWRkcihza2IsIFJUQV9QUkVGU1JDLCBcdTAwMjZzYWRkcl9idWYpKVxuK1x0XHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmLCAqc2FkZHIgPSBOVUxMO1xuK1xuK1x0XHRpZiAocnQtXHUwMDNlZmliNl9wcmVmc3JjLnBsZW4pIHtcbitcdFx0XHRzYWRkciA9IFx1MDAyNnJ0LVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBmaWI2X2luZm9fbmhfZGV2KHJ0KTtcbitcbitcdFx0XHRpZiAoaXB2Nl9kZXZfZ2V0X3NhZGRyKG5ldCwgZGV2LCBkZXN0LCAwLFxuK1x0XHRcdFx0XHQgICAgICAgXHUwMDI2c2FkZHJfYnVmKSA9PSAwKVxuK1x0XHRcdFx0c2FkZHIgPSBcdTAwMjZzYWRkcl9idWY7XG4rXHRcdH1cbitcbitcdFx0aWYgKHNhZGRyIFx1MDAyNlx1MDAyNiBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIHNhZGRyKSlcbiBcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi5jMDdkMmFlYmFkNjk1NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5AQCAtNTMsNiArNTMsNyBAQCBURVNUX1BST0dTIDo9IFxcXG4gXHRpcHY2X2Zsb3dsYWJlbC5zaCBcXFxuIFx0aXB2Nl9mb3JjZV9mb3J3YXJkaW5nLnNoIFxcXG4gXHRpcHY2X3JvdXRlX3VwZGF0ZV9zb2Z0X2xvY2t1cC5zaCBcXFxuK1x0aXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weSBcXFxuIFx0aXB2dGFwX3Rlc3Quc2ggXFxcbiBcdGwyX3Rvc190dGxfaW5oZXJpdC5zaCBcXFxuIFx0bDJ0cC5zaCBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnXG5pbmRleCBlMWNlMzVjMmFiYmVmMy4uYjBiNjY0MTJiOWYzZTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnXG5AQCAtNDgsNiArNDgsNyBAQCBDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15XG4gQ09ORklHX0lQVjZfUlBMX0xXVFVOTkVMPXlcbiBDT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcbiBDT05GSUdfSVBWNl9TSVQ9eVxuK0NPTkZJR19JUFY2X1NVQlRSRUVTPXlcbiBDT05GSUdfSVBWNl9WVEk9eVxuIENPTkZJR19JUFZMQU49bVxuIENPTkZJR19JUFZUQVA9bVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHlcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjgyYjM5YmE5OTFkYTlcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5XG5AQCAtMCwwICsxLDIzMSBAQFxuKyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rIyBDb3B5cmlnaHQgKEMpIDIwMjMtMjAyNiAgRGF2aWQgJ2VxdWlub3gnIExhbXBhcnRlclxuK1wiXCJcIlxuK1JGQyA2NzI0IChJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbikgcnVsZSA1LjUgdGVzdHNcbitcbitGb3IgcmVmZXJlbmNlOlxuK1xuKyAgIFJ1bGUgNS41OiBQcmVmZXIgYWRkcmVzc2VzIGluIGEgcHJlZml4IGFkdmVydGlzZWQgYnkgdGhlIG5leHQtaG9wLlxuKyAgIElmIFNBIG9yIFNBJ3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IHRoZSBzZWxlY3RlZCBuZXh0LWhvcCB0aGF0IHdpbGxcbisgICBiZSB1c2VkIHRvIHNlbmQgdG8gRCBhbmQgU0Igb3IgU0IncyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnRcbisgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJ3MgcHJlZml4IGlzXG4rICAgYXNzaWduZWQgYnkgdGhlIG5leHQtaG9wIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNlbmQgdG8gRCBhbmQgU0Egb3JcbisgICBTQSdzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudCBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0IuXG4rXG4rKGFuZCBzaW5jZSBpdCBwcm92aWRlcyB0aGUgXCJjb3VudGVycG9pbnRcIjopXG4rXG4rICAgUnVsZSA4OiBVc2UgbG9uZ2VzdCBtYXRjaGluZyBwcmVmaXguXG4rICAgSWYgQ29tbW9uUHJlZml4TGVuKFNBLCBEKSBcdTAwM2UgQ29tbW9uUHJlZml4TGVuKFNCLCBEKSwgdGhlbiBwcmVmZXIgU0EuXG4rICAgU2ltaWxhcmx5LCBpZiBDb21tb25QcmVmaXhMZW4oU0IsIEQpIFx1MDAzZSBDb21tb25QcmVmaXhMZW4oU0EsIEQpLCB0aGVuXG4rICAgcHJlZmVyIFNCLlxuK1xuK05vdGUgcnVsZSA1LjUgd2FzIG9yaWdpbmFsbHkgb3B0aW9uYWwgYnV0IG1hZGUgbWFuZGF0b3J5IGJ5XG4rZHJhZnQtaWV0Zi02bWFuLXJmYzY3MjQtdXBkYXRlICh3aGljaCBhdCB0aGUgcG9pbnQgb2YgY3JlYXRpb24gb2YgdGhpcyB0ZXN0XG4rd2FzIGFscmVhZHkgXCJkb25lXCIgYXQgdGhlIElFVEYgYnV0IHdhaXRpbmcgaW4gdGhlIFJGQyBlZGl0b3IgcXVldWUgZHVlIHRvIGFcbitibG9ja2luZyBkZXBlbmRlbmN5LilcbitcIlwiXCJcbitcbitmcm9tIHNvY2tldCBpbXBvcnQgc29ja2V0LCBBRl9JTkVUNiwgU09DS19ER1JBTVxuK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwc1xuK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZVxuK1xuK2Zyb20gbGliLnB5IGltcG9ydCBrc2Z0X3J1biwga3NmdF9leGl0LCBrc2Z0X2VxXG4rZnJvbSBsaWIucHkgaW1wb3J0IE5ldE5TLCBOZXROU0VudGVyXG4rZnJvbSBsaWIucHkgaW1wb3J0IGlwXG4rXG4rXG4rZGVmIHNlbGVjdF9hZGRyKGRlc3QpOlxuKyAgICBcIlwiXCJcbisgICAgY29ubmVjdCgpICsgZ2V0c29ja25hbWUoKSB0byBmaWd1cmUgb3V0IHdoYXQgd2FzIHNlbGVjdGVkIGFzIHNvdXJjZSBhZGRyZXNzXG4rICAgIFwiXCJcIlxuKyAgICBzb2NrID0gc29ja2V0KEFGX0lORVQ2LCBTT0NLX0RHUkFNLCAwKVxuKyAgICBzb2NrLmNvbm5lY3QoKGRlc3QsIDEyMzQ1KSlcbisgICAgcmV0dXJuIHNvY2suZ2V0c29ja25hbWUoKVswXVxuK1xuK1xuK2RlZiBpbl9uZXRucyhmdW5jOiBDYWxsYWJsZVtbXSwgTm9uZV0pIC1cdTAwM2UgQ2FsbGFibGVbW10sIE5vbmVdOlxuKyAgICBcIlwiXCJcbisgICAgcHl0aG9uIGRlY29yYXRvciB0byBwdXQgdGVzdCBmdW5jdGlvbiBpbiBuZXRuc1xuKyAgICBcIlwiXCJcbitcbisgICAgQHdyYXBzKGZ1bmMpXG4rICAgIGRlZiB3cmFwcGVkKCkgLVx1MDAzZSBOb25lOlxuKyAgICAgICAgd2l0aCBOZXROUygpIGFzIHRlc3RuczpcbisgICAgICAgICAgICB3aXRoIE5ldE5TRW50ZXIoc3RyKHRlc3RucykpOlxuKyAgICAgICAgICAgICAgICBmdW5jKClcbitcbisgICAgcmV0dXJuIHdyYXBwZWRcbitcbitcbitAaW5fbmV0bnNcbitkZWYgdGVzdF9iYXNpYygpIC1cdTAwM2UgTm9uZTpcbisgICAgXCJcIlwiXG4rICAgIFNpbXBsZSBcdTAwMjYgbW9zdCBjb21tb24gY2FzZSBmb3IgUkZDNjcyNCBydWxlIDUuNTogbXVsdGlwbGUgZGVmYXVsdCByb3V0ZXNcbisgICAgXCJcIlwiXG4rICAgIGlwKFwibGluayBhZGQgdHlwZSB2ZXRoXCIpXG4rICAgIGlwKFwibGluayBzZXQgdmV0aDAgdXBcIilcbisgICAgaXAoXCJsaW5rIHNldCB2ZXRoMSB1cFwiKVxuKyAgICBpcChcImFkZHIgYWRkIDIwMDE6ZGI4OjEwOjoxLzY0ICAgZGV2IHZldGgwIG5vZGFkXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTAwMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFwiKVxuKyAgICBpcChcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCBtZXRyaWMgMjAwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjEwMDE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDhcIilcbitcbisgICAgaXAoXCItNiByb3V0ZSBkZWwgZGVmYXVsdCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFwiKVxuK1xuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTE6OlwiKSwgXCIyMDAxOmRiODoxMDAwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTAwMTo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJydWxlIDUuNSBcdTAwM2UgcnVsZSA4XCIpXG4rXG4rXG4rQGluX25ldG5zXG4rZGVmIHRlc3Rfbmhfb2JqKCkgLVx1MDAzZSBOb25lOlxuKyAgICBcIlwiXCJcbisgICAgU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggbmV4dGhvcCBvYmplY3RzIGZvciB0aGUgZGVmYXVsdCByb3V0ZVxuK1xuKyAgICBOQjogVGhlIGtlcm5lbCBkb2Vzbid0IGN1cnJlbnRseSBhbGxvdyBuZXh0aG9wIG9iamVjdHMgZm9yIHN1YnRyZWUgcm91dGVzLlxuKyAgICBcIlwiXCJcbitcbisgICAgaXAoXCJsaW5rIGFkZCB0eXBlIHZldGhcIilcbisgICAgaXAoXCJsaW5rIHNldCB2ZXRoMCB1cFwiKVxuKyAgICBpcChcImxpbmsgc2V0IHZldGgxIHVwXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCJhZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwiKVxuK1xuKyAgICAjIGRpc3RpbmN0IG5leHRob3Agb2JqZWN0cyBhcmUgdXNlZCwgYmVjYXVzZSB3aGF0IG1hdHRlcnMgaXMgdGhlIG5leHRob3BcbisgICAgIyBpdHNlbGYsIG5vdCB0aGUgbmV4dGhvcCBvYmplY3QuICBUbyBjb3ZlciBldmVyeXRoaW5nLCBtYWtlIGEgZ3JvdXAuXG4rICAgIGlwKFwibmV4dGhvcCBhZGQgaWQgMTAxIHZpYSBmZTgwOjoxIGRldiB2ZXRoMFwiKVxuKyAgICBpcChcIm5leHRob3AgYWRkIGlkIDIwMSBncm91cCAxMDFcIilcbisgICAgaXAoXCJuZXh0aG9wIGFkZCBpZCAxMDIgdmlhIGZlODA6OjIgZGV2IHZldGgwXCIpXG4rICAgIGlwKFwibmV4dGhvcCBhZGQgaWQgMjAyIGdyb3VwIDEwMlwiKVxuK1xuKyAgICBpcChcIi02IHJvdXRlIGFkZCBkZWZhdWx0IG5oaWQgMjAxIG1ldHJpYyAxMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBuaGlkIDIwMiBtZXRyaWMgMjAwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjEwMDE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDhcIilcbitcbisgICAgaXAoXCItNiByb3V0ZSBkZWwgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJiYXNlbGluZSBwYXNzXCIpXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMDAxOjpcIiksIFwiMjAwMTpkYjg6MTAwMDo6MVwiLCBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDhcIilcbitcbitcbitAaW5fbmV0bnNcbitkZWYgdGVzdF9sb3dfbWV0cmljKCkgLVx1MDAzZSBOb25lOlxuKyAgICBcIlwiXCJcbisgICAgQ2hlY2sgdGhhdCBzdWJ0cmVlIHJvdXRlcyB0YWtlIGVmZmVjdCBldmVuIGlmIHRoZXkgYXJlIGhpZ2hlciBtZXRyaWNcbitcbisgICAgRm9yIGNoZWNraW5nIHRoYXQgXCJyb3V0ZXIgYWR2ZXJ0aXNlZCBwcmVmaXhcIiwgbWV0cmljIGlzIGlycmVsZXZhbnQuICBJdFxuKyAgICBtYXR0ZXJzIGZvciB0aGUgaW5pdGlhbCB1bnNwZWNpZmljIGxvb2t1cCB0byBmaW5kIGEgbmV4dGhvcCB0byBiZWdpbiB3aXRoLlxuKyAgICAoVGhlIGxhdGVyIHNvdXJjZSBhZGRyZXNzIGNoZWNrIGxvb2t1cCBkb2Vzbid0IGNoYW5nZSB0aGUgbmV4dGhvcCwgaS5lLlxuKyAgICB0aGUgZWZmZWN0cyBvZiBtZXRyaWNzIGFyZSBhbHJlYWR5IGRvbmUuKVxuKyAgICBcIlwiXCJcbisgICAgaXAoXCJsaW5rIGFkZCB0eXBlIHZldGhcIilcbisgICAgaXAoXCJsaW5rIHNldCB2ZXRoMCB1cFwiKVxuKyAgICBpcChcImxpbmsgc2V0IHZldGgxIHVwXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCJhZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwiKVxuKyAgICBpcChcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MyBkZXYgdmV0aDAgbWV0cmljIDUwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjEwMDE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDhcIilcbitcbisgICAgaXAoXCItNiByb3V0ZSBkZWwgZGVmYXVsdCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFwiKVxuK1xuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTE6OlwiKSwgXCIyMDAxOmRiODoxMDAwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTAwMTo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJydWxlIDUuNSBcdTAwM2UgcnVsZSA4XCIpXG4rXG4rXG4rQGluX25ldG5zXG4rZGVmIHRlc3Rfbm9fc3VidHJlZSgpIC1cdTAwM2UgTm9uZTpcbisgICAgXCJcIlwiXG4rICAgIEVuc3VyZSB0aGF0IG1hdGNoaW5nIG9uIGEgbm9uLXN1YnRyZWUgcm91dGUgZG9lc24ndCB0cmlnZ2VyIHJ1bGUgNS41XG4rXG4rICAgIChUaGlzIHdhcyBub24tb2J2aW91c2x5IGJyb2tlbiBpbiBlYXJsaWVyIHZlcnNpb25zIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMsXG4rICAgIGEgbm9uLXN1YnRyZWUgcm91dGUgd291bGQgc3RpbGwgbWF0Y2guICBNYWtlIHN1cmUgaXQgZG9lc24ndCBicmVhayBhZ2Fpbi4pXG4rICAgIFwiXCJcIlxuKyAgICBpcChcImxpbmsgYWRkIHR5cGUgdmV0aFwiKVxuKyAgICBpcChcImxpbmsgc2V0IHZldGgwIHVwXCIpXG4rICAgIGlwKFwibGluayBzZXQgdmV0aDEgdXBcIilcbisgICAgaXAoXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCJhZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwiKVxuKyAgICBpcChcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggdmlhIGZlODA6OjEgZGV2IHZldGgwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICBrc2Z0X2VxKFxuKyAgICAgICAgc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMDAxOjpcIiksXG4rICAgICAgICBcIjIwMDE6ZGI4OjEwOjoxXCIsXG4rICAgICAgICBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDgsIGlnbm9yaW5nIG5vbi1TQURSXCIsXG4rICAgIClcbitcbitcbitAaW5fbmV0bnNcbitkZWYgdGVzdF9sb25nZXIoKSAtXHUwMDNlIE5vbmU6XG4rICAgIFwiXCJcIlxuKyAgICBDaGVjayBmdW5jdGlvbmFsaXR5IGZvciBub24tZGVmYXVsdCBkZXN0aW5hdGlvbi5cbitcbisgICAgVGhpcyBpcyBleHBlY3RlZCB0byBiZSB2ZXJ5IHJhcmUgaW4gYWN0dWFsIHByYWN0aWNlLCBhbmQgZG9lc24ndCBkb1xuKyAgICBiYWNrdHJhY2tpbmcgKGFsc28gcmVmZXIgdG8ga2VybmVsIGRvY3MuKVxuKyAgICBcIlwiXCJcbisgICAgaXAoXCJsaW5rIGFkZCB0eXBlIHZldGhcIilcbisgICAgaXAoXCJsaW5rIHNldCB2ZXRoMCB1cFwiKVxuKyAgICBpcChcImxpbmsgc2V0IHZldGgxIHVwXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTAwMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAxMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIDIwMDE6ZGI4OjUwMDo6LzQ4IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFwiKVxuK1xuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcImJhc2VsaW5lIHBhc3NcIilcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjUwMDo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJydWxlIDUuNVwiKVxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6NTAwOmFhYTo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJydWxlIDUuNVwiKVxuK1xuKyAgICBpcChcIi02IHJvdXRlIGFkZCAyMDAxOmRiODo1MDA6YWFhOjovNjQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAxMDBcIilcbitcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjExOjpcIiksIFwiMjAwMTpkYjg6MTA6OjFcIiwgXCJiYXNlbGluZSBwYXNzXCIpXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODo1MDA6OlwiKSwgXCIyMDAxOmRiODoxMDAwOjoxXCIsIFwicnVsZSA1LjVcIilcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjUwMDphYWE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcIm5vIGJhY2t0cmFja2luZ1wiKVxuK1xuKyAgICBpcChcIi02IHJvdXRlIGRlbCAyMDAxOmRiODo1MDA6Oi80OCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6NTAwOjpcIiksIFwiMjAwMTpkYjg6MTA6OjFcIiwgXCJubyBiYWNrdHJhY2tpbmdcIilcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjUwMDphYWE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcIm5vIGJhY2t0cmFja2luZ1wiKVxuK1xuK1xuK2RlZiBtYWluKCkgLVx1MDAzZSBOb25lOlxuKyAgICBcIlwiXCJcbisgICAgUkZDNjcyNCBydWxlIDUuNSB0ZXN0IGRyaXZlclxuKyAgICBcIlwiXCJcbisgICAga3NmdF9ydW4oXG4rICAgICAgICBbXG4rICAgICAgICAgICAgdGVzdF9iYXNpYyxcbisgICAgICAgICAgICB0ZXN0X25oX29iaixcbisgICAgICAgICAgICB0ZXN0X2xvd19tZXRyaWMsXG4rICAgICAgICAgICAgdGVzdF9ub19zdWJ0cmVlLFxuKyAgICAgICAgICAgIHRlc3RfbG9uZ2VyLFxuKyAgICAgICAgXVxuKyAgICApXG4rICAgIGtzZnRfZXhpdCgpXG4rXG4rXG4raWYgX19uYW1lX18gPT0gXCJfX21haW5fX1wiOlxuKyAgICBtYWluKClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjE3OjI3LjU0NTkyNjAzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MDA1NzQ2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjYgU291cmNlIEFkZHJlc3MgU2VsZWN0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyB0aGUgSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gdG8gYWxpZ24gd2l0aCBSRkM2NzI0IHJ1bGUgNS41LiBMb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYGlwdjZfZmxfZ2V0X3NhZGRyYCwgYW5kIGl0J3MgYWxzbyBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgYGlwdjZfZGV2X2dldF9zYWRkcmAgYW5kIGZ1bmRhbWVudGFsbHkgY2hhbmdpbmcgYGlwNl9yb3V0ZV9nZXRfc2FkZHJgIOKAkyByZW1vdmluZyBhbmQgcmVwbGFjaW5nIGl0IGVudGlyZWx5LCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGFyY2hpdGVjdHVyYWwgc2hpZnQuIEl0IHRvdWNoZXMgcXVpdGUgYSBmZXcga2V5IGZpbGVzIGluIHRoZSBJUHY2IG5ldHdvcmtpbmcgc3RhY2ssIG5hbWVseSBgbmV0L2lwdjYvYWRkcmNvbmYuY2AsIGBuZXQvaXB2Ni9pcDZfb3V0cHV0LmNgLCBgbmV0L2lwdjYvcm91dGUuY2AsIGFuZCBgbmV0L2lwdjYvaXA2X2ZpYi5jYC5cblxuTXkgZmlyc3QgY29uY2VybiwgYXMgYWx3YXlzLCBpcyByZWFjaGFiaWxpdHkgYW5kIGNvcnJlY3RuZXNzLiBHaXZlbiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucywgSSBuZWVkIHRvIHZlcmlmeSB0aGlzIHZlcnkgY2FyZWZ1bGx5LiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBpcHY2X3NhZGRyX3J1bGU1cDVgIHdpdGhpbiBgbmV0L2lwdjYvYWRkcmNvbmYuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIG5ldyBydWxlIGlzIGltcGxlbWVudGVkLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIGBpcDZfcm91dGVfb3V0cHV0YCBhbmQgYW4gaXRlcmF0aW9uIG92ZXIgYGZpYjZfaW5mb2AuXG5cbkkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIFRoZSBjcml0aWNhbCBmdW5jdGlvbnMgaGVyZSBhcmU6XG5cbiogICBgaXB2Nl9zYWRkcl9ydWxlNXA1YFxuKiAgIGBpcHY2X2ZsX2dldF9zYWRkcmBcbiogICBgaXB2Nl9kZXZfZ2V0X3NhZGRyYFxuKiAgIGBpcHY2X2dldF9zYWRkcl9ldmFsYFxuXG5SZWdhcmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24sIHRoZSBwYXRjaCBzZWVtcyB0byByZXF1aXJlIGBJUFY2X1NVQlRSRUVTYCwgaW5kaWNhdGVkIGJ5IGNoYW5nZXMgaW4gYG5ldC9pcHY2L0tjb25maWdgLiBJdOKAmXMgZGVwZW5kZW50IG9uIGBJUFY2X01VTFRJUExFX1RBQkxFU2AuIFRoaXMgaXMgY3JpdGljYWwgZm9yIFJGQzY3MjQgcnVsZSA1LjUgc3VwcG9ydC4gU28sIEkgbmVlZCB0byBlbnN1cmUgYm90aCBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYXJlIGVuYWJsZWQgaW4gbXkgdGVzdCBzZXR1cC5cblxuTm93LCBsZXQncyBzZWUgaG93IGBpcHY2X3NhZGRyX3J1bGU1cDVgIGlzIGFjdHVhbGx5IHVzZWQuIEl0J3MgY2FsbGVkIGZyb20gYGlwdjZfZ2V0X3NhZGRyX2V2YWxgIHVuZGVyIGBJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1BgLiBgaXB2Nl9nZXRfc2FkZHJfZXZhbGAgaXMgdGhlbiBjYWxsZWQgZnJvbSBgaXB2Nl9nZXRfc2FkZHJfbWFzdGVyYC4gRmluYWxseSwgYGlwdjZfZ2V0X3NhZGRyX21hc3RlcmAgaXMgY2FsbGVkIGJ5IGBpcHY2X2ZsX2dldF9zYWRkcmAsIGFuZCBjcnVjaWFsbHksIGBpcHY2X2ZsX2dldF9zYWRkcmAgaXMgY2FsbGVkIGZyb20gYGlwNl9kc3RfbG9va3VwX3RhaWxgIHdpdGhpbiBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gVGhpcyBsYXN0IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBpcDZfZHN0X2xvb2t1cF9mbG93YC4gVGhpcyBwcm92aWRlcyB0aGUgY29tcGxldGUgY2hhaW4uIEkgbmVlZCB0byBrZWVwIHRoaXMgY2hhaW4gaW4gbWluZCB3aGVuIGNvbmZpZ3VyaW5nIHRlc3RjYXNlcyBhbmQgaGFybmVzc2VzLlxuXG5UaW1lIHRvIHVzZSBteSB0b29scyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTMxNDksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzozNi4yNDY1MDMyMjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2NTAyMzQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHY2X3NhZGRyX3J1bGU1cDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvYWRkcmNvbmYuYz0xNTgyPXN0YXRpYyBib29sIGlwdjZfYWxsb3dfb3B0aW1pc3RpY19kYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYy0xNjA1LSAqL1xcbm5ldC9pcHY2L2FkZHJjb25mLmM6MTYwNjpzdGF0aWMgaW50IGlwdjZfc2FkZHJfcnVsZTVwNShzdHJ1Y3QgaXB2Nl9zYWRkcl9zY29yZSAqc2NvcmUsXFxubmV0L2lwdjYvYWRkcmNvbmYuYy0xNjA3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqc2FkZHJfZHN0KVxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0xNjcyPXN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTE3NjktXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2ICFkc3QtXFx1MDAzZWRzdC1cXHUwMDNlZXJyb3IpXFxubmV0L2lwdjYvYWRkcmNvbmYuYzoxNzcwOlxcdFxcdFxcdHJldCA9IGlwdjZfc2FkZHJfcnVsZTVwNShzY29yZSwgZHN0KTtcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTE3NzEtXFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzozOS4xMTE1MzIxNDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE4NzA1NjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgTmV3IElQdjYgU291cmNlIEFkZHJlc3MgRmVhdHVyZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjb3VwbGUgb2YgbmV3IHBpZWNlcyByZWxhdGVkIHRvIElQdjYgc291cmNlIGFkZHJlc3NlczogYGlwdjZfc2FkZHJfcnVsZTVwNWAgYW5kIGBpcHY2X2ZsX2dldF9zYWRkcmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB1bmRlcnN0YW5kIGhvdyB0aGF0IHNlY29uZCBmdW5jdGlvbiwgYGlwdjZfZmxfZ2V0X3NhZGRyYCwgaXMgYmVpbmcgdXNlZC4gV2hlcmUgaXMgdGhpcyBuZXcgZnVuY3Rpb25hbGl0eSBpbnRlZ3JhdGVkIGludG8gdGhlIGV4aXN0aW5nIGZsb3cgc2V0dXA/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSBrZXkgdG8gZ3Jhc3BpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gZXhpc3RpbmcgbmV0d29yayBiZWhhdmlvciBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbnMuIEkgbmVlZCB0byBzZWUgdGhlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjA4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MTc6NDIuNjMwMjQwNjI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjExMTUwNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB2Nl9mbF9nZXRfc2FkZHJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvYWRkcmNvbmYuaD0xNDI9aW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5pbmNsdWRlL25ldC9hZGRyY29uZi5oLTE0NC1cXHRcXHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7XFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaDoxNDU6aW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxcbmluY2x1ZGUvbmV0L2FkZHJjb25mLmgtMTQ2LVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0xODk2PXN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfbWFzdGVyKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTkxNy1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjE5MTg6aW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0X2VudHJ5LFxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTkxOS1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjAyMi19XFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyMDIzOkVYUE9SVF9TWU1CT0woaXB2Nl9mbF9nZXRfc2FkZHIpO1xcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjAyNC1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTIwMjU9aW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYy0yMDM0LVxcbm5ldC9pcHY2L2FkZHJjb25mLmM6MjAzNTpcXHRyZXQgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsIE5VTEwsIGRzdF9kZXYsIE5VTEwsIHByZWZzLCBcXHUwMDI2Zmw2KTtcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTIwMzYtXFx0aWYgKCFyZXQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTEzNT1zdGF0aWMgaW50IGlwNl9kc3RfbG9va3VwX3RhaWwoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE0NS1cXHQvKiBUaGUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIHRoaXMgd291bGQgYmUgdG8gZG9cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTE0NjpcXHQgKiBpcHY2X2ZsX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE0Ny1cXHQgKiB0aGUgcm91dGUtc3BlY2lmaWMgcHJlZmVycmVkIHNvdXJjZSBmb3JjZXMgdGhlXFxubmV0L2lwdjYvaXA2X291dHB1dC5jOjExNDg6XFx0ICogaXA2X3JvdXRlX291dHB1dCBjYWxsIF9iZWZvcmVfIGlwdjZfZmxfZ2V0X3NhZGRyLlxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xMTQ5LVxcdCAqXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE3NC1cXHRcXHR9IGVsc2VcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTE3NTpcXHRcXHRcXHRlcnIgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsICpkc3QsXFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTExNzYtXFx0XFx0XFx0XFx0XFx0XFx0c2FtZV92cmYgPyBkZXYgOiBsM21kZXYsIHNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzo0NC43NTEzNjA3NzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTE2NzQxMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgSVB2NiBTb3VyY2UgQWRkcmVzcyBTZWxlY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBzb21lIGtleSBjaGFuZ2VzIHRvIGhvdyBJUHY2IHNvdXJjZSBhZGRyZXNzZXMgYXJlIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQncyByZWZhY3RvcmluZyBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCB0byBjYWxsIGBpcHY2X2ZsX2dldF9zYWRkcmAuIFRoZW4sIGl0J3MgYWxzbyBpbnRlZ3JhdGluZyBgaXB2Nl9mbF9nZXRfc2FkZHJgIGludG8gYGlwNl9kc3RfbG9va3VwX3RhaWxgLiAgVGhpcyBpcyBwcm9taXNpbmc7IGJvdGggb2YgdGhvc2UgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IHdpdGhpbiB0aGUgaG90IHBhdGgsIHNvIHRoaXMgc2hvdWxkIGJlIGhpdHRpbmcgdGhlIGRlc2lyZWQgdXNlIGNhc2UgYW5kIGZ1bmN0aW9uYWxpdHkuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9ucy4gSXQncyB1c2luZyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AuIEhvbGQgb24sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBwcm9wZXJseSBoYW5kbGVkLiBZZXMsIGBJUFY2X1NVQlRSRUVTYCByZWxpZXMgb24gYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gQWxyaWdodCwganVzdCBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgaW4gYG5ldC9pcHY2L0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NTMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MTc6NDguNjY4MTA0NzE2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzAzMTgzNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZfU1VCVFJFRVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yMzc9Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cXG5uZXQvaXB2Ni9LY29uZmlnOjI0Mzpjb25maWcgSVBWNl9TVUJUUkVFU1xcbm5ldC9pcHY2L0tjb25maWctMjQ0LVxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjE3OjUwLjk5ODQyODQzOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMzEyMzQ5MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgZm9yIENvbmZpZyBPdmVybGFwKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbi4gQmVmb3JlIEkgbWFrZSBhbnkgc2lnbmlmaWNhbnQgY2hhbmdlcyBvciBhc3N1bXB0aW9ucywgYSBxdWljayBzYW5pdHkgY2hlY2sgaXMgZXNzZW50aWFsLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBcIkxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbiBmaWxlcyBvciBzZXR0aW5ncyBhdCBwbGF5IGhlcmUuXCIgSSBuZWVkIHRvIGJlIHN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBzb21ldGhpbmcsIGVzcGVjaWFsbHkgaW4gYSBjb21wbGV4IHN5c3RlbS4gSSdtIHRoaW5raW5nIGFib3V0IGluaGVyaXRhbmNlLCBjYXNjYWRpbmcgY29uZmlndXJhdGlvbnMsIGVudmlyb25tZW50IHZhcmlhYmxlcywgb3IgZXZlbiBzb21lIG9ic2N1cmUgb3ZlcnJpZGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIGNvbmZsaWN0aW5nIGNvbmZpZ3Mgb3IgdGhhdCBJIGFtIG5vdCBlZGl0aW5nIHRoZSB3cm9uZyBjb25maWcgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciB0aGF0IEkgY2FuIGFjY291bnQgZm9yIGFsbCB0aGUgY29uZmlncyB1c2VkLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcCB0byBhdm9pZCB3YXN0ZWQgdGltZSBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCdzIGFib3V0IGR1ZSBkaWxpZ2VuY2UgYW5kIHByZXZlbnRpbmcgYSBmcnVzdHJhdGluZyBkZWJ1Z2dpbmcgc2Vzc2lvbiBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzo1Ny4wMjk2NjY2OTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzc6XFx0Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxuIDIzODpcXHRcXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4gMjM5OlxcdFxcdHNlbGVjdCBGSUJfUlVMRVNcXG4gMjQwOlxcdFxcdGhlbHBcXG4gMjQxOlxcdFxcdCAgU3VwcG9ydCBtdWx0aXBsZSByb3V0aW5nIHRhYmxlcy5cXG4gMjQyOlxcdFxcbiAyNDM6XFx0Y29uZmlnIElQVjZfU1VCVFJFRVNcXG4gMjQ0OlxcdFxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxuIDI0NTpcXHRcXHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTXFxuIDI0NjpcXHRcXHRkZWZhdWx0IHlcXG4gMjQ3OlxcdFxcdGhlbHBcXG4gMjQ4OlxcdFxcdCAgRW5hYmxlIHJvdXRpbmcgYnkgc291cmNlIGFkZHJlc3Mgb3IgcHJlZml4LlxcbiAyNDk6XFx0XFxuIDI1MDpcXHRcXHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcXG4gMjUxOlxcdFxcdCAgbm9ybWFsIGFuZCBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcyBpbiB0aGUgc2FtZSByb3V0aW5nIHRhYmxlXFxuIDI1MjpcXHRcXHQgIG1heSBzb21ldGltZXMgbGVhZCB0byB1bmludGVuZGVkIHJvdXRpbmcgYmVoYXZpb3IgaWYgdGhlIG9yZGVyIG9mXFxuIDI1MzpcXHRcXHQgIGxvb2t1cHMgaXMgbWlzdW5kZXJzdG9vZC4gIFRvIGFjaGlldmUgZnVsbCBzZXBhcmF0aW9uIGJhc2VkIG9uIHNvdXJjZVxcbiAyNTQ6XFx0XFx0ICBhZGRyZXNzLCBkaWZmZXJlbnQgcm91dGluZyB0YWJsZXMgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGVhY2ggc291cmNlXFxuIDI1NTpcXHRcXHQgIHByZWZpeC5cXG4gMjU2OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzo1Ny4wMjk3NDg4OTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3NDYzNDI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSVB2NiBSb3V0aW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlc2UgSVB2NiBjb25maWd1cmF0aW9uczogYElQVjZfTVVMVElQTEVfVEFCTEVTYCBhbmQgYElQVjZfU1VCVFJFRVNgLiAgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYElQVjZfU1VCVFJFRVNgIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIFwieVwiIChlbmFibGVkKSBpZiBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGtleSBkZXBlbmRlbmN5LiBOb3cgSSBuZWVkIHRvIGV4YW1pbmUgdGhlc2UgcmVsYXRlZCBmdW5jdGlvbnMsIGluIHRoZSBjb250ZXh0IG9mIHRob3NlIGNvbmZpZ3MuXG5cbkkgc2VlIHRoYXQgYGlwdjZfc2FkZHJfcnVsZTVwNWAgYW5kIGBpcHY2X2ZsX2dldF9zYWRkcmAgYXJlIGltcG9ydGFudCByZWxhdGVkIGZ1bmN0aW9ucy4gVGhleSBhcmUgKkZvY3VzU3ltYm9scyogZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZWlyIGJlaGF2aW91ci5cblxuSSBhbHNvIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZyB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkLCBzbyBJJ2xsIGNoZWNrIG90aGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSBgcnQ2X2ZpbGxfbm9kZWAgaW4gYG5ldC9pcHY2L3JvdXRlLmNgIGFuZCBgZmliNl9ub2RlX2xvb2t1cF8xYCBpbiBgbmV0L2lwdjYvaXA2X2ZpYi5jYCBhcmUgYWxzbyB3b3J0aCBjb25zaWRlcmluZy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSAqRm9jdXNTeW1ib2xzKi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1NDMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxODowMS4yMDQzODU2NTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzc3MzYwMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmliNl9ub2RlX2xvb2t1cF8xXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz0xNjA2PXN0cnVjdCBsb29rdXBfYXJncyB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTYxMC1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6MTYxMTpzdGF0aWMgc3RydWN0IGZpYjZfbm9kZSAqZmliNl9ub2RlX2xvb2t1cF8xKHN0cnVjdCBmaWI2X25vZGUgKnJvb3QsXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTE2MTItXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBsb29rdXBfYXJncyAqYXJncylcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0xNjU2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmaWI2X25vZGUgKnNmbjtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MTY1NzpcXHRcXHRcXHRcXHRcXHRzZm4gPSBmaWI2X25vZGVfbG9va3VwXzEoc3VidHJlZSxcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTY1OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgYXJncyArIDEpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTE2ODM9c3RydWN0IGZpYjZfbm9kZSAqZmliNl9ub2RlX2xvb2t1cChzdHJ1Y3QgZmliNl9ub2RlICpyb290LFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTE3MDMtXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjE3MDQ6XFx0Zm4gPSBmaWI2X25vZGVfbG9va3VwXzEocm9vdCwgZGFkZHIgPyBhcmdzIDogYXJncyArIDEpO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0xNzA1LVxcdGlmICghZm4gfHwgZm4tXFx1MDAzZWZuX2ZsYWdzIFxcdTAwMjYgUlROX1RMX1JPT1QpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjE4OjAzLjI0MjEyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg5MTQ3Njc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgYGZpYjZfbm9kZV9sb29rdXBfMWAgYW5kIGBydDZfZmlsbF9ub2RlYCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoYXQgYGZpYjZfbm9kZV9sb29rdXBfMWAgaXMgZGVjbGFyZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQncyBpbnRlcmVzdGluZywgbWVhbnMgaXQncyBzY29wZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBsaW1pdHMgaXRzIHZpc2liaWxpdHkgYW5kIHBvdGVudGlhbCBmb3IgcmV1c2UgZWxzZXdoZXJlIGluIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIHdoZW4gdHJhY2luZyBjYWxscyB0byBpdDsgaXQgcHJvYmFibHkgcGxheXMgYSBrZXkgcm9sZSBpbiBzb21lIHNwZWNpZmljIHJvdXRpbmcgdGFibGUgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhpcyBtb2R1bGUuXG5cbkFuZCB0aGVuLCBJIHNlZSB0aGF0IHdlIGhhdmUgYHJ0Nl9maWxsX25vZGVgIGFzIGFub3RoZXIgbW9kaWZpZWQgZnVuY3Rpb24gdGhhdCBJIHdpbGwgYmUgZm9jdXNpbmcgb24uIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGhvdyB0aGVzZSB0d28gZnVuY3Rpb25zIGludGVyYWN0LiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciB0byBzZWUgZXhhY3RseSBob3cgdGhlc2UgdHdvIGZ1bmN0aW9ucyBmaXQgdG9nZXRoZXIgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLCB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIGBydDZfZmlsbF9ub2RlYCBhbmQgaG93IGBmaWI2X25vZGVfbG9va3VwXzFgIGlzIGJlaW5nIHVzZWQgaW5zaWRlIGl0LiBJcyBgZmliNl9ub2RlX2xvb2t1cF8xYCBhIGhlbHBlciBmdW5jdGlvbiBmb3IgYnVpbGRpbmcgcm91dGluZyB0YWJsZSBlbnRyaWVzPyBBcmUgdGhlcmUgYW55IGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgYmV0d2VlbiB0aGVtLCBhbmQgaG93IGFyZSB0aGVzZSBtb2RpZmllZCBzdHJ1Y3R1cmVzIGJlaW5nIHVzZWQ/IERvZXMgdGhlIG1vZGlmaWNhdGlvbiBvZiBgcnQ2X2ZpbGxfbm9kZWAgY2hhbmdlIG9yIGludHJvZHVjZSBidWdzPyBLbm93aW5nIHRoYXQgdGhlc2UgdHdvIGFyZSBiZWluZyBtb2RpZmllZCBzaW11bHRhbmVvdXNseSByYWlzZXMgdGhlIHJlZCBmbGFnIG9mIGFuIEFQSSBjaGFuZ2UsIG9yIGFuIHVuZGVybHlpbmcgZnVuZGFtZW50YWwgY2hhbmdlIHRvIGhvdyB3ZSBhcmUgZG9pbmcgdGhpcy4gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGUgdHJhaWwgb2YgbG9naWMgYW5kIGRhdGEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzQwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MTg6MDYuOTMxMjc2NjM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc3NjM0NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0Nl9maWxsX25vZGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvcm91dGUuYz0xMDk9c3RhdGljIHNpemVfdCBydDZfbmxtc2dfc2l6ZShzdHJ1Y3QgZmliNl9pbmZvICpmNmkpO1xcbm5ldC9pcHY2L3JvdXRlLmM6MTEwOnN0YXRpYyBpbnQgcnQ2X2ZpbGxfbm9kZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjYvcm91dGUuYy0xMTEtXFx0XFx0XFx0IHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQwMDc9c3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MDI4LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDAyOTpcXHRcXHRcXHRpZiAocnQ2X2ZpbGxfbm9kZShuZXQsIHNrYiwgcnQsIE5VTEwsXFxubmV0L2lwdjYvcm91dGUuYy00MDMwLVxcdFxcdFxcdFxcdFxcdCAgTlVMTCwgTlVMTCwgMCwgUlRNX0RFTFJPVVRFLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz01Njk5PXN0YXRpYyBzaXplX3QgcnQ2X25sbXNnX3NpemUoc3RydWN0IGZpYjZfaW5mbyAqZjZpKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy01NzQ0LVxcbm5ldC9pcHY2L3JvdXRlLmM6NTc0NTpzdGF0aWMgaW50IHJ0Nl9maWxsX25vZGVfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxubmV0L2lwdjYvcm91dGUuYy01NzQ2LVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBjaGFyICpmbGFncylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNTc3My1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjU3NzQ6c3RhdGljIGludCBydDZfZmlsbF9ub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2Ni9yb3V0ZS5jLTU3NzUtXFx0XFx0XFx0IHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU5MzctXFx0XFx0aWYgKFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjQuc3lzY3RsX25leHRob3BfY29tcGF0X21vZGUpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjYvcm91dGUuYzo1OTM4OlxcdFxcdCAgICBydDZfZmlsbF9ub2RlX25leHRob3Aoc2tiLCBydC1cXHUwMDNlbmgsIFxcdTAwMjZuaF9mbGFncykgXFx1MDAzYyAwKVxcbm5ldC9pcHY2L3JvdXRlLmMtNTkzOS1cXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NjAyOT1zdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwNjMtXFxubmV0L2lwdjYvcm91dGUuYzo2MDY0OlxcdFxcdFxcdGVyciA9IHJ0Nl9maWxsX25vZGUoZHVtcC1cXHUwMDNlbmV0LCBkdW1wLVxcdTAwM2Vza2IsIHctXFx1MDAzZXJ0LFxcbm5ldC9pcHY2L3JvdXRlLmMtNjA2NS1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnJ0Nl9leC1cXHUwMDNlcnQ2aS1cXHUwMDNlZHN0LCBOVUxMLCBOVUxMLCAwLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz02MDgxPWludCBydDZfZHVtcF9yb3V0ZShzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcsIHVuc2lnbmVkIGludCBza2lwKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02MTEyLVxcdFxcdH0gZWxzZSB7XFxubmV0L2lwdjYvcm91dGUuYzo2MTEzOlxcdFxcdFxcdGlmIChydDZfZmlsbF9ub2RlKG5ldCwgYXJnLVxcdTAwM2Vza2IsIHJ0LCBOVUxMLCBOVUxMLCBOVUxMLFxcbm5ldC9pcHY2L3JvdXRlLmMtNjExNC1cXHRcXHRcXHRcXHRcXHQgIDAsIFJUTV9ORVdST1VURSxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NjIyMz1zdGF0aWMgaW50IGluZXQ2X3J0bV9nZXRyb3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNjM0NS1cXHRcXHRpZiAoZmlibWF0Y2gpXFxubmV0L2lwdjYvcm91dGUuYzo2MzQ2OlxcdFxcdFxcdGVyciA9IHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIGZyb20sIE5VTEwsIE5VTEwsIE5VTEwsXFxubmV0L2lwdjYvcm91dGUuYy02MzQ3LVxcdFxcdFxcdFxcdFxcdCAgICBpaWYsIFJUTV9ORVdST1VURSxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNjM1MC1cXHRcXHRlbHNlXFxubmV0L2lwdjYvcm91dGUuYzo2MzUxOlxcdFxcdFxcdGVyciA9IHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIGZyb20sIGRzdCwgXFx1MDAyNmZsNi5kYWRkcixcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzNTItXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmbDYuc2FkZHIsIGlpZiwgUlRNX05FV1JPVVRFLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz02MzcwPXZvaWQgaW5ldDZfcnRfbm90aWZ5KGludCBldmVudCwgc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02Mzg4LVxcbm5ldC9pcHY2L3JvdXRlLmM6NjM4OTpcXHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBydCwgTlVMTCwgTlVMTCwgTlVMTCwgMCxcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzOTAtXFx0XFx0XFx0ICAgIGV2ZW50LCBpbmZvLVxcdTAwM2Vwb3J0aWQsIHNlcSwgbmxtX2ZsYWdzKTtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NjQxMT12b2lkIGZpYjZfcnRfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYjZfaW5mbyAqcnQsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTY0MjEtXFxubmV0L2lwdjYvcm91dGUuYzo2NDIyOlxcdGVyciA9IHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIHJ0LCBOVUxMLCBOVUxMLCBOVUxMLCAwLFxcbm5ldC9pcHY2L3JvdXRlLmMtNjQyMy1cXHRcXHRcXHQgICAgUlRNX05FV1JPVVRFLCBpbmZvLVxcdTAwM2Vwb3J0aWQsIHNlcSwgTkxNX0ZfUkVQTEFDRSk7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTY0Mzc9dm9pZCBmaWI2X2luZm9faHdfZmxhZ3Nfc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYjZfaW5mbyAqZjZpLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NDc0LVxcbm5ldC9pcHY2L3JvdXRlLmM6NjQ3NTpcXHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBmNmksIE5VTEwsIE5VTEwsIE5VTEwsIDAsIFJUTV9ORVdST1VURSwgMCxcXG5uZXQvaXB2Ni9yb3V0ZS5jLTY0NzYtXFx0XFx0XFx0ICAgIDAsIDApO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTY3PXN0YXRpYyB2b2lkIF9faXBfdnNfZGVsX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgYm9vbCBjbGVhbnVwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy03MC0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NzE6LyogVGFrZW4gZnJvbSBydDZfZmlsbF9ub2RlKCkgaW4gbmV0L2lwdjYvcm91dGUuYywgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5PyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy03Mi1zdGF0aWMgYm9vbCBfX2lwX3ZzX2FkZHJfaXNfbG9jYWxfdjYoc3RydWN0IG5ldCAqbmV0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxODowOC44MDg5MTY1OTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY1MjA5NTQ1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIElQdjYgU291cmNlIEFkZHJlc3MgU2VsZWN0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYHJ0Nl9maWxsX25vZGVgLCBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIHVwZGF0aW5nIGl0cyBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMuIEl0J3Mgc3dhcHBpbmcgb3V0IGBpcDZfcm91dGVfZ2V0X3NhZGRyYCBmb3IgYGlwdjZfZGV2X2dldF9zYWRkcmAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLlxuXG5NeSBpbml0aWFsIGZvY3VzIGdvZXMgdG8gdGhlIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGlwdjZfZmxfZ2V0X3NhZGRyYCwgYGlwdjZfZGV2X2dldF9zYWRkcmAsIGFuZCBgaXB2Nl9zYWRkcl9ydWxlNXA1YC4gYGlwdjZfZmxfZ2V0X3NhZGRyYCBpcyBleHBvcnRlZCwgbWFraW5nIGl0IGEgZ29vZCBzdGFydGluZyBwb2ludC4gYGlwdjZfc2FkZHJfcnVsZTVwNWAgaXMgc3RhdGljIGJ1dCBhY2Nlc3NpYmxlIHRocm91Z2ggU3l6a2FsbGVyLCBzbyBpdCdzIHN0aWxsIGEgdmlhYmxlIHRhcmdldC4gSSBhbHNvIGtub3cgdGhhdCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCBpcyB1c2VkIGluIG1hbnkgcGxhY2VzLlxuXG5JIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYWxsIG9mIHRoZXNlIGtleSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSwgaW5jbHVkaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIChyZWFjaGFibGUgdmlhIGBpcHY2X2dldF9zYWRkcl9ldmFsYCksIGBpcHY2X2Rldl9nZXRfc2FkZHJgLCBgaXB2Nl9mbF9nZXRfc2FkZHJgICh1c2VkIGluIGBpcDZfZHN0X2xvb2t1cF90YWlsYCksIGFuZCBgcnQ2X2ZpbGxfbm9kZWAgKHVzZWQgYnkgYGluZXQ2X3J0bV9nZXRyb3V0ZWAsIGV0Yy4pLiBUaGlzIHRlbGxzIG1lIHRoZSBwYXRjaCBpcyBjb3JyZWN0bHkgaW50ZWdyYXRlZCBhbmQgdGhlIG5ldyBsb2dpYyBzaG91bGQgYmUgZXhlcmNpc2VkLiBJIGFsc28gY29uZmlybSBgZmliNl9ub2RlX2xvb2t1cF8xYCBpcyByZWFjaGFibGUuXG5cbk5vdywgSSB6ZXJvIGluIG9uIGZvY3VzIHN5bWJvbHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gVGhlIGtleSBzeW1ib2xzIGlkZW50aWZpZWQgYXJlOiBgaXB2Nl9zYWRkcl9ydWxlNXA1YCwgYGlwdjZfZmxfZ2V0X3NhZGRyYCwgYGlwdjZfZGV2X2dldF9zYWRkcmAsIGBydDZfZmlsbF9ub2RlYCwgYW5kIGBmaWI2X25vZGVfbG9va3VwXzFgLiBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50IGJlY2F1c2UgaXQncyBhIG5ldyBmdW5jdGlvbiBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaC5cblxuSSBjaGVjayBmb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW5kIEkgc2VlIHRoYXQgYElQVjZfU1VCVFJFRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGFyZSBjcnVjaWFsLCBhbmQgYElQVjZfU1VCVFJFRVNgIHNob3VsZCBhbHJlYWR5IGJlIGVuYWJsZWQuXG5cbkkgcXVpY2tseSBjb25maXJtIHRoYXQgYWxsIGZvY3VzIHN5bWJvbHMsIGluY2x1ZGluZyB0aGUgc3RhdGljIG9uZXMsIGFyZSBhY2Nlc3NpYmxlIHRvIFN5emthbGxlci5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUg4oCcaG90IHBhdGjigJ0gaW1wbGljYXRpb25zLiBgaXB2Nl9zYWRkcl9ydWxlNXA1YCwgYGlwdjZfZmxfZ2V0X3NhZGRyYCwgYW5kIGBpcHY2X2Rldl9nZXRfc2FkZHJgIGFyZSByZWxhdGVkIHRvIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbi4gUm91dGUgbG9va3VwIGlzIG9uIGEgcGF0aCB0aGF0IGlzIGNhbGxlZCBtb3JlIHRoYW4gb25lIHRpbWUuIFRoZXJlZm9yZSBJIGhhdmUgdG8gY29uc2lkZXIgZXhjbHVkaW5nIGl0LiBgcnQ2X2ZpbGxfbm9kZWAgaXMgaW52b2x2ZWQgaW4gbmV0bGluayByb3V0ZSBkdW1waW5nLCBzbyBub3QgYSBob3QgcGF0aC5cblxuVGhlcmVmb3JlIHRoZSBmb2N1cyBzeW1ib2xzIGFyZTpcbmBpcHY2X3NhZGRyX3J1bGU1cDVgXG5gaXB2Nl9mbF9nZXRfc2FkZHJgXG5gaXB2Nl9kZXZfZ2V0X3NhZGRyYFxuYHJ0Nl9maWxsX25vZGVgXG5cblRoaXMgcGF0Y2ggaXMgaW1wbGVtZW50aW5nIFJGQzY3MjQgcnVsZSA1LjUuIEl0IG1vZGlmaWVzIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljLlxuXG5Pa2F5LCBsZXQncyBlbmFibGUgYElQVjZfU1VCVFJFRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBJIHdpbGwgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGNvbmZpZ3MuXG5Oby5cblxuRXZlcnl0aGluZyBzZWVtcyB0byBiZSBpbiBvcmRlci4gTGV0J3MgcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzMTUsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxODoyNS4zMjk4NzI2MzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzY0MzUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TVUJUUkVFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHY2X3NhZGRyX3J1bGU1cDVcIixcbiAgICBcImlwdjZfZmxfZ2V0X3NhZGRyXCIsXG4gICAgXCJpcHY2X2Rldl9nZXRfc2FkZHJcIixcbiAgICBcInJ0Nl9maWxsX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIFJGQzY3MjQgcnVsZSA1LjUgZm9yIElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGJ5IGludHJvZHVjaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBJdCBtb2RpZmllcyBjb3JlIElQdjYgcm91dGluZyBhbmQgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgKGUuZy4sIGNvbm5lY3QsIHNlbmRtc2cpIGFuZCBuZXRsaW5rIHJvdXRlIGR1bXBzIChgcnQ2X2ZpbGxfbm9kZWApLiBUaGUgZmVhdHVyZSByZXF1aXJlcyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdG8gYmUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2X1NVQlRSRUVTXCIsXG4gICAgXCJJUFY2X01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdjZfc2FkZHJfcnVsZTVwNVwiLFxuICAgIFwiaXB2Nl9mbF9nZXRfc2FkZHJcIixcbiAgICBcImlwdjZfZGV2X2dldF9zYWRkclwiLFxuICAgIFwicnQ2X2ZpbGxfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgUkZDNjcyNCBydWxlIDUuNSBmb3IgSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gYnkgaW50cm9kdWNpbmcgYGlwdjZfc2FkZHJfcnVsZTVwNWAgYW5kIGBpcHY2X2ZsX2dldF9zYWRkcmAuIEl0IG1vZGlmaWVzIGNvcmUgSVB2NiByb3V0aW5nIGFuZCBhZGRyZXNzIHNlbGVjdGlvbiBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzb2NrZXQgb3BlcmF0aW9ucyAoZS5nLiwgY29ubmVjdCwgc2VuZG1zZykgYW5kIG5ldGxpbmsgcm91dGUgZHVtcHMgKGBydDZfZmlsbF9ub2RlYCkuIFRoZSBmZWF0dXJlIHJlcXVpcmVzIGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYCB0byBiZSBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2z7g2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 15:02:30 +0000 UTC FinishedAt: 2026-07-14 15:18:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SUBTREES", "IPV6_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SUBTREES", "IPV6_MULTIPLE_TABLES" ], "series_id": "ff5e7ebd-5fdd-4f70-9406-a9020c08e453" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ipv6_saddr_rule5p5", "ipv6_fl_get_saddr", "ipv6_dev_get_saddr", "rt6_fill_node" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjZfU1VCVFJFRVMmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHY2X3NhZGRyX3J1bGU1cDUmIzM0OywKICAgICYjMzQ7aXB2Nl9mbF9nZXRfc2FkZHImIzM0OywKICAgICYjMzQ7aXB2Nl9kZXZfZ2V0X3NhZGRyJiMzNDssCiAgICAmIzM0O3J0Nl9maWxsX25vZGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBSRkM2NzI0IHJ1bGUgNS41IGZvciBJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBieSBpbnRyb2R1Y2luZyBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBhbmQgYGlwdjZfZmxfZ2V0X3NhZGRyYC4gSXQgbW9kaWZpZXMgY29yZSBJUHY2IHJvdXRpbmcgYW5kIGFkZHJlc3Mgc2VsZWN0aW9uIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIChlLmcuLCBjb25uZWN0LCBzZW5kbXNnKSBhbmQgbmV0bGluayByb3V0ZSBkdW1wcyAoYHJ0Nl9maWxsX25vZGVgKS4gVGhlIGZlYXR1cmUgcmVxdWlyZXMgYElQVjZfU1VCVFJFRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIHRvIGJlIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YTRkNTQ0MmMwMmIzOWI5MjU4MmZlMTFlYzhhZjIyYjRmYWRjODc4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MTc6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni1hZGRyc2VsLnJzdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZWQwMzJlNjk1NzA1Y1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3RcbkBAIC0wLDAgJiM0MzsxLDc1IEBAXG4mIzQzOy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO1xuJiM0Mzs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiYjNDM7SVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gdHJpdmlhXG4mIzQzOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJiM0MztcbiYjNDM7XG4mIzQzO1JGQzY3MjQgcnVsZSA1LjUgc3VwcG9ydFxuJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO1JGQzY3MjQgcnVsZSA1LjUgaXMgYSB2ZXJ5IHNob3J0IHBhcmFncmFwaCBpbiBhIGNvbXBsZXggUkZDIHRoYXQgaGFzIHR1cm5lZFxuJiM0MztvdXQgcXVpdGUgdHJpY2t5LCBidXQgYWxzbyBpbW1lbnNlbHkgdXNlZnVsIGluIG11bHRpaG9taW5nIHNjZW5hcmlvcy4gIEZvclxuJiM0MztyZWZlcmVuY2UsIGl0IHNheXM6XG4mIzQzO1xuJiM0Mzs6OlxuJiM0MztcbiYjNDM7ICAgUnVsZSA1LjU6IFByZWZlciBhZGRyZXNzZXMgaW4gYSBwcmVmaXggYWR2ZXJ0aXNlZCBieSB0aGUgbmV4dC1ob3AuXG4mIzQzOyAgIElmIFNBIG9yIFNBJiMzOTtzIHByZWZpeCBpcyBhc3NpZ25lZCBieSB0aGUgc2VsZWN0ZWQgbmV4dC1ob3AgdGhhdCB3aWxsXG4mIzQzOyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQiYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnRcbiYjNDM7ICAgbmV4dC1ob3AsIHRoZW4gcHJlZmVyIFNBLiAgU2ltaWxhcmx5LCBpZiBTQiBvciBTQiYjMzk7cyBwcmVmaXggaXNcbiYjNDM7ICAgYXNzaWduZWQgYnkgdGhlIG5leHQtaG9wIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNlbmQgdG8gRCBhbmQgU0Egb3JcbiYjNDM7ICAgU0EmIzM5O3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi5cbiYjNDM7XG4mIzQzO1RoZSB3YXkgdGhpcyB3b3JrcyBvbiBMaW51eCBpcyBhcyBmb2xsb3dzOlxuJiM0MztcbiYjNDM7LSBwcmlvciB0byBhbnkgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGhhcHBlbmluZywgd2hlbiByZWNlaXZpbmcgYSBSQSwgbW9yZVxuJiM0MzsgIHRoYW4gdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRlZmF1bHQgcm91dGUgKG9yIDo6LzEyOCByb3V0ZSkgbmVlZHMgdG8gaGFwcGVuOlxuJiM0MzsgIGZvciBlYWNoIFBJTywgYSBzb3VyY2Utc3BlY2lmaWMgKHN1YnRyZWUpIHJvdXRlIGlzICphZGRpdGlvbmFsbHkqIGluc3RhbGxlZC5cbiYjNDM7ICBUaGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCAqYWZ0ZXIqIGEgc291cmNlIGFkZHJlc3MgaGFzIGJlZW4gc2VsZWN0ZWQsIG9uZVxuJiM0MzsgIG9mIHRoZSByb3V0ZXJzIHRoYXQgYWR2ZXJ0aXNlZCBpdCB3aWxsIHJlbWFpbiBpbiB1c2UgKHRoaXMgaXMgKm5vdCogUkZDIDY3MjRcbiYjNDM7ICByZWxhdGVkLCBidXQgcmF0aGVyIFJGQyA4MDI4LikgIEF0IHRoZSBzYW1lIHRpbWUsIHRoZXNlIGV4dHJhIHJvdXRlcyBzZXJ2ZVxuJiM0MzsgIHRvIHJlbWVtYmVyIHdoaWNoIHJvdXRlciBhZHZlcnRpc2VkIHdoYXQuXG4mIzQzO1xuJiM0MzstIHBlciB1c3VhbCwgYSByb3V0ZSBsb29rdXAgZm9yIHRoZSBJUHY2IGRlc3RpbmF0aW9uIGFkZHJlc3MgaW4gY29uc2lkZXJhdGlvblxuJiM0MzsgIGlzIGRvbmUgZmlyc3QuICBUaGlzIGlzIHBhc3NlZCBhcm91bmQgaW4ga2VybmVsIGFzIGEgZHN0X2VudHJ5LlxuJiM0MztcbiYjNDM7LSB0aGUgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgdmFyaW91cyBydWxlcyBpblxuJiM0MzsgIFJGQyA2NzI0LlxuJiM0MztcbiYjNDM7LSBpZi93aGVuIHJ1bGUgNS41IGlzIHJlYWNoZWQsIGZpcnN0IG9mIGFsbCwgdGhlcmUgaXMgYSBjaGVjayBpZiAqYW55KiBzb3VyY2VcbiYjNDM7ICBzcGVjaWZpYyByb3V0ZXMgZXhpc3QgaW4gdGhlIHJvdXRpbmcgdGFibGUuICBJZiB0aGVyZSBhcmUgbm9uZSwgdGhlIGVudGlyZVxuJiM0MzsgIGNvZGUgZm9yIDUuNSBpcyBza2lwcGVkIGJlY2F1c2UgaXQgY2Fubm90IGhhdmUgYW55IGVmZmVjdCwgYnV0IGlzIG5vdCBmcmVlXG4mIzQzOyAgdG8gZXhlY3V0ZSAoY2FuIGludm9sdmUgbXVsdGlwbGUgcm91dGluZyBsb29rdXBzLikgICoqSW4gYXBwbGljYXRpb25zIHRoYXRcbiYjNDM7ICB1c2UgYSBsb3Qgb2YgdW5ib3VuZCAoZS5nLiBVRFApIHNvY2tldHMsIGluc3RhbGxpbmcgc3VidHJlZSByb3V0ZXMgc2hvdWxkXG4mIzQzOyAgdGhlcmVmb3JlIGJlIGF2b2lkZWQgdG8gbm90IGluY3VyIHRoaXMgY29zdCBvbiBlYWNoIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvblxuJiM0MzsgIHBhc3MuKiogIEFsdGVybmF0aXZlbHksIGFwcGxpY2F0aW9ucyBzaG91bGQgYmluZCB0aGVpciBzb2NrZXRzIHRvIGEgc3BlY2lmaWNcbiYjNDM7ICBzb3VyY2UgYWRkcmVzcyBzdWNoIHRoYXQgdGhlIHNlbGVjdGlvbiBjb2RlIGlzIG5ldmVyIGhpdC5cbiYjNDM7XG4mIzQzOy0gaWYgc3VidHJlZSByb3V0ZXMgZG8gZXhpc3QsIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gY29kZSBub3cgcmVwZWF0c1xuJiM0MzsgIHRoZSByb3V0aW5nIGxvb2t1cCBkb25lIGJlZm9yZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gaXMgZW50ZXJlZCwgZXhjZXB0XG4mIzQzOyAgd2l0aCB0aGUgc291cmNlIGFkZHJlc3MgdW5kZXIgY29uc2lkZXJhdGlvbiBmaWxsZWQgaW4uICBUaGlzIGxvb2t1cCB3aWxsIGhpdFxuJiM0MzsgIHRoZSBzdWJ0cmVlIHJvdXRlcyB0aGF0IHdlcmUgaW5zdGFsbGVkIChzZWUgZmlyc3QgaXRlbSksIGdpdmluZyBhIGZyZXNoXG4mIzQzOyAgZHN0X2VudHJ5LiAgSWYgdGhlIG5ldyBkc3RfZW50cnkgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgZHN0X2VudHJ5LCB0aGF0IG1lYW5zXG4mIzQzOyAgdGhlIG9yaWdpbmFsIHJvdXRlciBoYXMgaW4gZmFjdCBzZW50IFJBcyB3aXRoIFBJT3MgZm9yIHRoaXMgc291cmNlIGFkZHJlc3MsXG4mIzQzOyAgc28gaXQgaXMgcHJlZmVycmVkLiAgT3RoZXJ3aXNlIGl0IGlzIG5vdC5cbiYjNDM7XG4mIzQzO1xuJiM0MztUaGVyZSBhcmUgYSBmZXcgY2F2ZWF0cyB0byBjb25zaWRlcjpcbiYjNDM7XG4mIzQzOy0gdGhlIGtlcm5lbCBjdXJyZW50bHkgZG9lcyBub3QgY3JlYXRlIHRoZSBzdWJ0cmVlIHJvdXRlcyBtZW50aW9uZWQgaW4gdGhlXG4mIzQzOyAgZmlyc3QgaXRlbS4gIFRoaXMgaXMgYSBzZXBhcmF0ZSB3b3JrIGl0ZW0sIHBhcnRpYWxseSBkb25lIGF0IHRoZSB0aW1lIG9mXG4mIzQzOyAgd3JpdGluZyB0aGlzLiAgQnV0IHRoaXMgY2FuIGVxdWFsbHkgd2VsbCBiZSBwZXJmb3JtZWQgaW4gdXNlcnNwYWNlIHByb2Nlc3NpbmdcbiYjNDM7ICBvZiBSQXMsIGUuZy4gTmV0d29ya01hbmFnZXIgb3IgcGxhaW4gc3RhdGljIGNvbmZpZ3VyYXRpb24uXG4mIzQzO1xuJiM0MzstIHNpbmNlIGFkZHJlc3NlcyBjYW4gYWxzbyBiZSBhY3F1aXJlZCBmcm9tIERIQ1B2NiwgZXZlbiBSQS9QSU8gY29tYmluYXRpb25zXG4mIzQzOyAgdGhhdCBkaWRuJiMzOTt0IHJlc3VsdCBpbiB0aGUgY3JlYXRpb24gb2YgYW55IGFkZHJlc3NlcyAoZS5nLiBBPTApIHNob3VsZCBoYXZlXG4mIzQzOyAgc3VidHJlZSByb3V0ZXMgYWRkZWQuICBUaG9zZSByb3V0ZXMgKm1heSogYmUgcmVsZXZhbnQgZm9yIERIQ1B2Ni1nZW5lcmF0ZWRcbiYjNDM7ICBhZGRyZXNzZXMuXG4mIzQzO1xuJiM0MzstIHRoZSBcJiMzNDthbm5vdW5jZSBjaGVja1wmIzM0OyBsb29rdXAgZG9lcyBub3QgYmFja3RyYWNrLiAgT25seSB0aGUgZGVzdGluYXRpb24gcHJlZml4XG4mIzQzOyAgdGhhdCBwcm92aWRlZCB0aGUgXCYjMzQ7dW5zcGVjaWZpY1wmIzM0OyAoOjovMTI4KSBtYXRjaCBpcyBjaGVja2VkIGZvciBzb3VyY2UgcHJlZml4ZXNcbiYjNDM7ICB0byBzZWUgd2hhdCByb3V0ZXJzIGFkdmVydGlzZWQgd2hhdC4gIFRoaXMgbWVhbnMgdGhhdCBmb3IgZS5nLiBSSU9zLCBzdWJ0cmVlXG4mIzQzOyAgcm91dGVzIGFsc28gaGF2ZSB0byBiZSBjcmVhdGVkLiAgKEJhY2t0cmFja2luZyBmb3IgdGhpcyBjYXNlIHdvdWxkIGZ1cnRoZXJcbiYjNDM7ICBpbmNyZWFzZSB0aGUgY29zdCBvZiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24sIGZvciBhIHByZXR0eSByYXJlIHNpdHVhdGlvblxuJiM0MzsgIHRoYXQgaGFzIGFuIGVhc3kgZml4L3dvcmthcm91bmQuKVxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IGYzMjE4YWJlZmQwYzZiLi40ZWRmNDgzNjJhMDczMiAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4mIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSU1xuQEAgLTE4OTEyLDYgJiM0MzsxODkxMiw3IEBAIEY6XHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtYWRkci55YW1sXG4gRjpcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1uZWlnaC55YW1sXG4gRjpcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1yb3V0ZS55YW1sXG4gRjpcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1ydWxlLnlhbWxcbiYjNDM7RjpcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0XG4gRjpcdGluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXG4gRjpcdGluY2x1ZGUvbGludXgvbXJvdXRlKlxuIEY6XHRpbmNsdWRlL25ldC9hZGRyY29uZi5oXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaCBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbmluZGV4IDhjZWQyN2E4MjI5YjZlLi43YmMwNzExYjg3MTc5NiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbkBAIC0xNDIsNiAmIzQzOzE0MiwxMCBAQCBzdHJ1Y3QgaW5ldDZfaWZhZGRyICppcHY2X2dldF9pZmFkZHIoc3RydWN0IG5ldCAqbmV0LFxuIGludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgdW5zaWduZWQgaW50IHNyY3ByZWZzLFxuIFx0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7XG4mIzQzO2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcbiYjNDM7XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuJiM0MztcdFx0ICAgICAgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgc3JjcHJlZnMsXG4mIzQzO1x0XHQgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpO1xuIGludCBpcHY2X2dldF9sbGFkZHIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGluNl9hZGRyICphZGRyLFxuIFx0XHQgICAgdTMyIGJhbm5lZF9mbGFncyk7XG4gYm9vbCBpbmV0X3Jjdl9zYWRkcl9lcXVhbChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBzb2NrICpzazIsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmggYi9pbmNsdWRlL25ldC9pcDZfcm91dGUuaFxuaW5kZXggMDlmZmUwZjEzY2U3NTIuLmZlMTNjYjFkMzI1N2RiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oXG5AQCAtMTQwLDMyICYjNDM7MTQwLDYgQEAgdm9pZCBydDZfZmx1c2hfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9pbmZvICpmNmkpO1xuIHZvaWQgcnQ2X2FnZV9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSwgc3RydWN0IGZpYjZfZ2NfYXJncyAqZ2NfYXJncyxcbiBcdFx0XHR1bnNpZ25lZCBsb25nIG5vdyk7XG4gXG4tc3RhdGljIGlubGluZSBpbnQgaXA2X3JvdXRlX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSxcbi1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXG4tXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgcHJlZnMsIGludCBsM21kZXZfaW5kZXgsXG4tXHRcdFx0XHQgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxuLXtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7XG4tXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuLVx0Ym9vbCBzYW1lX3ZyZjtcbi1cdGludCBlcnIgPSAwO1xuLVxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVxuLVx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBsM21kZXZfaW5kZXgpO1xuLVx0aWYgKCFmNmkgfHwgIWY2aS1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbiB8fCBsM21kZXYpXG4tXHRcdGRldiA9IGY2aSA/IGZpYjZfaW5mb19uaF9kZXYoZjZpKSA6IE5VTEw7XG4tXHRzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2O1xuLVx0aWYgKGY2aSBcdTAwMjZcdTAwMjYgZjZpLVx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIFx1MDAyNlx1MDAyNiBzYW1lX3ZyZilcbi1cdFx0KnNhZGRyID0gZjZpLVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuLVx0ZWxzZVxuLVx0XHRlcnIgPSBpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgZGFkZHIsIHByZWZzLCBzYWRkcik7XG4tXG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbi1cbi1cdHJldHVybiBlcnI7XG4tfVxuLVxuIHN0cnVjdCBydDZfaW5mbyAqcnQ2X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsIGludCBvaWYsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBmbGFncyk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvS2NvbmZpZyBiL25ldC9pcHY2L0tjb25maWdcbmluZGV4IGMzODA2YzZhYzk2Zjk1Li4zOTY1OWU5YjUzYTNkYiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L0tjb25maWdcbkBAIC0yNDMsMTYgJiM0MzsyNDMsMjYgQEAgY29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG4gY29uZmlnIElQVjZfU1VCVFJFRVNcbiBcdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuIFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFU1xuJiM0MztcdGRlZmF1bHQgeVxuIFx0aGVscFxuIFx0ICBFbmFibGUgcm91dGluZyBieSBzb3VyY2UgYWRkcmVzcyBvciBwcmVmaXguXG4gXG4gXHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcbiBcdCAgbm9ybWFsIGFuZCBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcyBpbiB0aGUgc2FtZSByb3V0aW5nIHRhYmxlXG4tXHQgIG1heSBzb21ldGltZXMgbGVhZCB0byB1bmludGVuZGVkIHJvdXRpbmcgYmVoYXZpb3IuICBUaGlzIGNhbiBiZVxuLVx0ICBhdm9pZGVkIGJ5IGRlZmluaW5nIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBmb3IgdGhlIG5vcm1hbCBhbmRcbi1cdCAgc291cmNlIHByZWZpeCBzcGVjaWZpYyByb3V0ZXMuXG4mIzQzO1x0ICBtYXkgc29tZXRpbWVzIGxlYWQgdG8gdW5pbnRlbmRlZCByb3V0aW5nIGJlaGF2aW9yIGlmIHRoZSBvcmRlciBvZlxuJiM0MztcdCAgbG9va3VwcyBpcyBtaXN1bmRlcnN0b29kLiAgVG8gYWNoaWV2ZSBmdWxsIHNlcGFyYXRpb24gYmFzZWQgb24gc291cmNlXG4mIzQzO1x0ICBhZGRyZXNzLCBkaWZmZXJlbnQgcm91dGluZyB0YWJsZXMgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGVhY2ggc291cmNlXG4mIzQzO1x0ICBwcmVmaXguXG4gXG4tXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzQzO1x0ICBTdWJ0cmVlcyBzcGVjaWZpY2FsbHkgYWRkcmVzcyBzY2VuYXJpb3Mgd2hlcmUgbG9jYWwgY29ubmVjdGl2aXR5XG4mIzQzO1x0ICBiZXR3ZWVuIHNvdXJjZSBwcmVmaXhlcyBpcyBzaGFyZWQgYW5kIHVucmVzdHJpY3RlZCwgYnV0IHNvbWVcbiYjNDM7XHQgIGRlc3RpbmF0aW9ucyAoZS5nLiB0aGUgZGVmYXVsdCByb3V0ZSkgaGF2ZSBtb3JlIGZpbmUtZ3JhaW5lZCBydWxlcy5cbiYjNDM7XG4mIzQzO1x0ICBUaGlzIGZlYXR1cmUgaXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IHN1cHBvcnQgUkZDNjcyNCBydWxlIDUuNSBpblxuJiM0MztcdCAgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uLiAgUnVsZSA1LjUgaXMgYSBuZWNlc3NpdHkgZm9yIGdvb2RcbiYjNDM7XHQgIG11bHRpaG9taW5nLCByZW51bWJlcmluZyBhbmQgc291cmNlIHByZWZpeCBsaXZlbGluZXNzIGNoZWNrcy5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBZLlxuIFxuIGNvbmZpZyBJUFY2X01ST1VURVxuIFx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wmIzM0O1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FkZHJjb25mLmMgYi9uZXQvaXB2Ni9hZGRyY29uZi5jXG5pbmRleCBmMWZlOWVkZTFlZGIzNy4uZjVjMDQ5MjhhYTE0MmYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9hZGRyY29uZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9hZGRyY29uZi5jXG5AQCAtMTUyMiw2ICYjNDM7MTUyMiw3IEBAIGVudW0ge1xuIFx0SVBWNl9TQUREUl9SVUxFX0hPQSxcbiAjZW5kaWZcbiBcdElQVjZfU0FERFJfUlVMRV9PSUYsXG4mIzQzO1x0SVBWNl9TQUREUl9SVUxFX1BJT19CWV9ORVhUSE9QLFxuIFx0SVBWNl9TQUREUl9SVUxFX0xBQkVMLFxuIFx0SVBWNl9TQUREUl9SVUxFX1BSSVZBQ1ksXG4gXHRJUFY2X1NBRERSX1JVTEVfT1JDSElELFxuQEAgLTE1NDIsMTEgJiM0MzsxNTQzLDE0IEBAIHN0cnVjdCBpcHY2X3NhZGRyX3Njb3JlIHtcbiB9O1xuIFxuIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCB7XG4tXHRjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHI7XG4mIzQzO1x0c3RydWN0IGZsb3dpNiAqZmw2O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgaWZpbmRleDtcbiBcdGludCBzY29wZTtcbiBcdGludCBsYWJlbDtcbiBcdHVuc2lnbmVkIGludCBwcmVmcztcbiYjNDM7XHRzdHJ1Y3QgbmV0ICpuZXQ7XG4gfTtcbiBcbiBzdGF0aWMgaW5saW5lIGludCBpcHY2X3NhZGRyX3ByZWZlcnJlZChpbnQgdHlwZSlcbkBAIC0xNTkxLDYgJiM0MzsxNTk1LDgwIEBAIHN0YXRpYyBib29sIGlwdjZfYWxsb3dfb3B0aW1pc3RpY19kYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxuICNlbmRpZlxuIH1cbiBcbiYjNDM7LyogXCYjMzQ7c291cmNlIGFkZHJlc3MgaXMgcHJlZmVyYWJsZSBpZiB0aGUgY2hvc2VuIG5leHRob3AgYWR2ZXJ0aXNlZCBpdCBhcyBhIFBJT1wmIzM0O1xuJiM0MzsgKiA9XHUwMDNlIGNvbnNpZGVyICYjMzk7YWR2ZXJ0aXNlZCBhcyBhIFBJTyYjMzk7IHRvIGJlICYjMzk7dGhlIHJvdXRlcyBmb3IgdGhlIHNvdXJjZSYjMzk7cyBzdWJ0cmVlXG4mIzQzOyAqICAgIGluY2x1ZGUgb25lIHdpdGggdGhlIHNhbWUgbmV4dGhvcCYjMzk7XG4mIzQzOyAqXG4mIzQzOyAqIE5COiB0aGVyZSBpcyBubyBiYWNrdHJhY2tpbmcgaW4gdGhlIHN1YnRyZWUgaGVyZSwgdGhpcyBpcyBpbnRlbnRpb25hbCAtXG4mIzQzOyAqIGVhY2ggcHJlZml4IHNlZW4gKGFuZCBhY2NlcHRlZCkgaW4gUElPcyBjcmVhdGVzIGVzc2VudGlhbGx5IGEgXCYjMzQ7em9uZVwmIzM0OyB3aGljaFxuJiM0MzsgKiBpcyBvdXIgc2VhcmNoIHNjb3BlLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBpcHY2X3NhZGRyX3J1bGU1cDUoc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgKnNhZGRyX2RzdClcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydDZfaW5mbyAqcnQsICpjbXBfcnQ7XG4mIzQzO1x0c3RydWN0IGRzdF9lbnRyeSAqY21wX2RzdDtcbiYjNDM7XHRzdHJ1Y3QgZmliNl9pbmZvICpmNmk7XG4mIzQzO1x0aW50IHJldCA9IDA7XG4mIzQzO1xuJiM0MztcdHJ0ID0gY29udGFpbmVyX29mKHNhZGRyX2RzdC1cdTAwM2Vkc3QsIHN0cnVjdCBydDZfaW5mbywgZHN0KTtcbiYjNDM7XG4mIzQzO1x0LyogZmw2LVx1MDAzZXNhZGRyIGlzIDo6LCBjZi4gY2hlY2sgYXQgdGhlIHRvcCBvZiBpcHY2X2NvbW1vbl9nZXRfc2FkZHIoKSAqL1xuJiM0MztcdHNhZGRyX2RzdC1cdTAwM2VmbDYtXHUwMDNlc2FkZHIgPSBzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcjtcbiYjNDM7XHRjbXBfZHN0ID0gaXA2X3JvdXRlX291dHB1dChzYWRkcl9kc3QtXHUwMDNlbmV0LCBzYWRkcl9kc3QtXHUwMDNlc2ssXG4mIzQzO1x0XHRcdFx0ICAgc2FkZHJfZHN0LVx1MDAzZWZsNik7XG4mIzQzO1x0bWVtc2V0KFx1MDAyNnNhZGRyX2RzdC1cdTAwM2VmbDYtXHUwMDNlc2FkZHIsIDAsIHNpemVvZihzYWRkcl9kc3QtXHUwMDNlZmw2LVx1MDAzZXNhZGRyKSk7XG4mIzQzO1xuJiM0MztcdGlmIChjbXBfZHN0LVx1MDAzZWVycm9yKVxuJiM0MztcdFx0Z290byBvdXRfcmVsZWFzZV9kc3Q7XG4mIzQzO1xuJiM0MztcdGNtcF9ydCA9IGNvbnRhaW5lcl9vZihjbXBfZHN0LCBzdHJ1Y3QgcnQ2X2luZm8sIGRzdCk7XG4mIzQzO1xuJiM0MztcdC8qIHRoaXMgbXVzdCB3b3JrIGlmIF9hbnlfIG5leHRob3AgbWF0Y2hlczsgdGhlIG5vbi1zdWJ0cmVlIGJlc3QgbWF5XG4mIzQzO1x0ICogbm90IGJlIGluIHNhbWUgb3JkZXIgYXMgc3VidHJlZSBiZXN0XG4mIzQzO1x0ICovXG4mIzQzO1x0Zm9yIChmNmkgPSByY3VfZGVyZWZlcmVuY2UoY21wX3J0LVx1MDAzZWZyb20pOyBmNmk7XG4mIzQzO1x0ICAgICBmNmkgPSByY3VfZGVyZWZlcmVuY2UoZjZpLVx1MDAzZWZpYjZfbmV4dCkpIHtcbiYjNDM7XHRcdHN0cnVjdCBmaWI2X25oICpmNm4gPSBmNmktXHUwMDNlZmliNl9uaDtcbiYjNDM7XHRcdHN0cnVjdCBmaWI2X2luZm8gKnNpYmxpbmc7XG4mIzQzO1xuJiM0MztcdFx0Lyogbm9uLXN1YnRyZWUgcm91dGU6IHNheXMgbm90aGluZyBhYm91dCByb3V0ZXIgYWR2ZXJ0aXNpbmcgdGhpcyBzb3VyY2UgKi9cbiYjNDM7XHRcdGlmIChmNmktXHUwMDNlZmliNl9zcmMucGxlbiA9PSAwKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZGV2ICE9IHNhZGRyX2RzdC1cdTAwM2Vkc3QtXHUwMDNlZGV2IHx8XG4mIzQzO1x0XHQgICAgZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZ3dfZmFtaWx5ICE9IEFGX0lORVQ2KVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoaXB2Nl9hZGRyX2VxdWFsKFx1MDAyNmY2bi1cdTAwM2VuaF9jb21tb24ubmhjX2d3LmlwdjYsXG4mIzQzO1x0XHRcdFx0ICAgIFx1MDAyNnJ0LVx1MDAzZXJ0NmlfZ2F0ZXdheSkpIHtcbiYjNDM7XHRcdFx0cmV0ID0gMTtcbiYjNDM7XHRcdFx0Z290byBvdXRfcmVsZWFzZV9kc3Q7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFmNmktXHUwMDNlZmliNl9uc2libGluZ3MpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2libGluZywgXHUwMDI2ZjZpLVx1MDAzZWZpYjZfc2libGluZ3MsIGZpYjZfc2libGluZ3MpIHtcbiYjNDM7XHRcdFx0ZjZuID0gc2libGluZy1cdTAwM2VmaWI2X25oO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGY2bi1cdTAwM2VuaF9jb21tb24ubmhjX2RldiAhPSBzYWRkcl9kc3QtXHUwMDNlZHN0LVx1MDAzZWRldiB8fFxuJiM0MztcdFx0XHQgICAgZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZ3dfZmFtaWx5ICE9IEFGX0lORVQ2KVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGlwdjZfYWRkcl9lcXVhbChcdTAwMjZmNm4tXHUwMDNlbmhfY29tbW9uLm5oY19ndy5pcHY2LFxuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNnJ0LVx1MDAzZXJ0NmlfZ2F0ZXdheSkpIHtcbiYjNDM7XHRcdFx0XHRyZXQgPSAxO1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0X3JlbGVhc2VfZHN0O1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7b3V0X3JlbGVhc2VfZHN0OlxuJiM0MztcdGRzdF9yZWxlYXNlKGNtcF9kc3QpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHQgICAgICAgc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgKmRzdCxcbkBAIC0xNjE5LDcgJiM0MzsxNjk3LDcgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIElQVjZfU0FERFJfUlVMRV9MT0NBTDpcbiBcdFx0LyogUnVsZSAxOiBQcmVmZXIgc2FtZSBhZGRyZXNzICovXG4tXHRcdHJldCA9IGlwdjZfYWRkcl9lcXVhbChcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgZHN0LVx1MDAzZWFkZHIpO1xuJiM0MztcdFx0cmV0ID0gaXB2Nl9hZGRyX2VxdWFsKFx1MDAyNnNjb3JlLVx1MDAzZWlmYS1cdTAwM2VhZGRyLCBcdTAwMjZkc3QtXHUwMDNlZmw2LVx1MDAzZWRhZGRyKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIElQVjZfU0FERFJfUlVMRV9TQ09QRTpcbiBcdFx0LyogUnVsZSAyOiBQcmVmZXIgYXBwcm9wcmlhdGUgc2NvcGVcbkBAIC0xNjc1LDYgJiM0MzsxNzUzLDI0IEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdHJldCA9ICghZHN0LVx1MDAzZWlmaW5kZXggfHxcbiBcdFx0ICAgICAgIGRzdC1cdTAwM2VpZmluZGV4ID09IHNjb3JlLVx1MDAzZWlmYS1cdTAwM2VpZGV2LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4KTtcbiBcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1A6XG4mIzQzO1x0XHQvKiBSdWxlIDUuNTogUHJlZmVyIHNvdXJjZXMgYWR2ZXJ0aXNlZCBieSBjaG9zZW4gbmV4dC1ob3AgKi9cbiYjNDM7XG4mIzQzO1x0XHQvKiBXaXRob3V0IHN1YnRyZWVzLCB0aGUgc291cmNlIGFkZHJlc3Mgd2lsbCBtYWtlIG5vIGRpZmZlcmVuY2VcbiYjNDM7XHRcdCAqIGluIHRoZSBpcDZfcm91dGVfb3V0cHV0IGNhbGwgaW4gcnVsZTVwNS4gIFRoZXJlZm9yZSB0aGUgcnVsZVxuJiM0MztcdFx0ICogNS41IGNoZWNrIGJlY29tZXMgdXNlbGVzcy4gIFRoaXMgd291bGRuJiMzOTt0IHJlc3VsdCBpbiBhbnlcbiYjNDM7XHRcdCAqIGVycm9ycywgYnV0IGlwNl9yb3V0ZV9vdXRwdXQgaXNuJiMzOTt0IGZyZWUsIHNvIGlmIHN1YnRyZWVzIGFyZVxuJiM0MztcdFx0ICogZGlzYWJsZWQgc2F2ZSBzb21lIGN5Y2xlcyBieSBza2lwcGluZyB0aGlzIGVudGlyZWx5LlxuJiM0MztcdFx0ICpcbiYjNDM7XHRcdCAqIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHN1YnRyZWVzX2VuYWJsZWQgdG8gaGF2ZSB0aGUgY29kZVxuJiM0MztcdFx0ICogY29tcGlsZWQgcmVnYXJkbGVzcy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGZpYjZfcm91dGVzX3JlcXVpcmVfc3JjKG5ldCkgXHUwMDI2XHUwMDI2IGRzdC1cdTAwM2Vkc3RcbiYjNDM7XHRcdCAgICBcdTAwMjZcdTAwMjYgIWRzdC1cdTAwM2Vkc3QtXHUwMDNlZXJyb3IpXG4mIzQzO1x0XHRcdHJldCA9IGlwdjZfc2FkZHJfcnVsZTVwNShzY29yZSwgZHN0KTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmV0ID0gMTtcbiYjNDM7XHRcdGJyZWFrO1xuIFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfTEFCRUw6XG4gXHRcdC8qIFJ1bGUgNjogUHJlZmVyIG1hdGNoaW5nIGxhYmVsICovXG4gXHRcdHJldCA9IGlwdjZfYWRkcl9sYWJlbChuZXQsXG5AQCAtMTY5NywxMSAmIzQzOzE3OTMsMTEgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0ICpcdCAgICBub24tT1JDSElEIHZzIG5vbi1PUkNISURcbiBcdFx0ICovXG4gXHRcdHJldCA9ICEoaXB2Nl9hZGRyX29yY2hpZChcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcikgXlxuLVx0XHRcdGlwdjZfYWRkcl9vcmNoaWQoZHN0LVx1MDAzZWFkZHIpKTtcbiYjNDM7XHRcdFx0aXB2Nl9hZGRyX29yY2hpZChcdTAwMjZkc3QtXHUwMDNlZmw2LVx1MDAzZWRhZGRyKSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUFJFRklYOlxuIFx0XHQvKiBSdWxlIDg6IFVzZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeCAqL1xuLVx0XHRyZXQgPSBpcHY2X2FkZHJfZGlmZihcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgZHN0LVx1MDAzZWFkZHIpO1xuJiM0MztcdFx0cmV0ID0gaXB2Nl9hZGRyX2RpZmYoXHUwMDI2c2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHIsIFx1MDAyNmRzdC1cdTAwM2VmbDYtXHUwMDNlZGFkZHIpO1xuIFx0XHRpZiAocmV0IFx1MDAzZSBzY29yZS1cdTAwM2VpZmEtXHUwMDNlcHJlZml4X2xlbilcbiBcdFx0XHRyZXQgPSBzY29yZS1cdTAwM2VpZmEtXHUwMDNlcHJlZml4X2xlbjtcbiBcdFx0c2NvcmUtXHUwMDNlbWF0Y2hsZW4gPSByZXQ7XG5AQCAtMTgxOSw5ICYjNDM7MTkxNSwxMCBAQCBzdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX21hc3RlcihzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRyZXR1cm4gaGlzY29yZV9pZHg7XG4gfVxuIFxuLWludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2Rldixcbi1cdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsIHVuc2lnbmVkIGludCBwcmVmcyxcbi1cdFx0ICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpXG4mIzQzO2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSxcbiYjNDM7XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuJiM0MztcdFx0ICAgICAgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgcHJlZnMsXG4mIzQzO1x0XHQgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpXG4ge1xuIFx0c3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgc2NvcmVzWzJdLCAqaGlzY29yZTtcbiBcdHN0cnVjdCBpcHY2X3NhZGRyX2RzdCBkc3Q7XG5AQCAtMTgzMiwxMSAmIzQzOzE5MjksMTggQEAgaW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuIFx0aW50IGhpc2NvcmVfaWR4ID0gMDtcbiBcdGludCByZXQgPSAwO1xuIFxuLVx0ZHN0X3R5cGUgPSBfX2lwdjZfYWRkcl90eXBlKGRhZGRyKTtcbi1cdGRzdC5hZGRyID0gZGFkZHI7XG4mIzQzO1x0Lyogd2Ugc2hvdWxkIG5ldmVyIGVuZCB1cCBoZXJlIHdpdGggYSBub24tZW1wdHkgc2FkZHIuICovXG4mIzQzO1x0aWYgKFdBUk5fT05fT05DRSghaXB2Nl9hZGRyX2FueShcdTAwMjZmbDYtXHUwMDNlc2FkZHIpKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoXHUwMDI2Zmw2LVx1MDAzZWRhZGRyKTtcbiYjNDM7XHRkc3QubmV0ID0gbmV0O1xuJiM0MztcdGRzdC5mbDYgPSBmbDY7XG4mIzQzO1x0ZHN0LnNrID0gc2s7XG4mIzQzO1x0ZHN0LmRzdCA9IGRzdF9lbnRyeTtcbiBcdGRzdC5pZmluZGV4ID0gZHN0X2RldiA/IGRzdF9kZXYtXHUwMDNlaWZpbmRleCA6IDA7XG4gXHRkc3Quc2NvcGUgPSBfX2lwdjZfYWRkcl9zcmNfc2NvcGUoZHN0X3R5cGUpO1xuLVx0ZHN0LmxhYmVsID0gaXB2Nl9hZGRyX2xhYmVsKG5ldCwgZGFkZHIsIGRzdF90eXBlLCBkc3QuaWZpbmRleCk7XG4mIzQzO1x0ZHN0LmxhYmVsID0gaXB2Nl9hZGRyX2xhYmVsKG5ldCwgXHUwMDI2Zmw2LVx1MDAzZWRhZGRyLCBkc3RfdHlwZSwgZHN0LmlmaW5kZXgpO1xuIFx0ZHN0LnByZWZzID0gcHJlZnM7XG4gXG4gXHRzY29yZXNbaGlzY29yZV9pZHhdLnJ1bGUgPSAtMTtcbkBAIC0xOTExLDExICYjNDM7MjAxNSwyOSBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4gXHRpZiAoIWhpc2NvcmUtXHUwMDNlaWZhKVxuIFx0XHRyZXQgPSAtRUFERFJOT1RBVkFJTDtcbiBcdGVsc2Vcbi1cdFx0KnNhZGRyID0gaGlzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcjtcbiYjNDM7XHRcdGZsNi1cdTAwM2VzYWRkciA9IGhpc2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHI7XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuJiM0MztFWFBPUlRfU1lNQk9MKGlwdjZfZmxfZ2V0X3NhZGRyKTtcbiYjNDM7XG4mIzQzO2ludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcbiYjNDM7XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgcHJlZnMsXG4mIzQzO1x0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmbG93aTYgZmw2O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdG1lbXNldChcdTAwMjZmbDYsIDAsIHNpemVvZihmbDYpKTtcbiYjNDM7XHRmbDYuZGFkZHIgPSAqZGFkZHI7XG4mIzQzO1xuJiM0MztcdHJldCA9IGlwdjZfZmxfZ2V0X3NhZGRyKG5ldCwgTlVMTCwgZHN0X2RldiwgTlVMTCwgcHJlZnMsIFx1MDAyNmZsNik7XG4mIzQzO1x0aWYgKCFyZXQpXG4mIzQzO1x0XHQqc2FkZHIgPSBmbDYuc2FkZHI7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiBFWFBPUlRfU1lNQk9MKGlwdjZfZGV2X2dldF9zYWRkcik7XG4gXG4gc3RhdGljIGludCBfX2lwdjZfZ2V0X2xsYWRkcihzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHIsXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2ZpYi5jIGIvbmV0L2lwdjYvaXA2X2ZpYi5jXG5pbmRleCBhMTMwY2RmYWViZmJlZS4uMjczZjJiZmM1Mjg2NjkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9maWIuY1xuQEAgLTE2NTYsOCAmIzQzOzE2NTYsMTEgQEAgc3RhdGljIHN0cnVjdCBmaWI2X25vZGUgKmZpYjZfbm9kZV9sb29rdXBfMShzdHJ1Y3QgZmliNl9ub2RlICpyb290LFxuIFx0XHRcdFx0XHRzdHJ1Y3QgZmliNl9ub2RlICpzZm47XG4gXHRcdFx0XHRcdHNmbiA9IGZpYjZfbm9kZV9sb29rdXBfMShzdWJ0cmVlLFxuIFx0XHRcdFx0XHRcdFx0XHQgYXJncyAmIzQzOyAxKTtcbi1cdFx0XHRcdFx0aWYgKCFzZm4pXG4mIzQzO1x0XHRcdFx0XHRpZiAoIXNmbikge1xuJiM0MztcdFx0XHRcdFx0XHRpZiAoZm4tXHUwMDNlZm5fZmxhZ3MgXHUwMDI2IFJUTl9SVElORk8pXG4mIzQzO1x0XHRcdFx0XHRcdFx0cmV0dXJuIGZuO1xuIFx0XHRcdFx0XHRcdGdvdG8gYmFja3RyYWNrO1xuJiM0MztcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHRmbiA9IHNmbjtcbiBcdFx0XHRcdH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbmluZGV4IDM2OGU0ZmEzYjQzY2EyLi4wM2I4ZDQyZDlkZjllZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5AQCAtMTE0MywyNyAmIzQzOzExNDMsNDAgQEAgc3RhdGljIGludCBpcDZfZHN0X2xvb2t1cF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuIFx0aW50IGZsYWdzID0gMDtcbiBcbiBcdC8qIFRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byBkb1xuLVx0ICogaXA2X3JvdXRlX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcbiYjNDM7XHQgKiBpcHY2X2ZsX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcbiBcdCAqIHRoZSByb3V0ZS1zcGVjaWZpYyBwcmVmZXJyZWQgc291cmNlIGZvcmNlcyB0aGVcbi1cdCAqIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBfYmVmb3JlXyBpcDZfcm91dGVfZ2V0X3NhZGRyLlxuJiM0MztcdCAqIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBfYmVmb3JlXyBpcHY2X2ZsX2dldF9zYWRkci5cbiBcdCAqXG4gXHQgKiBJbiBzb3VyY2Ugc3BlY2lmaWMgcm91dGluZyAobm8gc3JjPWFueSBkZWZhdWx0IHJvdXRlKSxcbiBcdCAqIGlwNl9yb3V0ZV9vdXRwdXQgd2lsbCBmYWlsIGdpdmVuIHNyYz1hbnkgc2FkZHIsIHRob3VnaCwgc29cbiBcdCAqIHRoYXQmIzM5O3Mgd2h5IHdlIHRyeSBpdCBhZ2FpbiBsYXRlci5cbiBcdCAqL1xuIFx0aWYgKGlwdjZfYWRkcl9hbnkoXHUwMDI2Zmw2LVx1MDAzZXNhZGRyKSkge1xuJiM0MztcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmwzbWRldjtcbiYjNDM7XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXHRcdHN0cnVjdCBmaWI2X2luZm8gKmZyb207XG4gXHRcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XG4mIzQzO1x0XHRib29sIHNhbWVfdnJmO1xuIFxuIFx0XHQqZHN0ID0gaXA2X3JvdXRlX291dHB1dChuZXQsIHNrLCBmbDYpO1xuIFx0XHRydCA9ICgqZHN0KS1cdTAwM2VlcnJvciA/IE5VTEwgOiBkc3RfcnQ2X2luZm8oKmRzdCk7XG4gXG4gXHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0ZnJvbSA9IHJ0ID8gcmN1X2RlcmVmZXJlbmNlKHJ0LVx1MDAzZWZyb20pIDogTlVMTDtcbi1cdFx0ZXJyID0gaXA2X3JvdXRlX2dldF9zYWRkcihuZXQsIGZyb20sIFx1MDAyNmZsNi1cdTAwM2VkYWRkcixcbi1cdFx0XHRcdFx0ICBzayA/IFJFQURfT05DRShpbmV0Nl9zayhzayktXHUwMDNlc3JjcHJlZnMpIDogMCxcbi1cdFx0XHRcdFx0ICBmbDYtXHUwMDNlZmxvd2k2X2wzbWRldixcbi1cdFx0XHRcdFx0ICBcdTAwMjZmbDYtXHUwMDNlc2FkZHIpO1xuJiM0MztcbiYjNDM7XHRcdGwzbWRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmw2LVx1MDAzZWZsb3dpNl9sM21kZXYpO1xuJiM0MztcdFx0aWYgKCFmcm9tIHx8ICFmcm9tLVx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIHx8IGwzbWRldilcbiYjNDM7XHRcdFx0ZGV2ID0gZnJvbSA/IGZpYjZfaW5mb19uaF9kZXYoZnJvbSkgOiBOVUxMO1xuJiM0MztcdFx0c2FtZV92cmYgPSAhbDNtZGV2IHx8IGwzbWRldl9tYXN0ZXJfZGV2X3JjdShkZXYpID09IGwzbWRldjtcbiYjNDM7XHRcdGlmIChmcm9tIFx1MDAyNlx1MDAyNiBmcm9tLVx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIFx1MDAyNlx1MDAyNiBzYW1lX3ZyZikge1xuJiM0MztcdFx0XHRmbDYtXHUwMDNlc2FkZHIgPSBmcm9tLVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuJiM0MztcdFx0XHRlcnIgPSAwO1xuJiM0MztcdFx0fSBlbHNlXG4mIzQzO1x0XHRcdGVyciA9IGlwdjZfZmxfZ2V0X3NhZGRyKG5ldCwgKmRzdCxcbiYjNDM7XHRcdFx0XHRcdFx0c2FtZV92cmYgPyBkZXYgOiBsM21kZXYsIHNrLFxuJiM0MztcdFx0XHRcdFx0XHRzayA/IFJFQURfT05DRShpbmV0Nl9zayhzayktXHUwMDNlc3JjcHJlZnMpIDogMCxcbiYjNDM7XHRcdFx0XHRcdFx0Zmw2KTtcbiYjNDM7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuIFx0XHRpZiAoZXJyKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jXG5pbmRleCBhMTMwMTMzNGRhNDhjMC4uNzA0YWZlMmRkZWE3YzIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9yb3V0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9yb3V0ZS5jXG5AQCAtNTg1MCw5ICYjNDM7NTg1MCwxOSBAQCBzdGF0aWMgaW50IHJ0Nl9maWxsX25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdGlmIChubGFfcHV0X3UzMihza2IsIFJUQV9JSUYsIGlpZikpXG4gXHRcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdH0gZWxzZSBpZiAoZGVzdCkge1xuLVx0XHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmO1xuLVx0XHRpZiAoaXA2X3JvdXRlX2dldF9zYWRkcihuZXQsIHJ0LCBkZXN0LCAwLCAwLCBcdTAwMjZzYWRkcl9idWYpID09IDAgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIFx1MDAyNnNhZGRyX2J1ZikpXG4mIzQzO1x0XHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmLCAqc2FkZHIgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRcdGlmIChydC1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbikge1xuJiM0MztcdFx0XHRzYWRkciA9IFx1MDAyNnJ0LVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGZpYjZfaW5mb19uaF9kZXYocnQpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGlwdjZfZGV2X2dldF9zYWRkcihuZXQsIGRldiwgZGVzdCwgMCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBcdTAwMjZzYWRkcl9idWYpID09IDApXG4mIzQzO1x0XHRcdFx0c2FkZHIgPSBcdTAwMjZzYWRkcl9idWY7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKHNhZGRyIFx1MDAyNlx1MDAyNiBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIHNhZGRyKSlcbiBcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi5jMDdkMmFlYmFkNjk1NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5AQCAtNTMsNiAmIzQzOzUzLDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxuIFx0aXB2Nl9mbG93bGFiZWwuc2ggXFxcbiBcdGlwdjZfZm9yY2VfZm9yd2FyZGluZy5zaCBcXFxuIFx0aXB2Nl9yb3V0ZV91cGRhdGVfc29mdF9sb2NrdXAuc2ggXFxcbiYjNDM7XHRpcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5IFxcXG4gXHRpcHZ0YXBfdGVzdC5zaCBcXFxuIFx0bDJfdG9zX3R0bF9pbmhlcml0LnNoIFxcXG4gXHRsMnRwLnNoIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWdcbmluZGV4IGUxY2UzNWMyYWJiZWYzLi5iMGI2NjQxMmI5ZjNlMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWdcbkBAIC00OCw2ICYjNDM7NDgsNyBAQCBDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15XG4gQ09ORklHX0lQVjZfUlBMX0xXVFVOTkVMPXlcbiBDT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcbiBDT05GSUdfSVBWNl9TSVQ9eVxuJiM0MztDT05GSUdfSVBWNl9TVUJUUkVFUz15XG4gQ09ORklHX0lQVjZfVlRJPXlcbiBDT05GSUdfSVBWTEFOPW1cbiBDT05GSUdfSVBWVEFQPW1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjY4MmIzOWJhOTkxZGE5XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weVxuQEAgLTAsMCAmIzQzOzEsMjMxIEBAXG4mIzQzOyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjIENvcHlyaWdodCAoQykgMjAyMy0yMDI2ICBEYXZpZCAmIzM5O2VxdWlub3gmIzM5OyBMYW1wYXJ0ZXJcbiYjNDM7XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1JGQyA2NzI0IChJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbikgcnVsZSA1LjUgdGVzdHNcbiYjNDM7XG4mIzQzO0ZvciByZWZlcmVuY2U6XG4mIzQzO1xuJiM0MzsgICBSdWxlIDUuNTogUHJlZmVyIGFkZHJlc3NlcyBpbiBhIHByZWZpeCBhZHZlcnRpc2VkIGJ5IHRoZSBuZXh0LWhvcC5cbiYjNDM7ICAgSWYgU0Egb3IgU0EmIzM5O3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IHRoZSBzZWxlY3RlZCBuZXh0LWhvcCB0aGF0IHdpbGxcbiYjNDM7ICAgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNCIG9yIFNCJiMzOTtzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudFxuJiM0MzsgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJiMzOTtzIHByZWZpeCBpc1xuJiM0MzsgICBhc3NpZ25lZCBieSB0aGUgbmV4dC1ob3AgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQSBvclxuJiM0MzsgICBTQSYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnQgbmV4dC1ob3AsIHRoZW4gcHJlZmVyIFNCLlxuJiM0MztcbiYjNDM7KGFuZCBzaW5jZSBpdCBwcm92aWRlcyB0aGUgXCYjMzQ7Y291bnRlcnBvaW50XCYjMzQ7OilcbiYjNDM7XG4mIzQzOyAgIFJ1bGUgODogVXNlIGxvbmdlc3QgbWF0Y2hpbmcgcHJlZml4LlxuJiM0MzsgICBJZiBDb21tb25QcmVmaXhMZW4oU0EsIEQpIFx1MDAzZSBDb21tb25QcmVmaXhMZW4oU0IsIEQpLCB0aGVuIHByZWZlciBTQS5cbiYjNDM7ICAgU2ltaWxhcmx5LCBpZiBDb21tb25QcmVmaXhMZW4oU0IsIEQpIFx1MDAzZSBDb21tb25QcmVmaXhMZW4oU0EsIEQpLCB0aGVuXG4mIzQzOyAgIHByZWZlciBTQi5cbiYjNDM7XG4mIzQzO05vdGUgcnVsZSA1LjUgd2FzIG9yaWdpbmFsbHkgb3B0aW9uYWwgYnV0IG1hZGUgbWFuZGF0b3J5IGJ5XG4mIzQzO2RyYWZ0LWlldGYtNm1hbi1yZmM2NzI0LXVwZGF0ZSAod2hpY2ggYXQgdGhlIHBvaW50IG9mIGNyZWF0aW9uIG9mIHRoaXMgdGVzdFxuJiM0Mzt3YXMgYWxyZWFkeSBcJiMzNDtkb25lXCYjMzQ7IGF0IHRoZSBJRVRGIGJ1dCB3YWl0aW5nIGluIHRoZSBSRkMgZWRpdG9yIHF1ZXVlIGR1ZSB0byBhXG4mIzQzO2Jsb2NraW5nIGRlcGVuZGVuY3kuKVxuJiM0MztcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzO2Zyb20gc29ja2V0IGltcG9ydCBzb2NrZXQsIEFGX0lORVQ2LCBTT0NLX0RHUkFNXG4mIzQzO2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwc1xuJiM0Mztmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGVcbiYjNDM7XG4mIzQzO2Zyb20gbGliLnB5IGltcG9ydCBrc2Z0X3J1biwga3NmdF9leGl0LCBrc2Z0X2VxXG4mIzQzO2Zyb20gbGliLnB5IGltcG9ydCBOZXROUywgTmV0TlNFbnRlclxuJiM0Mztmcm9tIGxpYi5weSBpbXBvcnQgaXBcbiYjNDM7XG4mIzQzO1xuJiM0MztkZWYgc2VsZWN0X2FkZHIoZGVzdCk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIGNvbm5lY3QoKSAmIzQzOyBnZXRzb2NrbmFtZSgpIHRvIGZpZ3VyZSBvdXQgd2hhdCB3YXMgc2VsZWN0ZWQgYXMgc291cmNlIGFkZHJlc3NcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAgc29jayA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgMClcbiYjNDM7ICAgIHNvY2suY29ubmVjdCgoZGVzdCwgMTIzNDUpKVxuJiM0MzsgICAgcmV0dXJuIHNvY2suZ2V0c29ja25hbWUoKVswXVxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBpbl9uZXRucyhmdW5jOiBDYWxsYWJsZVtbXSwgTm9uZV0pIC1cdTAwM2UgQ2FsbGFibGVbW10sIE5vbmVdOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBweXRob24gZGVjb3JhdG9yIHRvIHB1dCB0ZXN0IGZ1bmN0aW9uIGluIG5ldG5zXG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBAd3JhcHMoZnVuYylcbiYjNDM7ICAgIGRlZiB3cmFwcGVkKCkgLVx1MDAzZSBOb25lOlxuJiM0MzsgICAgICAgIHdpdGggTmV0TlMoKSBhcyB0ZXN0bnM6XG4mIzQzOyAgICAgICAgICAgIHdpdGggTmV0TlNFbnRlcihzdHIodGVzdG5zKSk6XG4mIzQzOyAgICAgICAgICAgICAgICBmdW5jKClcbiYjNDM7XG4mIzQzOyAgICByZXR1cm4gd3JhcHBlZFxuJiM0MztcbiYjNDM7XG4mIzQzO0Bpbl9uZXRuc1xuJiM0MztkZWYgdGVzdF9iYXNpYygpIC1cdTAwM2UgTm9uZTpcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAgU2ltcGxlIFx1MDAyNiBtb3N0IGNvbW1vbiBjYXNlIGZvciBSRkM2NzI0IHJ1bGUgNS41OiBtdWx0aXBsZSBkZWZhdWx0IHJvdXRlc1xuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIGFkZCB0eXBlIHZldGhcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIHNldCB2ZXRoMCB1cFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgc2V0IHZldGgxIHVwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7YWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODoxMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTA6OjFcJiMzNDssIFwmIzM0O2Jhc2VsaW5lIHBhc3NcJiMzNDspXG4mIzQzOyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTAwMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41IFx1MDAzZSBydWxlIDhcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgZGVsIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODoxMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTAwMDo6MVwmIzM0OywgXCYjMzQ7YmFzZWxpbmUgcGFzc1wmIzM0OylcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTAwMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTAwMDo6MVwmIzM0OywgXCYjMzQ7cnVsZSA1LjUgXHUwMDNlIHJ1bGUgOFwmIzM0OylcbiYjNDM7XG4mIzQzO1xuJiM0MztAaW5fbmV0bnNcbiYjNDM7ZGVmIHRlc3Rfbmhfb2JqKCkgLVx1MDAzZSBOb25lOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBTYW1lIGFzIGFib3ZlLCBidXQgd2l0aCBuZXh0aG9wIG9iamVjdHMgZm9yIHRoZSBkZWZhdWx0IHJvdXRlXG4mIzQzO1xuJiM0MzsgICAgTkI6IFRoZSBrZXJuZWwgZG9lc24mIzM5O3QgY3VycmVudGx5IGFsbG93IG5leHRob3Agb2JqZWN0cyBmb3Igc3VidHJlZSByb3V0ZXMuXG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIGFkZCB0eXBlIHZldGhcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIHNldCB2ZXRoMCB1cFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgc2V0IHZldGgxIHVwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7YWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICAjIGRpc3RpbmN0IG5leHRob3Agb2JqZWN0cyBhcmUgdXNlZCwgYmVjYXVzZSB3aGF0IG1hdHRlcnMgaXMgdGhlIG5leHRob3BcbiYjNDM7ICAgICMgaXRzZWxmLCBub3QgdGhlIG5leHRob3Agb2JqZWN0LiAgVG8gY292ZXIgZXZlcnl0aGluZywgbWFrZSBhIGdyb3VwLlxuJiM0MzsgICAgaXAoXCYjMzQ7bmV4dGhvcCBhZGQgaWQgMTAxIHZpYSBmZTgwOjoxIGRldiB2ZXRoMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O25leHRob3AgYWRkIGlkIDIwMSBncm91cCAxMDFcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtuZXh0aG9wIGFkZCBpZCAxMDIgdmlhIGZlODA6OjIgZGV2IHZldGgwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7bmV4dGhvcCBhZGQgaWQgMjAyIGdyb3VwIDEwMlwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgbmhpZCAyMDIgbWV0cmljIDIwMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCAgIHZpYSBmZTgwOjoxIGRldiB2ZXRoMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjExOjpcJiMzNDspLCBcJiMzNDsyMDAxOmRiODoxMDo6MVwmIzM0OywgXCYjMzQ7YmFzZWxpbmUgcGFzc1wmIzM0OylcbiYjNDM7ICAgICMgcnVsZSA4IHdvdWxkIHJlc3VsdCBpbiB0aGUgdXNlIG9mIHRoZSA6MTAwMTogYWRkcmVzcywgYnV0IHJ1bGUgNS41IGFwcGxpZXMgYmVmb3JlLlxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODoxMDAxOjpcJiMzNDspLCBcJiMzNDsyMDAxOmRiODoxMDo6MVwmIzM0OywgXCYjMzQ7cnVsZSA1LjUgXHUwMDNlIHJ1bGUgOFwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBkZWwgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O2Jhc2VsaW5lIHBhc3NcJiMzNDspXG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjEwMDE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41IFx1MDAzZSBydWxlIDhcJiMzNDspXG4mIzQzO1xuJiM0MztcbiYjNDM7QGluX25ldG5zXG4mIzQzO2RlZiB0ZXN0X2xvd19tZXRyaWMoKSAtXHUwMDNlIE5vbmU6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIENoZWNrIHRoYXQgc3VidHJlZSByb3V0ZXMgdGFrZSBlZmZlY3QgZXZlbiBpZiB0aGV5IGFyZSBoaWdoZXIgbWV0cmljXG4mIzQzO1xuJiM0MzsgICAgRm9yIGNoZWNraW5nIHRoYXQgXCYjMzQ7cm91dGVyIGFkdmVydGlzZWQgcHJlZml4XCYjMzQ7LCBtZXRyaWMgaXMgaXJyZWxldmFudC4gIEl0XG4mIzQzOyAgICBtYXR0ZXJzIGZvciB0aGUgaW5pdGlhbCB1bnNwZWNpZmljIGxvb2t1cCB0byBmaW5kIGEgbmV4dGhvcCB0byBiZWdpbiB3aXRoLlxuJiM0MzsgICAgKFRoZSBsYXRlciBzb3VyY2UgYWRkcmVzcyBjaGVjayBsb29rdXAgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSBuZXh0aG9wLCBpLmUuXG4mIzQzOyAgICB0aGUgZWZmZWN0cyBvZiBtZXRyaWNzIGFyZSBhbHJlYWR5IGRvbmUuKVxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIGFkZCB0eXBlIHZldGhcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIHNldCB2ZXRoMCB1cFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgc2V0IHZldGgxIHVwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7YWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MyBkZXYgdmV0aDAgbWV0cmljIDUwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtiYXNlbGluZSBwYXNzXCYjMzQ7KVxuJiM0MzsgICAgIyBydWxlIDggd291bGQgcmVzdWx0IGluIHRoZSB1c2Ugb2YgdGhlIDoxMDAxOiBhZGRyZXNzLCBidXQgcnVsZSA1LjUgYXBwbGllcyBiZWZvcmUuXG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjEwMDE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtydWxlIDUuNSBcdTAwM2UgcnVsZSA4XCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGRlbCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O2Jhc2VsaW5lIHBhc3NcJiMzNDspXG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjEwMDE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41IFx1MDAzZSBydWxlIDhcJiMzNDspXG4mIzQzO1xuJiM0MztcbiYjNDM7QGluX25ldG5zXG4mIzQzO2RlZiB0ZXN0X25vX3N1YnRyZWUoKSAtXHUwMDNlIE5vbmU6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIEVuc3VyZSB0aGF0IG1hdGNoaW5nIG9uIGEgbm9uLXN1YnRyZWUgcm91dGUgZG9lc24mIzM5O3QgdHJpZ2dlciBydWxlIDUuNVxuJiM0MztcbiYjNDM7ICAgIChUaGlzIHdhcyBub24tb2J2aW91c2x5IGJyb2tlbiBpbiBlYXJsaWVyIHZlcnNpb25zIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMsXG4mIzQzOyAgICBhIG5vbi1zdWJ0cmVlIHJvdXRlIHdvdWxkIHN0aWxsIG1hdGNoLiAgTWFrZSBzdXJlIGl0IGRvZXNuJiMzOTt0IGJyZWFrIGFnYWluLilcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAgaXAoXCYjMzQ7bGluayBhZGQgdHlwZSB2ZXRoXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7bGluayBzZXQgdmV0aDAgdXBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDtsaW5rIHNldCB2ZXRoMSB1cFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODoxMTo6XCYjMzQ7KSwgXCYjMzQ7MjAwMTpkYjg6MTA6OjFcJiMzNDssIFwmIzM0O2Jhc2VsaW5lIHBhc3NcJiMzNDspXG4mIzQzOyAgICBrc2Z0X2VxKFxuJiM0MzsgICAgICAgIHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjEwMDE6OlwmIzM0OyksXG4mIzQzOyAgICAgICAgXCYjMzQ7MjAwMTpkYjg6MTA6OjFcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7cnVsZSA1LjUgXHUwMDNlIHJ1bGUgOCwgaWdub3Jpbmcgbm9uLVNBRFJcJiMzNDssXG4mIzQzOyAgICApXG4mIzQzO1xuJiM0MztcbiYjNDM7QGluX25ldG5zXG4mIzQzO2RlZiB0ZXN0X2xvbmdlcigpIC1cdTAwM2UgTm9uZTpcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAgQ2hlY2sgZnVuY3Rpb25hbGl0eSBmb3Igbm9uLWRlZmF1bHQgZGVzdGluYXRpb24uXG4mIzQzO1xuJiM0MzsgICAgVGhpcyBpcyBleHBlY3RlZCB0byBiZSB2ZXJ5IHJhcmUgaW4gYWN0dWFsIHByYWN0aWNlLCBhbmQgZG9lc24mIzM5O3QgZG9cbiYjNDM7ICAgIGJhY2t0cmFja2luZyAoYWxzbyByZWZlciB0byBrZXJuZWwgZG9jcy4pXG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgYWRkIHR5cGUgdmV0aFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0O2xpbmsgc2V0IHZldGgwIHVwXCYjMzQ7KVxuJiM0MzsgICAgaXAoXCYjMzQ7bGluayBzZXQgdmV0aDEgdXBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCAyMDAxOmRiODo1MDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMFwmIzM0OylcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOjovNDggZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtiYXNlbGluZSBwYXNzXCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41XCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6YWFhOjpcJiMzNDspLCBcJiMzNDsyMDAxOmRiODoxMDAwOjoxXCYjMzQ7LCBcJiMzNDtydWxlIDUuNVwmIzM0OylcbiYjNDM7XG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOmFhYTo6LzY0IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtiYXNlbGluZSBwYXNzXCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwMDA6OjFcJiMzNDssIFwmIzM0O3J1bGUgNS41XCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6YWFhOjpcJiMzNDspLCBcJiMzNDsyMDAxOmRiODoxMDo6MVwmIzM0OywgXCYjMzQ7bm8gYmFja3RyYWNraW5nXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGlwKFwmIzM0Oy02IHJvdXRlIGRlbCAyMDAxOmRiODo1MDA6Oi80OCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcJiMzNDspXG4mIzQzOyAgICBpcChcJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCYjMzQ7KVxuJiM0MztcbiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCYjMzQ7MjAwMTpkYjg6MTE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtiYXNlbGluZSBwYXNzXCYjMzQ7KVxuJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcihcJiMzNDsyMDAxOmRiODo1MDA6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtubyBiYWNrdHJhY2tpbmdcJiMzNDspXG4mIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwmIzM0OzIwMDE6ZGI4OjUwMDphYWE6OlwmIzM0OyksIFwmIzM0OzIwMDE6ZGI4OjEwOjoxXCYjMzQ7LCBcJiMzNDtubyBiYWNrdHJhY2tpbmdcJiMzNDspXG4mIzQzO1xuJiM0MztcbiYjNDM7ZGVmIG1haW4oKSAtXHUwMDNlIE5vbmU6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIFJGQzY3MjQgcnVsZSA1LjUgdGVzdCBkcml2ZXJcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MzsgICAga3NmdF9ydW4oXG4mIzQzOyAgICAgICAgW1xuJiM0MzsgICAgICAgICAgICB0ZXN0X2Jhc2ljLFxuJiM0MzsgICAgICAgICAgICB0ZXN0X25oX29iaixcbiYjNDM7ICAgICAgICAgICAgdGVzdF9sb3dfbWV0cmljLFxuJiM0MzsgICAgICAgICAgICB0ZXN0X25vX3N1YnRyZWUsXG4mIzQzOyAgICAgICAgICAgIHRlc3RfbG9uZ2VyLFxuJiM0MzsgICAgICAgIF1cbiYjNDM7ICAgIClcbiYjNDM7ICAgIGtzZnRfZXhpdCgpXG4mIzQzO1xuJiM0MztcbiYjNDM7aWYgX19uYW1lX18gPT0gXCYjMzQ7X19tYWluX19cJiMzNDs6XG4mIzQzOyAgICBtYWluKClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NVQlRSRUVTJiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2Nl9zYWRkcl9ydWxlNXA1JiMzNDssCiAgICAmIzM0O2lwdjZfZmxfZ2V0X3NhZGRyJiMzNDssCiAgICAmIzM0O2lwdjZfZGV2X2dldF9zYWRkciYjMzQ7LAogICAgJiMzNDtydDZfZmlsbF9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgUkZDNjcyNCBydWxlIDUuNSBmb3IgSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gYnkgaW50cm9kdWNpbmcgYGlwdjZfc2FkZHJfcnVsZTVwNWAgYW5kIGBpcHY2X2ZsX2dldF9zYWRkcmAuIEl0IG1vZGlmaWVzIGNvcmUgSVB2NiByb3V0aW5nIGFuZCBhZGRyZXNzIHNlbGVjdGlvbiBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzb2NrZXQgb3BlcmF0aW9ucyAoZS5nLiwgY29ubmVjdCwgc2VuZG1zZykgYW5kIG5ldGxpbmsgcm91dGUgZHVtcHMgKGBydDZfZmlsbF9ub2RlYCkuIFRoZSBmZWF0dXJlIHJlcXVpcmVzIGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYCB0byBiZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YTRkNTQ0MmMwMmIzOWI5MjU4MmZlMTFlYzhhZjIyYjRmYWRjODc4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MTc6MjUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni1hZGRyc2VsLnJzdCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZWQwMzJlNjk1NzA1YwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0CkBAIC0wLDAgJiM0MzsxLDc1IEBACiYjNDM7Li4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsKJiM0Mzs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KJiM0MztJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiB0cml2aWEKJiM0Mzs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KJiM0MzsKJiM0MzsKJiM0MztSRkM2NzI0IHJ1bGUgNS41IHN1cHBvcnQKJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MztSRkM2NzI0IHJ1bGUgNS41IGlzIGEgdmVyeSBzaG9ydCBwYXJhZ3JhcGggaW4gYSBjb21wbGV4IFJGQyB0aGF0IGhhcyB0dXJuZWQKJiM0MztvdXQgcXVpdGUgdHJpY2t5LCBidXQgYWxzbyBpbW1lbnNlbHkgdXNlZnVsIGluIG11bHRpaG9taW5nIHNjZW5hcmlvcy4gIEZvcgomIzQzO3JlZmVyZW5jZSwgaXQgc2F5czoKJiM0MzsKJiM0Mzs6OgomIzQzOwomIzQzOyAgIFJ1bGUgNS41OiBQcmVmZXIgYWRkcmVzc2VzIGluIGEgcHJlZml4IGFkdmVydGlzZWQgYnkgdGhlIG5leHQtaG9wLgomIzQzOyAgIElmIFNBIG9yIFNBJiMzOTtzIHByZWZpeCBpcyBhc3NpZ25lZCBieSB0aGUgc2VsZWN0ZWQgbmV4dC1ob3AgdGhhdCB3aWxsCiYjNDM7ICAgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNCIG9yIFNCJiMzOTtzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudAomIzQzOyAgIG5leHQtaG9wLCB0aGVuIHByZWZlciBTQS4gIFNpbWlsYXJseSwgaWYgU0Igb3IgU0ImIzM5O3MgcHJlZml4IGlzCiYjNDM7ICAgYXNzaWduZWQgYnkgdGhlIG5leHQtaG9wIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNlbmQgdG8gRCBhbmQgU0Egb3IKJiM0MzsgICBTQSYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnQgbmV4dC1ob3AsIHRoZW4gcHJlZmVyIFNCLgomIzQzOwomIzQzO1RoZSB3YXkgdGhpcyB3b3JrcyBvbiBMaW51eCBpcyBhcyBmb2xsb3dzOgomIzQzOwomIzQzOy0gcHJpb3IgdG8gYW55IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBoYXBwZW5pbmcsIHdoZW4gcmVjZWl2aW5nIGEgUkEsIG1vcmUKJiM0MzsgIHRoYW4gdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRlZmF1bHQgcm91dGUgKG9yIDo6LzEyOCByb3V0ZSkgbmVlZHMgdG8gaGFwcGVuOgomIzQzOyAgZm9yIGVhY2ggUElPLCBhIHNvdXJjZS1zcGVjaWZpYyAoc3VidHJlZSkgcm91dGUgaXMgKmFkZGl0aW9uYWxseSogaW5zdGFsbGVkLgomIzQzOyAgVGhlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgKmFmdGVyKiBhIHNvdXJjZSBhZGRyZXNzIGhhcyBiZWVuIHNlbGVjdGVkLCBvbmUKJiM0MzsgIG9mIHRoZSByb3V0ZXJzIHRoYXQgYWR2ZXJ0aXNlZCBpdCB3aWxsIHJlbWFpbiBpbiB1c2UgKHRoaXMgaXMgKm5vdCogUkZDIDY3MjQKJiM0MzsgIHJlbGF0ZWQsIGJ1dCByYXRoZXIgUkZDIDgwMjguKSAgQXQgdGhlIHNhbWUgdGltZSwgdGhlc2UgZXh0cmEgcm91dGVzIHNlcnZlCiYjNDM7ICB0byByZW1lbWJlciB3aGljaCByb3V0ZXIgYWR2ZXJ0aXNlZCB3aGF0LgomIzQzOwomIzQzOy0gcGVyIHVzdWFsLCBhIHJvdXRlIGxvb2t1cCBmb3IgdGhlIElQdjYgZGVzdGluYXRpb24gYWRkcmVzcyBpbiBjb25zaWRlcmF0aW9uCiYjNDM7ICBpcyBkb25lIGZpcnN0LiAgVGhpcyBpcyBwYXNzZWQgYXJvdW5kIGluIGtlcm5lbCBhcyBhIGRzdF9lbnRyeS4KJiM0MzsKJiM0MzstIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gY29kZSBpdGVyYXRlcyB0aHJvdWdoIHRoZSB2YXJpb3VzIHJ1bGVzIGluCiYjNDM7ICBSRkMgNjcyNC4KJiM0MzsKJiM0MzstIGlmL3doZW4gcnVsZSA1LjUgaXMgcmVhY2hlZCwgZmlyc3Qgb2YgYWxsLCB0aGVyZSBpcyBhIGNoZWNrIGlmICphbnkqIHNvdXJjZQomIzQzOyAgc3BlY2lmaWMgcm91dGVzIGV4aXN0IGluIHRoZSByb3V0aW5nIHRhYmxlLiAgSWYgdGhlcmUgYXJlIG5vbmUsIHRoZSBlbnRpcmUKJiM0MzsgIGNvZGUgZm9yIDUuNSBpcyBza2lwcGVkIGJlY2F1c2UgaXQgY2Fubm90IGhhdmUgYW55IGVmZmVjdCwgYnV0IGlzIG5vdCBmcmVlCiYjNDM7ICB0byBleGVjdXRlIChjYW4gaW52b2x2ZSBtdWx0aXBsZSByb3V0aW5nIGxvb2t1cHMuKSAgKipJbiBhcHBsaWNhdGlvbnMgdGhhdAomIzQzOyAgdXNlIGEgbG90IG9mIHVuYm91bmQgKGUuZy4gVURQKSBzb2NrZXRzLCBpbnN0YWxsaW5nIHN1YnRyZWUgcm91dGVzIHNob3VsZAomIzQzOyAgdGhlcmVmb3JlIGJlIGF2b2lkZWQgdG8gbm90IGluY3VyIHRoaXMgY29zdCBvbiBlYWNoIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbgomIzQzOyAgcGFzcy4qKiAgQWx0ZXJuYXRpdmVseSwgYXBwbGljYXRpb25zIHNob3VsZCBiaW5kIHRoZWlyIHNvY2tldHMgdG8gYSBzcGVjaWZpYwomIzQzOyAgc291cmNlIGFkZHJlc3Mgc3VjaCB0aGF0IHRoZSBzZWxlY3Rpb24gY29kZSBpcyBuZXZlciBoaXQuCiYjNDM7CiYjNDM7LSBpZiBzdWJ0cmVlIHJvdXRlcyBkbyBleGlzdCwgdGhlIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBjb2RlIG5vdyByZXBlYXRzCiYjNDM7ICB0aGUgcm91dGluZyBsb29rdXAgZG9uZSBiZWZvcmUgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGlzIGVudGVyZWQsIGV4Y2VwdAomIzQzOyAgd2l0aCB0aGUgc291cmNlIGFkZHJlc3MgdW5kZXIgY29uc2lkZXJhdGlvbiBmaWxsZWQgaW4uICBUaGlzIGxvb2t1cCB3aWxsIGhpdAomIzQzOyAgdGhlIHN1YnRyZWUgcm91dGVzIHRoYXQgd2VyZSBpbnN0YWxsZWQgKHNlZSBmaXJzdCBpdGVtKSwgZ2l2aW5nIGEgZnJlc2gKJiM0MzsgIGRzdF9lbnRyeS4gIElmIHRoZSBuZXcgZHN0X2VudHJ5IG1hdGNoZXMgdGhlIG9yaWdpbmFsIGRzdF9lbnRyeSwgdGhhdCBtZWFucwomIzQzOyAgdGhlIG9yaWdpbmFsIHJvdXRlciBoYXMgaW4gZmFjdCBzZW50IFJBcyB3aXRoIFBJT3MgZm9yIHRoaXMgc291cmNlIGFkZHJlc3MsCiYjNDM7ICBzbyBpdCBpcyBwcmVmZXJyZWQuICBPdGhlcndpc2UgaXQgaXMgbm90LgomIzQzOwomIzQzOwomIzQzO1RoZXJlIGFyZSBhIGZldyBjYXZlYXRzIHRvIGNvbnNpZGVyOgomIzQzOwomIzQzOy0gdGhlIGtlcm5lbCBjdXJyZW50bHkgZG9lcyBub3QgY3JlYXRlIHRoZSBzdWJ0cmVlIHJvdXRlcyBtZW50aW9uZWQgaW4gdGhlCiYjNDM7ICBmaXJzdCBpdGVtLiAgVGhpcyBpcyBhIHNlcGFyYXRlIHdvcmsgaXRlbSwgcGFydGlhbGx5IGRvbmUgYXQgdGhlIHRpbWUgb2YKJiM0MzsgIHdyaXRpbmcgdGhpcy4gIEJ1dCB0aGlzIGNhbiBlcXVhbGx5IHdlbGwgYmUgcGVyZm9ybWVkIGluIHVzZXJzcGFjZSBwcm9jZXNzaW5nCiYjNDM7ICBvZiBSQXMsIGUuZy4gTmV0d29ya01hbmFnZXIgb3IgcGxhaW4gc3RhdGljIGNvbmZpZ3VyYXRpb24uCiYjNDM7CiYjNDM7LSBzaW5jZSBhZGRyZXNzZXMgY2FuIGFsc28gYmUgYWNxdWlyZWQgZnJvbSBESENQdjYsIGV2ZW4gUkEvUElPIGNvbWJpbmF0aW9ucwomIzQzOyAgdGhhdCBkaWRuJiMzOTt0IHJlc3VsdCBpbiB0aGUgY3JlYXRpb24gb2YgYW55IGFkZHJlc3NlcyAoZS5nLiBBPTApIHNob3VsZCBoYXZlCiYjNDM7ICBzdWJ0cmVlIHJvdXRlcyBhZGRlZC4gIFRob3NlIHJvdXRlcyAqbWF5KiBiZSByZWxldmFudCBmb3IgREhDUHY2LWdlbmVyYXRlZAomIzQzOyAgYWRkcmVzc2VzLgomIzQzOwomIzQzOy0gdGhlICYjMzQ7YW5ub3VuY2UgY2hlY2smIzM0OyBsb29rdXAgZG9lcyBub3QgYmFja3RyYWNrLiAgT25seSB0aGUgZGVzdGluYXRpb24gcHJlZml4CiYjNDM7ICB0aGF0IHByb3ZpZGVkIHRoZSAmIzM0O3Vuc3BlY2lmaWMmIzM0OyAoOjovMTI4KSBtYXRjaCBpcyBjaGVja2VkIGZvciBzb3VyY2UgcHJlZml4ZXMKJiM0MzsgIHRvIHNlZSB3aGF0IHJvdXRlcnMgYWR2ZXJ0aXNlZCB3aGF0LiAgVGhpcyBtZWFucyB0aGF0IGZvciBlLmcuIFJJT3MsIHN1YnRyZWUKJiM0MzsgIHJvdXRlcyBhbHNvIGhhdmUgdG8gYmUgY3JlYXRlZC4gIChCYWNrdHJhY2tpbmcgZm9yIHRoaXMgY2FzZSB3b3VsZCBmdXJ0aGVyCiYjNDM7ICBpbmNyZWFzZSB0aGUgY29zdCBvZiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24sIGZvciBhIHByZXR0eSByYXJlIHNpdHVhdGlvbgomIzQzOyAgdGhhdCBoYXMgYW4gZWFzeSBmaXgvd29ya2Fyb3VuZC4pCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGYzMjE4YWJlZmQwYzZiLi40ZWRmNDgzNjJhMDczMiAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlMKQEAgLTE4OTEyLDYgJiM0MzsxODkxMiw3IEBAIEY6CURvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1hZGRyLnlhbWwKIEY6CURvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1uZWlnaC55YW1sCiBGOglEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtcm91dGUueWFtbAogRjoJRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LXJ1bGUueWFtbAomIzQzO0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0CiBGOglpbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaAogRjoJaW5jbHVkZS9saW51eC9tcm91dGUqCiBGOglpbmNsdWRlL25ldC9hZGRyY29uZi5oCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaAppbmRleCA4Y2VkMjdhODIyOWI2ZS4uN2JjMDcxMWI4NzE3OTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaApAQCAtMTQyLDYgJiM0MzsxNDIsMTAgQEAgc3RydWN0IGluZXQ2X2lmYWRkciAqaXB2Nl9nZXRfaWZhZGRyKHN0cnVjdCBuZXQgKm5ldCwKIGludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkgICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgdW5zaWduZWQgaW50IHNyY3ByZWZzLAogCQkgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7CiYjNDM7aW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0LAomIzQzOwkJICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsCiYjNDM7CQkgICAgICBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBzcmNwcmVmcywKJiM0MzsJCSAgICAgIHN0cnVjdCBmbG93aTYgKmZsNik7CiBpbnQgaXB2Nl9nZXRfbGxhZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpbjZfYWRkciAqYWRkciwKIAkJICAgIHUzMiBiYW5uZWRfZmxhZ3MpOwogYm9vbCBpbmV0X3Jjdl9zYWRkcl9lcXVhbChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBzb2NrICpzazIsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcDZfcm91dGUuaCBiL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oCmluZGV4IDA5ZmZlMGYxM2NlNzUyLi5mZTEzY2IxZDMyNTdkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmgKQEAgLTE0MCwzMiAmIzQzOzE0MCw2IEBAIHZvaWQgcnQ2X2ZsdXNoX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfaW5mbyAqZjZpKTsKIHZvaWQgcnQ2X2FnZV9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSwgc3RydWN0IGZpYjZfZ2NfYXJncyAqZ2NfYXJncywKIAkJCXVuc2lnbmVkIGxvbmcgbm93KTsKIAotc3RhdGljIGlubGluZSBpbnQgaXA2X3JvdXRlX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSwKLQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLAotCQkJCSAgICAgIHVuc2lnbmVkIGludCBwcmVmcywgaW50IGwzbWRldl9pbmRleCwKLQkJCQkgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKQotewotCXN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7Ci0Jc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKLQlib29sIHNhbWVfdnJmOwotCWludCBlcnIgPSAwOwotCi0JcmN1X3JlYWRfbG9jaygpOwotCi0JbDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBsM21kZXZfaW5kZXgpOwotCWlmICghZjZpIHx8ICFmNmktJmd0O2ZpYjZfcHJlZnNyYy5wbGVuIHx8IGwzbWRldikKLQkJZGV2ID0gZjZpID8gZmliNl9pbmZvX25oX2RldihmNmkpIDogTlVMTDsKLQlzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2OwotCWlmIChmNmkgJmFtcDsmYW1wOyBmNmktJmd0O2ZpYjZfcHJlZnNyYy5wbGVuICZhbXA7JmFtcDsgc2FtZV92cmYpCi0JCSpzYWRkciA9IGY2aS0mZ3Q7ZmliNl9wcmVmc3JjLmFkZHI7Ci0JZWxzZQotCQllcnIgPSBpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgZGFkZHIsIHByZWZzLCBzYWRkcik7Ci0KLQlyY3VfcmVhZF91bmxvY2soKTsKLQotCXJldHVybiBlcnI7Ci19Ci0KIHN0cnVjdCBydDZfaW5mbyAqcnQ2X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsCiAJCQkgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpzYWRkciwgaW50IG9pZiwKIAkJCSAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvS2NvbmZpZyBiL25ldC9pcHY2L0tjb25maWcKaW5kZXggYzM4MDZjNmFjOTZmOTUuLjM5NjU5ZTliNTNhM2RiIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L0tjb25maWcKQEAgLTI0MywxNiAmIzQzOzI0MywyNiBAQCBjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVMKIGNvbmZpZyBJUFY2X1NVQlRSRUVTCiAJYm9vbCAmIzM0O0lQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmcmIzM0OwogCWRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMKJiM0MzsJZGVmYXVsdCB5CiAJaGVscAogCSAgRW5hYmxlIHJvdXRpbmcgYnkgc291cmNlIGFkZHJlc3Mgb3IgcHJlZml4LgogCiAJICBUaGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyBzdGlsbCB0aGUgcHJpbWFyeSByb3V0aW5nIGtleSwgc28gbWl4aW5nCiAJICBub3JtYWwgYW5kIHNvdXJjZSBwcmVmaXggc3BlY2lmaWMgcm91dGVzIGluIHRoZSBzYW1lIHJvdXRpbmcgdGFibGUKLQkgIG1heSBzb21ldGltZXMgbGVhZCB0byB1bmludGVuZGVkIHJvdXRpbmcgYmVoYXZpb3IuICBUaGlzIGNhbiBiZQotCSAgYXZvaWRlZCBieSBkZWZpbmluZyBkaWZmZXJlbnQgcm91dGluZyB0YWJsZXMgZm9yIHRoZSBub3JtYWwgYW5kCi0JICBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcy4KJiM0MzsJICBtYXkgc29tZXRpbWVzIGxlYWQgdG8gdW5pbnRlbmRlZCByb3V0aW5nIGJlaGF2aW9yIGlmIHRoZSBvcmRlciBvZgomIzQzOwkgIGxvb2t1cHMgaXMgbWlzdW5kZXJzdG9vZC4gIFRvIGFjaGlldmUgZnVsbCBzZXBhcmF0aW9uIGJhc2VkIG9uIHNvdXJjZQomIzQzOwkgIGFkZHJlc3MsIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBzaG91bGQgYmUgZGVmaW5lZCBmb3IgZWFjaCBzb3VyY2UKJiM0MzsJICBwcmVmaXguCiAKLQkgIElmIHVuc3VyZSwgc2F5IE4uCiYjNDM7CSAgU3VidHJlZXMgc3BlY2lmaWNhbGx5IGFkZHJlc3Mgc2NlbmFyaW9zIHdoZXJlIGxvY2FsIGNvbm5lY3Rpdml0eQomIzQzOwkgIGJldHdlZW4gc291cmNlIHByZWZpeGVzIGlzIHNoYXJlZCBhbmQgdW5yZXN0cmljdGVkLCBidXQgc29tZQomIzQzOwkgIGRlc3RpbmF0aW9ucyAoZS5nLiB0aGUgZGVmYXVsdCByb3V0ZSkgaGF2ZSBtb3JlIGZpbmUtZ3JhaW5lZCBydWxlcy4KJiM0MzsKJiM0MzsJICBUaGlzIGZlYXR1cmUgaXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IHN1cHBvcnQgUkZDNjcyNCBydWxlIDUuNSBpbgomIzQzOwkgIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbi4gIFJ1bGUgNS41IGlzIGEgbmVjZXNzaXR5IGZvciBnb29kCiYjNDM7CSAgbXVsdGlob21pbmcsIHJlbnVtYmVyaW5nIGFuZCBzb3VyY2UgcHJlZml4IGxpdmVsaW5lc3MgY2hlY2tzLgomIzQzOwomIzQzOwkgIElmIHVuc3VyZSwgc2F5IFkuCiAKIGNvbmZpZyBJUFY2X01ST1VURQogCWJvb2wgJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZyYjMzQ7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9hZGRyY29uZi5jIGIvbmV0L2lwdjYvYWRkcmNvbmYuYwppbmRleCBmMWZlOWVkZTFlZGIzNy4uZjVjMDQ5MjhhYTE0MmYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2FkZHJjb25mLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWRkcmNvbmYuYwpAQCAtMTUyMiw2ICYjNDM7MTUyMiw3IEBAIGVudW0gewogCUlQVjZfU0FERFJfUlVMRV9IT0EsCiAjZW5kaWYKIAlJUFY2X1NBRERSX1JVTEVfT0lGLAomIzQzOwlJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1AsCiAJSVBWNl9TQUREUl9SVUxFX0xBQkVMLAogCUlQVjZfU0FERFJfUlVMRV9QUklWQUNZLAogCUlQVjZfU0FERFJfUlVMRV9PUkNISUQsCkBAIC0xNTQyLDExICYjNDM7MTU0MywxNCBAQCBzdHJ1Y3QgaXB2Nl9zYWRkcl9zY29yZSB7CiB9OwogCiBzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgewotCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqYWRkcjsKJiM0MzsJc3RydWN0IGZsb3dpNiAqZmw2OwomIzQzOwljb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiYjNDM7CWNvbnN0IHN0cnVjdCBzb2NrICpzazsKIAlpbnQgaWZpbmRleDsKIAlpbnQgc2NvcGU7CiAJaW50IGxhYmVsOwogCXVuc2lnbmVkIGludCBwcmVmczsKJiM0MzsJc3RydWN0IG5ldCAqbmV0OwogfTsKIAogc3RhdGljIGlubGluZSBpbnQgaXB2Nl9zYWRkcl9wcmVmZXJyZWQoaW50IHR5cGUpCkBAIC0xNTkxLDYgJiM0MzsxNTk1LDgwIEBAIHN0YXRpYyBib29sIGlwdjZfYWxsb3dfb3B0aW1pc3RpY19kYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LAogI2VuZGlmCiB9CiAKJiM0MzsvKiAmIzM0O3NvdXJjZSBhZGRyZXNzIGlzIHByZWZlcmFibGUgaWYgdGhlIGNob3NlbiBuZXh0aG9wIGFkdmVydGlzZWQgaXQgYXMgYSBQSU8mIzM0OwomIzQzOyAqID0mZ3Q7IGNvbnNpZGVyICYjMzk7YWR2ZXJ0aXNlZCBhcyBhIFBJTyYjMzk7IHRvIGJlICYjMzk7dGhlIHJvdXRlcyBmb3IgdGhlIHNvdXJjZSYjMzk7cyBzdWJ0cmVlCiYjNDM7ICogICAgaW5jbHVkZSBvbmUgd2l0aCB0aGUgc2FtZSBuZXh0aG9wJiMzOTsKJiM0MzsgKgomIzQzOyAqIE5COiB0aGVyZSBpcyBubyBiYWNrdHJhY2tpbmcgaW4gdGhlIHN1YnRyZWUgaGVyZSwgdGhpcyBpcyBpbnRlbnRpb25hbCAtCiYjNDM7ICogZWFjaCBwcmVmaXggc2VlbiAoYW5kIGFjY2VwdGVkKSBpbiBQSU9zIGNyZWF0ZXMgZXNzZW50aWFsbHkgYSAmIzM0O3pvbmUmIzM0OyB3aGljaAomIzQzOyAqIGlzIG91ciBzZWFyY2ggc2NvcGUuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBpcHY2X3NhZGRyX3J1bGU1cDUoc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLAomIzQzOwkJCSAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqc2FkZHJfZHN0KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHJ0Nl9pbmZvICpydCwgKmNtcF9ydDsKJiM0MzsJc3RydWN0IGRzdF9lbnRyeSAqY21wX2RzdDsKJiM0MzsJc3RydWN0IGZpYjZfaW5mbyAqZjZpOwomIzQzOwlpbnQgcmV0ID0gMDsKJiM0MzsKJiM0MzsJcnQgPSBjb250YWluZXJfb2Yoc2FkZHJfZHN0LSZndDtkc3QsIHN0cnVjdCBydDZfaW5mbywgZHN0KTsKJiM0MzsKJiM0MzsJLyogZmw2LSZndDtzYWRkciBpcyA6OiwgY2YuIGNoZWNrIGF0IHRoZSB0b3Agb2YgaXB2Nl9jb21tb25fZ2V0X3NhZGRyKCkgKi8KJiM0MzsJc2FkZHJfZHN0LSZndDtmbDYtJmd0O3NhZGRyID0gc2NvcmUtJmd0O2lmYS0mZ3Q7YWRkcjsKJiM0MzsJY21wX2RzdCA9IGlwNl9yb3V0ZV9vdXRwdXQoc2FkZHJfZHN0LSZndDtuZXQsIHNhZGRyX2RzdC0mZ3Q7c2ssCiYjNDM7CQkJCSAgIHNhZGRyX2RzdC0mZ3Q7Zmw2KTsKJiM0MzsJbWVtc2V0KCZhbXA7c2FkZHJfZHN0LSZndDtmbDYtJmd0O3NhZGRyLCAwLCBzaXplb2Yoc2FkZHJfZHN0LSZndDtmbDYtJmd0O3NhZGRyKSk7CiYjNDM7CiYjNDM7CWlmIChjbXBfZHN0LSZndDtlcnJvcikKJiM0MzsJCWdvdG8gb3V0X3JlbGVhc2VfZHN0OwomIzQzOwomIzQzOwljbXBfcnQgPSBjb250YWluZXJfb2YoY21wX2RzdCwgc3RydWN0IHJ0Nl9pbmZvLCBkc3QpOwomIzQzOwomIzQzOwkvKiB0aGlzIG11c3Qgd29yayBpZiBfYW55XyBuZXh0aG9wIG1hdGNoZXM7IHRoZSBub24tc3VidHJlZSBiZXN0IG1heQomIzQzOwkgKiBub3QgYmUgaW4gc2FtZSBvcmRlciBhcyBzdWJ0cmVlIGJlc3QKJiM0MzsJICovCiYjNDM7CWZvciAoZjZpID0gcmN1X2RlcmVmZXJlbmNlKGNtcF9ydC0mZ3Q7ZnJvbSk7IGY2aTsKJiM0MzsJICAgICBmNmkgPSByY3VfZGVyZWZlcmVuY2UoZjZpLSZndDtmaWI2X25leHQpKSB7CiYjNDM7CQlzdHJ1Y3QgZmliNl9uaCAqZjZuID0gZjZpLSZndDtmaWI2X25oOwomIzQzOwkJc3RydWN0IGZpYjZfaW5mbyAqc2libGluZzsKJiM0MzsKJiM0MzsJCS8qIG5vbi1zdWJ0cmVlIHJvdXRlOiBzYXlzIG5vdGhpbmcgYWJvdXQgcm91dGVyIGFkdmVydGlzaW5nIHRoaXMgc291cmNlICovCiYjNDM7CQlpZiAoZjZpLSZndDtmaWI2X3NyYy5wbGVuID09IDApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlpZiAoZjZuLSZndDtuaF9jb21tb24ubmhjX2RldiAhPSBzYWRkcl9kc3QtJmd0O2RzdC0mZ3Q7ZGV2IHx8CiYjNDM7CQkgICAgZjZuLSZndDtuaF9jb21tb24ubmhjX2d3X2ZhbWlseSAhPSBBRl9JTkVUNikKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCWlmIChpcHY2X2FkZHJfZXF1YWwoJmFtcDtmNm4tJmd0O25oX2NvbW1vbi5uaGNfZ3cuaXB2NiwKJiM0MzsJCQkJICAgICZhbXA7cnQtJmd0O3J0NmlfZ2F0ZXdheSkpIHsKJiM0MzsJCQlyZXQgPSAxOwomIzQzOwkJCWdvdG8gb3V0X3JlbGVhc2VfZHN0OwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKCFmNmktJmd0O2ZpYjZfbnNpYmxpbmdzKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShzaWJsaW5nLCAmYW1wO2Y2aS0mZ3Q7ZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncykgewomIzQzOwkJCWY2biA9IHNpYmxpbmctJmd0O2ZpYjZfbmg7CiYjNDM7CiYjNDM7CQkJaWYgKGY2bi0mZ3Q7bmhfY29tbW9uLm5oY19kZXYgIT0gc2FkZHJfZHN0LSZndDtkc3QtJmd0O2RldiB8fAomIzQzOwkJCSAgICBmNm4tJmd0O25oX2NvbW1vbi5uaGNfZ3dfZmFtaWx5ICE9IEFGX0lORVQ2KQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCQlpZiAoaXB2Nl9hZGRyX2VxdWFsKCZhbXA7ZjZuLSZndDtuaF9jb21tb24ubmhjX2d3LmlwdjYsCiYjNDM7CQkJCQkgICAgJmFtcDtydC0mZ3Q7cnQ2aV9nYXRld2F5KSkgewomIzQzOwkJCQlyZXQgPSAxOwomIzQzOwkJCQlnb3RvIG91dF9yZWxlYXNlX2RzdDsKJiM0MzsJCQl9CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MztvdXRfcmVsZWFzZV9kc3Q6CiYjNDM7CWRzdF9yZWxlYXNlKGNtcF9kc3QpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsCiAJCQkgICAgICAgc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLAogCQkJICAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqZHN0LApAQCAtMTYxOSw3ICYjNDM7MTY5Nyw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsCiAJCWJyZWFrOwogCWNhc2UgSVBWNl9TQUREUl9SVUxFX0xPQ0FMOgogCQkvKiBSdWxlIDE6IFByZWZlciBzYW1lIGFkZHJlc3MgKi8KLQkJcmV0ID0gaXB2Nl9hZGRyX2VxdWFsKCZhbXA7c2NvcmUtJmd0O2lmYS0mZ3Q7YWRkciwgZHN0LSZndDthZGRyKTsKJiM0MzsJCXJldCA9IGlwdjZfYWRkcl9lcXVhbCgmYW1wO3Njb3JlLSZndDtpZmEtJmd0O2FkZHIsICZhbXA7ZHN0LSZndDtmbDYtJmd0O2RhZGRyKTsKIAkJYnJlYWs7CiAJY2FzZSBJUFY2X1NBRERSX1JVTEVfU0NPUEU6CiAJCS8qIFJ1bGUgMjogUHJlZmVyIGFwcHJvcHJpYXRlIHNjb3BlCkBAIC0xNjc1LDYgJiM0MzsxNzUzLDI0IEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsCiAJCXJldCA9ICghZHN0LSZndDtpZmluZGV4IHx8CiAJCSAgICAgICBkc3QtJmd0O2lmaW5kZXggPT0gc2NvcmUtJmd0O2lmYS0mZ3Q7aWRldi0mZ3Q7ZGV2LSZndDtpZmluZGV4KTsKIAkJYnJlYWs7CiYjNDM7CWNhc2UgSVBWNl9TQUREUl9SVUxFX1BJT19CWV9ORVhUSE9QOgomIzQzOwkJLyogUnVsZSA1LjU6IFByZWZlciBzb3VyY2VzIGFkdmVydGlzZWQgYnkgY2hvc2VuIG5leHQtaG9wICovCiYjNDM7CiYjNDM7CQkvKiBXaXRob3V0IHN1YnRyZWVzLCB0aGUgc291cmNlIGFkZHJlc3Mgd2lsbCBtYWtlIG5vIGRpZmZlcmVuY2UKJiM0MzsJCSAqIGluIHRoZSBpcDZfcm91dGVfb3V0cHV0IGNhbGwgaW4gcnVsZTVwNS4gIFRoZXJlZm9yZSB0aGUgcnVsZQomIzQzOwkJICogNS41IGNoZWNrIGJlY29tZXMgdXNlbGVzcy4gIFRoaXMgd291bGRuJiMzOTt0IHJlc3VsdCBpbiBhbnkKJiM0MzsJCSAqIGVycm9ycywgYnV0IGlwNl9yb3V0ZV9vdXRwdXQgaXNuJiMzOTt0IGZyZWUsIHNvIGlmIHN1YnRyZWVzIGFyZQomIzQzOwkJICogZGlzYWJsZWQgc2F2ZSBzb21lIGN5Y2xlcyBieSBza2lwcGluZyB0aGlzIGVudGlyZWx5LgomIzQzOwkJICoKJiM0MzsJCSAqIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHN1YnRyZWVzX2VuYWJsZWQgdG8gaGF2ZSB0aGUgY29kZQomIzQzOwkJICogY29tcGlsZWQgcmVnYXJkbGVzcy4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGZpYjZfcm91dGVzX3JlcXVpcmVfc3JjKG5ldCkgJmFtcDsmYW1wOyBkc3QtJmd0O2RzdAomIzQzOwkJICAgICZhbXA7JmFtcDsgIWRzdC0mZ3Q7ZHN0LSZndDtlcnJvcikKJiM0MzsJCQlyZXQgPSBpcHY2X3NhZGRyX3J1bGU1cDUoc2NvcmUsIGRzdCk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcmV0ID0gMTsKJiM0MzsJCWJyZWFrOwogCWNhc2UgSVBWNl9TQUREUl9SVUxFX0xBQkVMOgogCQkvKiBSdWxlIDY6IFByZWZlciBtYXRjaGluZyBsYWJlbCAqLwogCQlyZXQgPSBpcHY2X2FkZHJfbGFiZWwobmV0LApAQCAtMTY5NywxMSAmIzQzOzE3OTMsMTEgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCwKIAkJICoJICAgIG5vbi1PUkNISUQgdnMgbm9uLU9SQ0hJRAogCQkgKi8KIAkJcmV0ID0gIShpcHY2X2FkZHJfb3JjaGlkKCZhbXA7c2NvcmUtJmd0O2lmYS0mZ3Q7YWRkcikgXgotCQkJaXB2Nl9hZGRyX29yY2hpZChkc3QtJmd0O2FkZHIpKTsKJiM0MzsJCQlpcHY2X2FkZHJfb3JjaGlkKCZhbXA7ZHN0LSZndDtmbDYtJmd0O2RhZGRyKSk7CiAJCWJyZWFrOwogCWNhc2UgSVBWNl9TQUREUl9SVUxFX1BSRUZJWDoKIAkJLyogUnVsZSA4OiBVc2UgbG9uZ2VzdCBtYXRjaGluZyBwcmVmaXggKi8KLQkJcmV0ID0gaXB2Nl9hZGRyX2RpZmYoJmFtcDtzY29yZS0mZ3Q7aWZhLSZndDthZGRyLCBkc3QtJmd0O2FkZHIpOwomIzQzOwkJcmV0ID0gaXB2Nl9hZGRyX2RpZmYoJmFtcDtzY29yZS0mZ3Q7aWZhLSZndDthZGRyLCAmYW1wO2RzdC0mZ3Q7Zmw2LSZndDtkYWRkcik7CiAJCWlmIChyZXQgJmd0OyBzY29yZS0mZ3Q7aWZhLSZndDtwcmVmaXhfbGVuKQogCQkJcmV0ID0gc2NvcmUtJmd0O2lmYS0mZ3Q7cHJlZml4X2xlbjsKIAkJc2NvcmUtJmd0O21hdGNobGVuID0gcmV0OwpAQCAtMTgxOSw5ICYjNDM7MTkxNSwxMCBAQCBzdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX21hc3RlcihzdHJ1Y3QgbmV0ICpuZXQsCiAJcmV0dXJuIGhpc2NvcmVfaWR4OwogfQogCi1pbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsCi0JCSAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgcHJlZnMsCi0JCSAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKQomIzQzO2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSwKJiM0MzsJCSAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LAomIzQzOwkJICAgICAgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgcHJlZnMsCiYjNDM7CQkgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpCiB7CiAJc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgc2NvcmVzWzJdLCAqaGlzY29yZTsKIAlzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgZHN0OwpAQCAtMTgzMiwxMSAmIzQzOzE5MjksMTggQEAgaW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LAogCWludCBoaXNjb3JlX2lkeCA9IDA7CiAJaW50IHJldCA9IDA7CiAKLQlkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoZGFkZHIpOwotCWRzdC5hZGRyID0gZGFkZHI7CiYjNDM7CS8qIHdlIHNob3VsZCBuZXZlciBlbmQgdXAgaGVyZSB3aXRoIGEgbm9uLWVtcHR5IHNhZGRyLiAqLwomIzQzOwlpZiAoV0FSTl9PTl9PTkNFKCFpcHY2X2FkZHJfYW55KCZhbXA7Zmw2LSZndDtzYWRkcikpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWRzdF90eXBlID0gX19pcHY2X2FkZHJfdHlwZSgmYW1wO2ZsNi0mZ3Q7ZGFkZHIpOwomIzQzOwlkc3QubmV0ID0gbmV0OwomIzQzOwlkc3QuZmw2ID0gZmw2OwomIzQzOwlkc3Quc2sgPSBzazsKJiM0MzsJZHN0LmRzdCA9IGRzdF9lbnRyeTsKIAlkc3QuaWZpbmRleCA9IGRzdF9kZXYgPyBkc3RfZGV2LSZndDtpZmluZGV4IDogMDsKIAlkc3Quc2NvcGUgPSBfX2lwdjZfYWRkcl9zcmNfc2NvcGUoZHN0X3R5cGUpOwotCWRzdC5sYWJlbCA9IGlwdjZfYWRkcl9sYWJlbChuZXQsIGRhZGRyLCBkc3RfdHlwZSwgZHN0LmlmaW5kZXgpOwomIzQzOwlkc3QubGFiZWwgPSBpcHY2X2FkZHJfbGFiZWwobmV0LCAmYW1wO2ZsNi0mZ3Q7ZGFkZHIsIGRzdF90eXBlLCBkc3QuaWZpbmRleCk7CiAJZHN0LnByZWZzID0gcHJlZnM7CiAKIAlzY29yZXNbaGlzY29yZV9pZHhdLnJ1bGUgPSAtMTsKQEAgLTE5MTEsMTEgJiM0MzsyMDE1LDI5IEBAIGludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldiwKIAlpZiAoIWhpc2NvcmUtJmd0O2lmYSkKIAkJcmV0ID0gLUVBRERSTk9UQVZBSUw7CiAJZWxzZQotCQkqc2FkZHIgPSBoaXNjb3JlLSZndDtpZmEtJmd0O2FkZHI7CiYjNDM7CQlmbDYtJmd0O3NhZGRyID0gaGlzY29yZS0mZ3Q7aWZhLSZndDthZGRyOwogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIHJldDsKIH0KJiM0MztFWFBPUlRfU1lNQk9MKGlwdjZfZmxfZ2V0X3NhZGRyKTsKJiM0MzsKJiM0MztpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsCiYjNDM7CQkgICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgdW5zaWduZWQgaW50IHByZWZzLAomIzQzOwkJICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZmxvd2k2IGZsNjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJbWVtc2V0KCZhbXA7Zmw2LCAwLCBzaXplb2YoZmw2KSk7CiYjNDM7CWZsNi5kYWRkciA9ICpkYWRkcjsKJiM0MzsKJiM0MzsJcmV0ID0gaXB2Nl9mbF9nZXRfc2FkZHIobmV0LCBOVUxMLCBkc3RfZGV2LCBOVUxMLCBwcmVmcywgJmFtcDtmbDYpOwomIzQzOwlpZiAoIXJldCkKJiM0MzsJCSpzYWRkciA9IGZsNi5zYWRkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiBFWFBPUlRfU1lNQk9MKGlwdjZfZGV2X2dldF9zYWRkcik7CiAKIHN0YXRpYyBpbnQgX19pcHY2X2dldF9sbGFkZHIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IGluNl9hZGRyICphZGRyLApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2ZpYi5jIGIvbmV0L2lwdjYvaXA2X2ZpYi5jCmluZGV4IGExMzBjZGZhZWJmYmVlLi4yNzNmMmJmYzUyODY2OSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X2ZpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9maWIuYwpAQCAtMTY1Niw4ICYjNDM7MTY1NiwxMSBAQCBzdGF0aWMgc3RydWN0IGZpYjZfbm9kZSAqZmliNl9ub2RlX2xvb2t1cF8xKHN0cnVjdCBmaWI2X25vZGUgKnJvb3QsCiAJCQkJCXN0cnVjdCBmaWI2X25vZGUgKnNmbjsKIAkJCQkJc2ZuID0gZmliNl9ub2RlX2xvb2t1cF8xKHN1YnRyZWUsCiAJCQkJCQkJCSBhcmdzICYjNDM7IDEpOwotCQkJCQlpZiAoIXNmbikKJiM0MzsJCQkJCWlmICghc2ZuKSB7CiYjNDM7CQkJCQkJaWYgKGZuLSZndDtmbl9mbGFncyAmYW1wOyBSVE5fUlRJTkZPKQomIzQzOwkJCQkJCQlyZXR1cm4gZm47CiAJCQkJCQlnb3RvIGJhY2t0cmFjazsKJiM0MzsJCQkJCX0KIAkJCQkJZm4gPSBzZm47CiAJCQkJfQogI2VuZGlmCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKaW5kZXggMzY4ZTRmYTNiNDNjYTIuLjAzYjhkNDJkOWRmOWVmIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC0xMTQzLDI3ICYjNDM7MTE0Myw0MCBAQCBzdGF0aWMgaW50IGlwNl9kc3RfbG9va3VwX3RhaWwoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssCiAJaW50IGZsYWdzID0gMDsKIAogCS8qIFRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byBkbwotCSAqIGlwNl9yb3V0ZV9nZXRfc2FkZHIsIGFuZCB0aGVuIGlwNl9yb3V0ZV9vdXRwdXQ7IGhvd2V2ZXIsCiYjNDM7CSAqIGlwdjZfZmxfZ2V0X3NhZGRyLCBhbmQgdGhlbiBpcDZfcm91dGVfb3V0cHV0OyBob3dldmVyLAogCSAqIHRoZSByb3V0ZS1zcGVjaWZpYyBwcmVmZXJyZWQgc291cmNlIGZvcmNlcyB0aGUKLQkgKiBpcDZfcm91dGVfb3V0cHV0IGNhbGwgX2JlZm9yZV8gaXA2X3JvdXRlX2dldF9zYWRkci4KJiM0MzsJICogaXA2X3JvdXRlX291dHB1dCBjYWxsIF9iZWZvcmVfIGlwdjZfZmxfZ2V0X3NhZGRyLgogCSAqCiAJICogSW4gc291cmNlIHNwZWNpZmljIHJvdXRpbmcgKG5vIHNyYz1hbnkgZGVmYXVsdCByb3V0ZSksCiAJICogaXA2X3JvdXRlX291dHB1dCB3aWxsIGZhaWwgZ2l2ZW4gc3JjPWFueSBzYWRkciwgdGhvdWdoLCBzbwogCSAqIHRoYXQmIzM5O3Mgd2h5IHdlIHRyeSBpdCBhZ2FpbiBsYXRlci4KIAkgKi8KIAlpZiAoaXB2Nl9hZGRyX2FueSgmYW1wO2ZsNi0mZ3Q7c2FkZHIpKSB7CiYjNDM7CQlzdHJ1Y3QgbmV0X2RldmljZSAqbDNtZGV2OwomIzQzOwkJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKIAkJc3RydWN0IGZpYjZfaW5mbyAqZnJvbTsKIAkJc3RydWN0IHJ0Nl9pbmZvICpydDsKJiM0MzsJCWJvb2wgc2FtZV92cmY7CiAKIAkJKmRzdCA9IGlwNl9yb3V0ZV9vdXRwdXQobmV0LCBzaywgZmw2KTsKIAkJcnQgPSAoKmRzdCktJmd0O2Vycm9yID8gTlVMTCA6IGRzdF9ydDZfaW5mbygqZHN0KTsKIAogCQlyY3VfcmVhZF9sb2NrKCk7CiAJCWZyb20gPSBydCA/IHJjdV9kZXJlZmVyZW5jZShydC0mZ3Q7ZnJvbSkgOiBOVUxMOwotCQllcnIgPSBpcDZfcm91dGVfZ2V0X3NhZGRyKG5ldCwgZnJvbSwgJmFtcDtmbDYtJmd0O2RhZGRyLAotCQkJCQkgIHNrID8gUkVBRF9PTkNFKGluZXQ2X3NrKHNrKS0mZ3Q7c3JjcHJlZnMpIDogMCwKLQkJCQkJICBmbDYtJmd0O2Zsb3dpNl9sM21kZXYsCi0JCQkJCSAgJmFtcDtmbDYtJmd0O3NhZGRyKTsKJiM0MzsKJiM0MzsJCWwzbWRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmw2LSZndDtmbG93aTZfbDNtZGV2KTsKJiM0MzsJCWlmICghZnJvbSB8fCAhZnJvbS0mZ3Q7ZmliNl9wcmVmc3JjLnBsZW4gfHwgbDNtZGV2KQomIzQzOwkJCWRldiA9IGZyb20gPyBmaWI2X2luZm9fbmhfZGV2KGZyb20pIDogTlVMTDsKJiM0MzsJCXNhbWVfdnJmID0gIWwzbWRldiB8fCBsM21kZXZfbWFzdGVyX2Rldl9yY3UoZGV2KSA9PSBsM21kZXY7CiYjNDM7CQlpZiAoZnJvbSAmYW1wOyZhbXA7IGZyb20tJmd0O2ZpYjZfcHJlZnNyYy5wbGVuICZhbXA7JmFtcDsgc2FtZV92cmYpIHsKJiM0MzsJCQlmbDYtJmd0O3NhZGRyID0gZnJvbS0mZ3Q7ZmliNl9wcmVmc3JjLmFkZHI7CiYjNDM7CQkJZXJyID0gMDsKJiM0MzsJCX0gZWxzZQomIzQzOwkJCWVyciA9IGlwdjZfZmxfZ2V0X3NhZGRyKG5ldCwgKmRzdCwKJiM0MzsJCQkJCQlzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgc2ssCiYjNDM7CQkJCQkJc2sgPyBSRUFEX09OQ0UoaW5ldDZfc2soc2spLSZndDtzcmNwcmVmcykgOiAwLAomIzQzOwkJCQkJCWZsNik7CiYjNDM7CiAJCXJjdV9yZWFkX3VubG9jaygpOwogCiAJCWlmIChlcnIpCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuYwppbmRleCBhMTMwMTMzNGRhNDhjMC4uNzA0YWZlMmRkZWE3YzIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtNTg1MCw5ICYjNDM7NTg1MCwxOSBAQCBzdGF0aWMgaW50IHJ0Nl9maWxsX25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJaWYgKG5sYV9wdXRfdTMyKHNrYiwgUlRBX0lJRiwgaWlmKSkKIAkJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAl9IGVsc2UgaWYgKGRlc3QpIHsKLQkJc3RydWN0IGluNl9hZGRyIHNhZGRyX2J1ZjsKLQkJaWYgKGlwNl9yb3V0ZV9nZXRfc2FkZHIobmV0LCBydCwgZGVzdCwgMCwgMCwgJmFtcDtzYWRkcl9idWYpID09IDAgJmFtcDsmYW1wOwotCQkgICAgbmxhX3B1dF9pbjZfYWRkcihza2IsIFJUQV9QUkVGU1JDLCAmYW1wO3NhZGRyX2J1ZikpCiYjNDM7CQlzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmLCAqc2FkZHIgPSBOVUxMOwomIzQzOwomIzQzOwkJaWYgKHJ0LSZndDtmaWI2X3ByZWZzcmMucGxlbikgewomIzQzOwkJCXNhZGRyID0gJmFtcDtydC0mZ3Q7ZmliNl9wcmVmc3JjLmFkZHI7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBmaWI2X2luZm9fbmhfZGV2KHJ0KTsKJiM0MzsKJiM0MzsJCQlpZiAoaXB2Nl9kZXZfZ2V0X3NhZGRyKG5ldCwgZGV2LCBkZXN0LCAwLAomIzQzOwkJCQkJICAgICAgICZhbXA7c2FkZHJfYnVmKSA9PSAwKQomIzQzOwkJCQlzYWRkciA9ICZhbXA7c2FkZHJfYnVmOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKHNhZGRyICZhbXA7JmFtcDsgbmxhX3B1dF9pbjZfYWRkcihza2IsIFJUQV9QUkVGU1JDLCBzYWRkcikpCiAJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQppbmRleCA3MDhkOTYwYWUwN2Q1Yi4uYzA3ZDJhZWJhZDY5NTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKQEAgLTUzLDYgJiM0Mzs1Myw3IEBAIFRFU1RfUFJPR1MgOj0gXAogCWlwdjZfZmxvd2xhYmVsLnNoIFwKIAlpcHY2X2ZvcmNlX2ZvcndhcmRpbmcuc2ggXAogCWlwdjZfcm91dGVfdXBkYXRlX3NvZnRfbG9ja3VwLnNoIFwKJiM0MzsJaXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weSBcCiAJaXB2dGFwX3Rlc3Quc2ggXAogCWwyX3Rvc190dGxfaW5oZXJpdC5zaCBcCiAJbDJ0cC5zaCBcCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZwppbmRleCBlMWNlMzVjMmFiYmVmMy4uYjBiNjY0MTJiOWYzZTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZwpAQCAtNDgsNiAmIzQzOzQ4LDcgQEAgQ09ORklHX0lQVjZfUk9VVEVSX1BSRUY9eQogQ09ORklHX0lQVjZfUlBMX0xXVFVOTkVMPXkKIENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUw9eQogQ09ORklHX0lQVjZfU0lUPXkKJiM0MztDT05GSUdfSVBWNl9TVUJUUkVFUz15CiBDT05GSUdfSVBWNl9WVEk9eQogQ09ORklHX0lQVkxBTj1tCiBDT05GSUdfSVBWVEFQPW0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjY4MmIzOWJhOTkxZGE5Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHkKQEAgLTAsMCAmIzQzOzEsMjMxIEBACiYjNDM7IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjIENvcHlyaWdodCAoQykgMjAyMy0yMDI2ICBEYXZpZCAmIzM5O2VxdWlub3gmIzM5OyBMYW1wYXJ0ZXIKJiM0MzsmIzM0OyYjMzQ7JiMzNDsKJiM0MztSRkMgNjcyNCAoSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24pIHJ1bGUgNS41IHRlc3RzCiYjNDM7CiYjNDM7Rm9yIHJlZmVyZW5jZToKJiM0MzsKJiM0MzsgICBSdWxlIDUuNTogUHJlZmVyIGFkZHJlc3NlcyBpbiBhIHByZWZpeCBhZHZlcnRpc2VkIGJ5IHRoZSBuZXh0LWhvcC4KJiM0MzsgICBJZiBTQSBvciBTQSYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgdGhlIHNlbGVjdGVkIG5leHQtaG9wIHRoYXQgd2lsbAomIzQzOyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQiYjMzk7cyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnQKJiM0MzsgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJiMzOTtzIHByZWZpeCBpcwomIzQzOyAgIGFzc2lnbmVkIGJ5IHRoZSBuZXh0LWhvcCB0aGF0IHdpbGwgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNBIG9yCiYjNDM7ICAgU0EmIzM5O3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi4KJiM0MzsKJiM0MzsoYW5kIHNpbmNlIGl0IHByb3ZpZGVzIHRoZSAmIzM0O2NvdW50ZXJwb2ludCYjMzQ7OikKJiM0MzsKJiM0MzsgICBSdWxlIDg6IFVzZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeC4KJiM0MzsgICBJZiBDb21tb25QcmVmaXhMZW4oU0EsIEQpICZndDsgQ29tbW9uUHJlZml4TGVuKFNCLCBEKSwgdGhlbiBwcmVmZXIgU0EuCiYjNDM7ICAgU2ltaWxhcmx5LCBpZiBDb21tb25QcmVmaXhMZW4oU0IsIEQpICZndDsgQ29tbW9uUHJlZml4TGVuKFNBLCBEKSwgdGhlbgomIzQzOyAgIHByZWZlciBTQi4KJiM0MzsKJiM0MztOb3RlIHJ1bGUgNS41IHdhcyBvcmlnaW5hbGx5IG9wdGlvbmFsIGJ1dCBtYWRlIG1hbmRhdG9yeSBieQomIzQzO2RyYWZ0LWlldGYtNm1hbi1yZmM2NzI0LXVwZGF0ZSAod2hpY2ggYXQgdGhlIHBvaW50IG9mIGNyZWF0aW9uIG9mIHRoaXMgdGVzdAomIzQzO3dhcyBhbHJlYWR5ICYjMzQ7ZG9uZSYjMzQ7IGF0IHRoZSBJRVRGIGJ1dCB3YWl0aW5nIGluIHRoZSBSRkMgZWRpdG9yIHF1ZXVlIGR1ZSB0byBhCiYjNDM7YmxvY2tpbmcgZGVwZW5kZW5jeS4pCiYjNDM7JiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ZnJvbSBzb2NrZXQgaW1wb3J0IHNvY2tldCwgQUZfSU5FVDYsIFNPQ0tfREdSQU0KJiM0Mztmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKJiM0Mztmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKJiM0MzsKJiM0Mztmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9lcQomIzQzO2Zyb20gbGliLnB5IGltcG9ydCBOZXROUywgTmV0TlNFbnRlcgomIzQzO2Zyb20gbGliLnB5IGltcG9ydCBpcAomIzQzOwomIzQzOwomIzQzO2RlZiBzZWxlY3RfYWRkcihkZXN0KToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIGNvbm5lY3QoKSAmIzQzOyBnZXRzb2NrbmFtZSgpIHRvIGZpZ3VyZSBvdXQgd2hhdCB3YXMgc2VsZWN0ZWQgYXMgc291cmNlIGFkZHJlc3MKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIHNvY2sgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfREdSQU0sIDApCiYjNDM7ICAgIHNvY2suY29ubmVjdCgoZGVzdCwgMTIzNDUpKQomIzQzOyAgICByZXR1cm4gc29jay5nZXRzb2NrbmFtZSgpWzBdCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIGluX25ldG5zKGZ1bmM6IENhbGxhYmxlW1tdLCBOb25lXSkgLSZndDsgQ2FsbGFibGVbW10sIE5vbmVdOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgcHl0aG9uIGRlY29yYXRvciB0byBwdXQgdGVzdCBmdW5jdGlvbiBpbiBuZXRucwomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgICAgQHdyYXBzKGZ1bmMpCiYjNDM7ICAgIGRlZiB3cmFwcGVkKCkgLSZndDsgTm9uZToKJiM0MzsgICAgICAgIHdpdGggTmV0TlMoKSBhcyB0ZXN0bnM6CiYjNDM7ICAgICAgICAgICAgd2l0aCBOZXROU0VudGVyKHN0cih0ZXN0bnMpKToKJiM0MzsgICAgICAgICAgICAgICAgZnVuYygpCiYjNDM7CiYjNDM7ICAgIHJldHVybiB3cmFwcGVkCiYjNDM7CiYjNDM7CiYjNDM7QGluX25ldG5zCiYjNDM7ZGVmIHRlc3RfYmFzaWMoKSAtJmd0OyBOb25lOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgU2ltcGxlICZhbXA7IG1vc3QgY29tbW9uIGNhc2UgZm9yIFJGQzY3MjQgcnVsZSA1LjU6IG11bHRpcGxlIGRlZmF1bHQgcm91dGVzCiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBpcCgmIzM0O2xpbmsgYWRkIHR5cGUgdmV0aCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2xpbmsgc2V0IHZldGgwIHVwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bGluayBzZXQgdmV0aDEgdXAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCAgIGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCAgIHZpYSBmZTgwOjoxIGRldiB2ZXRoMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCYjMzQ7KQomIzQzOwomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6MTE6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDo6MSYjMzQ7LCAmIzM0O2Jhc2VsaW5lIHBhc3MmIzM0OykKJiM0MzsgICAgIyBydWxlIDggd291bGQgcmVzdWx0IGluIHRoZSB1c2Ugb2YgdGhlIDoxMDAxOiBhZGRyZXNzLCBidXQgcnVsZSA1LjUgYXBwbGllcyBiZWZvcmUuCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMDAxOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywgJiMzNDtydWxlIDUuNSAmZ3Q7IHJ1bGUgOCYjMzQ7KQomIzQzOwomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGRlbCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwJiMzNDspCiYjNDM7CiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwMDA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMDAxOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41ICZndDsgcnVsZSA4JiMzNDspCiYjNDM7CiYjNDM7CiYjNDM7QGluX25ldG5zCiYjNDM7ZGVmIHRlc3Rfbmhfb2JqKCkgLSZndDsgTm9uZToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIG5leHRob3Agb2JqZWN0cyBmb3IgdGhlIGRlZmF1bHQgcm91dGUKJiM0MzsKJiM0MzsgICAgTkI6IFRoZSBrZXJuZWwgZG9lc24mIzM5O3QgY3VycmVudGx5IGFsbG93IG5leHRob3Agb2JqZWN0cyBmb3Igc3VidHJlZSByb3V0ZXMuCiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzOyAgICBpcCgmIzM0O2xpbmsgYWRkIHR5cGUgdmV0aCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2xpbmsgc2V0IHZldGgwIHVwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bGluayBzZXQgdmV0aDEgdXAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCAgIGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkJiMzNDspCiYjNDM7CiYjNDM7ICAgICMgZGlzdGluY3QgbmV4dGhvcCBvYmplY3RzIGFyZSB1c2VkLCBiZWNhdXNlIHdoYXQgbWF0dGVycyBpcyB0aGUgbmV4dGhvcAomIzQzOyAgICAjIGl0c2VsZiwgbm90IHRoZSBuZXh0aG9wIG9iamVjdC4gIFRvIGNvdmVyIGV2ZXJ5dGhpbmcsIG1ha2UgYSBncm91cC4KJiM0MzsgICAgaXAoJiMzNDtuZXh0aG9wIGFkZCBpZCAxMDEgdmlhIGZlODA6OjEgZGV2IHZldGgwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bmV4dGhvcCBhZGQgaWQgMjAxIGdyb3VwIDEwMSYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O25leHRob3AgYWRkIGlkIDEwMiB2aWEgZmU4MDo6MiBkZXYgdmV0aDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDtuZXh0aG9wIGFkZCBpZCAyMDIgZ3JvdXAgMTAyJiMzNDspCiYjNDM7CiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgbmhpZCAyMDEgbWV0cmljIDEwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IG5oaWQgMjAyIG1ldHJpYyAyMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAmIzM0OykKJiM0MzsKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjExOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgICMgcnVsZSA4IHdvdWxkIHJlc3VsdCBpbiB0aGUgdXNlIG9mIHRoZSA6MTAwMTogYWRkcmVzcywgYnV0IHJ1bGUgNS41IGFwcGxpZXMgYmVmb3JlLgomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6MTAwMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7cnVsZSA1LjUgJmd0OyBydWxlIDgmIzM0OykKJiM0MzsKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBkZWwgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwJiMzNDspCiYjNDM7CiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwMDA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMDAxOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41ICZndDsgcnVsZSA4JiMzNDspCiYjNDM7CiYjNDM7CiYjNDM7QGluX25ldG5zCiYjNDM7ZGVmIHRlc3RfbG93X21ldHJpYygpIC0mZ3Q7IE5vbmU6CiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBDaGVjayB0aGF0IHN1YnRyZWUgcm91dGVzIHRha2UgZWZmZWN0IGV2ZW4gaWYgdGhleSBhcmUgaGlnaGVyIG1ldHJpYwomIzQzOwomIzQzOyAgICBGb3IgY2hlY2tpbmcgdGhhdCAmIzM0O3JvdXRlciBhZHZlcnRpc2VkIHByZWZpeCYjMzQ7LCBtZXRyaWMgaXMgaXJyZWxldmFudC4gIEl0CiYjNDM7ICAgIG1hdHRlcnMgZm9yIHRoZSBpbml0aWFsIHVuc3BlY2lmaWMgbG9va3VwIHRvIGZpbmQgYSBuZXh0aG9wIHRvIGJlZ2luIHdpdGguCiYjNDM7ICAgIChUaGUgbGF0ZXIgc291cmNlIGFkZHJlc3MgY2hlY2sgbG9va3VwIGRvZXNuJiMzOTt0IGNoYW5nZSB0aGUgbmV4dGhvcCwgaS5lLgomIzQzOyAgICB0aGUgZWZmZWN0cyBvZiBtZXRyaWNzIGFyZSBhbHJlYWR5IGRvbmUuKQomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgaXAoJiMzNDtsaW5rIGFkZCB0eXBlIHZldGgmIzM0OykKJiM0MzsgICAgaXAoJiMzNDtsaW5rIHNldCB2ZXRoMCB1cCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2xpbmsgc2V0IHZldGgxIHVwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7YWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWQmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MyBkZXYgdmV0aDAgbWV0cmljIDUwJiMzNDspCiYjNDM7CiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7YmFzZWxpbmUgcGFzcyYjMzQ7KQomIzQzOyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS4KJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjEwMDE6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41ICZndDsgcnVsZSA4JiMzNDspCiYjNDM7CiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgZGVsIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDAmIzM0OykKJiM0MzsKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjExOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O2Jhc2VsaW5lIHBhc3MmIzM0OykKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjEwMDE6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDAwOjoxJiMzNDssICYjMzQ7cnVsZSA1LjUgJmd0OyBydWxlIDgmIzM0OykKJiM0MzsKJiM0MzsKJiM0MztAaW5fbmV0bnMKJiM0MztkZWYgdGVzdF9ub19zdWJ0cmVlKCkgLSZndDsgTm9uZToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIEVuc3VyZSB0aGF0IG1hdGNoaW5nIG9uIGEgbm9uLXN1YnRyZWUgcm91dGUgZG9lc24mIzM5O3QgdHJpZ2dlciBydWxlIDUuNQomIzQzOwomIzQzOyAgICAoVGhpcyB3YXMgbm9uLW9idmlvdXNseSBicm9rZW4gaW4gZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgaW1wbGVtZW50YXRpb25zLAomIzQzOyAgICBhIG5vbi1zdWJ0cmVlIHJvdXRlIHdvdWxkIHN0aWxsIG1hdGNoLiAgTWFrZSBzdXJlIGl0IGRvZXNuJiMzOTt0IGJyZWFrIGFnYWluLikKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIGlwKCYjMzQ7bGluayBhZGQgdHlwZSB2ZXRoJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bGluayBzZXQgdmV0aDAgdXAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDtsaW5rIHNldCB2ZXRoMSB1cCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwOjoxLzY0IGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2FkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAmIzM0OykKJiM0MzsKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjExOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoCiYjNDM7ICAgICAgICBzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjEwMDE6OiYjMzQ7KSwKJiM0MzsgICAgICAgICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7cnVsZSA1LjUgJmd0OyBydWxlIDgsIGlnbm9yaW5nIG5vbi1TQURSJiMzNDssCiYjNDM7ICAgICkKJiM0MzsKJiM0MzsKJiM0MztAaW5fbmV0bnMKJiM0MztkZWYgdGVzdF9sb25nZXIoKSAtJmd0OyBOb25lOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgQ2hlY2sgZnVuY3Rpb25hbGl0eSBmb3Igbm9uLWRlZmF1bHQgZGVzdGluYXRpb24uCiYjNDM7CiYjNDM7ICAgIFRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgdmVyeSByYXJlIGluIGFjdHVhbCBwcmFjdGljZSwgYW5kIGRvZXNuJiMzOTt0IGRvCiYjNDM7ICAgIGJhY2t0cmFja2luZyAoYWxzbyByZWZlciB0byBrZXJuZWwgZG9jcy4pCiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBpcCgmIzM0O2xpbmsgYWRkIHR5cGUgdmV0aCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0O2xpbmsgc2V0IHZldGgwIHVwJiMzNDspCiYjNDM7ICAgIGlwKCYjMzQ7bGluayBzZXQgdmV0aDEgdXAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWQmIzM0OykKJiM0MzsgICAgaXAoJiMzNDthZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCAyMDAxOmRiODo1MDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDAmIzM0OykKJiM0MzsgICAgaXAoJiMzNDstNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOjovNDggZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwJiMzNDspCiYjNDM7CiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODoxMTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7YmFzZWxpbmUgcGFzcyYjMzQ7KQomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6NTAwOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41JiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODo1MDA6YWFhOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTAwMDo6MSYjMzQ7LCAmIzM0O3J1bGUgNS41JiMzNDspCiYjNDM7CiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgYWRkIDIwMDE6ZGI4OjUwMDphYWE6Oi82NCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMCYjMzQ7KQomIzQzOwomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6MTE6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDo6MSYjMzQ7LCAmIzM0O2Jhc2VsaW5lIHBhc3MmIzM0OykKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjUwMDo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwMDA6OjEmIzM0OywgJiMzNDtydWxlIDUuNSYjMzQ7KQomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6NTAwOmFhYTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7bm8gYmFja3RyYWNraW5nJiMzNDspCiYjNDM7CiYjNDM7ICAgIGlwKCYjMzQ7LTYgcm91dGUgZGVsIDIwMDE6ZGI4OjUwMDo6LzQ4IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCYjMzQ7KQomIzQzOyAgICBpcCgmIzM0Oy02IHJvdXRlIGFkZCBkZWZhdWx0ICAgICAgICAgICBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAmIzM0OykKJiM0MzsKJiM0MzsgICAga3NmdF9lcShzZWxlY3RfYWRkcigmIzM0OzIwMDE6ZGI4OjExOjomIzM0OyksICYjMzQ7MjAwMTpkYjg6MTA6OjEmIzM0OywgJiMzNDtiYXNlbGluZSBwYXNzJiMzNDspCiYjNDM7ICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoJiMzNDsyMDAxOmRiODo1MDA6OiYjMzQ7KSwgJiMzNDsyMDAxOmRiODoxMDo6MSYjMzQ7LCAmIzM0O25vIGJhY2t0cmFja2luZyYjMzQ7KQomIzQzOyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKCYjMzQ7MjAwMTpkYjg6NTAwOmFhYTo6JiMzNDspLCAmIzM0OzIwMDE6ZGI4OjEwOjoxJiMzNDssICYjMzQ7bm8gYmFja3RyYWNraW5nJiMzNDspCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIG1haW4oKSAtJmd0OyBOb25lOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgUkZDNjcyNCBydWxlIDUuNSB0ZXN0IGRyaXZlcgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAga3NmdF9ydW4oCiYjNDM7ICAgICAgICBbCiYjNDM7ICAgICAgICAgICAgdGVzdF9iYXNpYywKJiM0MzsgICAgICAgICAgICB0ZXN0X25oX29iaiwKJiM0MzsgICAgICAgICAgICB0ZXN0X2xvd19tZXRyaWMsCiYjNDM7ICAgICAgICAgICAgdGVzdF9ub19zdWJ0cmVlLAomIzQzOyAgICAgICAgICAgIHRlc3RfbG9uZ2VyLAomIzQzOyAgICAgICAgXQomIzQzOyAgICApCiYjNDM7ICAgIGtzZnRfZXhpdCgpCiYjNDM7CiYjNDM7CiYjNDM7aWYgX19uYW1lX18gPT0gJiMzNDtfX21haW5fXyYjMzQ7OgomIzQzOyAgICBtYWluKCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxNDkKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA1NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjYgU291cmNlIEFkZHJlc3MgU2VsZWN0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyB0aGUgSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gdG8gYWxpZ24gd2l0aCBSRkM2NzI0IHJ1bGUgNS41LiBMb29rcyBsaWtlIGl0JiMzOTtzIGludHJvZHVjaW5nIGBpcHY2X2ZsX2dldF9zYWRkcmAsIGFuZCBpdCYjMzk7cyBhbHNvIGFsdGVyaW5nIHRoZSBiZWhhdmlvciBvZiBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCBhbmQgZnVuZGFtZW50YWxseSBjaGFuZ2luZyBgaXA2X3JvdXRlX2dldF9zYWRkcmAg4oCTIHJlbW92aW5nIGFuZCByZXBsYWNpbmcgaXQgZW50aXJlbHksIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgYXJjaGl0ZWN0dXJhbCBzaGlmdC4gSXQgdG91Y2hlcyBxdWl0ZSBhIGZldyBrZXkgZmlsZXMgaW4gdGhlIElQdjYgbmV0d29ya2luZyBzdGFjaywgbmFtZWx5IGBuZXQvaXB2Ni9hZGRyY29uZi5jYCwgYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2AsIGBuZXQvaXB2Ni9yb3V0ZS5jYCwgYW5kIGBuZXQvaXB2Ni9pcDZfZmliLmNgLgoKTXkgZmlyc3QgY29uY2VybiwgYXMgYWx3YXlzLCBpcyByZWFjaGFiaWxpdHkgYW5kIGNvcnJlY3RuZXNzLiBHaXZlbiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucywgSSBuZWVkIHRvIHZlcmlmeSB0aGlzIHZlcnkgY2FyZWZ1bGx5LiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBpcHY2X3NhZGRyX3J1bGU1cDVgIHdpdGhpbiBgbmV0L2lwdjYvYWRkcmNvbmYuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIG5ldyBydWxlIGlzIGltcGxlbWVudGVkLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIGBpcDZfcm91dGVfb3V0cHV0YCBhbmQgYW4gaXRlcmF0aW9uIG92ZXIgYGZpYjZfaW5mb2AuCgpJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzLiBUaGUgY3JpdGljYWwgZnVuY3Rpb25zIGhlcmUgYXJlOgoKKiAgIGBpcHY2X3NhZGRyX3J1bGU1cDVgCiogICBgaXB2Nl9mbF9nZXRfc2FkZHJgCiogICBgaXB2Nl9kZXZfZ2V0X3NhZGRyYAoqICAgYGlwdjZfZ2V0X3NhZGRyX2V2YWxgCgpSZWdhcmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24sIHRoZSBwYXRjaCBzZWVtcyB0byByZXF1aXJlIGBJUFY2X1NVQlRSRUVTYCwgaW5kaWNhdGVkIGJ5IGNoYW5nZXMgaW4gYG5ldC9pcHY2L0tjb25maWdgLiBJdOKAmXMgZGVwZW5kZW50IG9uIGBJUFY2X01VTFRJUExFX1RBQkxFU2AuIFRoaXMgaXMgY3JpdGljYWwgZm9yIFJGQzY3MjQgcnVsZSA1LjUgc3VwcG9ydC4gU28sIEkgbmVlZCB0byBlbnN1cmUgYm90aCBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYXJlIGVuYWJsZWQgaW4gbXkgdGVzdCBzZXR1cC4KCk5vdywgbGV0JiMzOTtzIHNlZSBob3cgYGlwdjZfc2FkZHJfcnVsZTVwNWAgaXMgYWN0dWFsbHkgdXNlZC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYGlwdjZfZ2V0X3NhZGRyX2V2YWxgIHVuZGVyIGBJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1BgLiBgaXB2Nl9nZXRfc2FkZHJfZXZhbGAgaXMgdGhlbiBjYWxsZWQgZnJvbSBgaXB2Nl9nZXRfc2FkZHJfbWFzdGVyYC4gRmluYWxseSwgYGlwdjZfZ2V0X3NhZGRyX21hc3RlcmAgaXMgY2FsbGVkIGJ5IGBpcHY2X2ZsX2dldF9zYWRkcmAsIGFuZCBjcnVjaWFsbHksIGBpcHY2X2ZsX2dldF9zYWRkcmAgaXMgY2FsbGVkIGZyb20gYGlwNl9kc3RfbG9va3VwX3RhaWxgIHdpdGhpbiBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gVGhpcyBsYXN0IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBpcDZfZHN0X2xvb2t1cF9mbG93YC4gVGhpcyBwcm92aWRlcyB0aGUgY29tcGxldGUgY2hhaW4uIEkgbmVlZCB0byBrZWVwIHRoaXMgY2hhaW4gaW4gbWluZCB3aGVuIGNvbmZpZ3VyaW5nIHRlc3RjYXNlcyBhbmQgaGFybmVzc2VzLgoKVGltZSB0byB1c2UgbXkgdG9vbHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB2Nl9zYWRkcl9ydWxlNXA1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2FkZHJjb25mLmM9MTU4Mj1zdGF0aWMgYm9vbCBpcHY2X2FsbG93X29wdGltaXN0aWNfZGFkKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTE2MDUtICovXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjE2MDY6c3RhdGljIGludCBpcHY2X3NhZGRyX3J1bGU1cDUoc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLFxubmV0L2lwdjYvYWRkcmNvbmYuYy0xNjA3LVx0XHRcdCAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqc2FkZHJfZHN0KVxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MTY3Mj1zdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX2V2YWwoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmMtMTc2OS1cdFx0ICAgIFx1MDAyNlx1MDAyNiAhZHN0LVx1MDAzZWRzdC1cdTAwM2VlcnJvcilcbm5ldC9pcHY2L2FkZHJjb25mLmM6MTc3MDpcdFx0XHRyZXQgPSBpcHY2X3NhZGRyX3J1bGU1cDUoc2NvcmUsIGRzdCk7XG5uZXQvaXB2Ni9hZGRyY29uZi5jLTE3NzEtXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDYwOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgTmV3IElQdjYgU291cmNlIEFkZHJlc3MgRmVhdHVyZXMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY291cGxlIG9mIG5ldyBwaWVjZXMgcmVsYXRlZCB0byBJUHY2IHNvdXJjZSBhZGRyZXNzZXM6IGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHVuZGVyc3RhbmQgaG93IHRoYXQgc2Vjb25kIGZ1bmN0aW9uLCBgaXB2Nl9mbF9nZXRfc2FkZHJgLCBpcyBiZWluZyB1c2VkLiBXaGVyZSBpcyB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5IGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgZmxvdyBzZXR1cD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGJlIGtleSB0byBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBvbiBleGlzdGluZyBuZXR3b3JrIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucy4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY2X2ZsX2dldF9zYWRkciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9hZGRyY29uZi5oPTE0Mj1pbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL25ldC9hZGRyY29uZi5oLTE0NC1cdFx0ICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpO1xuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaDoxNDU6aW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaC0xNDYtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MTg5Nj1zdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX21hc3RlcihzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0xOTE3LVxubmV0L2lwdjYvYWRkcmNvbmYuYzoxOTE4OmludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTkxOS1cdFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yMDIyLX1cbm5ldC9pcHY2L2FkZHJjb25mLmM6MjAyMzpFWFBPUlRfU1lNQk9MKGlwdjZfZmxfZ2V0X3NhZGRyKTtcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjAyNC1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MjAyNT1pbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yMDM0LVxubmV0L2lwdjYvYWRkcmNvbmYuYzoyMDM1Olx0cmV0ID0gaXB2Nl9mbF9nZXRfc2FkZHIobmV0LCBOVUxMLCBkc3RfZGV2LCBOVUxMLCBwcmVmcywgXHUwMDI2Zmw2KTtcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjAzNi1cdGlmICghcmV0KVxuLS1cbm5ldC9pcHY2L2lwNl9vdXRwdXQuYz0xMTM1PXN0YXRpYyBpbnQgaXA2X2RzdF9sb29rdXBfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE0NS1cdC8qIFRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byBkb1xubmV0L2lwdjYvaXA2X291dHB1dC5jOjExNDY6XHQgKiBpcHY2X2ZsX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xMTQ3LVx0ICogdGhlIHJvdXRlLXNwZWNpZmljIHByZWZlcnJlZCBzb3VyY2UgZm9yY2VzIHRoZVxubmV0L2lwdjYvaXA2X291dHB1dC5jOjExNDg6XHQgKiBpcDZfcm91dGVfb3V0cHV0IGNhbGwgX2JlZm9yZV8gaXB2Nl9mbF9nZXRfc2FkZHIuXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE0OS1cdCAqXG4tLVxubmV0L2lwdjYvaXA2X291dHB1dC5jLTExNzQtXHRcdH0gZWxzZVxubmV0L2lwdjYvaXA2X291dHB1dC5jOjExNzU6XHRcdFx0ZXJyID0gaXB2Nl9mbF9nZXRfc2FkZHIobmV0LCAqZHN0LFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTExNzYtXHRcdFx0XHRcdFx0c2FtZV92cmYgPyBkZXYgOiBsM21kZXYsIHNrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTUzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgSVB2NiBTb3VyY2UgQWRkcmVzcyBTZWxlY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBrZXkgY2hhbmdlcyB0byBob3cgSVB2NiBzb3VyY2UgYWRkcmVzc2VzIGFyZSBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0JiMzOTtzIHJlZmFjdG9yaW5nIGBpcHY2X2Rldl9nZXRfc2FkZHJgIHRvIGNhbGwgYGlwdjZfZmxfZ2V0X3NhZGRyYC4gVGhlbiwgaXQmIzM5O3MgYWxzbyBpbnRlZ3JhdGluZyBgaXB2Nl9mbF9nZXRfc2FkZHJgIGludG8gYGlwNl9kc3RfbG9va3VwX3RhaWxgLiAgVGhpcyBpcyBwcm9taXNpbmc7IGJvdGggb2YgdGhvc2UgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IHdpdGhpbiB0aGUgaG90IHBhdGgsIHNvIHRoaXMgc2hvdWxkIGJlIGhpdHRpbmcgdGhlIGRlc2lyZWQgdXNlIGNhc2UgYW5kIGZ1bmN0aW9uYWxpdHkuCgpJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbnMuIEl0JiMzOTtzIHVzaW5nIGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gSG9sZCBvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIHByb3Blcmx5IGhhbmRsZWQuIFllcywgYElQVjZfU1VCVFJFRVNgIHJlbGllcyBvbiBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBBbHJpZ2h0LCBqdXN0IG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBpbiBgbmV0L2lwdjYvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2X1NVQlRSRUVTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9MjM3PWNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjQyLVxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwMTEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIGZvciBDb25maWcgT3ZlcmxhcCoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpdmluZyBpbi4gQmVmb3JlIEkgbWFrZSBhbnkgc2lnbmlmaWNhbnQgY2hhbmdlcyBvciBhc3N1bXB0aW9ucywgYSBxdWljayBzYW5pdHkgY2hlY2sgaXMgZXNzZW50aWFsLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiAmIzM0O0xldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gZmlsZXMgb3Igc2V0dGluZ3MgYXQgcGxheSBoZXJlLiYjMzQ7IEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG92ZXJsb29raW5nIHNvbWV0aGluZywgZXNwZWNpYWxseSBpbiBhIGNvbXBsZXggc3lzdGVtLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGluaGVyaXRhbmNlLCBjYXNjYWRpbmcgY29uZmlndXJhdGlvbnMsIGVudmlyb25tZW50IHZhcmlhYmxlcywgb3IgZXZlbiBzb21lIG9ic2N1cmUgb3ZlcnJpZGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIGNvbmZsaWN0aW5nIGNvbmZpZ3Mgb3IgdGhhdCBJIGFtIG5vdCBlZGl0aW5nIHRoZSB3cm9uZyBjb25maWcgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciB0aGF0IEkgY2FuIGFjY291bnQgZm9yIGFsbCB0aGUgY29uZmlncyB1c2VkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0ZXAgdG8gYXZvaWQgd2FzdGVkIHRpbWUgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgYWJvdXQgZHVlIGRpbGlnZW5jZSBhbmQgcHJldmVudGluZyBhIGZydXN0cmF0aW5nIGRlYnVnZ2luZyBzZXNzaW9uIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzNzpcdGNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xuIDIzODpcdFx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuIDIzOTpcdFx0c2VsZWN0IEZJQl9SVUxFU1xuIDI0MDpcdFx0aGVscFxuIDI0MTpcdFx0ICBTdXBwb3J0IG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLlxuIDI0MjpcdFxuIDI0MzpcdGNvbmZpZyBJUFY2X1NVQlRSRUVTXG4gMjQ0Olx0XHRib29sIFwmIzM0O0lQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcJiMzNDtcbiAyNDU6XHRcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVNcbiAyNDY6XHRcdGRlZmF1bHQgeVxuIDI0NzpcdFx0aGVscFxuIDI0ODpcdFx0ICBFbmFibGUgcm91dGluZyBieSBzb3VyY2UgYWRkcmVzcyBvciBwcmVmaXguXG4gMjQ5Olx0XG4gMjUwOlx0XHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcbiAyNTE6XHRcdCAgbm9ybWFsIGFuZCBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcyBpbiB0aGUgc2FtZSByb3V0aW5nIHRhYmxlXG4gMjUyOlx0XHQgIG1heSBzb21ldGltZXMgbGVhZCB0byB1bmludGVuZGVkIHJvdXRpbmcgYmVoYXZpb3IgaWYgdGhlIG9yZGVyIG9mXG4gMjUzOlx0XHQgIGxvb2t1cHMgaXMgbWlzdW5kZXJzdG9vZC4gIFRvIGFjaGlldmUgZnVsbCBzZXBhcmF0aW9uIGJhc2VkIG9uIHNvdXJjZVxuIDI1NDpcdFx0ICBhZGRyZXNzLCBkaWZmZXJlbnQgcm91dGluZyB0YWJsZXMgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGVhY2ggc291cmNlXG4gMjU1Olx0XHQgIHByZWZpeC5cbiAyNTY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NDMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIElQdjYgUm91dGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2UgSVB2NiBjb25maWd1cmF0aW9uczogYElQVjZfTVVMVElQTEVfVEFCTEVTYCBhbmQgYElQVjZfU1VCVFJFRVNgLiAgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYElQVjZfU1VCVFJFRVNgIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvICYjMzQ7eSYjMzQ7IChlbmFibGVkKSBpZiBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBrZXkgZGVwZW5kZW5jeS4gTm93IEkgbmVlZCB0byBleGFtaW5lIHRoZXNlIHJlbGF0ZWQgZnVuY3Rpb25zLCBpbiB0aGUgY29udGV4dCBvZiB0aG9zZSBjb25maWdzLgoKSSBzZWUgdGhhdCBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBhbmQgYGlwdjZfZmxfZ2V0X3NhZGRyYCBhcmUgaW1wb3J0YW50IHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGV5IGFyZSAqRm9jdXNTeW1ib2xzKiBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZWlyIGJlaGF2aW91ci4KCkkgYWxzbyB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIHRoYXQgaGFzIGJlZW4gbW9kaWZpZWQsIHNvIEkmIzM5O2xsIGNoZWNrIG90aGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSBgcnQ2X2ZpbGxfbm9kZWAgaW4gYG5ldC9pcHY2L3JvdXRlLmNgIGFuZCBgZmliNl9ub2RlX2xvb2t1cF8xYCBpbiBgbmV0L2lwdjYvaXA2X2ZpYi5jYCBhcmUgYWxzbyB3b3J0aCBjb25zaWRlcmluZy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSAqRm9jdXNTeW1ib2xzKi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmliNl9ub2RlX2xvb2t1cF8xJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYz0xNjA2PXN0cnVjdCBsb29rdXBfYXJncyB7XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTE2MTAtXG5uZXQvaXB2Ni9pcDZfZmliLmM6MTYxMTpzdGF0aWMgc3RydWN0IGZpYjZfbm9kZSAqZmliNl9ub2RlX2xvb2t1cF8xKHN0cnVjdCBmaWI2X25vZGUgKnJvb3QsXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTYxMi1cdFx0XHRcdFx0ICAgIHN0cnVjdCBsb29rdXBfYXJncyAqYXJncylcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTY1Ni1cdFx0XHRcdFx0c3RydWN0IGZpYjZfbm9kZSAqc2ZuO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjE2NTc6XHRcdFx0XHRcdHNmbiA9IGZpYjZfbm9kZV9sb29rdXBfMShzdWJ0cmVlLFxubmV0L2lwdjYvaXA2X2ZpYi5jLTE2NTgtXHRcdFx0XHRcdFx0XHRcdCBhcmdzICYjNDM7IDEpO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz0xNjgzPXN0cnVjdCBmaWI2X25vZGUgKmZpYjZfbm9kZV9sb29rdXAoc3RydWN0IGZpYjZfbm9kZSAqcm9vdCxcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTcwMy1cbm5ldC9pcHY2L2lwNl9maWIuYzoxNzA0Olx0Zm4gPSBmaWI2X25vZGVfbG9va3VwXzEocm9vdCwgZGFkZHIgPyBhcmdzIDogYXJncyAmIzQzOyAxKTtcbm5ldC9pcHY2L2lwNl9maWIuYy0xNzA1LVx0aWYgKCFmbiB8fCBmbi1cdTAwM2Vmbl9mbGFncyBcdTAwMjYgUlROX1RMX1JPT1QpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzQwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIGBmaWI2X25vZGVfbG9va3VwXzFgIGFuZCBgcnQ2X2ZpbGxfbm9kZWAqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoYXQgYGZpYjZfbm9kZV9sb29rdXBfMWAgaXMgZGVjbGFyZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIG1lYW5zIGl0JiMzOTtzIHNjb3BlZCB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIGxpbWl0cyBpdHMgdmlzaWJpbGl0eSBhbmQgcG90ZW50aWFsIGZvciByZXVzZSBlbHNld2hlcmUgaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0cmFjaW5nIGNhbGxzIHRvIGl0OyBpdCBwcm9iYWJseSBwbGF5cyBhIGtleSByb2xlIGluIHNvbWUgc3BlY2lmaWMgcm91dGluZyB0YWJsZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGlzIG1vZHVsZS4KCkFuZCB0aGVuLCBJIHNlZSB0aGF0IHdlIGhhdmUgYHJ0Nl9maWxsX25vZGVgIGFzIGFub3RoZXIgbW9kaWZpZWQgZnVuY3Rpb24gdGhhdCBJIHdpbGwgYmUgZm9jdXNpbmcgb24uIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGhvdyB0aGVzZSB0d28gZnVuY3Rpb25zIGludGVyYWN0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXNlIHR3byBmdW5jdGlvbnMgZml0IHRvZ2V0aGVyIGluIHRoZSBiaWdnZXIgcGljdHVyZSwgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiBgcnQ2X2ZpbGxfbm9kZWAgYW5kIGhvdyBgZmliNl9ub2RlX2xvb2t1cF8xYCBpcyBiZWluZyB1c2VkIGluc2lkZSBpdC4gSXMgYGZpYjZfbm9kZV9sb29rdXBfMWAgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGJ1aWxkaW5nIHJvdXRpbmcgdGFibGUgZW50cmllcz8gQXJlIHRoZXJlIGFueSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgcGFzc2VkIGJldHdlZW4gdGhlbSwgYW5kIGhvdyBhcmUgdGhlc2UgbW9kaWZpZWQgc3RydWN0dXJlcyBiZWluZyB1c2VkPyBEb2VzIHRoZSBtb2RpZmljYXRpb24gb2YgYHJ0Nl9maWxsX25vZGVgIGNoYW5nZSBvciBpbnRyb2R1Y2UgYnVncz8gS25vd2luZyB0aGF0IHRoZXNlIHR3byBhcmUgYmVpbmcgbW9kaWZpZWQgc2ltdWx0YW5lb3VzbHkgcmFpc2VzIHRoZSByZWQgZmxhZyBvZiBhbiBBUEkgY2hhbmdlLCBvciBhbiB1bmRlcmx5aW5nIGZ1bmRhbWVudGFsIGNoYW5nZSB0byBob3cgd2UgYXJlIGRvaW5nIHRoaXMuIEl0JiMzOTtzIHRpbWUgdG8gZm9sbG93IHRoZSB0cmFpbCBvZiBsb2dpYyBhbmQgZGF0YS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQ2X2ZpbGxfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTEwOT1zdGF0aWMgc2l6ZV90IHJ0Nl9ubG1zZ19zaXplKHN0cnVjdCBmaWI2X2luZm8gKmY2aSk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjExMDpzdGF0aWMgaW50IHJ0Nl9maWxsX25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvcm91dGUuYy0xMTEtXHRcdFx0IHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXG4tLVxubmV0L2lwdjYvcm91dGUuYz00MDA3PXN0YXRpYyBpbnQgX19pcDZfZGVsX3J0X3NpYmxpbmdzKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZmliNl9jb25maWcgKmNmZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQwMjgtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQwMjk6XHRcdFx0aWYgKHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIHJ0LCBOVUxMLFxubmV0L2lwdjYvcm91dGUuYy00MDMwLVx0XHRcdFx0XHQgIE5VTEwsIE5VTEwsIDAsIFJUTV9ERUxST1VURSxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTU2OTk9c3RhdGljIHNpemVfdCBydDZfbmxtc2dfc2l6ZShzdHJ1Y3QgZmliNl9pbmZvICpmNmkpXG4tLVxubmV0L2lwdjYvcm91dGUuYy01NzQ0LVxubmV0L2lwdjYvcm91dGUuYzo1NzQ1OnN0YXRpYyBpbnQgcnQ2X2ZpbGxfbm9kZV9uZXh0aG9wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcbm5ldC9pcHY2L3JvdXRlLmMtNTc0Ni1cdFx0XHRcdCB1bnNpZ25lZCBjaGFyICpmbGFncylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTU3NzMtXG5uZXQvaXB2Ni9yb3V0ZS5jOjU3NzQ6c3RhdGljIGludCBydDZfZmlsbF9ub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY2L3JvdXRlLmMtNTc3NS1cdFx0XHQgc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTU5MzctXHRcdGlmIChSRUFEX09OQ0UobmV0LVx1MDAzZWlwdjQuc3lzY3RsX25leHRob3BfY29tcGF0X21vZGUpIFx1MDAyNlx1MDAyNlxubmV0L2lwdjYvcm91dGUuYzo1OTM4Olx0XHQgICAgcnQ2X2ZpbGxfbm9kZV9uZXh0aG9wKHNrYiwgcnQtXHUwMDNlbmgsIFx1MDAyNm5oX2ZsYWdzKSBcdTAwM2MgMClcbm5ldC9pcHY2L3JvdXRlLmMtNTkzOS1cdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwMjk9c3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNjA2My1cbm5ldC9pcHY2L3JvdXRlLmM6NjA2NDpcdFx0XHRlcnIgPSBydDZfZmlsbF9ub2RlKGR1bXAtXHUwMDNlbmV0LCBkdW1wLVx1MDAzZXNrYiwgdy1cdTAwM2VydCxcbm5ldC9pcHY2L3JvdXRlLmMtNjA2NS1cdFx0XHRcdFx0ICAgIFx1MDAyNnJ0Nl9leC1cdTAwM2VydDZpLVx1MDAzZWRzdCwgTlVMTCwgTlVMTCwgMCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwODE9aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXG4tLVxubmV0L2lwdjYvcm91dGUuYy02MTEyLVx0XHR9IGVsc2Uge1xubmV0L2lwdjYvcm91dGUuYzo2MTEzOlx0XHRcdGlmIChydDZfZmlsbF9ub2RlKG5ldCwgYXJnLVx1MDAzZXNrYiwgcnQsIE5VTEwsIE5VTEwsIE5VTEwsXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxMTQtXHRcdFx0XHRcdCAgMCwgUlRNX05FV1JPVVRFLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NjIyMz1zdGF0aWMgaW50IGluZXQ2X3J0bV9nZXRyb3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzNDUtXHRcdGlmIChmaWJtYXRjaClcbm5ldC9pcHY2L3JvdXRlLmM6NjM0NjpcdFx0XHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBmcm9tLCBOVUxMLCBOVUxMLCBOVUxMLFxubmV0L2lwdjYvcm91dGUuYy02MzQ3LVx0XHRcdFx0XHQgICAgaWlmLCBSVE1fTkVXUk9VVEUsXG4tLVxubmV0L2lwdjYvcm91dGUuYy02MzUwLVx0XHRlbHNlXG5uZXQvaXB2Ni9yb3V0ZS5jOjYzNTE6XHRcdFx0ZXJyID0gcnQ2X2ZpbGxfbm9kZShuZXQsIHNrYiwgZnJvbSwgZHN0LCBcdTAwMjZmbDYuZGFkZHIsXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzNTItXHRcdFx0XHRcdCAgICBcdTAwMjZmbDYuc2FkZHIsIGlpZiwgUlRNX05FV1JPVVRFLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NjM3MD12b2lkIGluZXQ2X3J0X25vdGlmeShpbnQgZXZlbnQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzODgtXG5uZXQvaXB2Ni9yb3V0ZS5jOjYzODk6XHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBydCwgTlVMTCwgTlVMTCwgTlVMTCwgMCxcbm5ldC9pcHY2L3JvdXRlLmMtNjM5MC1cdFx0XHQgICAgZXZlbnQsIGluZm8tXHUwMDNlcG9ydGlkLCBzZXEsIG5sbV9mbGFncyk7XG4tLVxubmV0L2lwdjYvcm91dGUuYz02NDExPXZvaWQgZmliNl9ydF91cGRhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9pbmZvICpydCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTY0MjEtXG5uZXQvaXB2Ni9yb3V0ZS5jOjY0MjI6XHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBydCwgTlVMTCwgTlVMTCwgTlVMTCwgMCxcbm5ldC9pcHY2L3JvdXRlLmMtNjQyMy1cdFx0XHQgICAgUlRNX05FV1JPVVRFLCBpbmZvLVx1MDAzZXBvcnRpZCwgc2VxLCBOTE1fRl9SRVBMQUNFKTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTY0Mzc9dm9pZCBmaWI2X2luZm9faHdfZmxhZ3Nfc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYjZfaW5mbyAqZjZpLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNjQ3NC1cbm5ldC9pcHY2L3JvdXRlLmM6NjQ3NTpcdGVyciA9IHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIGY2aSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgUlRNX05FV1JPVVRFLCAwLFxubmV0L2lwdjYvcm91dGUuYy02NDc2LVx0XHRcdCAgICAwLCAwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9Njc9c3RhdGljIHZvaWQgX19pcF92c19kZWxfc2VydmljZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBib29sIGNsZWFudXApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy03MC0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo3MTovKiBUYWtlbiBmcm9tIHJ0Nl9maWxsX25vZGUoKSBpbiBuZXQvaXB2Ni9yb3V0ZS5jLCBpcyB0aGVyZSBhIGJldHRlciB3YXk/ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNzItc3RhdGljIGJvb2wgX19pcF92c19hZGRyX2lzX2xvY2FsX3Y2KHN0cnVjdCBuZXQgKm5ldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzMTUKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogMTYxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgSVB2NiBTb3VyY2UgQWRkcmVzcyBTZWxlY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYHJ0Nl9maWxsX25vZGVgLCBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIHVwZGF0aW5nIGl0cyBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMuIEl0JiMzOTtzIHN3YXBwaW5nIG91dCBgaXA2X3JvdXRlX2dldF9zYWRkcmAgZm9yIGBpcHY2X2Rldl9nZXRfc2FkZHJgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCk15IGluaXRpYWwgZm9jdXMgZ29lcyB0byB0aGUgZnVuY3Rpb25zIGludm9sdmVkOiBgaXB2Nl9mbF9nZXRfc2FkZHJgLCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCwgYW5kIGBpcHY2X3NhZGRyX3J1bGU1cDVgLiBgaXB2Nl9mbF9nZXRfc2FkZHJgIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBpcyBzdGF0aWMgYnV0IGFjY2Vzc2libGUgdGhyb3VnaCBTeXprYWxsZXIsIHNvIGl0JiMzOTtzIHN0aWxsIGEgdmlhYmxlIHRhcmdldC4gSSBhbHNvIGtub3cgdGhhdCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCBpcyB1c2VkIGluIG1hbnkgcGxhY2VzLgoKSSBxdWlja2x5IHZlcmlmeSB0aGF0IGFsbCBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUsIGluY2x1ZGluZyBgaXB2Nl9zYWRkcl9ydWxlNXA1YCAocmVhY2hhYmxlIHZpYSBgaXB2Nl9nZXRfc2FkZHJfZXZhbGApLCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCwgYGlwdjZfZmxfZ2V0X3NhZGRyYCAodXNlZCBpbiBgaXA2X2RzdF9sb29rdXBfdGFpbGApLCBhbmQgYHJ0Nl9maWxsX25vZGVgICh1c2VkIGJ5IGBpbmV0Nl9ydG1fZ2V0cm91dGVgLCBldGMuKS4gVGhpcyB0ZWxscyBtZSB0aGUgcGF0Y2ggaXMgY29ycmVjdGx5IGludGVncmF0ZWQgYW5kIHRoZSBuZXcgbG9naWMgc2hvdWxkIGJlIGV4ZXJjaXNlZC4gSSBhbHNvIGNvbmZpcm0gYGZpYjZfbm9kZV9sb29rdXBfMWAgaXMgcmVhY2hhYmxlLgoKTm93LCBJIHplcm8gaW4gb24gZm9jdXMgc3ltYm9scyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBUaGUga2V5IHN5bWJvbHMgaWRlbnRpZmllZCBhcmU6IGBpcHY2X3NhZGRyX3J1bGU1cDVgLCBgaXB2Nl9mbF9nZXRfc2FkZHJgLCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCwgYHJ0Nl9maWxsX25vZGVgLCBhbmQgYGZpYjZfbm9kZV9sb29rdXBfMWAuIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGlzIGVzcGVjaWFsbHkgcmVsZXZhbnQgYmVjYXVzZSBpdCYjMzk7cyBhIG5ldyBmdW5jdGlvbiBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaC4KCkkgY2hlY2sgZm9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGFuZCBJIHNlZSB0aGF0IGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYCBhcmUgY3J1Y2lhbCwgYW5kIGBJUFY2X1NVQlRSRUVTYCBzaG91bGQgYWxyZWFkeSBiZSBlbmFibGVkLgoKSSBxdWlja2x5IGNvbmZpcm0gdGhhdCBhbGwgZm9jdXMgc3ltYm9scywgaW5jbHVkaW5nIHRoZSBzdGF0aWMgb25lcywgYXJlIGFjY2Vzc2libGUgdG8gU3l6a2FsbGVyLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIOKAnGhvdCBwYXRo4oCdIGltcGxpY2F0aW9ucy4gYGlwdjZfc2FkZHJfcnVsZTVwNWAsIGBpcHY2X2ZsX2dldF9zYWRkcmAsIGFuZCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCBhcmUgcmVsYXRlZCB0byBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24uIFJvdXRlIGxvb2t1cCBpcyBvbiBhIHBhdGggdGhhdCBpcyBjYWxsZWQgbW9yZSB0aGFuIG9uZSB0aW1lLiBUaGVyZWZvcmUgSSBoYXZlIHRvIGNvbnNpZGVyIGV4Y2x1ZGluZyBpdC4gYHJ0Nl9maWxsX25vZGVgIGlzIGludm9sdmVkIGluIG5ldGxpbmsgcm91dGUgZHVtcGluZywgc28gbm90IGEgaG90IHBhdGguCgpUaGVyZWZvcmUgdGhlIGZvY3VzIHN5bWJvbHMgYXJlOgpgaXB2Nl9zYWRkcl9ydWxlNXA1YApgaXB2Nl9mbF9nZXRfc2FkZHJgCmBpcHY2X2Rldl9nZXRfc2FkZHJgCmBydDZfZmlsbF9ub2RlYAoKVGhpcyBwYXRjaCBpcyBpbXBsZW1lbnRpbmcgUkZDNjcyNCBydWxlIDUuNS4gSXQgbW9kaWZpZXMgY29yZSBJUHY2IHJvdXRpbmcgbG9naWMuCgpPa2F5LCBsZXQmIzM5O3MgZW5hYmxlIGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gSSB3aWxsIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjb25maWdzLgpOby4KCkV2ZXJ5dGhpbmcgc2VlbXMgdG8gYmUgaW4gb3JkZXIuIExldCYjMzk7cyBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNl9TVUJUUkVFUyYjMzQ7LAogICAgJiMzNDtJUFY2X01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwdjZfc2FkZHJfcnVsZTVwNSYjMzQ7LAogICAgJiMzNDtpcHY2X2ZsX2dldF9zYWRkciYjMzQ7LAogICAgJiMzNDtpcHY2X2Rldl9nZXRfc2FkZHImIzM0OywKICAgICYjMzQ7cnQ2X2ZpbGxfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIFJGQzY3MjQgcnVsZSA1LjUgZm9yIElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGJ5IGludHJvZHVjaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBJdCBtb2RpZmllcyBjb3JlIElQdjYgcm91dGluZyBhbmQgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgKGUuZy4sIGNvbm5lY3QsIHNlbmRtc2cpIGFuZCBuZXRsaW5rIHJvdXRlIGR1bXBzIChgcnQ2X2ZpbGxfbm9kZWApLiBUaGUgZmVhdHVyZSByZXF1aXJlcyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNl9TVUJUUkVFUyYjMzQ7LAogICAgJiMzNDtJUFY2X01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwdjZfc2FkZHJfcnVsZTVwNSYjMzQ7LAogICAgJiMzNDtpcHY2X2ZsX2dldF9zYWRkciYjMzQ7LAogICAgJiMzNDtpcHY2X2Rldl9nZXRfc2FkZHImIzM0OywKICAgICYjMzQ7cnQ2X2ZpbGxfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIFJGQzY3MjQgcnVsZSA1LjUgZm9yIElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGJ5IGludHJvZHVjaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBJdCBtb2RpZmllcyBjb3JlIElQdjYgcm91dGluZyBhbmQgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgKGUuZy4sIGNvbm5lY3QsIHNlbmRtc2cpIGFuZCBuZXRsaW5rIHJvdXRlIGR1bXBzIChgcnQ2X2ZpbGxfbm9kZWApLiBUaGUgZmVhdHVyZSByZXF1aXJlcyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjE3OjI2LjgxMTQ1NDUzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2MDIwNzc5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TVUJUUkVFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHY2X3NhZGRyX3J1bGU1cDVcIixcbiAgICBcImlwdjZfZmxfZ2V0X3NhZGRyXCIsXG4gICAgXCJpcHY2X2Rldl9nZXRfc2FkZHJcIixcbiAgICBcInJ0Nl9maWxsX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIFJGQzY3MjQgcnVsZSA1LjUgZm9yIElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGJ5IGludHJvZHVjaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBJdCBtb2RpZmllcyBjb3JlIElQdjYgcm91dGluZyBhbmQgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgKGUuZy4sIGNvbm5lY3QsIHNlbmRtc2cpIGFuZCBuZXRsaW5rIHJvdXRlIGR1bXBzIChgcnQ2X2ZpbGxfbm9kZWApLiBUaGUgZmVhdHVyZSByZXF1aXJlcyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdG8gYmUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MTc6MjYuODExNDU5MjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMzQ1ODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlhNGQ1NDQyYzAyYjM5YjkyNTgyZmUxMWVjOGFmMjJiNGZhZGM4NzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MTc6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni1hZGRyc2VsLnJzdFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJlZDAzMmU2OTU3MDVjXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0XFxuQEAgLTAsMCArMSw3NSBAQFxcbisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbitcXG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuK0lQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIHRyaXZpYVxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4rXFxuK1xcbitSRkM2NzI0IHJ1bGUgNS41IHN1cHBvcnRcXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitSRkM2NzI0IHJ1bGUgNS41IGlzIGEgdmVyeSBzaG9ydCBwYXJhZ3JhcGggaW4gYSBjb21wbGV4IFJGQyB0aGF0IGhhcyB0dXJuZWRcXG4rb3V0IHF1aXRlIHRyaWNreSwgYnV0IGFsc28gaW1tZW5zZWx5IHVzZWZ1bCBpbiBtdWx0aWhvbWluZyBzY2VuYXJpb3MuICBGb3JcXG4rcmVmZXJlbmNlLCBpdCBzYXlzOlxcbitcXG4rOjpcXG4rXFxuKyAgIFJ1bGUgNS41OiBQcmVmZXIgYWRkcmVzc2VzIGluIGEgcHJlZml4IGFkdmVydGlzZWQgYnkgdGhlIG5leHQtaG9wLlxcbisgICBJZiBTQSBvciBTQSdzIHByZWZpeCBpcyBhc3NpZ25lZCBieSB0aGUgc2VsZWN0ZWQgbmV4dC1ob3AgdGhhdCB3aWxsXFxuKyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQidzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudFxcbisgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJ3MgcHJlZml4IGlzXFxuKyAgIGFzc2lnbmVkIGJ5IHRoZSBuZXh0LWhvcCB0aGF0IHdpbGwgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNBIG9yXFxuKyAgIFNBJ3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi5cXG4rXFxuK1RoZSB3YXkgdGhpcyB3b3JrcyBvbiBMaW51eCBpcyBhcyBmb2xsb3dzOlxcbitcXG4rLSBwcmlvciB0byBhbnkgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGhhcHBlbmluZywgd2hlbiByZWNlaXZpbmcgYSBSQSwgbW9yZVxcbisgIHRoYW4gdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRlZmF1bHQgcm91dGUgKG9yIDo6LzEyOCByb3V0ZSkgbmVlZHMgdG8gaGFwcGVuOlxcbisgIGZvciBlYWNoIFBJTywgYSBzb3VyY2Utc3BlY2lmaWMgKHN1YnRyZWUpIHJvdXRlIGlzICphZGRpdGlvbmFsbHkqIGluc3RhbGxlZC5cXG4rICBUaGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCAqYWZ0ZXIqIGEgc291cmNlIGFkZHJlc3MgaGFzIGJlZW4gc2VsZWN0ZWQsIG9uZVxcbisgIG9mIHRoZSByb3V0ZXJzIHRoYXQgYWR2ZXJ0aXNlZCBpdCB3aWxsIHJlbWFpbiBpbiB1c2UgKHRoaXMgaXMgKm5vdCogUkZDIDY3MjRcXG4rICByZWxhdGVkLCBidXQgcmF0aGVyIFJGQyA4MDI4LikgIEF0IHRoZSBzYW1lIHRpbWUsIHRoZXNlIGV4dHJhIHJvdXRlcyBzZXJ2ZVxcbisgIHRvIHJlbWVtYmVyIHdoaWNoIHJvdXRlciBhZHZlcnRpc2VkIHdoYXQuXFxuK1xcbistIHBlciB1c3VhbCwgYSByb3V0ZSBsb29rdXAgZm9yIHRoZSBJUHY2IGRlc3RpbmF0aW9uIGFkZHJlc3MgaW4gY29uc2lkZXJhdGlvblxcbisgIGlzIGRvbmUgZmlyc3QuICBUaGlzIGlzIHBhc3NlZCBhcm91bmQgaW4ga2VybmVsIGFzIGEgZHN0X2VudHJ5LlxcbitcXG4rLSB0aGUgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgdmFyaW91cyBydWxlcyBpblxcbisgIFJGQyA2NzI0LlxcbitcXG4rLSBpZi93aGVuIHJ1bGUgNS41IGlzIHJlYWNoZWQsIGZpcnN0IG9mIGFsbCwgdGhlcmUgaXMgYSBjaGVjayBpZiAqYW55KiBzb3VyY2VcXG4rICBzcGVjaWZpYyByb3V0ZXMgZXhpc3QgaW4gdGhlIHJvdXRpbmcgdGFibGUuICBJZiB0aGVyZSBhcmUgbm9uZSwgdGhlIGVudGlyZVxcbisgIGNvZGUgZm9yIDUuNSBpcyBza2lwcGVkIGJlY2F1c2UgaXQgY2Fubm90IGhhdmUgYW55IGVmZmVjdCwgYnV0IGlzIG5vdCBmcmVlXFxuKyAgdG8gZXhlY3V0ZSAoY2FuIGludm9sdmUgbXVsdGlwbGUgcm91dGluZyBsb29rdXBzLikgICoqSW4gYXBwbGljYXRpb25zIHRoYXRcXG4rICB1c2UgYSBsb3Qgb2YgdW5ib3VuZCAoZS5nLiBVRFApIHNvY2tldHMsIGluc3RhbGxpbmcgc3VidHJlZSByb3V0ZXMgc2hvdWxkXFxuKyAgdGhlcmVmb3JlIGJlIGF2b2lkZWQgdG8gbm90IGluY3VyIHRoaXMgY29zdCBvbiBlYWNoIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvblxcbisgIHBhc3MuKiogIEFsdGVybmF0aXZlbHksIGFwcGxpY2F0aW9ucyBzaG91bGQgYmluZCB0aGVpciBzb2NrZXRzIHRvIGEgc3BlY2lmaWNcXG4rICBzb3VyY2UgYWRkcmVzcyBzdWNoIHRoYXQgdGhlIHNlbGVjdGlvbiBjb2RlIGlzIG5ldmVyIGhpdC5cXG4rXFxuKy0gaWYgc3VidHJlZSByb3V0ZXMgZG8gZXhpc3QsIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gY29kZSBub3cgcmVwZWF0c1xcbisgIHRoZSByb3V0aW5nIGxvb2t1cCBkb25lIGJlZm9yZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gaXMgZW50ZXJlZCwgZXhjZXB0XFxuKyAgd2l0aCB0aGUgc291cmNlIGFkZHJlc3MgdW5kZXIgY29uc2lkZXJhdGlvbiBmaWxsZWQgaW4uICBUaGlzIGxvb2t1cCB3aWxsIGhpdFxcbisgIHRoZSBzdWJ0cmVlIHJvdXRlcyB0aGF0IHdlcmUgaW5zdGFsbGVkIChzZWUgZmlyc3QgaXRlbSksIGdpdmluZyBhIGZyZXNoXFxuKyAgZHN0X2VudHJ5LiAgSWYgdGhlIG5ldyBkc3RfZW50cnkgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgZHN0X2VudHJ5LCB0aGF0IG1lYW5zXFxuKyAgdGhlIG9yaWdpbmFsIHJvdXRlciBoYXMgaW4gZmFjdCBzZW50IFJBcyB3aXRoIFBJT3MgZm9yIHRoaXMgc291cmNlIGFkZHJlc3MsXFxuKyAgc28gaXQgaXMgcHJlZmVycmVkLiAgT3RoZXJ3aXNlIGl0IGlzIG5vdC5cXG4rXFxuK1xcbitUaGVyZSBhcmUgYSBmZXcgY2F2ZWF0cyB0byBjb25zaWRlcjpcXG4rXFxuKy0gdGhlIGtlcm5lbCBjdXJyZW50bHkgZG9lcyBub3QgY3JlYXRlIHRoZSBzdWJ0cmVlIHJvdXRlcyBtZW50aW9uZWQgaW4gdGhlXFxuKyAgZmlyc3QgaXRlbS4gIFRoaXMgaXMgYSBzZXBhcmF0ZSB3b3JrIGl0ZW0sIHBhcnRpYWxseSBkb25lIGF0IHRoZSB0aW1lIG9mXFxuKyAgd3JpdGluZyB0aGlzLiAgQnV0IHRoaXMgY2FuIGVxdWFsbHkgd2VsbCBiZSBwZXJmb3JtZWQgaW4gdXNlcnNwYWNlIHByb2Nlc3NpbmdcXG4rICBvZiBSQXMsIGUuZy4gTmV0d29ya01hbmFnZXIgb3IgcGxhaW4gc3RhdGljIGNvbmZpZ3VyYXRpb24uXFxuK1xcbistIHNpbmNlIGFkZHJlc3NlcyBjYW4gYWxzbyBiZSBhY3F1aXJlZCBmcm9tIERIQ1B2NiwgZXZlbiBSQS9QSU8gY29tYmluYXRpb25zXFxuKyAgdGhhdCBkaWRuJ3QgcmVzdWx0IGluIHRoZSBjcmVhdGlvbiBvZiBhbnkgYWRkcmVzc2VzIChlLmcuIEE9MCkgc2hvdWxkIGhhdmVcXG4rICBzdWJ0cmVlIHJvdXRlcyBhZGRlZC4gIFRob3NlIHJvdXRlcyAqbWF5KiBiZSByZWxldmFudCBmb3IgREhDUHY2LWdlbmVyYXRlZFxcbisgIGFkZHJlc3Nlcy5cXG4rXFxuKy0gdGhlIFxcXCJhbm5vdW5jZSBjaGVja1xcXCIgbG9va3VwIGRvZXMgbm90IGJhY2t0cmFjay4gIE9ubHkgdGhlIGRlc3RpbmF0aW9uIHByZWZpeFxcbisgIHRoYXQgcHJvdmlkZWQgdGhlIFxcXCJ1bnNwZWNpZmljXFxcIiAoOjovMTI4KSBtYXRjaCBpcyBjaGVja2VkIGZvciBzb3VyY2UgcHJlZml4ZXNcXG4rICB0byBzZWUgd2hhdCByb3V0ZXJzIGFkdmVydGlzZWQgd2hhdC4gIFRoaXMgbWVhbnMgdGhhdCBmb3IgZS5nLiBSSU9zLCBzdWJ0cmVlXFxuKyAgcm91dGVzIGFsc28gaGF2ZSB0byBiZSBjcmVhdGVkLiAgKEJhY2t0cmFja2luZyBmb3IgdGhpcyBjYXNlIHdvdWxkIGZ1cnRoZXJcXG4rICBpbmNyZWFzZSB0aGUgY29zdCBvZiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24sIGZvciBhIHByZXR0eSByYXJlIHNpdHVhdGlvblxcbisgIHRoYXQgaGFzIGFuIGVhc3kgZml4L3dvcmthcm91bmQuKVxcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXFxuaW5kZXggZjMyMThhYmVmZDBjNmIuLjRlZGY0ODM2MmEwNzMyIDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMTg5MTIsNiArMTg5MTIsNyBAQCBGOlxcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1hZGRyLnlhbWxcXG4gRjpcXHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbmVpZ2gueWFtbFxcbiBGOlxcdERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1yb3V0ZS55YW1sXFxuIEY6XFx0RG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LXJ1bGUueWFtbFxcbitGOlxcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0XFxuIEY6XFx0aW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmhcXG4gRjpcXHRpbmNsdWRlL2xpbnV4L21yb3V0ZSpcXG4gRjpcXHRpbmNsdWRlL25ldC9hZGRyY29uZi5oXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmggYi9pbmNsdWRlL25ldC9hZGRyY29uZi5oXFxuaW5kZXggOGNlZDI3YTgyMjliNmUuLjdiYzA3MTFiODcxNzk2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcXG4rKysgYi9pbmNsdWRlL25ldC9hZGRyY29uZi5oXFxuQEAgLTE0Miw2ICsxNDIsMTAgQEAgc3RydWN0IGluZXQ2X2lmYWRkciAqaXB2Nl9nZXRfaWZhZGRyKHN0cnVjdCBuZXQgKm5ldCxcXG4gaW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgc3JjcHJlZnMsXFxuIFxcdFxcdCAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKTtcXG4raW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxcbitcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcXG4rXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgc3JjcHJlZnMsXFxuK1xcdFxcdCAgICAgIHN0cnVjdCBmbG93aTYgKmZsNik7XFxuIGludCBpcHY2X2dldF9sbGFkZHIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGluNl9hZGRyICphZGRyLFxcbiBcXHRcXHQgICAgdTMyIGJhbm5lZF9mbGFncyk7XFxuIGJvb2wgaW5ldF9yY3Zfc2FkZHJfZXF1YWwoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2syLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcDZfcm91dGUuaCBiL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oXFxuaW5kZXggMDlmZmUwZjEzY2U3NTIuLmZlMTNjYjFkMzI1N2RiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhcXG5AQCAtMTQwLDMyICsxNDAsNiBAQCB2b2lkIHJ0Nl9mbHVzaF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSk7XFxuIHZvaWQgcnQ2X2FnZV9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSwgc3RydWN0IGZpYjZfZ2NfYXJncyAqZ2NfYXJncyxcXG4gXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBub3cpO1xcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgaXA2X3JvdXRlX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkcixcXG4tXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHByZWZzLCBpbnQgbDNtZGV2X2luZGV4LFxcbi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxcbi17XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuLVxcdGJvb2wgc2FtZV92cmY7XFxuLVxcdGludCBlcnIgPSAwO1xcbi1cXG4tXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXG4tXFx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBsM21kZXZfaW5kZXgpO1xcbi1cXHRpZiAoIWY2aSB8fCAhZjZpLVxcdTAwM2VmaWI2X3ByZWZzcmMucGxlbiB8fCBsM21kZXYpXFxuLVxcdFxcdGRldiA9IGY2aSA/IGZpYjZfaW5mb19uaF9kZXYoZjZpKSA6IE5VTEw7XFxuLVxcdHNhbWVfdnJmID0gIWwzbWRldiB8fCBsM21kZXZfbWFzdGVyX2Rldl9yY3UoZGV2KSA9PSBsM21kZXY7XFxuLVxcdGlmIChmNmkgXFx1MDAyNlxcdTAwMjYgZjZpLVxcdTAwM2VmaWI2X3ByZWZzcmMucGxlbiBcXHUwMDI2XFx1MDAyNiBzYW1lX3ZyZilcXG4tXFx0XFx0KnNhZGRyID0gZjZpLVxcdTAwM2VmaWI2X3ByZWZzcmMuYWRkcjtcXG4tXFx0ZWxzZVxcbi1cXHRcXHRlcnIgPSBpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgZGFkZHIsIHByZWZzLCBzYWRkcik7XFxuLVxcbi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFxuLVxcdHJldHVybiBlcnI7XFxuLX1cXG4tXFxuIHN0cnVjdCBydDZfaW5mbyAqcnQ2X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXFxuIFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyLCBpbnQgb2lmLFxcbiBcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGZsYWdzKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvS2NvbmZpZyBiL25ldC9pcHY2L0tjb25maWdcXG5pbmRleCBjMzgwNmM2YWM5NmY5NS4uMzk2NTllOWI1M2EzZGIgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvS2NvbmZpZ1xcbisrKyBiL25ldC9pcHY2L0tjb25maWdcXG5AQCAtMjQzLDE2ICsyNDMsMjYgQEAgY29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxuIGNvbmZpZyBJUFY2X1NVQlRSRUVTXFxuIFxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxuIFxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG4rXFx0ZGVmYXVsdCB5XFxuIFxcdGhlbHBcXG4gXFx0ICBFbmFibGUgcm91dGluZyBieSBzb3VyY2UgYWRkcmVzcyBvciBwcmVmaXguXFxuIFxcbiBcXHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcXG4gXFx0ICBub3JtYWwgYW5kIHNvdXJjZSBwcmVmaXggc3BlY2lmaWMgcm91dGVzIGluIHRoZSBzYW1lIHJvdXRpbmcgdGFibGVcXG4tXFx0ICBtYXkgc29tZXRpbWVzIGxlYWQgdG8gdW5pbnRlbmRlZCByb3V0aW5nIGJlaGF2aW9yLiAgVGhpcyBjYW4gYmVcXG4tXFx0ICBhdm9pZGVkIGJ5IGRlZmluaW5nIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBmb3IgdGhlIG5vcm1hbCBhbmRcXG4tXFx0ICBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcy5cXG4rXFx0ICBtYXkgc29tZXRpbWVzIGxlYWQgdG8gdW5pbnRlbmRlZCByb3V0aW5nIGJlaGF2aW9yIGlmIHRoZSBvcmRlciBvZlxcbitcXHQgIGxvb2t1cHMgaXMgbWlzdW5kZXJzdG9vZC4gIFRvIGFjaGlldmUgZnVsbCBzZXBhcmF0aW9uIGJhc2VkIG9uIHNvdXJjZVxcbitcXHQgIGFkZHJlc3MsIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBzaG91bGQgYmUgZGVmaW5lZCBmb3IgZWFjaCBzb3VyY2VcXG4rXFx0ICBwcmVmaXguXFxuIFxcbi1cXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuK1xcdCAgU3VidHJlZXMgc3BlY2lmaWNhbGx5IGFkZHJlc3Mgc2NlbmFyaW9zIHdoZXJlIGxvY2FsIGNvbm5lY3Rpdml0eVxcbitcXHQgIGJldHdlZW4gc291cmNlIHByZWZpeGVzIGlzIHNoYXJlZCBhbmQgdW5yZXN0cmljdGVkLCBidXQgc29tZVxcbitcXHQgIGRlc3RpbmF0aW9ucyAoZS5nLiB0aGUgZGVmYXVsdCByb3V0ZSkgaGF2ZSBtb3JlIGZpbmUtZ3JhaW5lZCBydWxlcy5cXG4rXFxuK1xcdCAgVGhpcyBmZWF0dXJlIGlzIHJlcXVpcmVkIHRvIGNvcnJlY3RseSBzdXBwb3J0IFJGQzY3MjQgcnVsZSA1LjUgaW5cXG4rXFx0ICBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24uICBSdWxlIDUuNSBpcyBhIG5lY2Vzc2l0eSBmb3IgZ29vZFxcbitcXHQgIG11bHRpaG9taW5nLCByZW51bWJlcmluZyBhbmQgc291cmNlIHByZWZpeCBsaXZlbGluZXNzIGNoZWNrcy5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gXFxuIGNvbmZpZyBJUFY2X01ST1VURVxcbiBcXHRib29sIFxcXCJJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1xcXCJcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBiL25ldC9pcHY2L2FkZHJjb25mLmNcXG5pbmRleCBmMWZlOWVkZTFlZGIzNy4uZjVjMDQ5MjhhYTE0MmYgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvYWRkcmNvbmYuY1xcbisrKyBiL25ldC9pcHY2L2FkZHJjb25mLmNcXG5AQCAtMTUyMiw2ICsxNTIyLDcgQEAgZW51bSB7XFxuIFxcdElQVjZfU0FERFJfUlVMRV9IT0EsXFxuICNlbmRpZlxcbiBcXHRJUFY2X1NBRERSX1JVTEVfT0lGLFxcbitcXHRJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1AsXFxuIFxcdElQVjZfU0FERFJfUlVMRV9MQUJFTCxcXG4gXFx0SVBWNl9TQUREUl9SVUxFX1BSSVZBQ1ksXFxuIFxcdElQVjZfU0FERFJfUlVMRV9PUkNISUQsXFxuQEAgLTE1NDIsMTEgKzE1NDMsMTQgQEAgc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUge1xcbiB9O1xcbiBcXG4gc3RydWN0IGlwdjZfc2FkZHJfZHN0IHtcXG4tXFx0Y29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyO1xcbitcXHRzdHJ1Y3QgZmxvd2k2ICpmbDY7XFxuK1xcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcXG4rXFx0Y29uc3Qgc3RydWN0IHNvY2sgKnNrO1xcbiBcXHRpbnQgaWZpbmRleDtcXG4gXFx0aW50IHNjb3BlO1xcbiBcXHRpbnQgbGFiZWw7XFxuIFxcdHVuc2lnbmVkIGludCBwcmVmcztcXG4rXFx0c3RydWN0IG5ldCAqbmV0O1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZSBpbnQgaXB2Nl9zYWRkcl9wcmVmZXJyZWQoaW50IHR5cGUpXFxuQEAgLTE1OTEsNiArMTU5NSw4MCBAQCBzdGF0aWMgYm9vbCBpcHY2X2FsbG93X29wdGltaXN0aWNfZGFkKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcXG4gI2VuZGlmXFxuIH1cXG4gXFxuKy8qIFxcXCJzb3VyY2UgYWRkcmVzcyBpcyBwcmVmZXJhYmxlIGlmIHRoZSBjaG9zZW4gbmV4dGhvcCBhZHZlcnRpc2VkIGl0IGFzIGEgUElPXFxcIlxcbisgKiA9XFx1MDAzZSBjb25zaWRlciAnYWR2ZXJ0aXNlZCBhcyBhIFBJTycgdG8gYmUgJ3RoZSByb3V0ZXMgZm9yIHRoZSBzb3VyY2UncyBzdWJ0cmVlXFxuKyAqICAgIGluY2x1ZGUgb25lIHdpdGggdGhlIHNhbWUgbmV4dGhvcCdcXG4rICpcXG4rICogTkI6IHRoZXJlIGlzIG5vIGJhY2t0cmFja2luZyBpbiB0aGUgc3VidHJlZSBoZXJlLCB0aGlzIGlzIGludGVudGlvbmFsIC1cXG4rICogZWFjaCBwcmVmaXggc2VlbiAoYW5kIGFjY2VwdGVkKSBpbiBQSU9zIGNyZWF0ZXMgZXNzZW50aWFsbHkgYSBcXFwiem9uZVxcXCIgd2hpY2hcXG4rICogaXMgb3VyIHNlYXJjaCBzY29wZS5cXG4rICovXFxuK3N0YXRpYyBpbnQgaXB2Nl9zYWRkcl9ydWxlNXA1KHN0cnVjdCBpcHY2X3NhZGRyX3Njb3JlICpzY29yZSxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IGlwdjZfc2FkZHJfZHN0ICpzYWRkcl9kc3QpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0Nl9pbmZvICpydCwgKmNtcF9ydDtcXG4rXFx0c3RydWN0IGRzdF9lbnRyeSAqY21wX2RzdDtcXG4rXFx0c3RydWN0IGZpYjZfaW5mbyAqZjZpO1xcbitcXHRpbnQgcmV0ID0gMDtcXG4rXFxuK1xcdHJ0ID0gY29udGFpbmVyX29mKHNhZGRyX2RzdC1cXHUwMDNlZHN0LCBzdHJ1Y3QgcnQ2X2luZm8sIGRzdCk7XFxuK1xcbitcXHQvKiBmbDYtXFx1MDAzZXNhZGRyIGlzIDo6LCBjZi4gY2hlY2sgYXQgdGhlIHRvcCBvZiBpcHY2X2NvbW1vbl9nZXRfc2FkZHIoKSAqL1xcbitcXHRzYWRkcl9kc3QtXFx1MDAzZWZsNi1cXHUwMDNlc2FkZHIgPSBzY29yZS1cXHUwMDNlaWZhLVxcdTAwM2VhZGRyO1xcbitcXHRjbXBfZHN0ID0gaXA2X3JvdXRlX291dHB1dChzYWRkcl9kc3QtXFx1MDAzZW5ldCwgc2FkZHJfZHN0LVxcdTAwM2VzayxcXG4rXFx0XFx0XFx0XFx0ICAgc2FkZHJfZHN0LVxcdTAwM2VmbDYpO1xcbitcXHRtZW1zZXQoXFx1MDAyNnNhZGRyX2RzdC1cXHUwMDNlZmw2LVxcdTAwM2VzYWRkciwgMCwgc2l6ZW9mKHNhZGRyX2RzdC1cXHUwMDNlZmw2LVxcdTAwM2VzYWRkcikpO1xcbitcXG4rXFx0aWYgKGNtcF9kc3QtXFx1MDAzZWVycm9yKVxcbitcXHRcXHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcXG4rXFxuK1xcdGNtcF9ydCA9IGNvbnRhaW5lcl9vZihjbXBfZHN0LCBzdHJ1Y3QgcnQ2X2luZm8sIGRzdCk7XFxuK1xcbitcXHQvKiB0aGlzIG11c3Qgd29yayBpZiBfYW55XyBuZXh0aG9wIG1hdGNoZXM7IHRoZSBub24tc3VidHJlZSBiZXN0IG1heVxcbitcXHQgKiBub3QgYmUgaW4gc2FtZSBvcmRlciBhcyBzdWJ0cmVlIGJlc3RcXG4rXFx0ICovXFxuK1xcdGZvciAoZjZpID0gcmN1X2RlcmVmZXJlbmNlKGNtcF9ydC1cXHUwMDNlZnJvbSk7IGY2aTtcXG4rXFx0ICAgICBmNmkgPSByY3VfZGVyZWZlcmVuY2UoZjZpLVxcdTAwM2VmaWI2X25leHQpKSB7XFxuK1xcdFxcdHN0cnVjdCBmaWI2X25oICpmNm4gPSBmNmktXFx1MDAzZWZpYjZfbmg7XFxuK1xcdFxcdHN0cnVjdCBmaWI2X2luZm8gKnNpYmxpbmc7XFxuK1xcbitcXHRcXHQvKiBub24tc3VidHJlZSByb3V0ZTogc2F5cyBub3RoaW5nIGFib3V0IHJvdXRlciBhZHZlcnRpc2luZyB0aGlzIHNvdXJjZSAqL1xcbitcXHRcXHRpZiAoZjZpLVxcdTAwM2VmaWI2X3NyYy5wbGVuID09IDApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0aWYgKGY2bi1cXHUwMDNlbmhfY29tbW9uLm5oY19kZXYgIT0gc2FkZHJfZHN0LVxcdTAwM2Vkc3QtXFx1MDAzZWRldiB8fFxcbitcXHRcXHQgICAgZjZuLVxcdTAwM2VuaF9jb21tb24ubmhjX2d3X2ZhbWlseSAhPSBBRl9JTkVUNilcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRpZiAoaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZmNm4tXFx1MDAzZW5oX2NvbW1vbi5uaGNfZ3cuaXB2NixcXG4rXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZydC1cXHUwMDNlcnQ2aV9nYXRld2F5KSkge1xcbitcXHRcXHRcXHRyZXQgPSAxO1xcbitcXHRcXHRcXHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0aWYgKCFmNmktXFx1MDAzZWZpYjZfbnNpYmxpbmdzKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2libGluZywgXFx1MDAyNmY2aS1cXHUwMDNlZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncykge1xcbitcXHRcXHRcXHRmNm4gPSBzaWJsaW5nLVxcdTAwM2VmaWI2X25oO1xcbitcXG4rXFx0XFx0XFx0aWYgKGY2bi1cXHUwMDNlbmhfY29tbW9uLm5oY19kZXYgIT0gc2FkZHJfZHN0LVxcdTAwM2Vkc3QtXFx1MDAzZWRldiB8fFxcbitcXHRcXHRcXHQgICAgZjZuLVxcdTAwM2VuaF9jb21tb24ubmhjX2d3X2ZhbWlseSAhPSBBRl9JTkVUNilcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRcXHRpZiAoaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZmNm4tXFx1MDAzZW5oX2NvbW1vbi5uaGNfZ3cuaXB2NixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZydC1cXHUwMDNlcnQ2aV9nYXRld2F5KSkge1xcbitcXHRcXHRcXHRcXHRyZXQgPSAxO1xcbitcXHRcXHRcXHRcXHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK291dF9yZWxlYXNlX2RzdDpcXG4rXFx0ZHN0X3JlbGVhc2UoY21wX2RzdCk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXB2Nl9zYWRkcl9zY29yZSAqc2NvcmUsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXB2Nl9zYWRkcl9kc3QgKmRzdCxcXG5AQCAtMTYxOSw3ICsxNjk3LDcgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgSVBWNl9TQUREUl9SVUxFX0xPQ0FMOlxcbiBcXHRcXHQvKiBSdWxlIDE6IFByZWZlciBzYW1lIGFkZHJlc3MgKi9cXG4tXFx0XFx0cmV0ID0gaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZzY29yZS1cXHUwMDNlaWZhLVxcdTAwM2VhZGRyLCBkc3QtXFx1MDAzZWFkZHIpO1xcbitcXHRcXHRyZXQgPSBpcHY2X2FkZHJfZXF1YWwoXFx1MDAyNnNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWFkZHIsIFxcdTAwMjZkc3QtXFx1MDAzZWZsNi1cXHUwMDNlZGFkZHIpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfU0NPUEU6XFxuIFxcdFxcdC8qIFJ1bGUgMjogUHJlZmVyIGFwcHJvcHJpYXRlIHNjb3BlXFxuQEAgLTE2NzUsNiArMTc1MywyNCBAQCBzdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX2V2YWwoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHRcXHRyZXQgPSAoIWRzdC1cXHUwMDNlaWZpbmRleCB8fFxcbiBcXHRcXHQgICAgICAgZHN0LVxcdTAwM2VpZmluZGV4ID09IHNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWlkZXYtXFx1MDAzZWRldi1cXHUwMDNlaWZpbmRleCk7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlIElQVjZfU0FERFJfUlVMRV9QSU9fQllfTkVYVEhPUDpcXG4rXFx0XFx0LyogUnVsZSA1LjU6IFByZWZlciBzb3VyY2VzIGFkdmVydGlzZWQgYnkgY2hvc2VuIG5leHQtaG9wICovXFxuK1xcbitcXHRcXHQvKiBXaXRob3V0IHN1YnRyZWVzLCB0aGUgc291cmNlIGFkZHJlc3Mgd2lsbCBtYWtlIG5vIGRpZmZlcmVuY2VcXG4rXFx0XFx0ICogaW4gdGhlIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBpbiBydWxlNXA1LiAgVGhlcmVmb3JlIHRoZSBydWxlXFxuK1xcdFxcdCAqIDUuNSBjaGVjayBiZWNvbWVzIHVzZWxlc3MuICBUaGlzIHdvdWxkbid0IHJlc3VsdCBpbiBhbnlcXG4rXFx0XFx0ICogZXJyb3JzLCBidXQgaXA2X3JvdXRlX291dHB1dCBpc24ndCBmcmVlLCBzbyBpZiBzdWJ0cmVlcyBhcmVcXG4rXFx0XFx0ICogZGlzYWJsZWQgc2F2ZSBzb21lIGN5Y2xlcyBieSBza2lwcGluZyB0aGlzIGVudGlyZWx5LlxcbitcXHRcXHQgKlxcbitcXHRcXHQgKiBUaGlzIGlzIGRvbmUgdGhyb3VnaCBzdWJ0cmVlc19lbmFibGVkIHRvIGhhdmUgdGhlIGNvZGVcXG4rXFx0XFx0ICogY29tcGlsZWQgcmVnYXJkbGVzcy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChmaWI2X3JvdXRlc19yZXF1aXJlX3NyYyhuZXQpIFxcdTAwMjZcXHUwMDI2IGRzdC1cXHUwMDNlZHN0XFxuK1xcdFxcdCAgICBcXHUwMDI2XFx1MDAyNiAhZHN0LVxcdTAwM2Vkc3QtXFx1MDAzZWVycm9yKVxcbitcXHRcXHRcXHRyZXQgPSBpcHY2X3NhZGRyX3J1bGU1cDUoc2NvcmUsIGRzdCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cmV0ID0gMTtcXG4rXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgSVBWNl9TQUREUl9SVUxFX0xBQkVMOlxcbiBcXHRcXHQvKiBSdWxlIDY6IFByZWZlciBtYXRjaGluZyBsYWJlbCAqL1xcbiBcXHRcXHRyZXQgPSBpcHY2X2FkZHJfbGFiZWwobmV0LFxcbkBAIC0xNjk3LDExICsxNzkzLDExIEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdCAqXFx0ICAgIG5vbi1PUkNISUQgdnMgbm9uLU9SQ0hJRFxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0cmV0ID0gIShpcHY2X2FkZHJfb3JjaGlkKFxcdTAwMjZzY29yZS1cXHUwMDNlaWZhLVxcdTAwM2VhZGRyKSBeXFxuLVxcdFxcdFxcdGlwdjZfYWRkcl9vcmNoaWQoZHN0LVxcdTAwM2VhZGRyKSk7XFxuK1xcdFxcdFxcdGlwdjZfYWRkcl9vcmNoaWQoXFx1MDAyNmRzdC1cXHUwMDNlZmw2LVxcdTAwM2VkYWRkcikpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUFJFRklYOlxcbiBcXHRcXHQvKiBSdWxlIDg6IFVzZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeCAqL1xcbi1cXHRcXHRyZXQgPSBpcHY2X2FkZHJfZGlmZihcXHUwMDI2c2NvcmUtXFx1MDAzZWlmYS1cXHUwMDNlYWRkciwgZHN0LVxcdTAwM2VhZGRyKTtcXG4rXFx0XFx0cmV0ID0gaXB2Nl9hZGRyX2RpZmYoXFx1MDAyNnNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWFkZHIsIFxcdTAwMjZkc3QtXFx1MDAzZWZsNi1cXHUwMDNlZGFkZHIpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2Ugc2NvcmUtXFx1MDAzZWlmYS1cXHUwMDNlcHJlZml4X2xlbilcXG4gXFx0XFx0XFx0cmV0ID0gc2NvcmUtXFx1MDAzZWlmYS1cXHUwMDNlcHJlZml4X2xlbjtcXG4gXFx0XFx0c2NvcmUtXFx1MDAzZW1hdGNobGVuID0gcmV0O1xcbkBAIC0xODE5LDkgKzE5MTUsMTAgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9tYXN0ZXIoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHRyZXR1cm4gaGlzY29yZV9pZHg7XFxuIH1cXG4gXFxuLWludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcXG4tXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsIHVuc2lnbmVkIGludCBwcmVmcyxcXG4tXFx0XFx0ICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpXFxuK2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSxcXG4rXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXFxuK1xcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IHByZWZzLFxcbitcXHRcXHQgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpXFxuIHtcXG4gXFx0c3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgc2NvcmVzWzJdLCAqaGlzY29yZTtcXG4gXFx0c3RydWN0IGlwdjZfc2FkZHJfZHN0IGRzdDtcXG5AQCAtMTgzMiwxMSArMTkyOSwxOCBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXFxuIFxcdGludCBoaXNjb3JlX2lkeCA9IDA7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4tXFx0ZHN0X3R5cGUgPSBfX2lwdjZfYWRkcl90eXBlKGRhZGRyKTtcXG4tXFx0ZHN0LmFkZHIgPSBkYWRkcjtcXG4rXFx0Lyogd2Ugc2hvdWxkIG5ldmVyIGVuZCB1cCBoZXJlIHdpdGggYSBub24tZW1wdHkgc2FkZHIuICovXFxuK1xcdGlmIChXQVJOX09OX09OQ0UoIWlwdjZfYWRkcl9hbnkoXFx1MDAyNmZsNi1cXHUwMDNlc2FkZHIpKSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoXFx1MDAyNmZsNi1cXHUwMDNlZGFkZHIpO1xcbitcXHRkc3QubmV0ID0gbmV0O1xcbitcXHRkc3QuZmw2ID0gZmw2O1xcbitcXHRkc3Quc2sgPSBzaztcXG4rXFx0ZHN0LmRzdCA9IGRzdF9lbnRyeTtcXG4gXFx0ZHN0LmlmaW5kZXggPSBkc3RfZGV2ID8gZHN0X2Rldi1cXHUwMDNlaWZpbmRleCA6IDA7XFxuIFxcdGRzdC5zY29wZSA9IF9faXB2Nl9hZGRyX3NyY19zY29wZShkc3RfdHlwZSk7XFxuLVxcdGRzdC5sYWJlbCA9IGlwdjZfYWRkcl9sYWJlbChuZXQsIGRhZGRyLCBkc3RfdHlwZSwgZHN0LmlmaW5kZXgpO1xcbitcXHRkc3QubGFiZWwgPSBpcHY2X2FkZHJfbGFiZWwobmV0LCBcXHUwMDI2Zmw2LVxcdTAwM2VkYWRkciwgZHN0X3R5cGUsIGRzdC5pZmluZGV4KTtcXG4gXFx0ZHN0LnByZWZzID0gcHJlZnM7XFxuIFxcbiBcXHRzY29yZXNbaGlzY29yZV9pZHhdLnJ1bGUgPSAtMTtcXG5AQCAtMTkxMSwxMSArMjAxNSwyOSBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXFxuIFxcdGlmICghaGlzY29yZS1cXHUwMDNlaWZhKVxcbiBcXHRcXHRyZXQgPSAtRUFERFJOT1RBVkFJTDtcXG4gXFx0ZWxzZVxcbi1cXHRcXHQqc2FkZHIgPSBoaXNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWFkZHI7XFxuK1xcdFxcdGZsNi1cXHUwMDNlc2FkZHIgPSBoaXNjb3JlLVxcdTAwM2VpZmEtXFx1MDAzZWFkZHI7XFxuIFxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbitFWFBPUlRfU1lNQk9MKGlwdjZfZmxfZ2V0X3NhZGRyKTtcXG4rXFxuK2ludCBpcHY2X2Rldl9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcXG4rXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsIHVuc2lnbmVkIGludCBwcmVmcyxcXG4rXFx0XFx0ICAgICAgIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIpXFxuK3tcXG4rXFx0c3RydWN0IGZsb3dpNiBmbDY7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRtZW1zZXQoXFx1MDAyNmZsNiwgMCwgc2l6ZW9mKGZsNikpO1xcbitcXHRmbDYuZGFkZHIgPSAqZGFkZHI7XFxuK1xcbitcXHRyZXQgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsIE5VTEwsIGRzdF9kZXYsIE5VTEwsIHByZWZzLCBcXHUwMDI2Zmw2KTtcXG4rXFx0aWYgKCFyZXQpXFxuK1xcdFxcdCpzYWRkciA9IGZsNi5zYWRkcjtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4gRVhQT1JUX1NZTUJPTChpcHY2X2Rldl9nZXRfc2FkZHIpO1xcbiBcXG4gc3RhdGljIGludCBfX2lwdjZfZ2V0X2xsYWRkcihzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHIsXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9maWIuYyBiL25ldC9pcHY2L2lwNl9maWIuY1xcbmluZGV4IGExMzBjZGZhZWJmYmVlLi4yNzNmMmJmYzUyODY2OSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmliLmNcXG4rKysgYi9uZXQvaXB2Ni9pcDZfZmliLmNcXG5AQCAtMTY1Niw4ICsxNjU2LDExIEBAIHN0YXRpYyBzdHJ1Y3QgZmliNl9ub2RlICpmaWI2X25vZGVfbG9va3VwXzEoc3RydWN0IGZpYjZfbm9kZSAqcm9vdCxcXG4gXFx0XFx0XFx0XFx0XFx0c3RydWN0IGZpYjZfbm9kZSAqc2ZuO1xcbiBcXHRcXHRcXHRcXHRcXHRzZm4gPSBmaWI2X25vZGVfbG9va3VwXzEoc3VidHJlZSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGFyZ3MgKyAxKTtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKCFzZm4pXFxuK1xcdFxcdFxcdFxcdFxcdGlmICghc2ZuKSB7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdGlmIChmbi1cXHUwMDNlZm5fZmxhZ3MgXFx1MDAyNiBSVE5fUlRJTkZPKVxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZm47XFxuIFxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gYmFja3RyYWNrO1xcbitcXHRcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdFxcdFxcdGZuID0gc2ZuO1xcbiBcXHRcXHRcXHRcXHR9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcXG5pbmRleCAzNjhlNGZhM2I0M2NhMi4uMDNiOGQ0MmQ5ZGY5ZWYgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXFxuQEAgLTExNDMsMjcgKzExNDMsNDAgQEAgc3RhdGljIGludCBpcDZfZHN0X2xvb2t1cF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbiBcXHRpbnQgZmxhZ3MgPSAwO1xcbiBcXG4gXFx0LyogVGhlIGNvcnJlY3Qgd2F5IHRvIGhhbmRsZSB0aGlzIHdvdWxkIGJlIHRvIGRvXFxuLVxcdCAqIGlwNl9yb3V0ZV9nZXRfc2FkZHIsIGFuZCB0aGVuIGlwNl9yb3V0ZV9vdXRwdXQ7IGhvd2V2ZXIsXFxuK1xcdCAqIGlwdjZfZmxfZ2V0X3NhZGRyLCBhbmQgdGhlbiBpcDZfcm91dGVfb3V0cHV0OyBob3dldmVyLFxcbiBcXHQgKiB0aGUgcm91dGUtc3BlY2lmaWMgcHJlZmVycmVkIHNvdXJjZSBmb3JjZXMgdGhlXFxuLVxcdCAqIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBfYmVmb3JlXyBpcDZfcm91dGVfZ2V0X3NhZGRyLlxcbitcXHQgKiBpcDZfcm91dGVfb3V0cHV0IGNhbGwgX2JlZm9yZV8gaXB2Nl9mbF9nZXRfc2FkZHIuXFxuIFxcdCAqXFxuIFxcdCAqIEluIHNvdXJjZSBzcGVjaWZpYyByb3V0aW5nIChubyBzcmM9YW55IGRlZmF1bHQgcm91dGUpLFxcbiBcXHQgKiBpcDZfcm91dGVfb3V0cHV0IHdpbGwgZmFpbCBnaXZlbiBzcmM9YW55IHNhZGRyLCB0aG91Z2gsIHNvXFxuIFxcdCAqIHRoYXQncyB3aHkgd2UgdHJ5IGl0IGFnYWluIGxhdGVyLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGlwdjZfYWRkcl9hbnkoXFx1MDAyNmZsNi1cXHUwMDNlc2FkZHIpKSB7XFxuK1xcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7XFxuK1xcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcdFxcdHN0cnVjdCBmaWI2X2luZm8gKmZyb207XFxuIFxcdFxcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XFxuK1xcdFxcdGJvb2wgc2FtZV92cmY7XFxuIFxcbiBcXHRcXHQqZHN0ID0gaXA2X3JvdXRlX291dHB1dChuZXQsIHNrLCBmbDYpO1xcbiBcXHRcXHRydCA9ICgqZHN0KS1cXHUwMDNlZXJyb3IgPyBOVUxMIDogZHN0X3J0Nl9pbmZvKCpkc3QpO1xcbiBcXG4gXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRmcm9tID0gcnQgPyByY3VfZGVyZWZlcmVuY2UocnQtXFx1MDAzZWZyb20pIDogTlVMTDtcXG4tXFx0XFx0ZXJyID0gaXA2X3JvdXRlX2dldF9zYWRkcihuZXQsIGZyb20sIFxcdTAwMjZmbDYtXFx1MDAzZWRhZGRyLFxcbi1cXHRcXHRcXHRcXHRcXHQgIHNrID8gUkVBRF9PTkNFKGluZXQ2X3NrKHNrKS1cXHUwMDNlc3JjcHJlZnMpIDogMCxcXG4tXFx0XFx0XFx0XFx0XFx0ICBmbDYtXFx1MDAzZWZsb3dpNl9sM21kZXYsXFxuLVxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmZsNi1cXHUwMDNlc2FkZHIpO1xcbitcXG4rXFx0XFx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBmbDYtXFx1MDAzZWZsb3dpNl9sM21kZXYpO1xcbitcXHRcXHRpZiAoIWZyb20gfHwgIWZyb20tXFx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIHx8IGwzbWRldilcXG4rXFx0XFx0XFx0ZGV2ID0gZnJvbSA/IGZpYjZfaW5mb19uaF9kZXYoZnJvbSkgOiBOVUxMO1xcbitcXHRcXHRzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2O1xcbitcXHRcXHRpZiAoZnJvbSBcXHUwMDI2XFx1MDAyNiBmcm9tLVxcdTAwM2VmaWI2X3ByZWZzcmMucGxlbiBcXHUwMDI2XFx1MDAyNiBzYW1lX3ZyZikge1xcbitcXHRcXHRcXHRmbDYtXFx1MDAzZXNhZGRyID0gZnJvbS1cXHUwMDNlZmliNl9wcmVmc3JjLmFkZHI7XFxuK1xcdFxcdFxcdGVyciA9IDA7XFxuK1xcdFxcdH0gZWxzZVxcbitcXHRcXHRcXHRlcnIgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsICpkc3QsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHNhbWVfdnJmID8gZGV2IDogbDNtZGV2LCBzayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0c2sgPyBSRUFEX09OQ0UoaW5ldDZfc2soc2spLVxcdTAwM2VzcmNwcmVmcykgOiAwLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRmbDYpO1xcbitcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcbiBcXHRcXHRpZiAoZXJyKVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xcbmluZGV4IGExMzAxMzM0ZGE0OGMwLi43MDRhZmUyZGRlYTdjMiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9yb3V0ZS5jXFxuKysrIGIvbmV0L2lwdjYvcm91dGUuY1xcbkBAIC01ODUwLDkgKzU4NTAsMTkgQEAgc3RhdGljIGludCBydDZfZmlsbF9ub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgUlRBX0lJRiwgaWlmKSlcXG4gXFx0XFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcdH0gZWxzZSBpZiAoZGVzdCkge1xcbi1cXHRcXHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmO1xcbi1cXHRcXHRpZiAoaXA2X3JvdXRlX2dldF9zYWRkcihuZXQsIHJ0LCBkZXN0LCAwLCAwLCBcXHUwMDI2c2FkZHJfYnVmKSA9PSAwIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIFxcdTAwMjZzYWRkcl9idWYpKVxcbitcXHRcXHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmLCAqc2FkZHIgPSBOVUxMO1xcbitcXG4rXFx0XFx0aWYgKHJ0LVxcdTAwM2VmaWI2X3ByZWZzcmMucGxlbikge1xcbitcXHRcXHRcXHRzYWRkciA9IFxcdTAwMjZydC1cXHUwMDNlZmliNl9wcmVmc3JjLmFkZHI7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBmaWI2X2luZm9fbmhfZGV2KHJ0KTtcXG4rXFxuK1xcdFxcdFxcdGlmIChpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBkZXYsIGRlc3QsIDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2c2FkZHJfYnVmKSA9PSAwKVxcbitcXHRcXHRcXHRcXHRzYWRkciA9IFxcdTAwMjZzYWRkcl9idWY7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmIChzYWRkciBcXHUwMDI2XFx1MDAyNiBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIHNhZGRyKSlcXG4gXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi5jMDdkMmFlYmFkNjk1NyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG5AQCAtNTMsNiArNTMsNyBAQCBURVNUX1BST0dTIDo9IFxcXFxcXG4gXFx0aXB2Nl9mbG93bGFiZWwuc2ggXFxcXFxcbiBcXHRpcHY2X2ZvcmNlX2ZvcndhcmRpbmcuc2ggXFxcXFxcbiBcXHRpcHY2X3JvdXRlX3VwZGF0ZV9zb2Z0X2xvY2t1cC5zaCBcXFxcXFxuK1xcdGlwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHkgXFxcXFxcbiBcXHRpcHZ0YXBfdGVzdC5zaCBcXFxcXFxuIFxcdGwyX3Rvc190dGxfaW5oZXJpdC5zaCBcXFxcXFxuIFxcdGwydHAuc2ggXFxcXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZ1xcbmluZGV4IGUxY2UzNWMyYWJiZWYzLi5iMGI2NjQxMmI5ZjNlMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZ1xcbkBAIC00OCw2ICs0OCw3IEBAIENPTkZJR19JUFY2X1JPVVRFUl9QUkVGPXlcXG4gQ09ORklHX0lQVjZfUlBMX0xXVFVOTkVMPXlcXG4gQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTD15XFxuIENPTkZJR19JUFY2X1NJVD15XFxuK0NPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4gQ09ORklHX0lQVjZfVlRJPXlcXG4gQ09ORklHX0lQVkxBTj1tXFxuIENPTkZJR19JUFZUQVA9bVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5XFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjgyYjM5YmE5OTFkYTlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHlcXG5AQCAtMCwwICsxLDIzMSBAQFxcbisjIS91c3IvYmluL2VudiBweXRob24zXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rIyBDb3B5cmlnaHQgKEMpIDIwMjMtMjAyNiAgRGF2aWQgJ2VxdWlub3gnIExhbXBhcnRlclxcbitcXFwiXFxcIlxcXCJcXG4rUkZDIDY3MjQgKElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uKSBydWxlIDUuNSB0ZXN0c1xcbitcXG4rRm9yIHJlZmVyZW5jZTpcXG4rXFxuKyAgIFJ1bGUgNS41OiBQcmVmZXIgYWRkcmVzc2VzIGluIGEgcHJlZml4IGFkdmVydGlzZWQgYnkgdGhlIG5leHQtaG9wLlxcbisgICBJZiBTQSBvciBTQSdzIHByZWZpeCBpcyBhc3NpZ25lZCBieSB0aGUgc2VsZWN0ZWQgbmV4dC1ob3AgdGhhdCB3aWxsXFxuKyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQidzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudFxcbisgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJ3MgcHJlZml4IGlzXFxuKyAgIGFzc2lnbmVkIGJ5IHRoZSBuZXh0LWhvcCB0aGF0IHdpbGwgYmUgdXNlZCB0byBzZW5kIHRvIEQgYW5kIFNBIG9yXFxuKyAgIFNBJ3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi5cXG4rXFxuKyhhbmQgc2luY2UgaXQgcHJvdmlkZXMgdGhlIFxcXCJjb3VudGVycG9pbnRcXFwiOilcXG4rXFxuKyAgIFJ1bGUgODogVXNlIGxvbmdlc3QgbWF0Y2hpbmcgcHJlZml4LlxcbisgICBJZiBDb21tb25QcmVmaXhMZW4oU0EsIEQpIFxcdTAwM2UgQ29tbW9uUHJlZml4TGVuKFNCLCBEKSwgdGhlbiBwcmVmZXIgU0EuXFxuKyAgIFNpbWlsYXJseSwgaWYgQ29tbW9uUHJlZml4TGVuKFNCLCBEKSBcXHUwMDNlIENvbW1vblByZWZpeExlbihTQSwgRCksIHRoZW5cXG4rICAgcHJlZmVyIFNCLlxcbitcXG4rTm90ZSBydWxlIDUuNSB3YXMgb3JpZ2luYWxseSBvcHRpb25hbCBidXQgbWFkZSBtYW5kYXRvcnkgYnlcXG4rZHJhZnQtaWV0Zi02bWFuLXJmYzY3MjQtdXBkYXRlICh3aGljaCBhdCB0aGUgcG9pbnQgb2YgY3JlYXRpb24gb2YgdGhpcyB0ZXN0XFxuK3dhcyBhbHJlYWR5IFxcXCJkb25lXFxcIiBhdCB0aGUgSUVURiBidXQgd2FpdGluZyBpbiB0aGUgUkZDIGVkaXRvciBxdWV1ZSBkdWUgdG8gYVxcbitibG9ja2luZyBkZXBlbmRlbmN5LilcXG4rXFxcIlxcXCJcXFwiXFxuK1xcbitmcm9tIHNvY2tldCBpbXBvcnQgc29ja2V0LCBBRl9JTkVUNiwgU09DS19ER1JBTVxcbitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHNcXG4rZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlXFxuK1xcbitmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9lcVxcbitmcm9tIGxpYi5weSBpbXBvcnQgTmV0TlMsIE5ldE5TRW50ZXJcXG4rZnJvbSBsaWIucHkgaW1wb3J0IGlwXFxuK1xcbitcXG4rZGVmIHNlbGVjdF9hZGRyKGRlc3QpOlxcbisgICAgXFxcIlxcXCJcXFwiXFxuKyAgICBjb25uZWN0KCkgKyBnZXRzb2NrbmFtZSgpIHRvIGZpZ3VyZSBvdXQgd2hhdCB3YXMgc2VsZWN0ZWQgYXMgc291cmNlIGFkZHJlc3NcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgc29jayA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgMClcXG4rICAgIHNvY2suY29ubmVjdCgoZGVzdCwgMTIzNDUpKVxcbisgICAgcmV0dXJuIHNvY2suZ2V0c29ja25hbWUoKVswXVxcbitcXG4rXFxuK2RlZiBpbl9uZXRucyhmdW5jOiBDYWxsYWJsZVtbXSwgTm9uZV0pIC1cXHUwMDNlIENhbGxhYmxlW1tdLCBOb25lXTpcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgcHl0aG9uIGRlY29yYXRvciB0byBwdXQgdGVzdCBmdW5jdGlvbiBpbiBuZXRuc1xcbisgICAgXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgQHdyYXBzKGZ1bmMpXFxuKyAgICBkZWYgd3JhcHBlZCgpIC1cXHUwMDNlIE5vbmU6XFxuKyAgICAgICAgd2l0aCBOZXROUygpIGFzIHRlc3RuczpcXG4rICAgICAgICAgICAgd2l0aCBOZXROU0VudGVyKHN0cih0ZXN0bnMpKTpcXG4rICAgICAgICAgICAgICAgIGZ1bmMoKVxcbitcXG4rICAgIHJldHVybiB3cmFwcGVkXFxuK1xcbitcXG4rQGluX25ldG5zXFxuK2RlZiB0ZXN0X2Jhc2ljKCkgLVxcdTAwM2UgTm9uZTpcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgU2ltcGxlIFxcdTAwMjYgbW9zdCBjb21tb24gY2FzZSBmb3IgUkZDNjcyNCBydWxlIDUuNTogbXVsdGlwbGUgZGVmYXVsdCByb3V0ZXNcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgaXAoXFxcImxpbmsgYWRkIHR5cGUgdmV0aFxcXCIpXFxuKyAgICBpcChcXFwibGluayBzZXQgdmV0aDAgdXBcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgxIHVwXFxcIilcXG4rICAgIGlwKFxcXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCAgIGRldiB2ZXRoMCBub2RhZFxcXCIpXFxuKyAgICBpcChcXFwiYWRkciBhZGQgMjAwMTpkYjg6MTAwMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcImJhc2VsaW5lIHBhc3NcXFwiKVxcbisgICAgIyBydWxlIDggd291bGQgcmVzdWx0IGluIHRoZSB1c2Ugb2YgdGhlIDoxMDAxOiBhZGRyZXNzLCBidXQgcnVsZSA1LjUgYXBwbGllcyBiZWZvcmUuXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMDAxOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcInJ1bGUgNS41IFxcdTAwM2UgcnVsZSA4XFxcIilcXG4rXFxuKyAgICBpcChcXFwiLTYgcm91dGUgZGVsIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMDAxOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwicnVsZSA1LjUgXFx1MDAzZSBydWxlIDhcXFwiKVxcbitcXG4rXFxuK0Bpbl9uZXRuc1xcbitkZWYgdGVzdF9uaF9vYmooKSAtXFx1MDAzZSBOb25lOlxcbisgICAgXFxcIlxcXCJcXFwiXFxuKyAgICBTYW1lIGFzIGFib3ZlLCBidXQgd2l0aCBuZXh0aG9wIG9iamVjdHMgZm9yIHRoZSBkZWZhdWx0IHJvdXRlXFxuK1xcbisgICAgTkI6IFRoZSBrZXJuZWwgZG9lc24ndCBjdXJyZW50bHkgYWxsb3cgbmV4dGhvcCBvYmplY3RzIGZvciBzdWJ0cmVlIHJvdXRlcy5cXG4rICAgIFxcXCJcXFwiXFxcIlxcbitcXG4rICAgIGlwKFxcXCJsaW5rIGFkZCB0eXBlIHZldGhcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgwIHVwXFxcIilcXG4rICAgIGlwKFxcXCJsaW5rIHNldCB2ZXRoMSB1cFxcXCIpXFxuKyAgICBpcChcXFwiYWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcImFkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXFxcIilcXG4rXFxuKyAgICAjIGRpc3RpbmN0IG5leHRob3Agb2JqZWN0cyBhcmUgdXNlZCwgYmVjYXVzZSB3aGF0IG1hdHRlcnMgaXMgdGhlIG5leHRob3BcXG4rICAgICMgaXRzZWxmLCBub3QgdGhlIG5leHRob3Agb2JqZWN0LiAgVG8gY292ZXIgZXZlcnl0aGluZywgbWFrZSBhIGdyb3VwLlxcbisgICAgaXAoXFxcIm5leHRob3AgYWRkIGlkIDEwMSB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcXFwiKVxcbisgICAgaXAoXFxcIm5leHRob3AgYWRkIGlkIDIwMSBncm91cCAxMDFcXFwiKVxcbisgICAgaXAoXFxcIm5leHRob3AgYWRkIGlkIDEwMiB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcXFwiKVxcbisgICAgaXAoXFxcIm5leHRob3AgYWRkIGlkIDIwMiBncm91cCAxMDJcXFwiKVxcbitcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBuaGlkIDIwMiBtZXRyaWMgMjAwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFxcXCIpXFxuK1xcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjEwMDE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwicnVsZSA1LjUgXFx1MDAzZSBydWxlIDhcXFwiKVxcbitcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBkZWwgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXFxcIilcXG4rXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMTo6XFxcIiksIFxcXCIyMDAxOmRiODoxMDAwOjoxXFxcIiwgXFxcImJhc2VsaW5lIHBhc3NcXFwiKVxcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTAwMTo6XFxcIiksIFxcXCIyMDAxOmRiODoxMDAwOjoxXFxcIiwgXFxcInJ1bGUgNS41IFxcdTAwM2UgcnVsZSA4XFxcIilcXG4rXFxuK1xcbitAaW5fbmV0bnNcXG4rZGVmIHRlc3RfbG93X21ldHJpYygpIC1cXHUwMDNlIE5vbmU6XFxuKyAgICBcXFwiXFxcIlxcXCJcXG4rICAgIENoZWNrIHRoYXQgc3VidHJlZSByb3V0ZXMgdGFrZSBlZmZlY3QgZXZlbiBpZiB0aGV5IGFyZSBoaWdoZXIgbWV0cmljXFxuK1xcbisgICAgRm9yIGNoZWNraW5nIHRoYXQgXFxcInJvdXRlciBhZHZlcnRpc2VkIHByZWZpeFxcXCIsIG1ldHJpYyBpcyBpcnJlbGV2YW50LiAgSXRcXG4rICAgIG1hdHRlcnMgZm9yIHRoZSBpbml0aWFsIHVuc3BlY2lmaWMgbG9va3VwIHRvIGZpbmQgYSBuZXh0aG9wIHRvIGJlZ2luIHdpdGguXFxuKyAgICAoVGhlIGxhdGVyIHNvdXJjZSBhZGRyZXNzIGNoZWNrIGxvb2t1cCBkb2Vzbid0IGNoYW5nZSB0aGUgbmV4dGhvcCwgaS5lLlxcbisgICAgdGhlIGVmZmVjdHMgb2YgbWV0cmljcyBhcmUgYWxyZWFkeSBkb25lLilcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgaXAoXFxcImxpbmsgYWRkIHR5cGUgdmV0aFxcXCIpXFxuKyAgICBpcChcXFwibGluayBzZXQgdmV0aDAgdXBcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgxIHVwXFxcIilcXG4rICAgIGlwKFxcXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCAgIGRldiB2ZXRoMCBub2RhZFxcXCIpXFxuKyAgICBpcChcXFwiYWRkciBhZGQgMjAwMTpkYjg6MTAwMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDIwMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMDBcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjozIGRldiB2ZXRoMCBtZXRyaWMgNTBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcImJhc2VsaW5lIHBhc3NcXFwiKVxcbisgICAgIyBydWxlIDggd291bGQgcmVzdWx0IGluIHRoZSB1c2Ugb2YgdGhlIDoxMDAxOiBhZGRyZXNzLCBidXQgcnVsZSA1LjUgYXBwbGllcyBiZWZvcmUuXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMDAxOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcInJ1bGUgNS41IFxcdTAwM2UgcnVsZSA4XFxcIilcXG4rXFxuKyAgICBpcChcXFwiLTYgcm91dGUgZGVsIGRlZmF1bHQgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMDAxOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwicnVsZSA1LjUgXFx1MDAzZSBydWxlIDhcXFwiKVxcbitcXG4rXFxuK0Bpbl9uZXRuc1xcbitkZWYgdGVzdF9ub19zdWJ0cmVlKCkgLVxcdTAwM2UgTm9uZTpcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgRW5zdXJlIHRoYXQgbWF0Y2hpbmcgb24gYSBub24tc3VidHJlZSByb3V0ZSBkb2Vzbid0IHRyaWdnZXIgcnVsZSA1LjVcXG4rXFxuKyAgICAoVGhpcyB3YXMgbm9uLW9idmlvdXNseSBicm9rZW4gaW4gZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgaW1wbGVtZW50YXRpb25zLFxcbisgICAgYSBub24tc3VidHJlZSByb3V0ZSB3b3VsZCBzdGlsbCBtYXRjaC4gIE1ha2Ugc3VyZSBpdCBkb2Vzbid0IGJyZWFrIGFnYWluLilcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgaXAoXFxcImxpbmsgYWRkIHR5cGUgdmV0aFxcXCIpXFxuKyAgICBpcChcXFwibGluayBzZXQgdmV0aDAgdXBcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgxIHVwXFxcIilcXG4rICAgIGlwKFxcXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcImFkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCBkZWZhdWx0IGZyb20gMjAwMTpkYjg6MTA6Oi80OCB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcXFwiKVxcbitcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjExOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIiwgXFxcImJhc2VsaW5lIHBhc3NcXFwiKVxcbisgICAga3NmdF9lcShcXG4rICAgICAgICBzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTAwMTo6XFxcIiksXFxuKyAgICAgICAgXFxcIjIwMDE6ZGI4OjEwOjoxXFxcIixcXG4rICAgICAgICBcXFwicnVsZSA1LjUgXFx1MDAzZSBydWxlIDgsIGlnbm9yaW5nIG5vbi1TQURSXFxcIixcXG4rICAgIClcXG4rXFxuK1xcbitAaW5fbmV0bnNcXG4rZGVmIHRlc3RfbG9uZ2VyKCkgLVxcdTAwM2UgTm9uZTpcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgQ2hlY2sgZnVuY3Rpb25hbGl0eSBmb3Igbm9uLWRlZmF1bHQgZGVzdGluYXRpb24uXFxuK1xcbisgICAgVGhpcyBpcyBleHBlY3RlZCB0byBiZSB2ZXJ5IHJhcmUgaW4gYWN0dWFsIHByYWN0aWNlLCBhbmQgZG9lc24ndCBkb1xcbisgICAgYmFja3RyYWNraW5nIChhbHNvIHJlZmVyIHRvIGtlcm5lbCBkb2NzLilcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAgaXAoXFxcImxpbmsgYWRkIHR5cGUgdmV0aFxcXCIpXFxuKyAgICBpcChcXFwibGluayBzZXQgdmV0aDAgdXBcXFwiKVxcbisgICAgaXAoXFxcImxpbmsgc2V0IHZldGgxIHVwXFxcIilcXG4rICAgIGlwKFxcXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcXFwiKVxcbisgICAgaXAoXFxcImFkZHIgYWRkIDIwMDE6ZGI4OjEwMDA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXFxcIilcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcXFwiKVxcbisgICAgaXAoXFxcIi02IHJvdXRlIGFkZCAyMDAxOmRiODo1MDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgICAgICAgICAgIGZyb20gMjAwMTpkYjg6MTA6Oi80OCAgIHZpYSBmZTgwOjoxIGRldiB2ZXRoMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIDIwMDE6ZGI4OjUwMDo6LzQ4IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFxcXCIpXFxuK1xcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODo1MDA6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTAwMDo6MVxcXCIsIFxcXCJydWxlIDUuNVxcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODo1MDA6YWFhOjpcXFwiKSwgXFxcIjIwMDE6ZGI4OjEwMDA6OjFcXFwiLCBcXFwicnVsZSA1LjVcXFwiKVxcbitcXG4rICAgIGlwKFxcXCItNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOmFhYTo6LzY0IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCBtZXRyaWMgMTAwXFxcIilcXG4rXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODoxMTo6XFxcIiksIFxcXCIyMDAxOmRiODoxMDo6MVxcXCIsIFxcXCJiYXNlbGluZSBwYXNzXFxcIilcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjUwMDo6XFxcIiksIFxcXCIyMDAxOmRiODoxMDAwOjoxXFxcIiwgXFxcInJ1bGUgNS41XFxcIilcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjUwMDphYWE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwibm8gYmFja3RyYWNraW5nXFxcIilcXG4rXFxuKyAgICBpcChcXFwiLTYgcm91dGUgZGVsIDIwMDE6ZGI4OjUwMDo6LzQ4IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFxcXCIpXFxuKyAgICBpcChcXFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgICAgICAgICAgIGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFxcXCIpXFxuK1xcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcXFwiMjAwMTpkYjg6MTE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwiYmFzZWxpbmUgcGFzc1xcXCIpXFxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFxcXCIyMDAxOmRiODo1MDA6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwibm8gYmFja3RyYWNraW5nXFxcIilcXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXFxcIjIwMDE6ZGI4OjUwMDphYWE6OlxcXCIpLCBcXFwiMjAwMTpkYjg6MTA6OjFcXFwiLCBcXFwibm8gYmFja3RyYWNraW5nXFxcIilcXG4rXFxuK1xcbitkZWYgbWFpbigpIC1cXHUwMDNlIE5vbmU6XFxuKyAgICBcXFwiXFxcIlxcXCJcXG4rICAgIFJGQzY3MjQgcnVsZSA1LjUgdGVzdCBkcml2ZXJcXG4rICAgIFxcXCJcXFwiXFxcIlxcbisgICAga3NmdF9ydW4oXFxuKyAgICAgICAgW1xcbisgICAgICAgICAgICB0ZXN0X2Jhc2ljLFxcbisgICAgICAgICAgICB0ZXN0X25oX29iaixcXG4rICAgICAgICAgICAgdGVzdF9sb3dfbWV0cmljLFxcbisgICAgICAgICAgICB0ZXN0X25vX3N1YnRyZWUsXFxuKyAgICAgICAgICAgIHRlc3RfbG9uZ2VyLFxcbisgICAgICAgIF1cXG4rICAgIClcXG4rICAgIGtzZnRfZXhpdCgpXFxuK1xcbitcXG4raWYgX19uYW1lX18gPT0gXFxcIl9fbWFpbl9fXFxcIjpcXG4rICAgIG1haW4oKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzoyNy41NDU5MjQ0NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODY3NTk3NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU1VCVFJFRVNcIixcbiAgICBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2Nl9zYWRkcl9ydWxlNXA1XCIsXG4gICAgXCJpcHY2X2ZsX2dldF9zYWRkclwiLFxuICAgIFwiaXB2Nl9kZXZfZ2V0X3NhZGRyXCIsXG4gICAgXCJydDZfZmlsbF9ub2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBSRkM2NzI0IHJ1bGUgNS41IGZvciBJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBieSBpbnRyb2R1Y2luZyBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBhbmQgYGlwdjZfZmxfZ2V0X3NhZGRyYC4gSXQgbW9kaWZpZXMgY29yZSBJUHY2IHJvdXRpbmcgYW5kIGFkZHJlc3Mgc2VsZWN0aW9uIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIChlLmcuLCBjb25uZWN0LCBzZW5kbXNnKSBhbmQgbmV0bGluayByb3V0ZSBkdW1wcyAoYHJ0Nl9maWxsX25vZGVgKS4gVGhlIGZlYXR1cmUgcmVxdWlyZXMgYElQVjZfU1VCVFJFRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWE0ZDU0NDJjMDJiMzliOTI1ODJmZTExZWM4YWYyMmI0ZmFkYzg3OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDE1OjE3OjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni1hZGRyc2VsLnJzdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZWQwMzJlNjk1NzA1Y1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYtYWRkcnNlbC5yc3RcbkBAIC0wLDAgKzEsNzUgQEBcbisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuK1xuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuK0lQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIHRyaXZpYVxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuK1xuK1xuK1JGQzY3MjQgcnVsZSA1LjUgc3VwcG9ydFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuK1JGQzY3MjQgcnVsZSA1LjUgaXMgYSB2ZXJ5IHNob3J0IHBhcmFncmFwaCBpbiBhIGNvbXBsZXggUkZDIHRoYXQgaGFzIHR1cm5lZFxuK291dCBxdWl0ZSB0cmlja3ksIGJ1dCBhbHNvIGltbWVuc2VseSB1c2VmdWwgaW4gbXVsdGlob21pbmcgc2NlbmFyaW9zLiAgRm9yXG4rcmVmZXJlbmNlLCBpdCBzYXlzOlxuK1xuKzo6XG4rXG4rICAgUnVsZSA1LjU6IFByZWZlciBhZGRyZXNzZXMgaW4gYSBwcmVmaXggYWR2ZXJ0aXNlZCBieSB0aGUgbmV4dC1ob3AuXG4rICAgSWYgU0Egb3IgU0EncyBwcmVmaXggaXMgYXNzaWduZWQgYnkgdGhlIHNlbGVjdGVkIG5leHQtaG9wIHRoYXQgd2lsbFxuKyAgIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQiBvciBTQidzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudFxuKyAgIG5leHQtaG9wLCB0aGVuIHByZWZlciBTQS4gIFNpbWlsYXJseSwgaWYgU0Igb3IgU0IncyBwcmVmaXggaXNcbisgICBhc3NpZ25lZCBieSB0aGUgbmV4dC1ob3AgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc2VuZCB0byBEIGFuZCBTQSBvclxuKyAgIFNBJ3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IGEgZGlmZmVyZW50IG5leHQtaG9wLCB0aGVuIHByZWZlciBTQi5cbitcbitUaGUgd2F5IHRoaXMgd29ya3Mgb24gTGludXggaXMgYXMgZm9sbG93czpcbitcbistIHByaW9yIHRvIGFueSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gaGFwcGVuaW5nLCB3aGVuIHJlY2VpdmluZyBhIFJBLCBtb3JlXG4rICB0aGFuIHRoZSBpbnN0YWxsYXRpb24gb2YgYSBkZWZhdWx0IHJvdXRlIChvciA6Oi8xMjggcm91dGUpIG5lZWRzIHRvIGhhcHBlbjpcbisgIGZvciBlYWNoIFBJTywgYSBzb3VyY2Utc3BlY2lmaWMgKHN1YnRyZWUpIHJvdXRlIGlzICphZGRpdGlvbmFsbHkqIGluc3RhbGxlZC5cbisgIFRoZSBlZmZlY3Qgb2YgdGhpcyBpcyB0aGF0ICphZnRlciogYSBzb3VyY2UgYWRkcmVzcyBoYXMgYmVlbiBzZWxlY3RlZCwgb25lXG4rICBvZiB0aGUgcm91dGVycyB0aGF0IGFkdmVydGlzZWQgaXQgd2lsbCByZW1haW4gaW4gdXNlICh0aGlzIGlzICpub3QqIFJGQyA2NzI0XG4rICByZWxhdGVkLCBidXQgcmF0aGVyIFJGQyA4MDI4LikgIEF0IHRoZSBzYW1lIHRpbWUsIHRoZXNlIGV4dHJhIHJvdXRlcyBzZXJ2ZVxuKyAgdG8gcmVtZW1iZXIgd2hpY2ggcm91dGVyIGFkdmVydGlzZWQgd2hhdC5cbitcbistIHBlciB1c3VhbCwgYSByb3V0ZSBsb29rdXAgZm9yIHRoZSBJUHY2IGRlc3RpbmF0aW9uIGFkZHJlc3MgaW4gY29uc2lkZXJhdGlvblxuKyAgaXMgZG9uZSBmaXJzdC4gIFRoaXMgaXMgcGFzc2VkIGFyb3VuZCBpbiBrZXJuZWwgYXMgYSBkc3RfZW50cnkuXG4rXG4rLSB0aGUgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgdmFyaW91cyBydWxlcyBpblxuKyAgUkZDIDY3MjQuXG4rXG4rLSBpZi93aGVuIHJ1bGUgNS41IGlzIHJlYWNoZWQsIGZpcnN0IG9mIGFsbCwgdGhlcmUgaXMgYSBjaGVjayBpZiAqYW55KiBzb3VyY2VcbisgIHNwZWNpZmljIHJvdXRlcyBleGlzdCBpbiB0aGUgcm91dGluZyB0YWJsZS4gIElmIHRoZXJlIGFyZSBub25lLCB0aGUgZW50aXJlXG4rICBjb2RlIGZvciA1LjUgaXMgc2tpcHBlZCBiZWNhdXNlIGl0IGNhbm5vdCBoYXZlIGFueSBlZmZlY3QsIGJ1dCBpcyBub3QgZnJlZVxuKyAgdG8gZXhlY3V0ZSAoY2FuIGludm9sdmUgbXVsdGlwbGUgcm91dGluZyBsb29rdXBzLikgICoqSW4gYXBwbGljYXRpb25zIHRoYXRcbisgIHVzZSBhIGxvdCBvZiB1bmJvdW5kIChlLmcuIFVEUCkgc29ja2V0cywgaW5zdGFsbGluZyBzdWJ0cmVlIHJvdXRlcyBzaG91bGRcbisgIHRoZXJlZm9yZSBiZSBhdm9pZGVkIHRvIG5vdCBpbmN1ciB0aGlzIGNvc3Qgb24gZWFjaCBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb25cbisgIHBhc3MuKiogIEFsdGVybmF0aXZlbHksIGFwcGxpY2F0aW9ucyBzaG91bGQgYmluZCB0aGVpciBzb2NrZXRzIHRvIGEgc3BlY2lmaWNcbisgIHNvdXJjZSBhZGRyZXNzIHN1Y2ggdGhhdCB0aGUgc2VsZWN0aW9uIGNvZGUgaXMgbmV2ZXIgaGl0LlxuK1xuKy0gaWYgc3VidHJlZSByb3V0ZXMgZG8gZXhpc3QsIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gY29kZSBub3cgcmVwZWF0c1xuKyAgdGhlIHJvdXRpbmcgbG9va3VwIGRvbmUgYmVmb3JlIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbiBpcyBlbnRlcmVkLCBleGNlcHRcbisgIHdpdGggdGhlIHNvdXJjZSBhZGRyZXNzIHVuZGVyIGNvbnNpZGVyYXRpb24gZmlsbGVkIGluLiAgVGhpcyBsb29rdXAgd2lsbCBoaXRcbisgIHRoZSBzdWJ0cmVlIHJvdXRlcyB0aGF0IHdlcmUgaW5zdGFsbGVkIChzZWUgZmlyc3QgaXRlbSksIGdpdmluZyBhIGZyZXNoXG4rICBkc3RfZW50cnkuICBJZiB0aGUgbmV3IGRzdF9lbnRyeSBtYXRjaGVzIHRoZSBvcmlnaW5hbCBkc3RfZW50cnksIHRoYXQgbWVhbnNcbisgIHRoZSBvcmlnaW5hbCByb3V0ZXIgaGFzIGluIGZhY3Qgc2VudCBSQXMgd2l0aCBQSU9zIGZvciB0aGlzIHNvdXJjZSBhZGRyZXNzLFxuKyAgc28gaXQgaXMgcHJlZmVycmVkLiAgT3RoZXJ3aXNlIGl0IGlzIG5vdC5cbitcbitcbitUaGVyZSBhcmUgYSBmZXcgY2F2ZWF0cyB0byBjb25zaWRlcjpcbitcbistIHRoZSBrZXJuZWwgY3VycmVudGx5IGRvZXMgbm90IGNyZWF0ZSB0aGUgc3VidHJlZSByb3V0ZXMgbWVudGlvbmVkIGluIHRoZVxuKyAgZmlyc3QgaXRlbS4gIFRoaXMgaXMgYSBzZXBhcmF0ZSB3b3JrIGl0ZW0sIHBhcnRpYWxseSBkb25lIGF0IHRoZSB0aW1lIG9mXG4rICB3cml0aW5nIHRoaXMuICBCdXQgdGhpcyBjYW4gZXF1YWxseSB3ZWxsIGJlIHBlcmZvcm1lZCBpbiB1c2Vyc3BhY2UgcHJvY2Vzc2luZ1xuKyAgb2YgUkFzLCBlLmcuIE5ldHdvcmtNYW5hZ2VyIG9yIHBsYWluIHN0YXRpYyBjb25maWd1cmF0aW9uLlxuK1xuKy0gc2luY2UgYWRkcmVzc2VzIGNhbiBhbHNvIGJlIGFjcXVpcmVkIGZyb20gREhDUHY2LCBldmVuIFJBL1BJTyBjb21iaW5hdGlvbnNcbisgIHRoYXQgZGlkbid0IHJlc3VsdCBpbiB0aGUgY3JlYXRpb24gb2YgYW55IGFkZHJlc3NlcyAoZS5nLiBBPTApIHNob3VsZCBoYXZlXG4rICBzdWJ0cmVlIHJvdXRlcyBhZGRlZC4gIFRob3NlIHJvdXRlcyAqbWF5KiBiZSByZWxldmFudCBmb3IgREhDUHY2LWdlbmVyYXRlZFxuKyAgYWRkcmVzc2VzLlxuK1xuKy0gdGhlIFwiYW5ub3VuY2UgY2hlY2tcIiBsb29rdXAgZG9lcyBub3QgYmFja3RyYWNrLiAgT25seSB0aGUgZGVzdGluYXRpb24gcHJlZml4XG4rICB0aGF0IHByb3ZpZGVkIHRoZSBcInVuc3BlY2lmaWNcIiAoOjovMTI4KSBtYXRjaCBpcyBjaGVja2VkIGZvciBzb3VyY2UgcHJlZml4ZXNcbisgIHRvIHNlZSB3aGF0IHJvdXRlcnMgYWR2ZXJ0aXNlZCB3aGF0LiAgVGhpcyBtZWFucyB0aGF0IGZvciBlLmcuIFJJT3MsIHN1YnRyZWVcbisgIHJvdXRlcyBhbHNvIGhhdmUgdG8gYmUgY3JlYXRlZC4gIChCYWNrdHJhY2tpbmcgZm9yIHRoaXMgY2FzZSB3b3VsZCBmdXJ0aGVyXG4rICBpbmNyZWFzZSB0aGUgY29zdCBvZiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24sIGZvciBhIHByZXR0eSByYXJlIHNpdHVhdGlvblxuKyAgdGhhdCBoYXMgYW4gZWFzeSBmaXgvd29ya2Fyb3VuZC4pXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggZjMyMThhYmVmZDBjNmIuLjRlZGY0ODM2MmEwNzMyIDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbisrKyBiL01BSU5UQUlORVJTXG5AQCAtMTg5MTIsNiArMTg5MTIsNyBAQCBGOlx0RG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWFkZHIueWFtbFxuIEY6XHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbmVpZ2gueWFtbFxuIEY6XHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtcm91dGUueWFtbFxuIEY6XHREb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtcnVsZS55YW1sXG4rRjpcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LWFkZHJzZWwucnN0XG4gRjpcdGluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXG4gRjpcdGluY2x1ZGUvbGludXgvbXJvdXRlKlxuIEY6XHRpbmNsdWRlL25ldC9hZGRyY29uZi5oXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaCBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbmluZGV4IDhjZWQyN2E4MjI5YjZlLi43YmMwNzExYjg3MTc5NiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbisrKyBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmhcbkBAIC0xNDIsNiArMTQyLDEwIEBAIHN0cnVjdCBpbmV0Nl9pZmFkZHIgKmlwdjZfZ2V0X2lmYWRkcihzdHJ1Y3QgbmV0ICpuZXQsXG4gaW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgc3JjcHJlZnMsXG4gXHRcdCAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKTtcbitpbnQgaXB2Nl9mbF9nZXRfc2FkZHIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXG4rXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuK1x0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBzcmNwcmVmcyxcbitcdFx0ICAgICAgc3RydWN0IGZsb3dpNiAqZmw2KTtcbiBpbnQgaXB2Nl9nZXRfbGxhZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpbjZfYWRkciAqYWRkcixcbiBcdFx0ICAgIHUzMiBiYW5uZWRfZmxhZ3MpO1xuIGJvb2wgaW5ldF9yY3Zfc2FkZHJfZXF1YWwoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2syLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhcbmluZGV4IDA5ZmZlMGYxM2NlNzUyLi5mZTEzY2IxZDMyNTdkYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oXG4rKysgYi9pbmNsdWRlL25ldC9pcDZfcm91dGUuaFxuQEAgLTE0MCwzMiArMTQwLDYgQEAgdm9pZCBydDZfZmx1c2hfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9pbmZvICpmNmkpO1xuIHZvaWQgcnQ2X2FnZV9leGNlcHRpb25zKHN0cnVjdCBmaWI2X2luZm8gKmY2aSwgc3RydWN0IGZpYjZfZ2NfYXJncyAqZ2NfYXJncyxcbiBcdFx0XHR1bnNpZ25lZCBsb25nIG5vdyk7XG4gXG4tc3RhdGljIGlubGluZSBpbnQgaXA2X3JvdXRlX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSxcbi1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXG4tXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgcHJlZnMsIGludCBsM21kZXZfaW5kZXgsXG4tXHRcdFx0XHQgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxuLXtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXY7XG4tXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuLVx0Ym9vbCBzYW1lX3ZyZjtcbi1cdGludCBlcnIgPSAwO1xuLVxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVxuLVx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBsM21kZXZfaW5kZXgpO1xuLVx0aWYgKCFmNmkgfHwgIWY2aS1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbiB8fCBsM21kZXYpXG4tXHRcdGRldiA9IGY2aSA/IGZpYjZfaW5mb19uaF9kZXYoZjZpKSA6IE5VTEw7XG4tXHRzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2O1xuLVx0aWYgKGY2aSBcdTAwMjZcdTAwMjYgZjZpLVx1MDAzZWZpYjZfcHJlZnNyYy5wbGVuIFx1MDAyNlx1MDAyNiBzYW1lX3ZyZilcbi1cdFx0KnNhZGRyID0gZjZpLVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuLVx0ZWxzZVxuLVx0XHRlcnIgPSBpcHY2X2Rldl9nZXRfc2FkZHIobmV0LCBzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgZGFkZHIsIHByZWZzLCBzYWRkcik7XG4tXG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbi1cbi1cdHJldHVybiBlcnI7XG4tfVxuLVxuIHN0cnVjdCBydDZfaW5mbyAqcnQ2X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsIGludCBvaWYsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBmbGFncyk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvS2NvbmZpZyBiL25ldC9pcHY2L0tjb25maWdcbmluZGV4IGMzODA2YzZhYzk2Zjk1Li4zOTY1OWU5YjUzYTNkYiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L0tjb25maWdcbisrKyBiL25ldC9pcHY2L0tjb25maWdcbkBAIC0yNDMsMTYgKzI0MywyNiBAQCBjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbiBjb25maWcgSVBWNl9TVUJUUkVFU1xuIFx0Ym9vbCBcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcIlxuIFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFU1xuK1x0ZGVmYXVsdCB5XG4gXHRoZWxwXG4gXHQgIEVuYWJsZSByb3V0aW5nIGJ5IHNvdXJjZSBhZGRyZXNzIG9yIHByZWZpeC5cbiBcbiBcdCAgVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgc3RpbGwgdGhlIHByaW1hcnkgcm91dGluZyBrZXksIHNvIG1peGluZ1xuIFx0ICBub3JtYWwgYW5kIHNvdXJjZSBwcmVmaXggc3BlY2lmaWMgcm91dGVzIGluIHRoZSBzYW1lIHJvdXRpbmcgdGFibGVcbi1cdCAgbWF5IHNvbWV0aW1lcyBsZWFkIHRvIHVuaW50ZW5kZWQgcm91dGluZyBiZWhhdmlvci4gIFRoaXMgY2FuIGJlXG4tXHQgIGF2b2lkZWQgYnkgZGVmaW5pbmcgZGlmZmVyZW50IHJvdXRpbmcgdGFibGVzIGZvciB0aGUgbm9ybWFsIGFuZFxuLVx0ICBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcy5cbitcdCAgbWF5IHNvbWV0aW1lcyBsZWFkIHRvIHVuaW50ZW5kZWQgcm91dGluZyBiZWhhdmlvciBpZiB0aGUgb3JkZXIgb2ZcbitcdCAgbG9va3VwcyBpcyBtaXN1bmRlcnN0b29kLiAgVG8gYWNoaWV2ZSBmdWxsIHNlcGFyYXRpb24gYmFzZWQgb24gc291cmNlXG4rXHQgIGFkZHJlc3MsIGRpZmZlcmVudCByb3V0aW5nIHRhYmxlcyBzaG91bGQgYmUgZGVmaW5lZCBmb3IgZWFjaCBzb3VyY2VcbitcdCAgcHJlZml4LlxuIFxuLVx0ICBJZiB1bnN1cmUsIHNheSBOLlxuK1x0ICBTdWJ0cmVlcyBzcGVjaWZpY2FsbHkgYWRkcmVzcyBzY2VuYXJpb3Mgd2hlcmUgbG9jYWwgY29ubmVjdGl2aXR5XG4rXHQgIGJldHdlZW4gc291cmNlIHByZWZpeGVzIGlzIHNoYXJlZCBhbmQgdW5yZXN0cmljdGVkLCBidXQgc29tZVxuK1x0ICBkZXN0aW5hdGlvbnMgKGUuZy4gdGhlIGRlZmF1bHQgcm91dGUpIGhhdmUgbW9yZSBmaW5lLWdyYWluZWQgcnVsZXMuXG4rXG4rXHQgIFRoaXMgZmVhdHVyZSBpcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgc3VwcG9ydCBSRkM2NzI0IHJ1bGUgNS41IGluXG4rXHQgIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbi4gIFJ1bGUgNS41IGlzIGEgbmVjZXNzaXR5IGZvciBnb29kXG4rXHQgIG11bHRpaG9taW5nLCByZW51bWJlcmluZyBhbmQgc291cmNlIHByZWZpeCBsaXZlbGluZXNzIGNoZWNrcy5cbitcbitcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiBcbiBjb25maWcgSVBWNl9NUk9VVEVcbiBcdGJvb2wgXCJJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wiXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBiL25ldC9pcHY2L2FkZHJjb25mLmNcbmluZGV4IGYxZmU5ZWRlMWVkYjM3Li5mNWMwNDkyOGFhMTQyZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2FkZHJjb25mLmNcbisrKyBiL25ldC9pcHY2L2FkZHJjb25mLmNcbkBAIC0xNTIyLDYgKzE1MjIsNyBAQCBlbnVtIHtcbiBcdElQVjZfU0FERFJfUlVMRV9IT0EsXG4gI2VuZGlmXG4gXHRJUFY2X1NBRERSX1JVTEVfT0lGLFxuK1x0SVBWNl9TQUREUl9SVUxFX1BJT19CWV9ORVhUSE9QLFxuIFx0SVBWNl9TQUREUl9SVUxFX0xBQkVMLFxuIFx0SVBWNl9TQUREUl9SVUxFX1BSSVZBQ1ksXG4gXHRJUFY2X1NBRERSX1JVTEVfT1JDSElELFxuQEAgLTE1NDIsMTEgKzE1NDMsMTQgQEAgc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUge1xuIH07XG4gXG4gc3RydWN0IGlwdjZfc2FkZHJfZHN0IHtcbi1cdGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqYWRkcjtcbitcdHN0cnVjdCBmbG93aTYgKmZsNjtcbitcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbitcdGNvbnN0IHN0cnVjdCBzb2NrICpzaztcbiBcdGludCBpZmluZGV4O1xuIFx0aW50IHNjb3BlO1xuIFx0aW50IGxhYmVsO1xuIFx0dW5zaWduZWQgaW50IHByZWZzO1xuK1x0c3RydWN0IG5ldCAqbmV0O1xuIH07XG4gXG4gc3RhdGljIGlubGluZSBpbnQgaXB2Nl9zYWRkcl9wcmVmZXJyZWQoaW50IHR5cGUpXG5AQCAtMTU5MSw2ICsxNTk1LDgwIEBAIHN0YXRpYyBib29sIGlwdjZfYWxsb3dfb3B0aW1pc3RpY19kYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxuICNlbmRpZlxuIH1cbiBcbisvKiBcInNvdXJjZSBhZGRyZXNzIGlzIHByZWZlcmFibGUgaWYgdGhlIGNob3NlbiBuZXh0aG9wIGFkdmVydGlzZWQgaXQgYXMgYSBQSU9cIlxuKyAqID1cdTAwM2UgY29uc2lkZXIgJ2FkdmVydGlzZWQgYXMgYSBQSU8nIHRvIGJlICd0aGUgcm91dGVzIGZvciB0aGUgc291cmNlJ3Mgc3VidHJlZVxuKyAqICAgIGluY2x1ZGUgb25lIHdpdGggdGhlIHNhbWUgbmV4dGhvcCdcbisgKlxuKyAqIE5COiB0aGVyZSBpcyBubyBiYWNrdHJhY2tpbmcgaW4gdGhlIHN1YnRyZWUgaGVyZSwgdGhpcyBpcyBpbnRlbnRpb25hbCAtXG4rICogZWFjaCBwcmVmaXggc2VlbiAoYW5kIGFjY2VwdGVkKSBpbiBQSU9zIGNyZWF0ZXMgZXNzZW50aWFsbHkgYSBcInpvbmVcIiB3aGljaFxuKyAqIGlzIG91ciBzZWFyY2ggc2NvcGUuXG4rICovXG4rc3RhdGljIGludCBpcHY2X3NhZGRyX3J1bGU1cDUoc3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgKnNjb3JlLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqc2FkZHJfZHN0KVxuK3tcbitcdGNvbnN0IHN0cnVjdCBydDZfaW5mbyAqcnQsICpjbXBfcnQ7XG4rXHRzdHJ1Y3QgZHN0X2VudHJ5ICpjbXBfZHN0O1xuK1x0c3RydWN0IGZpYjZfaW5mbyAqZjZpO1xuK1x0aW50IHJldCA9IDA7XG4rXG4rXHRydCA9IGNvbnRhaW5lcl9vZihzYWRkcl9kc3QtXHUwMDNlZHN0LCBzdHJ1Y3QgcnQ2X2luZm8sIGRzdCk7XG4rXG4rXHQvKiBmbDYtXHUwMDNlc2FkZHIgaXMgOjosIGNmLiBjaGVjayBhdCB0aGUgdG9wIG9mIGlwdjZfY29tbW9uX2dldF9zYWRkcigpICovXG4rXHRzYWRkcl9kc3QtXHUwMDNlZmw2LVx1MDAzZXNhZGRyID0gc2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHI7XG4rXHRjbXBfZHN0ID0gaXA2X3JvdXRlX291dHB1dChzYWRkcl9kc3QtXHUwMDNlbmV0LCBzYWRkcl9kc3QtXHUwMDNlc2ssXG4rXHRcdFx0XHQgICBzYWRkcl9kc3QtXHUwMDNlZmw2KTtcbitcdG1lbXNldChcdTAwMjZzYWRkcl9kc3QtXHUwMDNlZmw2LVx1MDAzZXNhZGRyLCAwLCBzaXplb2Yoc2FkZHJfZHN0LVx1MDAzZWZsNi1cdTAwM2VzYWRkcikpO1xuK1xuK1x0aWYgKGNtcF9kc3QtXHUwMDNlZXJyb3IpXG4rXHRcdGdvdG8gb3V0X3JlbGVhc2VfZHN0O1xuK1xuK1x0Y21wX3J0ID0gY29udGFpbmVyX29mKGNtcF9kc3QsIHN0cnVjdCBydDZfaW5mbywgZHN0KTtcbitcbitcdC8qIHRoaXMgbXVzdCB3b3JrIGlmIF9hbnlfIG5leHRob3AgbWF0Y2hlczsgdGhlIG5vbi1zdWJ0cmVlIGJlc3QgbWF5XG4rXHQgKiBub3QgYmUgaW4gc2FtZSBvcmRlciBhcyBzdWJ0cmVlIGJlc3RcbitcdCAqL1xuK1x0Zm9yIChmNmkgPSByY3VfZGVyZWZlcmVuY2UoY21wX3J0LVx1MDAzZWZyb20pOyBmNmk7XG4rXHQgICAgIGY2aSA9IHJjdV9kZXJlZmVyZW5jZShmNmktXHUwMDNlZmliNl9uZXh0KSkge1xuK1x0XHRzdHJ1Y3QgZmliNl9uaCAqZjZuID0gZjZpLVx1MDAzZWZpYjZfbmg7XG4rXHRcdHN0cnVjdCBmaWI2X2luZm8gKnNpYmxpbmc7XG4rXG4rXHRcdC8qIG5vbi1zdWJ0cmVlIHJvdXRlOiBzYXlzIG5vdGhpbmcgYWJvdXQgcm91dGVyIGFkdmVydGlzaW5nIHRoaXMgc291cmNlICovXG4rXHRcdGlmIChmNmktXHUwMDNlZmliNl9zcmMucGxlbiA9PSAwKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRpZiAoZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZGV2ICE9IHNhZGRyX2RzdC1cdTAwM2Vkc3QtXHUwMDNlZGV2IHx8XG4rXHRcdCAgICBmNm4tXHUwMDNlbmhfY29tbW9uLm5oY19nd19mYW1pbHkgIT0gQUZfSU5FVDYpXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdGlmIChpcHY2X2FkZHJfZXF1YWwoXHUwMDI2ZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZ3cuaXB2NixcbitcdFx0XHRcdCAgICBcdTAwMjZydC1cdTAwM2VydDZpX2dhdGV3YXkpKSB7XG4rXHRcdFx0cmV0ID0gMTtcbitcdFx0XHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcbitcdFx0fVxuK1xuK1x0XHRpZiAoIWY2aS1cdTAwM2VmaWI2X25zaWJsaW5ncylcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzaWJsaW5nLCBcdTAwMjZmNmktXHUwMDNlZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncykge1xuK1x0XHRcdGY2biA9IHNpYmxpbmctXHUwMDNlZmliNl9uaDtcbitcbitcdFx0XHRpZiAoZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZGV2ICE9IHNhZGRyX2RzdC1cdTAwM2Vkc3QtXHUwMDNlZGV2IHx8XG4rXHRcdFx0ICAgIGY2bi1cdTAwM2VuaF9jb21tb24ubmhjX2d3X2ZhbWlseSAhPSBBRl9JTkVUNilcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRcdGlmIChpcHY2X2FkZHJfZXF1YWwoXHUwMDI2ZjZuLVx1MDAzZW5oX2NvbW1vbi5uaGNfZ3cuaXB2NixcbitcdFx0XHRcdFx0ICAgIFx1MDAyNnJ0LVx1MDAzZXJ0NmlfZ2F0ZXdheSkpIHtcbitcdFx0XHRcdHJldCA9IDE7XG4rXHRcdFx0XHRnb3RvIG91dF9yZWxlYXNlX2RzdDtcbitcdFx0XHR9XG4rXHRcdH1cbitcdH1cbitcbitvdXRfcmVsZWFzZV9kc3Q6XG4rXHRkc3RfcmVsZWFzZShjbXBfZHN0KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX3Njb3JlICpzY29yZSxcbiBcdFx0XHQgICAgICAgc3RydWN0IGlwdjZfc2FkZHJfZHN0ICpkc3QsXG5AQCAtMTYxOSw3ICsxNjk3LDcgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9ldmFsKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIElQVjZfU0FERFJfUlVMRV9MT0NBTDpcbiBcdFx0LyogUnVsZSAxOiBQcmVmZXIgc2FtZSBhZGRyZXNzICovXG4tXHRcdHJldCA9IGlwdjZfYWRkcl9lcXVhbChcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgZHN0LVx1MDAzZWFkZHIpO1xuK1x0XHRyZXQgPSBpcHY2X2FkZHJfZXF1YWwoXHUwMDI2c2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHIsIFx1MDAyNmRzdC1cdTAwM2VmbDYtXHUwMDNlZGFkZHIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgSVBWNl9TQUREUl9SVUxFX1NDT1BFOlxuIFx0XHQvKiBSdWxlIDI6IFByZWZlciBhcHByb3ByaWF0ZSBzY29wZVxuQEAgLTE2NzUsNiArMTc1MywyNCBAQCBzdGF0aWMgaW50IGlwdjZfZ2V0X3NhZGRyX2V2YWwoc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRyZXQgPSAoIWRzdC1cdTAwM2VpZmluZGV4IHx8XG4gXHRcdCAgICAgICBkc3QtXHUwMDNlaWZpbmRleCA9PSBzY29yZS1cdTAwM2VpZmEtXHUwMDNlaWRldi1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCk7XG4gXHRcdGJyZWFrO1xuK1x0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1A6XG4rXHRcdC8qIFJ1bGUgNS41OiBQcmVmZXIgc291cmNlcyBhZHZlcnRpc2VkIGJ5IGNob3NlbiBuZXh0LWhvcCAqL1xuK1xuK1x0XHQvKiBXaXRob3V0IHN1YnRyZWVzLCB0aGUgc291cmNlIGFkZHJlc3Mgd2lsbCBtYWtlIG5vIGRpZmZlcmVuY2VcbitcdFx0ICogaW4gdGhlIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBpbiBydWxlNXA1LiAgVGhlcmVmb3JlIHRoZSBydWxlXG4rXHRcdCAqIDUuNSBjaGVjayBiZWNvbWVzIHVzZWxlc3MuICBUaGlzIHdvdWxkbid0IHJlc3VsdCBpbiBhbnlcbitcdFx0ICogZXJyb3JzLCBidXQgaXA2X3JvdXRlX291dHB1dCBpc24ndCBmcmVlLCBzbyBpZiBzdWJ0cmVlcyBhcmVcbitcdFx0ICogZGlzYWJsZWQgc2F2ZSBzb21lIGN5Y2xlcyBieSBza2lwcGluZyB0aGlzIGVudGlyZWx5LlxuK1x0XHQgKlxuK1x0XHQgKiBUaGlzIGlzIGRvbmUgdGhyb3VnaCBzdWJ0cmVlc19lbmFibGVkIHRvIGhhdmUgdGhlIGNvZGVcbitcdFx0ICogY29tcGlsZWQgcmVnYXJkbGVzcy5cbitcdFx0ICovXG4rXHRcdGlmIChmaWI2X3JvdXRlc19yZXF1aXJlX3NyYyhuZXQpIFx1MDAyNlx1MDAyNiBkc3QtXHUwMDNlZHN0XG4rXHRcdCAgICBcdTAwMjZcdTAwMjYgIWRzdC1cdTAwM2Vkc3QtXHUwMDNlZXJyb3IpXG4rXHRcdFx0cmV0ID0gaXB2Nl9zYWRkcl9ydWxlNXA1KHNjb3JlLCBkc3QpO1xuK1x0XHRlbHNlXG4rXHRcdFx0cmV0ID0gMTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIElQVjZfU0FERFJfUlVMRV9MQUJFTDpcbiBcdFx0LyogUnVsZSA2OiBQcmVmZXIgbWF0Y2hpbmcgbGFiZWwgKi9cbiBcdFx0cmV0ID0gaXB2Nl9hZGRyX2xhYmVsKG5ldCxcbkBAIC0xNjk3LDExICsxNzkzLDExIEBAIHN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdCAqXHQgICAgbm9uLU9SQ0hJRCB2cyBub24tT1JDSElEXG4gXHRcdCAqL1xuIFx0XHRyZXQgPSAhKGlwdjZfYWRkcl9vcmNoaWQoXHUwMDI2c2NvcmUtXHUwMDNlaWZhLVx1MDAzZWFkZHIpIF5cbi1cdFx0XHRpcHY2X2FkZHJfb3JjaGlkKGRzdC1cdTAwM2VhZGRyKSk7XG4rXHRcdFx0aXB2Nl9hZGRyX29yY2hpZChcdTAwMjZkc3QtXHUwMDNlZmw2LVx1MDAzZWRhZGRyKSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBJUFY2X1NBRERSX1JVTEVfUFJFRklYOlxuIFx0XHQvKiBSdWxlIDg6IFVzZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeCAqL1xuLVx0XHRyZXQgPSBpcHY2X2FkZHJfZGlmZihcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgZHN0LVx1MDAzZWFkZHIpO1xuK1x0XHRyZXQgPSBpcHY2X2FkZHJfZGlmZihcdTAwMjZzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkciwgXHUwMDI2ZHN0LVx1MDAzZWZsNi1cdTAwM2VkYWRkcik7XG4gXHRcdGlmIChyZXQgXHUwMDNlIHNjb3JlLVx1MDAzZWlmYS1cdTAwM2VwcmVmaXhfbGVuKVxuIFx0XHRcdHJldCA9IHNjb3JlLVx1MDAzZWlmYS1cdTAwM2VwcmVmaXhfbGVuO1xuIFx0XHRzY29yZS1cdTAwM2VtYXRjaGxlbiA9IHJldDtcbkBAIC0xODE5LDkgKzE5MTUsMTAgQEAgc3RhdGljIGludCBpcHY2X2dldF9zYWRkcl9tYXN0ZXIoc3RydWN0IG5ldCAqbmV0LFxuIFx0cmV0dXJuIGhpc2NvcmVfaWR4O1xuIH1cbiBcbi1pbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4tXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCB1bnNpZ25lZCBpbnQgcHJlZnMsXG4tXHRcdCAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxuK2ludCBpcHY2X2ZsX2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9lbnRyeSxcbitcdFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4rXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IHByZWZzLFxuK1x0XHQgICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpXG4ge1xuIFx0c3RydWN0IGlwdjZfc2FkZHJfc2NvcmUgc2NvcmVzWzJdLCAqaGlzY29yZTtcbiBcdHN0cnVjdCBpcHY2X3NhZGRyX2RzdCBkc3Q7XG5AQCAtMTgzMiwxMSArMTkyOSwxOCBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4gXHRpbnQgaGlzY29yZV9pZHggPSAwO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHRkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoZGFkZHIpO1xuLVx0ZHN0LmFkZHIgPSBkYWRkcjtcbitcdC8qIHdlIHNob3VsZCBuZXZlciBlbmQgdXAgaGVyZSB3aXRoIGEgbm9uLWVtcHR5IHNhZGRyLiAqL1xuK1x0aWYgKFdBUk5fT05fT05DRSghaXB2Nl9hZGRyX2FueShcdTAwMjZmbDYtXHUwMDNlc2FkZHIpKSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRkc3RfdHlwZSA9IF9faXB2Nl9hZGRyX3R5cGUoXHUwMDI2Zmw2LVx1MDAzZWRhZGRyKTtcbitcdGRzdC5uZXQgPSBuZXQ7XG4rXHRkc3QuZmw2ID0gZmw2O1xuK1x0ZHN0LnNrID0gc2s7XG4rXHRkc3QuZHN0ID0gZHN0X2VudHJ5O1xuIFx0ZHN0LmlmaW5kZXggPSBkc3RfZGV2ID8gZHN0X2Rldi1cdTAwM2VpZmluZGV4IDogMDtcbiBcdGRzdC5zY29wZSA9IF9faXB2Nl9hZGRyX3NyY19zY29wZShkc3RfdHlwZSk7XG4tXHRkc3QubGFiZWwgPSBpcHY2X2FkZHJfbGFiZWwobmV0LCBkYWRkciwgZHN0X3R5cGUsIGRzdC5pZmluZGV4KTtcbitcdGRzdC5sYWJlbCA9IGlwdjZfYWRkcl9sYWJlbChuZXQsIFx1MDAyNmZsNi1cdTAwM2VkYWRkciwgZHN0X3R5cGUsIGRzdC5pZmluZGV4KTtcbiBcdGRzdC5wcmVmcyA9IHByZWZzO1xuIFxuIFx0c2NvcmVzW2hpc2NvcmVfaWR4XS5ydWxlID0gLTE7XG5AQCAtMTkxMSwxMSArMjAxNSwyOSBAQCBpbnQgaXB2Nl9kZXZfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXYsXG4gXHRpZiAoIWhpc2NvcmUtXHUwMDNlaWZhKVxuIFx0XHRyZXQgPSAtRUFERFJOT1RBVkFJTDtcbiBcdGVsc2Vcbi1cdFx0KnNhZGRyID0gaGlzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcjtcbitcdFx0Zmw2LVx1MDAzZXNhZGRyID0gaGlzY29yZS1cdTAwM2VpZmEtXHUwMDNlYWRkcjtcbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4rRVhQT1JUX1NZTUJPTChpcHY2X2ZsX2dldF9zYWRkcik7XG4rXG4raW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxuK1x0XHQgICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgdW5zaWduZWQgaW50IHByZWZzLFxuK1x0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcilcbit7XG4rXHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbitcdGludCByZXQ7XG4rXG4rXHRtZW1zZXQoXHUwMDI2Zmw2LCAwLCBzaXplb2YoZmw2KSk7XG4rXHRmbDYuZGFkZHIgPSAqZGFkZHI7XG4rXG4rXHRyZXQgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsIE5VTEwsIGRzdF9kZXYsIE5VTEwsIHByZWZzLCBcdTAwMjZmbDYpO1xuK1x0aWYgKCFyZXQpXG4rXHRcdCpzYWRkciA9IGZsNi5zYWRkcjtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuIEVYUE9SVF9TWU1CT0woaXB2Nl9kZXZfZ2V0X3NhZGRyKTtcbiBcbiBzdGF0aWMgaW50IF9faXB2Nl9nZXRfbGxhZGRyKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHN0cnVjdCBpbjZfYWRkciAqYWRkcixcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmliLmMgYi9uZXQvaXB2Ni9pcDZfZmliLmNcbmluZGV4IGExMzBjZGZhZWJmYmVlLi4yNzNmMmJmYzUyODY2OSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9maWIuY1xuKysrIGIvbmV0L2lwdjYvaXA2X2ZpYi5jXG5AQCAtMTY1Niw4ICsxNjU2LDExIEBAIHN0YXRpYyBzdHJ1Y3QgZmliNl9ub2RlICpmaWI2X25vZGVfbG9va3VwXzEoc3RydWN0IGZpYjZfbm9kZSAqcm9vdCxcbiBcdFx0XHRcdFx0c3RydWN0IGZpYjZfbm9kZSAqc2ZuO1xuIFx0XHRcdFx0XHRzZm4gPSBmaWI2X25vZGVfbG9va3VwXzEoc3VidHJlZSxcbiBcdFx0XHRcdFx0XHRcdFx0IGFyZ3MgKyAxKTtcbi1cdFx0XHRcdFx0aWYgKCFzZm4pXG4rXHRcdFx0XHRcdGlmICghc2ZuKSB7XG4rXHRcdFx0XHRcdFx0aWYgKGZuLVx1MDAzZWZuX2ZsYWdzIFx1MDAyNiBSVE5fUlRJTkZPKVxuK1x0XHRcdFx0XHRcdFx0cmV0dXJuIGZuO1xuIFx0XHRcdFx0XHRcdGdvdG8gYmFja3RyYWNrO1xuK1x0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGZuID0gc2ZuO1xuIFx0XHRcdFx0fVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuaW5kZXggMzY4ZTRmYTNiNDNjYTIuLjAzYjhkNDJkOWRmOWVmIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXG4rKysgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbkBAIC0xMTQzLDI3ICsxMTQzLDQwIEBAIHN0YXRpYyBpbnQgaXA2X2RzdF9sb29rdXBfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbiBcdGludCBmbGFncyA9IDA7XG4gXG4gXHQvKiBUaGUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIHRoaXMgd291bGQgYmUgdG8gZG9cbi1cdCAqIGlwNl9yb3V0ZV9nZXRfc2FkZHIsIGFuZCB0aGVuIGlwNl9yb3V0ZV9vdXRwdXQ7IGhvd2V2ZXIsXG4rXHQgKiBpcHY2X2ZsX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcbiBcdCAqIHRoZSByb3V0ZS1zcGVjaWZpYyBwcmVmZXJyZWQgc291cmNlIGZvcmNlcyB0aGVcbi1cdCAqIGlwNl9yb3V0ZV9vdXRwdXQgY2FsbCBfYmVmb3JlXyBpcDZfcm91dGVfZ2V0X3NhZGRyLlxuK1x0ICogaXA2X3JvdXRlX291dHB1dCBjYWxsIF9iZWZvcmVfIGlwdjZfZmxfZ2V0X3NhZGRyLlxuIFx0ICpcbiBcdCAqIEluIHNvdXJjZSBzcGVjaWZpYyByb3V0aW5nIChubyBzcmM9YW55IGRlZmF1bHQgcm91dGUpLFxuIFx0ICogaXA2X3JvdXRlX291dHB1dCB3aWxsIGZhaWwgZ2l2ZW4gc3JjPWFueSBzYWRkciwgdGhvdWdoLCBzb1xuIFx0ICogdGhhdCdzIHdoeSB3ZSB0cnkgaXQgYWdhaW4gbGF0ZXIuXG4gXHQgKi9cbiBcdGlmIChpcHY2X2FkZHJfYW55KFx1MDAyNmZsNi1cdTAwM2VzYWRkcikpIHtcbitcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmwzbWRldjtcbitcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiBcdFx0c3RydWN0IGZpYjZfaW5mbyAqZnJvbTtcbiBcdFx0c3RydWN0IHJ0Nl9pbmZvICpydDtcbitcdFx0Ym9vbCBzYW1lX3ZyZjtcbiBcbiBcdFx0KmRzdCA9IGlwNl9yb3V0ZV9vdXRwdXQobmV0LCBzaywgZmw2KTtcbiBcdFx0cnQgPSAoKmRzdCktXHUwMDNlZXJyb3IgPyBOVUxMIDogZHN0X3J0Nl9pbmZvKCpkc3QpO1xuIFxuIFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdGZyb20gPSBydCA/IHJjdV9kZXJlZmVyZW5jZShydC1cdTAwM2Vmcm9tKSA6IE5VTEw7XG4tXHRcdGVyciA9IGlwNl9yb3V0ZV9nZXRfc2FkZHIobmV0LCBmcm9tLCBcdTAwMjZmbDYtXHUwMDNlZGFkZHIsXG4tXHRcdFx0XHRcdCAgc2sgPyBSRUFEX09OQ0UoaW5ldDZfc2soc2spLVx1MDAzZXNyY3ByZWZzKSA6IDAsXG4tXHRcdFx0XHRcdCAgZmw2LVx1MDAzZWZsb3dpNl9sM21kZXYsXG4tXHRcdFx0XHRcdCAgXHUwMDI2Zmw2LVx1MDAzZXNhZGRyKTtcbitcbitcdFx0bDNtZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBmbDYtXHUwMDNlZmxvd2k2X2wzbWRldik7XG4rXHRcdGlmICghZnJvbSB8fCAhZnJvbS1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbiB8fCBsM21kZXYpXG4rXHRcdFx0ZGV2ID0gZnJvbSA/IGZpYjZfaW5mb19uaF9kZXYoZnJvbSkgOiBOVUxMO1xuK1x0XHRzYW1lX3ZyZiA9ICFsM21kZXYgfHwgbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGRldikgPT0gbDNtZGV2O1xuK1x0XHRpZiAoZnJvbSBcdTAwMjZcdTAwMjYgZnJvbS1cdTAwM2VmaWI2X3ByZWZzcmMucGxlbiBcdTAwMjZcdTAwMjYgc2FtZV92cmYpIHtcbitcdFx0XHRmbDYtXHUwMDNlc2FkZHIgPSBmcm9tLVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuK1x0XHRcdGVyciA9IDA7XG4rXHRcdH0gZWxzZVxuK1x0XHRcdGVyciA9IGlwdjZfZmxfZ2V0X3NhZGRyKG5ldCwgKmRzdCxcbitcdFx0XHRcdFx0XHRzYW1lX3ZyZiA/IGRldiA6IGwzbWRldiwgc2ssXG4rXHRcdFx0XHRcdFx0c2sgPyBSRUFEX09OQ0UoaW5ldDZfc2soc2spLVx1MDAzZXNyY3ByZWZzKSA6IDAsXG4rXHRcdFx0XHRcdFx0Zmw2KTtcbitcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gXHRcdGlmIChlcnIpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcbmluZGV4IGExMzAxMzM0ZGE0OGMwLi43MDRhZmUyZGRlYTdjMiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC01ODUwLDkgKzU4NTAsMTkgQEAgc3RhdGljIGludCBydDZfZmlsbF9ub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRpZiAobmxhX3B1dF91MzIoc2tiLCBSVEFfSUlGLCBpaWYpKVxuIFx0XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXHR9IGVsc2UgaWYgKGRlc3QpIHtcbi1cdFx0c3RydWN0IGluNl9hZGRyIHNhZGRyX2J1Zjtcbi1cdFx0aWYgKGlwNl9yb3V0ZV9nZXRfc2FkZHIobmV0LCBydCwgZGVzdCwgMCwgMCwgXHUwMDI2c2FkZHJfYnVmKSA9PSAwIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgbmxhX3B1dF9pbjZfYWRkcihza2IsIFJUQV9QUkVGU1JDLCBcdTAwMjZzYWRkcl9idWYpKVxuK1x0XHRzdHJ1Y3QgaW42X2FkZHIgc2FkZHJfYnVmLCAqc2FkZHIgPSBOVUxMO1xuK1xuK1x0XHRpZiAocnQtXHUwMDNlZmliNl9wcmVmc3JjLnBsZW4pIHtcbitcdFx0XHRzYWRkciA9IFx1MDAyNnJ0LVx1MDAzZWZpYjZfcHJlZnNyYy5hZGRyO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBmaWI2X2luZm9fbmhfZGV2KHJ0KTtcbitcbitcdFx0XHRpZiAoaXB2Nl9kZXZfZ2V0X3NhZGRyKG5ldCwgZGV2LCBkZXN0LCAwLFxuK1x0XHRcdFx0XHQgICAgICAgXHUwMDI2c2FkZHJfYnVmKSA9PSAwKVxuK1x0XHRcdFx0c2FkZHIgPSBcdTAwMjZzYWRkcl9idWY7XG4rXHRcdH1cbitcbitcdFx0aWYgKHNhZGRyIFx1MDAyNlx1MDAyNiBubGFfcHV0X2luNl9hZGRyKHNrYiwgUlRBX1BSRUZTUkMsIHNhZGRyKSlcbiBcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi5jMDdkMmFlYmFkNjk1NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5AQCAtNTMsNiArNTMsNyBAQCBURVNUX1BST0dTIDo9IFxcXG4gXHRpcHY2X2Zsb3dsYWJlbC5zaCBcXFxuIFx0aXB2Nl9mb3JjZV9mb3J3YXJkaW5nLnNoIFxcXG4gXHRpcHY2X3JvdXRlX3VwZGF0ZV9zb2Z0X2xvY2t1cC5zaCBcXFxuK1x0aXB2Nl9zYWRkcl9yZmM2NzI0cnVsZTVwNS5weSBcXFxuIFx0aXB2dGFwX3Rlc3Quc2ggXFxcbiBcdGwyX3Rvc190dGxfaW5oZXJpdC5zaCBcXFxuIFx0bDJ0cC5zaCBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnXG5pbmRleCBlMWNlMzVjMmFiYmVmMy4uYjBiNjY0MTJiOWYzZTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnXG5AQCAtNDgsNiArNDgsNyBAQCBDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15XG4gQ09ORklHX0lQVjZfUlBMX0xXVFVOTkVMPXlcbiBDT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcbiBDT05GSUdfSVBWNl9TSVQ9eVxuK0NPTkZJR19JUFY2X1NVQlRSRUVTPXlcbiBDT05GSUdfSVBWNl9WVEk9eVxuIENPTkZJR19JUFZMQU49bVxuIENPTkZJR19JUFZUQVA9bVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwdjZfc2FkZHJfcmZjNjcyNHJ1bGU1cDUucHlcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjgyYjM5YmE5OTFkYTlcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHY2X3NhZGRyX3JmYzY3MjRydWxlNXA1LnB5XG5AQCAtMCwwICsxLDIzMSBAQFxuKyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rIyBDb3B5cmlnaHQgKEMpIDIwMjMtMjAyNiAgRGF2aWQgJ2VxdWlub3gnIExhbXBhcnRlclxuK1wiXCJcIlxuK1JGQyA2NzI0IChJUHY2IHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbikgcnVsZSA1LjUgdGVzdHNcbitcbitGb3IgcmVmZXJlbmNlOlxuK1xuKyAgIFJ1bGUgNS41OiBQcmVmZXIgYWRkcmVzc2VzIGluIGEgcHJlZml4IGFkdmVydGlzZWQgYnkgdGhlIG5leHQtaG9wLlxuKyAgIElmIFNBIG9yIFNBJ3MgcHJlZml4IGlzIGFzc2lnbmVkIGJ5IHRoZSBzZWxlY3RlZCBuZXh0LWhvcCB0aGF0IHdpbGxcbisgICBiZSB1c2VkIHRvIHNlbmQgdG8gRCBhbmQgU0Igb3IgU0IncyBwcmVmaXggaXMgYXNzaWduZWQgYnkgYSBkaWZmZXJlbnRcbisgICBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0EuICBTaW1pbGFybHksIGlmIFNCIG9yIFNCJ3MgcHJlZml4IGlzXG4rICAgYXNzaWduZWQgYnkgdGhlIG5leHQtaG9wIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNlbmQgdG8gRCBhbmQgU0Egb3JcbisgICBTQSdzIHByZWZpeCBpcyBhc3NpZ25lZCBieSBhIGRpZmZlcmVudCBuZXh0LWhvcCwgdGhlbiBwcmVmZXIgU0IuXG4rXG4rKGFuZCBzaW5jZSBpdCBwcm92aWRlcyB0aGUgXCJjb3VudGVycG9pbnRcIjopXG4rXG4rICAgUnVsZSA4OiBVc2UgbG9uZ2VzdCBtYXRjaGluZyBwcmVmaXguXG4rICAgSWYgQ29tbW9uUHJlZml4TGVuKFNBLCBEKSBcdTAwM2UgQ29tbW9uUHJlZml4TGVuKFNCLCBEKSwgdGhlbiBwcmVmZXIgU0EuXG4rICAgU2ltaWxhcmx5LCBpZiBDb21tb25QcmVmaXhMZW4oU0IsIEQpIFx1MDAzZSBDb21tb25QcmVmaXhMZW4oU0EsIEQpLCB0aGVuXG4rICAgcHJlZmVyIFNCLlxuK1xuK05vdGUgcnVsZSA1LjUgd2FzIG9yaWdpbmFsbHkgb3B0aW9uYWwgYnV0IG1hZGUgbWFuZGF0b3J5IGJ5XG4rZHJhZnQtaWV0Zi02bWFuLXJmYzY3MjQtdXBkYXRlICh3aGljaCBhdCB0aGUgcG9pbnQgb2YgY3JlYXRpb24gb2YgdGhpcyB0ZXN0XG4rd2FzIGFscmVhZHkgXCJkb25lXCIgYXQgdGhlIElFVEYgYnV0IHdhaXRpbmcgaW4gdGhlIFJGQyBlZGl0b3IgcXVldWUgZHVlIHRvIGFcbitibG9ja2luZyBkZXBlbmRlbmN5LilcbitcIlwiXCJcbitcbitmcm9tIHNvY2tldCBpbXBvcnQgc29ja2V0LCBBRl9JTkVUNiwgU09DS19ER1JBTVxuK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwc1xuK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZVxuK1xuK2Zyb20gbGliLnB5IGltcG9ydCBrc2Z0X3J1biwga3NmdF9leGl0LCBrc2Z0X2VxXG4rZnJvbSBsaWIucHkgaW1wb3J0IE5ldE5TLCBOZXROU0VudGVyXG4rZnJvbSBsaWIucHkgaW1wb3J0IGlwXG4rXG4rXG4rZGVmIHNlbGVjdF9hZGRyKGRlc3QpOlxuKyAgICBcIlwiXCJcbisgICAgY29ubmVjdCgpICsgZ2V0c29ja25hbWUoKSB0byBmaWd1cmUgb3V0IHdoYXQgd2FzIHNlbGVjdGVkIGFzIHNvdXJjZSBhZGRyZXNzXG4rICAgIFwiXCJcIlxuKyAgICBzb2NrID0gc29ja2V0KEFGX0lORVQ2LCBTT0NLX0RHUkFNLCAwKVxuKyAgICBzb2NrLmNvbm5lY3QoKGRlc3QsIDEyMzQ1KSlcbisgICAgcmV0dXJuIHNvY2suZ2V0c29ja25hbWUoKVswXVxuK1xuK1xuK2RlZiBpbl9uZXRucyhmdW5jOiBDYWxsYWJsZVtbXSwgTm9uZV0pIC1cdTAwM2UgQ2FsbGFibGVbW10sIE5vbmVdOlxuKyAgICBcIlwiXCJcbisgICAgcHl0aG9uIGRlY29yYXRvciB0byBwdXQgdGVzdCBmdW5jdGlvbiBpbiBuZXRuc1xuKyAgICBcIlwiXCJcbitcbisgICAgQHdyYXBzKGZ1bmMpXG4rICAgIGRlZiB3cmFwcGVkKCkgLVx1MDAzZSBOb25lOlxuKyAgICAgICAgd2l0aCBOZXROUygpIGFzIHRlc3RuczpcbisgICAgICAgICAgICB3aXRoIE5ldE5TRW50ZXIoc3RyKHRlc3RucykpOlxuKyAgICAgICAgICAgICAgICBmdW5jKClcbitcbisgICAgcmV0dXJuIHdyYXBwZWRcbitcbitcbitAaW5fbmV0bnNcbitkZWYgdGVzdF9iYXNpYygpIC1cdTAwM2UgTm9uZTpcbisgICAgXCJcIlwiXG4rICAgIFNpbXBsZSBcdTAwMjYgbW9zdCBjb21tb24gY2FzZSBmb3IgUkZDNjcyNCBydWxlIDUuNTogbXVsdGlwbGUgZGVmYXVsdCByb3V0ZXNcbisgICAgXCJcIlwiXG4rICAgIGlwKFwibGluayBhZGQgdHlwZSB2ZXRoXCIpXG4rICAgIGlwKFwibGluayBzZXQgdmV0aDAgdXBcIilcbisgICAgaXAoXCJsaW5rIHNldCB2ZXRoMSB1cFwiKVxuKyAgICBpcChcImFkZHIgYWRkIDIwMDE6ZGI4OjEwOjoxLzY0ICAgZGV2IHZldGgwIG5vZGFkXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTAwMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFwiKVxuKyAgICBpcChcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoyIGRldiB2ZXRoMCBtZXRyaWMgMjAwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjEwMDE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDhcIilcbitcbisgICAgaXAoXCItNiByb3V0ZSBkZWwgZGVmYXVsdCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFwiKVxuK1xuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTE6OlwiKSwgXCIyMDAxOmRiODoxMDAwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTAwMTo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJydWxlIDUuNSBcdTAwM2UgcnVsZSA4XCIpXG4rXG4rXG4rQGluX25ldG5zXG4rZGVmIHRlc3Rfbmhfb2JqKCkgLVx1MDAzZSBOb25lOlxuKyAgICBcIlwiXCJcbisgICAgU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggbmV4dGhvcCBvYmplY3RzIGZvciB0aGUgZGVmYXVsdCByb3V0ZVxuK1xuKyAgICBOQjogVGhlIGtlcm5lbCBkb2Vzbid0IGN1cnJlbnRseSBhbGxvdyBuZXh0aG9wIG9iamVjdHMgZm9yIHN1YnRyZWUgcm91dGVzLlxuKyAgICBcIlwiXCJcbitcbisgICAgaXAoXCJsaW5rIGFkZCB0eXBlIHZldGhcIilcbisgICAgaXAoXCJsaW5rIHNldCB2ZXRoMCB1cFwiKVxuKyAgICBpcChcImxpbmsgc2V0IHZldGgxIHVwXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCJhZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwiKVxuK1xuKyAgICAjIGRpc3RpbmN0IG5leHRob3Agb2JqZWN0cyBhcmUgdXNlZCwgYmVjYXVzZSB3aGF0IG1hdHRlcnMgaXMgdGhlIG5leHRob3BcbisgICAgIyBpdHNlbGYsIG5vdCB0aGUgbmV4dGhvcCBvYmplY3QuICBUbyBjb3ZlciBldmVyeXRoaW5nLCBtYWtlIGEgZ3JvdXAuXG4rICAgIGlwKFwibmV4dGhvcCBhZGQgaWQgMTAxIHZpYSBmZTgwOjoxIGRldiB2ZXRoMFwiKVxuKyAgICBpcChcIm5leHRob3AgYWRkIGlkIDIwMSBncm91cCAxMDFcIilcbisgICAgaXAoXCJuZXh0aG9wIGFkZCBpZCAxMDIgdmlhIGZlODA6OjIgZGV2IHZldGgwXCIpXG4rICAgIGlwKFwibmV4dGhvcCBhZGQgaWQgMjAyIGdyb3VwIDEwMlwiKVxuK1xuKyAgICBpcChcIi02IHJvdXRlIGFkZCBkZWZhdWx0IG5oaWQgMjAxIG1ldHJpYyAxMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBuaGlkIDIwMiBtZXRyaWMgMjAwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjEwMDE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDhcIilcbitcbisgICAgaXAoXCItNiByb3V0ZSBkZWwgZGVmYXVsdCBuaGlkIDIwMSBtZXRyaWMgMTAwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJiYXNlbGluZSBwYXNzXCIpXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMDAxOjpcIiksIFwiMjAwMTpkYjg6MTAwMDo6MVwiLCBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDhcIilcbitcbitcbitAaW5fbmV0bnNcbitkZWYgdGVzdF9sb3dfbWV0cmljKCkgLVx1MDAzZSBOb25lOlxuKyAgICBcIlwiXCJcbisgICAgQ2hlY2sgdGhhdCBzdWJ0cmVlIHJvdXRlcyB0YWtlIGVmZmVjdCBldmVuIGlmIHRoZXkgYXJlIGhpZ2hlciBtZXRyaWNcbitcbisgICAgRm9yIGNoZWNraW5nIHRoYXQgXCJyb3V0ZXIgYWR2ZXJ0aXNlZCBwcmVmaXhcIiwgbWV0cmljIGlzIGlycmVsZXZhbnQuICBJdFxuKyAgICBtYXR0ZXJzIGZvciB0aGUgaW5pdGlhbCB1bnNwZWNpZmljIGxvb2t1cCB0byBmaW5kIGEgbmV4dGhvcCB0byBiZWdpbiB3aXRoLlxuKyAgICAoVGhlIGxhdGVyIHNvdXJjZSBhZGRyZXNzIGNoZWNrIGxvb2t1cCBkb2Vzbid0IGNoYW5nZSB0aGUgbmV4dGhvcCwgaS5lLlxuKyAgICB0aGUgZWZmZWN0cyBvZiBtZXRyaWNzIGFyZSBhbHJlYWR5IGRvbmUuKVxuKyAgICBcIlwiXCJcbisgICAgaXAoXCJsaW5rIGFkZCB0eXBlIHZldGhcIilcbisgICAgaXAoXCJsaW5rIHNldCB2ZXRoMCB1cFwiKVxuKyAgICBpcChcImxpbmsgc2V0IHZldGgxIHVwXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgICBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCJhZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwiKVxuKyAgICBpcChcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggICB2aWEgZmU4MDo6MSBkZXYgdmV0aDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDAgbWV0cmljIDEwMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MyBkZXYgdmV0aDAgbWV0cmljIDUwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICAjIHJ1bGUgOCB3b3VsZCByZXN1bHQgaW4gdGhlIHVzZSBvZiB0aGUgOjEwMDE6IGFkZHJlc3MsIGJ1dCBydWxlIDUuNSBhcHBsaWVzIGJlZm9yZS5cbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjEwMDE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDhcIilcbitcbisgICAgaXAoXCItNiByb3V0ZSBkZWwgZGVmYXVsdCB2aWEgZmU4MDo6MSBkZXYgdmV0aDAgbWV0cmljIDEwMFwiKVxuK1xuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTE6OlwiKSwgXCIyMDAxOmRiODoxMDAwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTAwMTo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJydWxlIDUuNSBcdTAwM2UgcnVsZSA4XCIpXG4rXG4rXG4rQGluX25ldG5zXG4rZGVmIHRlc3Rfbm9fc3VidHJlZSgpIC1cdTAwM2UgTm9uZTpcbisgICAgXCJcIlwiXG4rICAgIEVuc3VyZSB0aGF0IG1hdGNoaW5nIG9uIGEgbm9uLXN1YnRyZWUgcm91dGUgZG9lc24ndCB0cmlnZ2VyIHJ1bGUgNS41XG4rXG4rICAgIChUaGlzIHdhcyBub24tb2J2aW91c2x5IGJyb2tlbiBpbiBlYXJsaWVyIHZlcnNpb25zIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMsXG4rICAgIGEgbm9uLXN1YnRyZWUgcm91dGUgd291bGQgc3RpbGwgbWF0Y2guICBNYWtlIHN1cmUgaXQgZG9lc24ndCBicmVhayBhZ2Fpbi4pXG4rICAgIFwiXCJcIlxuKyAgICBpcChcImxpbmsgYWRkIHR5cGUgdmV0aFwiKVxuKyAgICBpcChcImxpbmsgc2V0IHZldGgwIHVwXCIpXG4rICAgIGlwKFwibGluayBzZXQgdmV0aDEgdXBcIilcbisgICAgaXAoXCJhZGRyIGFkZCAyMDAxOmRiODoxMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCJhZGRyIGFkZCAyMDAxOmRiODoxMDAwOjoxLzY0IGRldiB2ZXRoMCBub2RhZFwiKVxuKyAgICBpcChcIi02IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSBmZTgwOjoxIGRldiB2ZXRoMCBtZXRyaWMgMTAwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIGRlZmF1bHQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAyMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCBmcm9tIDIwMDE6ZGI4OjEwOjovNDggdmlhIGZlODA6OjEgZGV2IHZldGgwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICBrc2Z0X2VxKFxuKyAgICAgICAgc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMDAxOjpcIiksXG4rICAgICAgICBcIjIwMDE6ZGI4OjEwOjoxXCIsXG4rICAgICAgICBcInJ1bGUgNS41IFx1MDAzZSBydWxlIDgsIGlnbm9yaW5nIG5vbi1TQURSXCIsXG4rICAgIClcbitcbitcbitAaW5fbmV0bnNcbitkZWYgdGVzdF9sb25nZXIoKSAtXHUwMDNlIE5vbmU6XG4rICAgIFwiXCJcIlxuKyAgICBDaGVjayBmdW5jdGlvbmFsaXR5IGZvciBub24tZGVmYXVsdCBkZXN0aW5hdGlvbi5cbitcbisgICAgVGhpcyBpcyBleHBlY3RlZCB0byBiZSB2ZXJ5IHJhcmUgaW4gYWN0dWFsIHByYWN0aWNlLCBhbmQgZG9lc24ndCBkb1xuKyAgICBiYWNrdHJhY2tpbmcgKGFsc28gcmVmZXIgdG8ga2VybmVsIGRvY3MuKVxuKyAgICBcIlwiXCJcbisgICAgaXAoXCJsaW5rIGFkZCB0eXBlIHZldGhcIilcbisgICAgaXAoXCJsaW5rIHNldCB2ZXRoMCB1cFwiKVxuKyAgICBpcChcImxpbmsgc2V0IHZldGgxIHVwXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTA6OjEvNjQgZGV2IHZldGgwIG5vZGFkXCIpXG4rICAgIGlwKFwiYWRkciBhZGQgMjAwMTpkYjg6MTAwMDo6MS82NCBkZXYgdmV0aDAgbm9kYWRcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgdmlhIGZlODA6OjEgZGV2IHZldGgwIG1ldHJpYyAxMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgMjAwMTpkYjg6NTAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAxMDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgZnJvbSAyMDAxOmRiODoxMDo6LzQ4ICAgdmlhIGZlODA6OjEgZGV2IHZldGgwXCIpXG4rICAgIGlwKFwiLTYgcm91dGUgYWRkIDIwMDE6ZGI4OjUwMDo6LzQ4IGZyb20gMjAwMTpkYjg6MTAwMDo6LzQ4IHZpYSBmZTgwOjoyIGRldiB2ZXRoMFwiKVxuK1xuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6MTE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcImJhc2VsaW5lIHBhc3NcIilcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjUwMDo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJydWxlIDUuNVwiKVxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6NTAwOmFhYTo6XCIpLCBcIjIwMDE6ZGI4OjEwMDA6OjFcIiwgXCJydWxlIDUuNVwiKVxuK1xuKyAgICBpcChcIi02IHJvdXRlIGFkZCAyMDAxOmRiODo1MDA6YWFhOjovNjQgdmlhIGZlODA6OjIgZGV2IHZldGgwIG1ldHJpYyAxMDBcIilcbitcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjExOjpcIiksIFwiMjAwMTpkYjg6MTA6OjFcIiwgXCJiYXNlbGluZSBwYXNzXCIpXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODo1MDA6OlwiKSwgXCIyMDAxOmRiODoxMDAwOjoxXCIsIFwicnVsZSA1LjVcIilcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjUwMDphYWE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcIm5vIGJhY2t0cmFja2luZ1wiKVxuK1xuKyAgICBpcChcIi02IHJvdXRlIGRlbCAyMDAxOmRiODo1MDA6Oi80OCBmcm9tIDIwMDE6ZGI4OjEwMDA6Oi80OCB2aWEgZmU4MDo6MiBkZXYgdmV0aDBcIilcbisgICAgaXAoXCItNiByb3V0ZSBhZGQgZGVmYXVsdCAgICAgICAgICAgZnJvbSAyMDAxOmRiODoxMDAwOjovNDggdmlhIGZlODA6OjIgZGV2IHZldGgwXCIpXG4rXG4rICAgIGtzZnRfZXEoc2VsZWN0X2FkZHIoXCIyMDAxOmRiODoxMTo6XCIpLCBcIjIwMDE6ZGI4OjEwOjoxXCIsIFwiYmFzZWxpbmUgcGFzc1wiKVxuKyAgICBrc2Z0X2VxKHNlbGVjdF9hZGRyKFwiMjAwMTpkYjg6NTAwOjpcIiksIFwiMjAwMTpkYjg6MTA6OjFcIiwgXCJubyBiYWNrdHJhY2tpbmdcIilcbisgICAga3NmdF9lcShzZWxlY3RfYWRkcihcIjIwMDE6ZGI4OjUwMDphYWE6OlwiKSwgXCIyMDAxOmRiODoxMDo6MVwiLCBcIm5vIGJhY2t0cmFja2luZ1wiKVxuK1xuK1xuK2RlZiBtYWluKCkgLVx1MDAzZSBOb25lOlxuKyAgICBcIlwiXCJcbisgICAgUkZDNjcyNCBydWxlIDUuNSB0ZXN0IGRyaXZlclxuKyAgICBcIlwiXCJcbisgICAga3NmdF9ydW4oXG4rICAgICAgICBbXG4rICAgICAgICAgICAgdGVzdF9iYXNpYyxcbisgICAgICAgICAgICB0ZXN0X25oX29iaixcbisgICAgICAgICAgICB0ZXN0X2xvd19tZXRyaWMsXG4rICAgICAgICAgICAgdGVzdF9ub19zdWJ0cmVlLFxuKyAgICAgICAgICAgIHRlc3RfbG9uZ2VyLFxuKyAgICAgICAgXVxuKyAgICApXG4rICAgIGtzZnRfZXhpdCgpXG4rXG4rXG4raWYgX19uYW1lX18gPT0gXCJfX21haW5fX1wiOlxuKyAgICBtYWluKClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjE3OjI3LjU0NTkyNjAzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MDA1NzQ2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjYgU291cmNlIEFkZHJlc3MgU2VsZWN0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyB0aGUgSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gdG8gYWxpZ24gd2l0aCBSRkM2NzI0IHJ1bGUgNS41LiBMb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYGlwdjZfZmxfZ2V0X3NhZGRyYCwgYW5kIGl0J3MgYWxzbyBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgYGlwdjZfZGV2X2dldF9zYWRkcmAgYW5kIGZ1bmRhbWVudGFsbHkgY2hhbmdpbmcgYGlwNl9yb3V0ZV9nZXRfc2FkZHJgIOKAkyByZW1vdmluZyBhbmQgcmVwbGFjaW5nIGl0IGVudGlyZWx5LCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGFyY2hpdGVjdHVyYWwgc2hpZnQuIEl0IHRvdWNoZXMgcXVpdGUgYSBmZXcga2V5IGZpbGVzIGluIHRoZSBJUHY2IG5ldHdvcmtpbmcgc3RhY2ssIG5hbWVseSBgbmV0L2lwdjYvYWRkcmNvbmYuY2AsIGBuZXQvaXB2Ni9pcDZfb3V0cHV0LmNgLCBgbmV0L2lwdjYvcm91dGUuY2AsIGFuZCBgbmV0L2lwdjYvaXA2X2ZpYi5jYC5cblxuTXkgZmlyc3QgY29uY2VybiwgYXMgYWx3YXlzLCBpcyByZWFjaGFiaWxpdHkgYW5kIGNvcnJlY3RuZXNzLiBHaXZlbiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucywgSSBuZWVkIHRvIHZlcmlmeSB0aGlzIHZlcnkgY2FyZWZ1bGx5LiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBpcHY2X3NhZGRyX3J1bGU1cDVgIHdpdGhpbiBgbmV0L2lwdjYvYWRkcmNvbmYuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIG5ldyBydWxlIGlzIGltcGxlbWVudGVkLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIGBpcDZfcm91dGVfb3V0cHV0YCBhbmQgYW4gaXRlcmF0aW9uIG92ZXIgYGZpYjZfaW5mb2AuXG5cbkkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIFRoZSBjcml0aWNhbCBmdW5jdGlvbnMgaGVyZSBhcmU6XG5cbiogICBgaXB2Nl9zYWRkcl9ydWxlNXA1YFxuKiAgIGBpcHY2X2ZsX2dldF9zYWRkcmBcbiogICBgaXB2Nl9kZXZfZ2V0X3NhZGRyYFxuKiAgIGBpcHY2X2dldF9zYWRkcl9ldmFsYFxuXG5SZWdhcmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24sIHRoZSBwYXRjaCBzZWVtcyB0byByZXF1aXJlIGBJUFY2X1NVQlRSRUVTYCwgaW5kaWNhdGVkIGJ5IGNoYW5nZXMgaW4gYG5ldC9pcHY2L0tjb25maWdgLiBJdOKAmXMgZGVwZW5kZW50IG9uIGBJUFY2X01VTFRJUExFX1RBQkxFU2AuIFRoaXMgaXMgY3JpdGljYWwgZm9yIFJGQzY3MjQgcnVsZSA1LjUgc3VwcG9ydC4gU28sIEkgbmVlZCB0byBlbnN1cmUgYm90aCBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYXJlIGVuYWJsZWQgaW4gbXkgdGVzdCBzZXR1cC5cblxuTm93LCBsZXQncyBzZWUgaG93IGBpcHY2X3NhZGRyX3J1bGU1cDVgIGlzIGFjdHVhbGx5IHVzZWQuIEl0J3MgY2FsbGVkIGZyb20gYGlwdjZfZ2V0X3NhZGRyX2V2YWxgIHVuZGVyIGBJUFY2X1NBRERSX1JVTEVfUElPX0JZX05FWFRIT1BgLiBgaXB2Nl9nZXRfc2FkZHJfZXZhbGAgaXMgdGhlbiBjYWxsZWQgZnJvbSBgaXB2Nl9nZXRfc2FkZHJfbWFzdGVyYC4gRmluYWxseSwgYGlwdjZfZ2V0X3NhZGRyX21hc3RlcmAgaXMgY2FsbGVkIGJ5IGBpcHY2X2ZsX2dldF9zYWRkcmAsIGFuZCBjcnVjaWFsbHksIGBpcHY2X2ZsX2dldF9zYWRkcmAgaXMgY2FsbGVkIGZyb20gYGlwNl9kc3RfbG9va3VwX3RhaWxgIHdpdGhpbiBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gVGhpcyBsYXN0IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBpcDZfZHN0X2xvb2t1cF9mbG93YC4gVGhpcyBwcm92aWRlcyB0aGUgY29tcGxldGUgY2hhaW4uIEkgbmVlZCB0byBrZWVwIHRoaXMgY2hhaW4gaW4gbWluZCB3aGVuIGNvbmZpZ3VyaW5nIHRlc3RjYXNlcyBhbmQgaGFybmVzc2VzLlxuXG5UaW1lIHRvIHVzZSBteSB0b29scyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTMxNDksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzozNi4yNDY1MDMyMjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2NTAyMzQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHY2X3NhZGRyX3J1bGU1cDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvYWRkcmNvbmYuYz0xNTgyPXN0YXRpYyBib29sIGlwdjZfYWxsb3dfb3B0aW1pc3RpY19kYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYy0xNjA1LSAqL1xcbm5ldC9pcHY2L2FkZHJjb25mLmM6MTYwNjpzdGF0aWMgaW50IGlwdjZfc2FkZHJfcnVsZTVwNShzdHJ1Y3QgaXB2Nl9zYWRkcl9zY29yZSAqc2NvcmUsXFxubmV0L2lwdjYvYWRkcmNvbmYuYy0xNjA3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpcHY2X3NhZGRyX2RzdCAqc2FkZHJfZHN0KVxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0xNjcyPXN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfZXZhbChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTE3NjktXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2ICFkc3QtXFx1MDAzZWRzdC1cXHUwMDNlZXJyb3IpXFxubmV0L2lwdjYvYWRkcmNvbmYuYzoxNzcwOlxcdFxcdFxcdHJldCA9IGlwdjZfc2FkZHJfcnVsZTVwNShzY29yZSwgZHN0KTtcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTE3NzEtXFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzozOS4xMTE1MzIxNDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE4NzA1NjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgTmV3IElQdjYgU291cmNlIEFkZHJlc3MgRmVhdHVyZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjb3VwbGUgb2YgbmV3IHBpZWNlcyByZWxhdGVkIHRvIElQdjYgc291cmNlIGFkZHJlc3NlczogYGlwdjZfc2FkZHJfcnVsZTVwNWAgYW5kIGBpcHY2X2ZsX2dldF9zYWRkcmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB1bmRlcnN0YW5kIGhvdyB0aGF0IHNlY29uZCBmdW5jdGlvbiwgYGlwdjZfZmxfZ2V0X3NhZGRyYCwgaXMgYmVpbmcgdXNlZC4gV2hlcmUgaXMgdGhpcyBuZXcgZnVuY3Rpb25hbGl0eSBpbnRlZ3JhdGVkIGludG8gdGhlIGV4aXN0aW5nIGZsb3cgc2V0dXA/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSBrZXkgdG8gZ3Jhc3BpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gZXhpc3RpbmcgbmV0d29yayBiZWhhdmlvciBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbnMuIEkgbmVlZCB0byBzZWUgdGhlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjA4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MTc6NDIuNjMwMjQwNjI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjExMTUwNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB2Nl9mbF9nZXRfc2FkZHJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvYWRkcmNvbmYuaD0xNDI9aW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5pbmNsdWRlL25ldC9hZGRyY29uZi5oLTE0NC1cXHRcXHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7XFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaDoxNDU6aW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxcbmluY2x1ZGUvbmV0L2FkZHJjb25mLmgtMTQ2LVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0xODk2PXN0YXRpYyBpbnQgaXB2Nl9nZXRfc2FkZHJfbWFzdGVyKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTkxNy1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjE5MTg6aW50IGlwdjZfZmxfZ2V0X3NhZGRyKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0X2VudHJ5LFxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTkxOS1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZHN0X2RldixcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjAyMi19XFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyMDIzOkVYUE9SVF9TWU1CT0woaXB2Nl9mbF9nZXRfc2FkZHIpO1xcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjAyNC1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTIwMjU9aW50IGlwdjZfZGV2X2dldF9zYWRkcihzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2LFxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYy0yMDM0LVxcbm5ldC9pcHY2L2FkZHJjb25mLmM6MjAzNTpcXHRyZXQgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsIE5VTEwsIGRzdF9kZXYsIE5VTEwsIHByZWZzLCBcXHUwMDI2Zmw2KTtcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTIwMzYtXFx0aWYgKCFyZXQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTEzNT1zdGF0aWMgaW50IGlwNl9kc3RfbG9va3VwX3RhaWwoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE0NS1cXHQvKiBUaGUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIHRoaXMgd291bGQgYmUgdG8gZG9cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTE0NjpcXHQgKiBpcHY2X2ZsX2dldF9zYWRkciwgYW5kIHRoZW4gaXA2X3JvdXRlX291dHB1dDsgaG93ZXZlcixcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE0Ny1cXHQgKiB0aGUgcm91dGUtc3BlY2lmaWMgcHJlZmVycmVkIHNvdXJjZSBmb3JjZXMgdGhlXFxubmV0L2lwdjYvaXA2X291dHB1dC5jOjExNDg6XFx0ICogaXA2X3JvdXRlX291dHB1dCBjYWxsIF9iZWZvcmVfIGlwdjZfZmxfZ2V0X3NhZGRyLlxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xMTQ5LVxcdCAqXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTE3NC1cXHRcXHR9IGVsc2VcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTE3NTpcXHRcXHRcXHRlcnIgPSBpcHY2X2ZsX2dldF9zYWRkcihuZXQsICpkc3QsXFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTExNzYtXFx0XFx0XFx0XFx0XFx0XFx0c2FtZV92cmYgPyBkZXYgOiBsM21kZXYsIHNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzo0NC43NTEzNjA3NzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTE2NzQxMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgSVB2NiBTb3VyY2UgQWRkcmVzcyBTZWxlY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBzb21lIGtleSBjaGFuZ2VzIHRvIGhvdyBJUHY2IHNvdXJjZSBhZGRyZXNzZXMgYXJlIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQncyByZWZhY3RvcmluZyBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCB0byBjYWxsIGBpcHY2X2ZsX2dldF9zYWRkcmAuIFRoZW4sIGl0J3MgYWxzbyBpbnRlZ3JhdGluZyBgaXB2Nl9mbF9nZXRfc2FkZHJgIGludG8gYGlwNl9kc3RfbG9va3VwX3RhaWxgLiAgVGhpcyBpcyBwcm9taXNpbmc7IGJvdGggb2YgdGhvc2UgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IHdpdGhpbiB0aGUgaG90IHBhdGgsIHNvIHRoaXMgc2hvdWxkIGJlIGhpdHRpbmcgdGhlIGRlc2lyZWQgdXNlIGNhc2UgYW5kIGZ1bmN0aW9uYWxpdHkuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9ucy4gSXQncyB1c2luZyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AuIEhvbGQgb24sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBwcm9wZXJseSBoYW5kbGVkLiBZZXMsIGBJUFY2X1NVQlRSRUVTYCByZWxpZXMgb24gYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gQWxyaWdodCwganVzdCBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgaW4gYG5ldC9pcHY2L0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NTMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MTc6NDguNjY4MTA0NzE2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzAzMTgzNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZfU1VCVFJFRVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yMzc9Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cXG5uZXQvaXB2Ni9LY29uZmlnOjI0Mzpjb25maWcgSVBWNl9TVUJUUkVFU1xcbm5ldC9pcHY2L0tjb25maWctMjQ0LVxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjE3OjUwLjk5ODQyODQzOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMzEyMzQ5MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgZm9yIENvbmZpZyBPdmVybGFwKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbi4gQmVmb3JlIEkgbWFrZSBhbnkgc2lnbmlmaWNhbnQgY2hhbmdlcyBvciBhc3N1bXB0aW9ucywgYSBxdWljayBzYW5pdHkgY2hlY2sgaXMgZXNzZW50aWFsLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBcIkxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbiBmaWxlcyBvciBzZXR0aW5ncyBhdCBwbGF5IGhlcmUuXCIgSSBuZWVkIHRvIGJlIHN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBzb21ldGhpbmcsIGVzcGVjaWFsbHkgaW4gYSBjb21wbGV4IHN5c3RlbS4gSSdtIHRoaW5raW5nIGFib3V0IGluaGVyaXRhbmNlLCBjYXNjYWRpbmcgY29uZmlndXJhdGlvbnMsIGVudmlyb25tZW50IHZhcmlhYmxlcywgb3IgZXZlbiBzb21lIG9ic2N1cmUgb3ZlcnJpZGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIGNvbmZsaWN0aW5nIGNvbmZpZ3Mgb3IgdGhhdCBJIGFtIG5vdCBlZGl0aW5nIHRoZSB3cm9uZyBjb25maWcgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciB0aGF0IEkgY2FuIGFjY291bnQgZm9yIGFsbCB0aGUgY29uZmlncyB1c2VkLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcCB0byBhdm9pZCB3YXN0ZWQgdGltZSBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCdzIGFib3V0IGR1ZSBkaWxpZ2VuY2UgYW5kIHByZXZlbnRpbmcgYSBmcnVzdHJhdGluZyBkZWJ1Z2dpbmcgc2Vzc2lvbiBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzo1Ny4wMjk2NjY2OTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzc6XFx0Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxuIDIzODpcXHRcXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4gMjM5OlxcdFxcdHNlbGVjdCBGSUJfUlVMRVNcXG4gMjQwOlxcdFxcdGhlbHBcXG4gMjQxOlxcdFxcdCAgU3VwcG9ydCBtdWx0aXBsZSByb3V0aW5nIHRhYmxlcy5cXG4gMjQyOlxcdFxcbiAyNDM6XFx0Y29uZmlnIElQVjZfU1VCVFJFRVNcXG4gMjQ0OlxcdFxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxuIDI0NTpcXHRcXHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTXFxuIDI0NjpcXHRcXHRkZWZhdWx0IHlcXG4gMjQ3OlxcdFxcdGhlbHBcXG4gMjQ4OlxcdFxcdCAgRW5hYmxlIHJvdXRpbmcgYnkgc291cmNlIGFkZHJlc3Mgb3IgcHJlZml4LlxcbiAyNDk6XFx0XFxuIDI1MDpcXHRcXHQgIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN0aWxsIHRoZSBwcmltYXJ5IHJvdXRpbmcga2V5LCBzbyBtaXhpbmdcXG4gMjUxOlxcdFxcdCAgbm9ybWFsIGFuZCBzb3VyY2UgcHJlZml4IHNwZWNpZmljIHJvdXRlcyBpbiB0aGUgc2FtZSByb3V0aW5nIHRhYmxlXFxuIDI1MjpcXHRcXHQgIG1heSBzb21ldGltZXMgbGVhZCB0byB1bmludGVuZGVkIHJvdXRpbmcgYmVoYXZpb3IgaWYgdGhlIG9yZGVyIG9mXFxuIDI1MzpcXHRcXHQgIGxvb2t1cHMgaXMgbWlzdW5kZXJzdG9vZC4gIFRvIGFjaGlldmUgZnVsbCBzZXBhcmF0aW9uIGJhc2VkIG9uIHNvdXJjZVxcbiAyNTQ6XFx0XFx0ICBhZGRyZXNzLCBkaWZmZXJlbnQgcm91dGluZyB0YWJsZXMgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGVhY2ggc291cmNlXFxuIDI1NTpcXHRcXHQgIHByZWZpeC5cXG4gMjU2OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxNzo1Ny4wMjk3NDg4OTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3NDYzNDI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSVB2NiBSb3V0aW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlc2UgSVB2NiBjb25maWd1cmF0aW9uczogYElQVjZfTVVMVElQTEVfVEFCTEVTYCBhbmQgYElQVjZfU1VCVFJFRVNgLiAgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYElQVjZfU1VCVFJFRVNgIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIFwieVwiIChlbmFibGVkKSBpZiBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGtleSBkZXBlbmRlbmN5LiBOb3cgSSBuZWVkIHRvIGV4YW1pbmUgdGhlc2UgcmVsYXRlZCBmdW5jdGlvbnMsIGluIHRoZSBjb250ZXh0IG9mIHRob3NlIGNvbmZpZ3MuXG5cbkkgc2VlIHRoYXQgYGlwdjZfc2FkZHJfcnVsZTVwNWAgYW5kIGBpcHY2X2ZsX2dldF9zYWRkcmAgYXJlIGltcG9ydGFudCByZWxhdGVkIGZ1bmN0aW9ucy4gVGhleSBhcmUgKkZvY3VzU3ltYm9scyogZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZWlyIGJlaGF2aW91ci5cblxuSSBhbHNvIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZyB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkLCBzbyBJJ2xsIGNoZWNrIG90aGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSBgcnQ2X2ZpbGxfbm9kZWAgaW4gYG5ldC9pcHY2L3JvdXRlLmNgIGFuZCBgZmliNl9ub2RlX2xvb2t1cF8xYCBpbiBgbmV0L2lwdjYvaXA2X2ZpYi5jYCBhcmUgYWxzbyB3b3J0aCBjb25zaWRlcmluZy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSAqRm9jdXNTeW1ib2xzKi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1NDMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxODowMS4yMDQzODU2NTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzc3MzYwMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmliNl9ub2RlX2xvb2t1cF8xXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz0xNjA2PXN0cnVjdCBsb29rdXBfYXJncyB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTYxMC1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6MTYxMTpzdGF0aWMgc3RydWN0IGZpYjZfbm9kZSAqZmliNl9ub2RlX2xvb2t1cF8xKHN0cnVjdCBmaWI2X25vZGUgKnJvb3QsXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTE2MTItXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBsb29rdXBfYXJncyAqYXJncylcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0xNjU2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmaWI2X25vZGUgKnNmbjtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MTY1NzpcXHRcXHRcXHRcXHRcXHRzZm4gPSBmaWI2X25vZGVfbG9va3VwXzEoc3VidHJlZSxcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTY1OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgYXJncyArIDEpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTE2ODM9c3RydWN0IGZpYjZfbm9kZSAqZmliNl9ub2RlX2xvb2t1cChzdHJ1Y3QgZmliNl9ub2RlICpyb290LFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTE3MDMtXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjE3MDQ6XFx0Zm4gPSBmaWI2X25vZGVfbG9va3VwXzEocm9vdCwgZGFkZHIgPyBhcmdzIDogYXJncyArIDEpO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0xNzA1LVxcdGlmICghZm4gfHwgZm4tXFx1MDAzZWZuX2ZsYWdzIFxcdTAwMjYgUlROX1RMX1JPT1QpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjE4OjAzLjI0MjEyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg5MTQ3Njc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgYGZpYjZfbm9kZV9sb29rdXBfMWAgYW5kIGBydDZfZmlsbF9ub2RlYCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoYXQgYGZpYjZfbm9kZV9sb29rdXBfMWAgaXMgZGVjbGFyZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQncyBpbnRlcmVzdGluZywgbWVhbnMgaXQncyBzY29wZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBsaW1pdHMgaXRzIHZpc2liaWxpdHkgYW5kIHBvdGVudGlhbCBmb3IgcmV1c2UgZWxzZXdoZXJlIGluIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIHdoZW4gdHJhY2luZyBjYWxscyB0byBpdDsgaXQgcHJvYmFibHkgcGxheXMgYSBrZXkgcm9sZSBpbiBzb21lIHNwZWNpZmljIHJvdXRpbmcgdGFibGUgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhpcyBtb2R1bGUuXG5cbkFuZCB0aGVuLCBJIHNlZSB0aGF0IHdlIGhhdmUgYHJ0Nl9maWxsX25vZGVgIGFzIGFub3RoZXIgbW9kaWZpZWQgZnVuY3Rpb24gdGhhdCBJIHdpbGwgYmUgZm9jdXNpbmcgb24uIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGhvdyB0aGVzZSB0d28gZnVuY3Rpb25zIGludGVyYWN0LiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciB0byBzZWUgZXhhY3RseSBob3cgdGhlc2UgdHdvIGZ1bmN0aW9ucyBmaXQgdG9nZXRoZXIgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLCB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIGBydDZfZmlsbF9ub2RlYCBhbmQgaG93IGBmaWI2X25vZGVfbG9va3VwXzFgIGlzIGJlaW5nIHVzZWQgaW5zaWRlIGl0LiBJcyBgZmliNl9ub2RlX2xvb2t1cF8xYCBhIGhlbHBlciBmdW5jdGlvbiBmb3IgYnVpbGRpbmcgcm91dGluZyB0YWJsZSBlbnRyaWVzPyBBcmUgdGhlcmUgYW55IGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgYmV0d2VlbiB0aGVtLCBhbmQgaG93IGFyZSB0aGVzZSBtb2RpZmllZCBzdHJ1Y3R1cmVzIGJlaW5nIHVzZWQ/IERvZXMgdGhlIG1vZGlmaWNhdGlvbiBvZiBgcnQ2X2ZpbGxfbm9kZWAgY2hhbmdlIG9yIGludHJvZHVjZSBidWdzPyBLbm93aW5nIHRoYXQgdGhlc2UgdHdvIGFyZSBiZWluZyBtb2RpZmllZCBzaW11bHRhbmVvdXNseSByYWlzZXMgdGhlIHJlZCBmbGFnIG9mIGFuIEFQSSBjaGFuZ2UsIG9yIGFuIHVuZGVybHlpbmcgZnVuZGFtZW50YWwgY2hhbmdlIHRvIGhvdyB3ZSBhcmUgZG9pbmcgdGhpcy4gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGUgdHJhaWwgb2YgbG9naWMgYW5kIGRhdGEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzQwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MTg6MDYuOTMxMjc2NjM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc3NjM0NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0Nl9maWxsX25vZGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvcm91dGUuYz0xMDk9c3RhdGljIHNpemVfdCBydDZfbmxtc2dfc2l6ZShzdHJ1Y3QgZmliNl9pbmZvICpmNmkpO1xcbm5ldC9pcHY2L3JvdXRlLmM6MTEwOnN0YXRpYyBpbnQgcnQ2X2ZpbGxfbm9kZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjYvcm91dGUuYy0xMTEtXFx0XFx0XFx0IHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQwMDc9c3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MDI4LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDAyOTpcXHRcXHRcXHRpZiAocnQ2X2ZpbGxfbm9kZShuZXQsIHNrYiwgcnQsIE5VTEwsXFxubmV0L2lwdjYvcm91dGUuYy00MDMwLVxcdFxcdFxcdFxcdFxcdCAgTlVMTCwgTlVMTCwgMCwgUlRNX0RFTFJPVVRFLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz01Njk5PXN0YXRpYyBzaXplX3QgcnQ2X25sbXNnX3NpemUoc3RydWN0IGZpYjZfaW5mbyAqZjZpKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy01NzQ0LVxcbm5ldC9pcHY2L3JvdXRlLmM6NTc0NTpzdGF0aWMgaW50IHJ0Nl9maWxsX25vZGVfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxubmV0L2lwdjYvcm91dGUuYy01NzQ2LVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBjaGFyICpmbGFncylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNTc3My1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjU3NzQ6c3RhdGljIGludCBydDZfZmlsbF9ub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2Ni9yb3V0ZS5jLTU3NzUtXFx0XFx0XFx0IHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU5MzctXFx0XFx0aWYgKFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjQuc3lzY3RsX25leHRob3BfY29tcGF0X21vZGUpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjYvcm91dGUuYzo1OTM4OlxcdFxcdCAgICBydDZfZmlsbF9ub2RlX25leHRob3Aoc2tiLCBydC1cXHUwMDNlbmgsIFxcdTAwMjZuaF9mbGFncykgXFx1MDAzYyAwKVxcbm5ldC9pcHY2L3JvdXRlLmMtNTkzOS1cXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NjAyOT1zdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwNjMtXFxubmV0L2lwdjYvcm91dGUuYzo2MDY0OlxcdFxcdFxcdGVyciA9IHJ0Nl9maWxsX25vZGUoZHVtcC1cXHUwMDNlbmV0LCBkdW1wLVxcdTAwM2Vza2IsIHctXFx1MDAzZXJ0LFxcbm5ldC9pcHY2L3JvdXRlLmMtNjA2NS1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnJ0Nl9leC1cXHUwMDNlcnQ2aS1cXHUwMDNlZHN0LCBOVUxMLCBOVUxMLCAwLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz02MDgxPWludCBydDZfZHVtcF9yb3V0ZShzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcsIHVuc2lnbmVkIGludCBza2lwKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02MTEyLVxcdFxcdH0gZWxzZSB7XFxubmV0L2lwdjYvcm91dGUuYzo2MTEzOlxcdFxcdFxcdGlmIChydDZfZmlsbF9ub2RlKG5ldCwgYXJnLVxcdTAwM2Vza2IsIHJ0LCBOVUxMLCBOVUxMLCBOVUxMLFxcbm5ldC9pcHY2L3JvdXRlLmMtNjExNC1cXHRcXHRcXHRcXHRcXHQgIDAsIFJUTV9ORVdST1VURSxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NjIyMz1zdGF0aWMgaW50IGluZXQ2X3J0bV9nZXRyb3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNjM0NS1cXHRcXHRpZiAoZmlibWF0Y2gpXFxubmV0L2lwdjYvcm91dGUuYzo2MzQ2OlxcdFxcdFxcdGVyciA9IHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIGZyb20sIE5VTEwsIE5VTEwsIE5VTEwsXFxubmV0L2lwdjYvcm91dGUuYy02MzQ3LVxcdFxcdFxcdFxcdFxcdCAgICBpaWYsIFJUTV9ORVdST1VURSxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNjM1MC1cXHRcXHRlbHNlXFxubmV0L2lwdjYvcm91dGUuYzo2MzUxOlxcdFxcdFxcdGVyciA9IHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIGZyb20sIGRzdCwgXFx1MDAyNmZsNi5kYWRkcixcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzNTItXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmbDYuc2FkZHIsIGlpZiwgUlRNX05FV1JPVVRFLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz02MzcwPXZvaWQgaW5ldDZfcnRfbm90aWZ5KGludCBldmVudCwgc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02Mzg4LVxcbm5ldC9pcHY2L3JvdXRlLmM6NjM4OTpcXHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBydCwgTlVMTCwgTlVMTCwgTlVMTCwgMCxcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYzOTAtXFx0XFx0XFx0ICAgIGV2ZW50LCBpbmZvLVxcdTAwM2Vwb3J0aWQsIHNlcSwgbmxtX2ZsYWdzKTtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NjQxMT12b2lkIGZpYjZfcnRfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYjZfaW5mbyAqcnQsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTY0MjEtXFxubmV0L2lwdjYvcm91dGUuYzo2NDIyOlxcdGVyciA9IHJ0Nl9maWxsX25vZGUobmV0LCBza2IsIHJ0LCBOVUxMLCBOVUxMLCBOVUxMLCAwLFxcbm5ldC9pcHY2L3JvdXRlLmMtNjQyMy1cXHRcXHRcXHQgICAgUlRNX05FV1JPVVRFLCBpbmZvLVxcdTAwM2Vwb3J0aWQsIHNlcSwgTkxNX0ZfUkVQTEFDRSk7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTY0Mzc9dm9pZCBmaWI2X2luZm9faHdfZmxhZ3Nfc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYjZfaW5mbyAqZjZpLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NDc0LVxcbm5ldC9pcHY2L3JvdXRlLmM6NjQ3NTpcXHRlcnIgPSBydDZfZmlsbF9ub2RlKG5ldCwgc2tiLCBmNmksIE5VTEwsIE5VTEwsIE5VTEwsIDAsIFJUTV9ORVdST1VURSwgMCxcXG5uZXQvaXB2Ni9yb3V0ZS5jLTY0NzYtXFx0XFx0XFx0ICAgIDAsIDApO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTY3PXN0YXRpYyB2b2lkIF9faXBfdnNfZGVsX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgYm9vbCBjbGVhbnVwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy03MC0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NzE6LyogVGFrZW4gZnJvbSBydDZfZmlsbF9ub2RlKCkgaW4gbmV0L2lwdjYvcm91dGUuYywgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5PyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy03Mi1zdGF0aWMgYm9vbCBfX2lwX3ZzX2FkZHJfaXNfbG9jYWxfdjYoc3RydWN0IG5ldCAqbmV0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxODowOC44MDg5MTY1OTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY1MjA5NTQ1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIElQdjYgU291cmNlIEFkZHJlc3MgU2VsZWN0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYHJ0Nl9maWxsX25vZGVgLCBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIHVwZGF0aW5nIGl0cyBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMuIEl0J3Mgc3dhcHBpbmcgb3V0IGBpcDZfcm91dGVfZ2V0X3NhZGRyYCBmb3IgYGlwdjZfZGV2X2dldF9zYWRkcmAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLlxuXG5NeSBpbml0aWFsIGZvY3VzIGdvZXMgdG8gdGhlIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGlwdjZfZmxfZ2V0X3NhZGRyYCwgYGlwdjZfZGV2X2dldF9zYWRkcmAsIGFuZCBgaXB2Nl9zYWRkcl9ydWxlNXA1YC4gYGlwdjZfZmxfZ2V0X3NhZGRyYCBpcyBleHBvcnRlZCwgbWFraW5nIGl0IGEgZ29vZCBzdGFydGluZyBwb2ludC4gYGlwdjZfc2FkZHJfcnVsZTVwNWAgaXMgc3RhdGljIGJ1dCBhY2Nlc3NpYmxlIHRocm91Z2ggU3l6a2FsbGVyLCBzbyBpdCdzIHN0aWxsIGEgdmlhYmxlIHRhcmdldC4gSSBhbHNvIGtub3cgdGhhdCBgaXB2Nl9kZXZfZ2V0X3NhZGRyYCBpcyB1c2VkIGluIG1hbnkgcGxhY2VzLlxuXG5JIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYWxsIG9mIHRoZXNlIGtleSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSwgaW5jbHVkaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIChyZWFjaGFibGUgdmlhIGBpcHY2X2dldF9zYWRkcl9ldmFsYCksIGBpcHY2X2Rldl9nZXRfc2FkZHJgLCBgaXB2Nl9mbF9nZXRfc2FkZHJgICh1c2VkIGluIGBpcDZfZHN0X2xvb2t1cF90YWlsYCksIGFuZCBgcnQ2X2ZpbGxfbm9kZWAgKHVzZWQgYnkgYGluZXQ2X3J0bV9nZXRyb3V0ZWAsIGV0Yy4pLiBUaGlzIHRlbGxzIG1lIHRoZSBwYXRjaCBpcyBjb3JyZWN0bHkgaW50ZWdyYXRlZCBhbmQgdGhlIG5ldyBsb2dpYyBzaG91bGQgYmUgZXhlcmNpc2VkLiBJIGFsc28gY29uZmlybSBgZmliNl9ub2RlX2xvb2t1cF8xYCBpcyByZWFjaGFibGUuXG5cbk5vdywgSSB6ZXJvIGluIG9uIGZvY3VzIHN5bWJvbHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gVGhlIGtleSBzeW1ib2xzIGlkZW50aWZpZWQgYXJlOiBgaXB2Nl9zYWRkcl9ydWxlNXA1YCwgYGlwdjZfZmxfZ2V0X3NhZGRyYCwgYGlwdjZfZGV2X2dldF9zYWRkcmAsIGBydDZfZmlsbF9ub2RlYCwgYW5kIGBmaWI2X25vZGVfbG9va3VwXzFgLiBgaXB2Nl9zYWRkcl9ydWxlNXA1YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50IGJlY2F1c2UgaXQncyBhIG5ldyBmdW5jdGlvbiBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaC5cblxuSSBjaGVjayBmb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW5kIEkgc2VlIHRoYXQgYElQVjZfU1VCVFJFRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGFyZSBjcnVjaWFsLCBhbmQgYElQVjZfU1VCVFJFRVNgIHNob3VsZCBhbHJlYWR5IGJlIGVuYWJsZWQuXG5cbkkgcXVpY2tseSBjb25maXJtIHRoYXQgYWxsIGZvY3VzIHN5bWJvbHMsIGluY2x1ZGluZyB0aGUgc3RhdGljIG9uZXMsIGFyZSBhY2Nlc3NpYmxlIHRvIFN5emthbGxlci5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUg4oCcaG90IHBhdGjigJ0gaW1wbGljYXRpb25zLiBgaXB2Nl9zYWRkcl9ydWxlNXA1YCwgYGlwdjZfZmxfZ2V0X3NhZGRyYCwgYW5kIGBpcHY2X2Rldl9nZXRfc2FkZHJgIGFyZSByZWxhdGVkIHRvIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbi4gUm91dGUgbG9va3VwIGlzIG9uIGEgcGF0aCB0aGF0IGlzIGNhbGxlZCBtb3JlIHRoYW4gb25lIHRpbWUuIFRoZXJlZm9yZSBJIGhhdmUgdG8gY29uc2lkZXIgZXhjbHVkaW5nIGl0LiBgcnQ2X2ZpbGxfbm9kZWAgaXMgaW52b2x2ZWQgaW4gbmV0bGluayByb3V0ZSBkdW1waW5nLCBzbyBub3QgYSBob3QgcGF0aC5cblxuVGhlcmVmb3JlIHRoZSBmb2N1cyBzeW1ib2xzIGFyZTpcbmBpcHY2X3NhZGRyX3J1bGU1cDVgXG5gaXB2Nl9mbF9nZXRfc2FkZHJgXG5gaXB2Nl9kZXZfZ2V0X3NhZGRyYFxuYHJ0Nl9maWxsX25vZGVgXG5cblRoaXMgcGF0Y2ggaXMgaW1wbGVtZW50aW5nIFJGQzY3MjQgcnVsZSA1LjUuIEl0IG1vZGlmaWVzIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljLlxuXG5Pa2F5LCBsZXQncyBlbmFibGUgYElQVjZfU1VCVFJFRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBJIHdpbGwgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGNvbmZpZ3MuXG5Oby5cblxuRXZlcnl0aGluZyBzZWVtcyB0byBiZSBpbiBvcmRlci4gTGV0J3MgcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzMTUsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNToxODoyNS4zMjk4NzI2MzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzY0MzUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TVUJUUkVFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHY2X3NhZGRyX3J1bGU1cDVcIixcbiAgICBcImlwdjZfZmxfZ2V0X3NhZGRyXCIsXG4gICAgXCJpcHY2X2Rldl9nZXRfc2FkZHJcIixcbiAgICBcInJ0Nl9maWxsX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIFJGQzY3MjQgcnVsZSA1LjUgZm9yIElQdjYgc291cmNlIGFkZHJlc3Mgc2VsZWN0aW9uIGJ5IGludHJvZHVjaW5nIGBpcHY2X3NhZGRyX3J1bGU1cDVgIGFuZCBgaXB2Nl9mbF9nZXRfc2FkZHJgLiBJdCBtb2RpZmllcyBjb3JlIElQdjYgcm91dGluZyBhbmQgYWRkcmVzcyBzZWxlY3Rpb24gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgKGUuZy4sIGNvbm5lY3QsIHNlbmRtc2cpIGFuZCBuZXRsaW5rIHJvdXRlIGR1bXBzIChgcnQ2X2ZpbGxfbm9kZWApLiBUaGUgZmVhdHVyZSByZXF1aXJlcyBgSVBWNl9TVUJUUkVFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdG8gYmUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2X1NVQlRSRUVTXCIsXG4gICAgXCJJUFY2X01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdjZfc2FkZHJfcnVsZTVwNVwiLFxuICAgIFwiaXB2Nl9mbF9nZXRfc2FkZHJcIixcbiAgICBcImlwdjZfZGV2X2dldF9zYWRkclwiLFxuICAgIFwicnQ2X2ZpbGxfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgUkZDNjcyNCBydWxlIDUuNSBmb3IgSVB2NiBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24gYnkgaW50cm9kdWNpbmcgYGlwdjZfc2FkZHJfcnVsZTVwNWAgYW5kIGBpcHY2X2ZsX2dldF9zYWRkcmAuIEl0IG1vZGlmaWVzIGNvcmUgSVB2NiByb3V0aW5nIGFuZCBhZGRyZXNzIHNlbGVjdGlvbiBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzb2NrZXQgb3BlcmF0aW9ucyAoZS5nLiwgY29ubmVjdCwgc2VuZG1zZykgYW5kIG5ldGxpbmsgcm91dGUgZHVtcHMgKGBydDZfZmlsbF9ub2RlYCkuIFRoZSBmZWF0dXJlIHJlcXVpcmVzIGBJUFY2X1NVQlRSRUVTYCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYCB0byBiZSBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2z7g2[1] Phase: Succeeded StartedAt: 2026-07-14 15:20:26 +0000 UTC FinishedAt: 2026-07-14 15:20:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 15:20:26 +0000 UTC FinishedAt: 2026-07-14 15:20:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2] Phase: Succeeded StartedAt: 2026-07-14 15:20:26 +0000 UTC FinishedAt: 2026-07-14 19:24:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 15:20:26 +0000 UTC FinishedAt: 2026-07-14 19:24:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 15:20:26 +0000 UTC FinishedAt: 2026-07-14 15:20:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 15:20:26 +0000 UTC FinishedAt: 2026-07-14 15:20:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2z7g2/series-workflow2z7g2-convert-artifact-3589545717/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 15:20:46 +0000 UTC FinishedAt: 2026-07-14 15:49:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 15:20:46 +0000 UTC FinishedAt: 2026-07-14 15:49:50 +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:*d65641cf-fe08-463b-b9e1-d92dbaef73d3,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-workflow2z7g2/series-workflow2z7g2-convert-artifact-3589545717/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": "78321080-69c4-4bd5-96e0-437fbf8a7853", "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-workflow2z7g2/series-workflow2z7g2-build-action-437745883/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 15:20:46 +0000 UTC FinishedAt: 2026-07-14 15:49:40 +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:*d65641cf-fe08-463b-b9e1-d92dbaef73d3,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-workflow2z7g2/series-workflow2z7g2-convert-artifact-3589545717/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": "78321080-69c4-4bd5-96e0-437fbf8a7853", "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-workflow2z7g2/series-workflow2z7g2-build-action-437745883/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 15:49:50 +0000 UTC FinishedAt: 2026-07-14 15:49:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 15:49:50 +0000 UTC FinishedAt: 2026-07-14 15:49:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 15:49:50 +0000 UTC FinishedAt: 2026-07-14 15:50:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 15:49:50 +0000 UTC FinishedAt: 2026-07-14 15:50:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2z7g2/series-workflow2z7g2-convert-artifact-875007568/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 15:50:26 +0000 UTC FinishedAt: 2026-07-14 15:52:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 15:50:26 +0000 UTC FinishedAt: 2026-07-14 15:52:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*78321080-69c4-4bd5-96e0-437fbf8a7853,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-workflow2z7g2/series-workflow2z7g2-build-action-437745883/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-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 15:52:38 +0000 UTC FinishedAt: 2026-07-14 15:52:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 15:52:38 +0000 UTC FinishedAt: 2026-07-14 15:52:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 15:52:38 +0000 UTC FinishedAt: 2026-07-14 16:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 15:52:38 +0000 UTC FinishedAt: 2026-07-14 16:19:15 +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:*d65641cf-fe08-463b-b9e1-d92dbaef73d3,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-workflow2z7g2/series-workflow2z7g2-convert-artifact-875007568/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": "a48e7e19-eb5a-482a-bac3-2d423ce7070c", "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-workflow2z7g2/series-workflow2z7g2-build-action-2076986316/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 15:52:38 +0000 UTC FinishedAt: 2026-07-14 16:18:47 +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:*d65641cf-fe08-463b-b9e1-d92dbaef73d3,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-workflow2z7g2/series-workflow2z7g2-convert-artifact-875007568/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": "a48e7e19-eb5a-482a-bac3-2d423ce7070c", "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-workflow2z7g2/series-workflow2z7g2-build-action-2076986316/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 16:19:15 +0000 UTC FinishedAt: 2026-07-14 16:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 16:19:15 +0000 UTC FinishedAt: 2026-07-14 16:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 16:19:15 +0000 UTC FinishedAt: 2026-07-14 16:21:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 16:19:15 +0000 UTC FinishedAt: 2026-07-14 16:21:19 +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:*a48e7e19-eb5a-482a-bac3-2d423ce7070c,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-workflow2z7g2/series-workflow2z7g2-build-action-2076986316/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-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 16:21:28 +0000 UTC FinishedAt: 2026-07-14 19:24:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 16:21:28 +0000 UTC FinishedAt: 2026-07-14 19:24:16 +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":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"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:*78321080-69c4-4bd5-96e0-437fbf8a7853,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a48e7e19-eb5a-482a-bac3-2d423ce7070c,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-workflow2z7g2/series-workflow2z7g2-build-action-437745883/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-workflow2z7g2/series-workflow2z7g2-build-action-2076986316/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 16:21:28 +0000 UTC FinishedAt: 2026-07-14 16:22:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 16:21:28 +0000 UTC FinishedAt: 2026-07-14 16:22:13 +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":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"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-workflow2z7g2/series-workflow2z7g2-convert-artifact-1705160265/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 16:21:28 +0000 UTC FinishedAt: 2026-07-14 16:21:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 16:21:28 +0000 UTC FinishedAt: 2026-07-14 16:21:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 16:21:28 +0000 UTC FinishedAt: 2026-07-14 16:21:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 16:22:20 +0000 UTC FinishedAt: 2026-07-14 19:24:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2z7g2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_saddr_rule5p5","ipv6_fl_get_saddr","ipv6_dev_get_saddr","rt6_fill_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SUBTREES","IPV6_MULTIPLE_TABLES"],"series_id":"ff5e7ebd-5fdd-4f70-9406-a9020c08e453","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 16:22:20 +0000 UTC FinishedAt: 2026-07-14 19:24:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*78321080-69c4-4bd5-96e0-437fbf8a7853,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a48e7e19-eb5a-482a-bac3-2d423ce7070c,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-workflow2z7g2/series-workflow2z7g2-build-action-437745883/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-workflow2z7g2/series-workflow2z7g2-build-action-2076986316/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-workflow2z7g2/series-workflow2z7g2-convert-artifact-1705160265/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,}