Name: series-workflow4lw7w Phase: Succeeded StartedAt: 2026-06-23 06:41:27 +0000 UTC FinishedAt: 2026-06-23 10:52:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[0] Phase: Succeeded StartedAt: 2026-06-23 06:41:27 +0000 UTC FinishedAt: 2026-06-23 06:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 06:41:27 +0000 UTC FinishedAt: 2026-06-23 06:58:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "189ce3c81f8188fb737d59a8a8784f074e830238", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "189ce3c81f8188fb737d59a8a8784f074e830238", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG" ], "series_id": "f083a444-0640-48ca-919d-2cce5c38575a" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "memory_high_write", "memory_max_write", "user_proactive_reclaim" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWVtb3J5X2hpZ2hfd3JpdGUmIzM0OywKICAgICYjMzQ7bWVtb3J5X21heF93cml0ZSYjMzQ7LAogICAgJiMzNDt1c2VyX3Byb2FjdGl2ZV9yZWNsYWltJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgY2hlY2tzIGZvciBgbWVtY2dfaXNfZHlpbmcobWVtY2cpYCBpbiBgbWVtb3J5X2hpZ2hfd3JpdGVgLCBgbWVtb3J5X21heF93cml0ZWAgKGluIG1tL21lbWNvbnRyb2wuYyksIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgKGluIG1tL3Ztc2Nhbi5jKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdmlhIGNncm91cGZzIHdyaXRlcyAoYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBgbWVtb3J5LnJlY2xhaW1gKSBhbmQgc3lzZnMgd3JpdGVzIChgcmVjbGFpbWApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhcyB0aGV5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBieSBicmVha2luZyBvdXQgb2YgbG9vcHMgaWYgdGhlIG1lbW9yeSBjZ3JvdXAgaXMgZHlpbmcuIFRoZSBjb2RlIGlzIGd1YXJkZWQgYnkgQ09ORklHX01FTUNHLCB3aGljaCBuZWVkcyB0byBiZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2ZkNWJkZDIwOTNmZDE4NmQwMWViNDQ5ZGVkZjVlYmQ3ZGRkY2ViOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDA2OjU1OjEwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xuaW5kZXggNTZjZDRhZjA4MjMyNmIuLjA2YmRlNmM1MzE4ZjJiIDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1jb250cm9sLmNcbkBAIC00NzkzLDYgJiM0Mzs0NzkzLDkgQEAgc3RhdGljIHNzaXplX3QgbWVtb3J5X2hpZ2hfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuIFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4gXHRcdFx0YnJlYWs7XG4gXG4mIzQzO1x0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdGlmICghZHJhaW5lZCkge1xuIFx0XHRcdGRyYWluX2FsbF9zdG9jayhtZW1jZyk7XG4gXHRcdFx0ZHJhaW5lZCA9IHRydWU7XG5AQCAtNDg0NCw2ICYjNDM7NDg0Nyw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuIFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4gXHRcdFx0YnJlYWs7XG4gXG4mIzQzO1x0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdGlmICghZHJhaW5lZCkge1xuIFx0XHRcdGRyYWluX2FsbF9zdG9jayhtZW1jZyk7XG4gXHRcdFx0ZHJhaW5lZCA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggODE5MGM0YWJlYzg0MTguLjExNjJiN2Y3NjY1NWU5IDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3Ztc2Nhbi5jXG5AQCAtNzkyMiw2ICYjNDM7NzkyMiw5IEBAIGludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcbiBcdFx0aWYgKG1lbWNnKSB7XG4gXHRcdFx0dW5zaWduZWQgaW50IHJlY2xhaW1fb3B0aW9ucztcbiBcbiYjNDM7XHRcdFx0aWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdFx0cmVjbGFpbV9vcHRpb25zID0gTUVNQ0dfUkVDTEFJTV9NQVlfU1dBUCB8XG4gXHRcdFx0XHRcdCAgTUVNQ0dfUkVDTEFJTV9QUk9BQ1RJVkU7XG4gXHRcdFx0cmVjbGFpbWVkID0gdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlcyhtZW1jZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21lbW9yeV9oaWdoX3dyaXRlJiMzNDssCiAgICAmIzM0O21lbW9yeV9tYXhfd3JpdGUmIzM0OywKICAgICYjMzQ7dXNlcl9wcm9hY3RpdmVfcmVjbGFpbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGNoZWNrcyBmb3IgYG1lbWNnX2lzX2R5aW5nKG1lbWNnKWAgaW4gYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgIChpbiBtbS9tZW1jb250cm9sLmMpLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIChpbiBtbS92bXNjYW4uYykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBjZ3JvdXBmcyB3cml0ZXMgKGBtZW1vcnkuaGlnaGAsIGBtZW1vcnkubWF4YCwgYG1lbW9yeS5yZWNsYWltYCkgYW5kIHN5c2ZzIHdyaXRlcyAoYHJlY2xhaW1gKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYXMgdGhleSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgYnJlYWtpbmcgb3V0IG9mIGxvb3BzIGlmIHRoZSBtZW1vcnkgY2dyb3VwIGlzIGR5aW5nLiBUaGUgY29kZSBpcyBndWFyZGVkIGJ5IENPTkZJR19NRU1DRywgd2hpY2ggbmVlZHMgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2ZkNWJkZDIwOTNmZDE4NmQwMWViNDQ5ZGVkZjVlYmQ3ZGRkY2ViOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDA2OjU1OjEwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jCmluZGV4IDU2Y2Q0YWYwODIzMjZiLi4wNmJkZTZjNTMxOGYyYiAxMDA2NDQKLS0tIGEvbW0vbWVtY29udHJvbC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbWNvbnRyb2wuYwpAQCAtNDc5Myw2ICYjNDM7NDc5Myw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwKIAkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQogCQkJYnJlYWs7CiAKJiM0MzsJCWlmIChtZW1jZ19pc19keWluZyhtZW1jZykpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiAJCWlmICghZHJhaW5lZCkgewogCQkJZHJhaW5fYWxsX3N0b2NrKG1lbWNnKTsKIAkJCWRyYWluZWQgPSB0cnVlOwpAQCAtNDg0NCw2ICYjNDM7NDg0Nyw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLAogCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCiAJCQlicmVhazsKIAomIzQzOwkJaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKIAkJaWYgKCFkcmFpbmVkKSB7CiAJCQlkcmFpbl9hbGxfc3RvY2sobWVtY2cpOwogCQkJZHJhaW5lZCA9IHRydWU7CmRpZmYgLS1naXQgYS9tbS92bXNjYW4uYyBiL21tL3Ztc2Nhbi5jCmluZGV4IDgxOTBjNGFiZWM4NDE4Li4xMTYyYjdmNzY2NTVlOSAxMDA2NDQKLS0tIGEvbW0vdm1zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vdm1zY2FuLmMKQEAgLTc5MjIsNiAmIzQzOzc5MjIsOSBAQCBpbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsCiAJCWlmIChtZW1jZykgewogCQkJdW5zaWduZWQgaW50IHJlY2xhaW1fb3B0aW9uczsKIAomIzQzOwkJCWlmIChtZW1jZ19pc19keWluZyhtZW1jZykpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwogCQkJcmVjbGFpbV9vcHRpb25zID0gTUVNQ0dfUkVDTEFJTV9NQVlfU1dBUCB8CiAJCQkJCSAgTUVNQ0dfUkVDTEFJTV9QUk9BQ1RJVkU7CiAJCQlyZWNsYWltZWQgPSB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzKG1lbWNnLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTEwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgTWVtb3J5IENvbnRyb2xsZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbW0vbWVtY29udHJvbC5jYCBhbmQgYG1tL3Ztc2Nhbi5jYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkgYnJlYWs7YCBpbiB0aHJlZSBzcG90cy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZmlyc3QgdHdvIGFyZSBpbiBgbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAsIGJvdGggaW4gYG1tL21lbWNvbnRyb2wuY2AuIFJpZ2h0LCB0aG9zZSBhcmUgdGhlIGNncm91cCB2MiBoYW5kbGVycyBmb3IgYG1lbW9yeS5oaWdoYCBhbmQgYG1lbW9yeS5tYXhgLCB0aGUgbWVtb3J5IGxpbWl0cy4gQW5kIHRoZSB0aGlyZCBpbnN0YW5jZSBpcyBpbiBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgd2hpY2ggaXMgYWxzbyBpbiBgbW0vdm1zY2FuLmNgLCBzbyB0aGF0JiMzOTtzIHRoZSBoYW5kbGVyIGZvciB0aGUgYG1lbW9yeS5yZWNsYWltYCBjb250cm9sIGZpbGUgaW4gdGhlIGNncm91cCB2MiBtZW1vcnkgY29udHJvbGxlci4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3Mgd2hlcmUgeW91JiMzOTtkIGV4cGVjdCB0byBzZWUgdGhlc2Uga2luZHMgb2YgY2hlY2tzLgoKTm93LCB3aGF0IGFib3V0IGBtZW1jZ19pc19keWluZ2A/IEFoLCBpdCYjMzk7cyBub3QgZGVmaW5lZCBpbiB0aGUgcGF0Y2ggaXRzZWxmLCBzbyBpdCBtdXN0IGJlIHNvbWV0aGluZyBwcmUtZXhpc3RpbmcuIElzIGl0IGBtZW1fY2dyb3VwX2lzX2R5aW5nYCBvciBqdXN0IGBtZW1jZ19pc19keWluZ2A/IFRoZSBwYXRjaCBzYXlzIGBtZW1jZ19pc19keWluZ2AuIElzIHRoaXMgYSBtYWNybyBvciBhIGZ1bmN0aW9uPyBJdCBzaG91bGQgYmUgaW4gYG1tL21lbWNvbnRyb2wuY2Agb3IgYGluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oYCwgcHJvYmFibHkuIExldCYjMzk7cyBsb29rIHRoZXJlIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBtZWFucyBmb3IgYSBtZW1vcnkgY29udHJvbCBncm91cCB0byBiZSAmIzM0O2R5aW5nJiMzNDsgYW5kIHdoeSB3ZSYjMzk7cmUgYnJlYWtpbmcgb3V0IG9mIHRoZXNlIHdyaXRlIGhhbmRsZXJzIHdoZW4gdGhhdCYjMzk7cyB0aGUgY2FzZS4gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbWNnX2lzX2R5aW5nJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE3NjM9dm9pZCBtZW1fY2dyb3VwX3Nob3dfcHJvdGVjdGVkX21lbW9yeShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTc2NC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE3NjU6c3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE3NjYte1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4Mzc9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfc2hvd19wcm90ZWN0ZWRfbWVtb3J5KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODQwLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTg0MTpzdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfaXNfZHlpbmcoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0Mi17XG4tLVxubW0vbWVtY29udHJvbC5jPTgwOD1zdGF0aWMgaW5saW5lIHN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbm9uX2R5aW5nX21lbWNnX3N0YXJ0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbi0tXG5tbS9tZW1jb250cm9sLmMtODE5LVxubW0vbWVtY29udHJvbC5jOjgyMDpcdHdoaWxlIChtZW1jZ19pc19keWluZyhtZW1jZykpXG5tbS9tZW1jb250cm9sLmMtODIxLVx0XHRtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKTtcbi0tXG5tbS9tZW1jb250cm9sLmM9NDc2Nz1zdGF0aWMgc3NpemVfdCBtZW1vcnlfaGlnaF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXG4tLVxubW0vbWVtY29udHJvbC5jLTQ3OTUtXG5tbS9tZW1jb250cm9sLmM6NDc5NjpcdFx0aWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcbm1tL21lbWNvbnRyb2wuYy00Nzk3LVx0XHRcdGJyZWFrO1xuLS1cbm1tL21lbWNvbnRyb2wuYz00ODIyPXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbm1tL21lbWNvbnRyb2wuYy00ODQ5LVxubW0vbWVtY29udHJvbC5jOjQ4NTA6XHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG5tbS9tZW1jb250cm9sLmMtNDg1MS1cdFx0XHRicmVhaztcbi0tXG5tbS92bXNjYW4uYz03ODY2PWludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1Zixcbi0tXG5tbS92bXNjYW4uYy03OTI0LVxubW0vdm1zY2FuLmM6NzkyNTpcdFx0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxubW0vdm1zY2FuLmMtNzkyNi1cdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODEKCQkJCQkJCW91dHB1dDogNTkKCQkJCQkJCXRob3VnaHRzOiAxNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXcgTWVtY2cgRHlpbmcgQ2hlY2tzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgbWVtY2dfaXNfZHlpbmcobWVtY2cpYCBjaGVja3Mgd2l0aGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQgdGFyZ2V0cyBgbWVtb3J5X2hpZ2hfd3JpdGVgLCBgbWVtb3J5X21heF93cml0ZWAsIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXNlIGFyZSBhbGwgY3J1Y2lhbCBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIGNncm91cCBtZW1vcnkgbGltaXRzIGFuZCBwcm9hY3RpdmUgcmVjbGFpbSwgd2hpY2ggYXJlIGFyZWFzIEkmIzM5O20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBUaGUgZmlyc3QgdHdvLCBgbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAsIGFyZSBkZWZpbmVkIGluIGBtbS9tZW1jb250cm9sLmNgLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIHJlc2lkZXMgaW4gYG1tL3Ztc2Nhbi5jYC4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBgbW0vbWVtY29udHJvbC5jYCwgYXMgZXhwZWN0ZWQsIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19NRU1DR2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgY2hlY2tzIHdpdGhpbiBpdCBhcmUgcGFydCBvZiB0aGUgY29yZSBtZW1jZyBmdW5jdGlvbmFsaXR5LiBgbW0vdm1zY2FuLmNgIGlzIGFsd2F5cyBpbmNsdWRlZCwgYnV0IEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHdoZXRoZXIgdGhlIGluY2x1c2lvbiBvZiBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgc3BlY2lmaWNhbGx5IGd1YXJkZWQgYnkgYENPTkZJR19NRU1DR2Agb3Igc29tZSBvdGhlciBkZXBlbmRlbnQgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgY29tcGlsYXRpb24gY29udGV4dCB0byBkZXRlcm1pbmUgZXhhY3RseSBob3cgdGhlIHBhdGNoIHdpbGwgYmVoYXZlIGFjcm9zcyBkaWZmZXJlbnQgc3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5hbHlzaXMgSSBwZXJmb3JtIHdoZW4gcmV2aWV3aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVtb3J5X2hpZ2hfd3JpdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbWVtY29udHJvbC5jPTQ3NjE9c3RhdGljIGludCBtZW1vcnlfaGlnaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5tbS9tZW1jb250cm9sLmMtNDc2Ni1cbm1tL21lbWNvbnRyb2wuYzo0NzY3OnN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbm1tL21lbWNvbnRyb2wuYy00NzY4LVx0XHRcdFx0IGNoYXIgKmJ1Ziwgc2l6ZV90IG5ieXRlcywgbG9mZl90IG9mZilcbi0tXG5tbS9tZW1jb250cm9sLmM9NTAwNz1zdGF0aWMgc3RydWN0IGNmdHlwZSBtZW1vcnlfZmlsZXNbXSA9IHtcbi0tXG5tbS9tZW1jb250cm9sLmMtNTAzNi1cdFx0LnNlcV9zaG93ID0gbWVtb3J5X2hpZ2hfc2hvdyxcbm1tL21lbWNvbnRyb2wuYzo1MDM3Olx0XHQud3JpdGUgPSBtZW1vcnlfaGlnaF93cml0ZSxcbm1tL21lbWNvbnRyb2wuYy01MDM4LVx0fSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW1vcnlfbWF4X3dyaXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wuYz00ODE2PXN0YXRpYyBpbnQgbWVtb3J5X21heF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5tbS9tZW1jb250cm9sLmMtNDgyMS1cbm1tL21lbWNvbnRyb2wuYzo0ODIyOnN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxubW0vbWVtY29udHJvbC5jLTQ4MjMtXHRcdFx0XHRjaGFyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCBvZmYpXG4tLVxubW0vbWVtY29udHJvbC5jPTUwMDc9c3RhdGljIHN0cnVjdCBjZnR5cGUgbWVtb3J5X2ZpbGVzW10gPSB7XG4tLVxubW0vbWVtY29udHJvbC5jLTUwNDItXHRcdC5zZXFfc2hvdyA9IG1lbW9yeV9tYXhfc2hvdyxcbm1tL21lbWNvbnRyb2wuYzo1MDQzOlx0XHQud3JpdGUgPSBtZW1vcnlfbWF4X3dyaXRlLFxubW0vbWVtY29udHJvbC5jLTUwNDQtXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzZXJfcHJvYWN0aXZlX3JlY2xhaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaW50ZXJuYWwuaD02MjQ9ZXh0ZXJuIHZvaWQgcmVjbGFpbV90aHJvdHRsZShwZ19kYXRhX3QgKnBnZGF0LCBlbnVtIHZtc2Nhbl90aHJvdHRsZV9zdGF0ZSByZWFzb24pO1xubW0vaW50ZXJuYWwuaDo2MjU6aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxubW0vaW50ZXJuYWwuaC02MjYtXHRcdFx0ICAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBwZ19kYXRhX3QgKnBnZGF0KTtcbi0tXG5tbS9tZW1jb250cm9sLmM9NDk5ND1zdGF0aWMgc3NpemVfdCBtZW1vcnlfcmVjbGFpbShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1Zixcbi0tXG5tbS9tZW1jb250cm9sLmMtNDk5OS1cbm1tL21lbWNvbnRyb2wuYzo1MDAwOlx0cmV0ID0gdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShidWYsIG1lbWNnLCBOVUxMKTtcbm1tL21lbWNvbnRyb2wuYy01MDAxLVx0aWYgKHJldClcbi0tXG5tbS92bXNjYW4uYz03ODYwPXN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IHRva2VucyA9IHtcbi0tXG5tbS92bXNjYW4uYy03ODY1LVxubW0vdm1zY2FuLmM6Nzg2NjppbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXG5tbS92bXNjYW4uYy03ODY3LVx0XHRcdCAgIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgcGdfZGF0YV90ICpwZ2RhdClcbi0tXG5tbS92bXNjYW4uYz04MDEyPXN0YXRpYyBzc2l6ZV90IHJlY2xhaW1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbm1tL3Ztc2Nhbi5jLTgwMTctXG5tbS92bXNjYW4uYzo4MDE4Olx0cmV0ID0gdXNlcl9wcm9hY3RpdmVfcmVjbGFpbSgoY2hhciAqKWJ1ZiwgTlVMTCwgTk9ERV9EQVRBKG5pZCkpO1xubW0vdm1zY2FuLmMtODAxOS1cdHJldHVybiByZXQgPyAtRUFHQUlOIDogY291bnQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI1MQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGludHJvZHVjZXMgYGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpIGJyZWFrO2AgaW50byBhIGZldyBrZXkgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zOiBgbWVtb3J5X2hpZ2hfd3JpdGVgLCBgbWVtb3J5X21heF93cml0ZWAsIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFJpZ2h0IGF3YXksIG15IGV4cGVydCBpbnR1aXRpb24gaXMgZW5nYWdlZDsgdGhlc2UgYXJlIGNvcmUgZnVuY3Rpb25zLiBUaGV5JiMzOTtyZSBhbGwgdHJpZ2dlcmVkIGJ5IHdyaXRlcyB0byBjZ3JvdXBmcyBmaWxlczogYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBhbmQgYG1lbW9yeS5yZWNsYWltYCwgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHN5c2ZzIGByZWNsYWltYCBmb3Igbm9kZXMuIFRoaXMgaW1wYWN0cyB0aGUgY3JpdGljYWwgZXhlY3V0aW9uIGZsb3cgcmVsYXRlZCB0byBjZ3JvdXAgbWVtb3J5IGxpbWl0cyBhbmQgdGhlIHByb2FjdGl2ZSByZWNsYWltIG1lY2hhbmlzbXMuIFRoYXQgbWFrZXMgaXQgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlIOKAkyByZWFjaGFibGUgdmlhIGNncm91cGZzIGlzIGEgYmlnIHJlZCBmbGFnLiBUaGUgcGF0Y2ggYXV0aG9yIGV2ZW4gZmxhZ2dlZCBpdCBhcyBXb3J0aEZ1enppbmc9dHJ1ZS4gSSBhZ3JlZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZSwgdGhlcmUmIzM5O3MgYSBzdHJvbmcgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yLCBlZGdlIGNhc2VzLCBhbmQgcG90ZW50aWFsbHkgdnVsbmVyYWJpbGl0aWVzIHdpdGggY29uY3VycmVudCBhY2Nlc3MuCgpMZXQmIzM5O3MgZHJpbGwgZG93biBhIGJpdCBmdXJ0aGVyLiBgbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAgYXJlIGNsZWFybHkgaW4gYG1tL21lbWNvbnRyb2wuY2AgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCBpcyBpbiBgbW0vdm1zY2FuLmNgLiBJIG5lZWQgdG8gcmV2aWV3IHRob3NlIHNlY3Rpb25zIG9mIGNvZGUuIEFuZCBvYnZpb3VzbHksIHRoZSBgTUVNQ0dgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQuIEkgc2hvdWxkIGNoZWNrIGlmIHRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBhbnkgb3RoZXIgY29uZmlncywgZXZlbiBpZiBJIGRvbiYjMzk7dCBzZWUgYW55IG9idmlvdXMgb25lcyB5ZXQuIFRoaXMgbG9va3MgbGlrZSBhIGRlZmluaXRlIGNhbmRpZGF0ZSBmb3IgaW4tZGVwdGggYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19NRU1DRyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTIwNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdD00MDU9VG8gdXNlIHRoZSB1c2VyIGludGVyZmFjZTpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYxL21lbW9yeS5yc3QtNDA2LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdDo0MDc6MS4gRW5hYmxlIENPTkZJR19DR1JPVVBTIGFuZCBDT05GSUdfTUVNQ0cgb3B0aW9uc1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdC00MDgtMi4gUHJlcGFyZSB0aGUgY2dyb3VwcyAoc2VlIDpyZWY6YFdoeSBhcmUgY2dyb3VwcyBuZWVkZWQ/XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9wYWdlbWFwLnJzdD02NT1udW1iZXIgb2YgdGltZXMgYSBwYWdlIGlzIG1hcHBlZC5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3BhZ2VtYXAucnN0LTEwMS0gICBtZW1vcnkgY2dyb3VwIGVhY2ggcGFnZSBpcyBjaGFyZ2VkIHRvLCBpbmRleGVkIGJ5IFBGTi4gT25seSBhdmFpbGFibGUgd2hlblxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9wYWdlbWFwLnJzdDoxMDI6ICAgQ09ORklHX01FTUNHIGlzIHNldC5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vcGFnZW1hcC5yc3QtMTAzLVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vc2hyaW5rZXJfZGVidWdmcy5yc3Q9MTc9VXNhZ2U6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdC01OC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vc2hyaW5rZXJfZGVidWdmcy5yc3Q6NTk6ICBJZiB0aGUgc2hyaW5rZXIgaXMgbm90IG1lbWNnLWF3YXJlIG9yIENPTkZJR19NRU1DRyBpcyBvZmYsIDAgaXMgcHJpbnRlZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdC02MC0gIGFzIGNncm91cCBpbm9kZSBpZC4gSWYgdGhlIHNocmlua2VyIGlzIG5vdCBudW1hLWF3YXJlLCAwJiMzOTtzIGFyZSBwcmludGVkXG4tLVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTExPUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzoxMjpDT05GSUdfTUVNQ0c9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTEzLUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE3PUNPTkZJR19OVU1BX0JBTEFOQ0lORz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE4OkNPTkZJR19NRU1DRz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5LUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTIwPUNPTkZJR19MT0dfQlVGX1NISUZUPTE4XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjIxOkNPTkZJR19NRU1DRz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTIyLUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTIzPUNPTkZJR19OVU1BX0JBTEFOQ0lORz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjI0OkNPTkZJR19NRU1DRz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTI1LUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZz0xMT1DT05GSUdfQ0dST1VQUz15XG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZzoxMjpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWctMTMtQ09ORklHX0NHUk9VUF9TQ0hFRD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XG5hcmNoL21pcHMvY29uZmlncy9jdTEwMDAtbmVvX2RlZmNvbmZpZzo5OkNPTkZJR19NRU1DRz15XG5hcmNoL21pcHMvY29uZmlncy9jdTEwMDAtbmVvX2RlZmNvbmZpZy0xMC1DT05GSUdfQ0dST1VQX1NDSEVEPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9jdTE4MzAtbmVvX2RlZmNvbmZpZz04PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvbWlwcy9jb25maWdzL2N1MTgzMC1uZW9fZGVmY29uZmlnOjk6Q09ORklHX01FTUNHPXlcbmFyY2gvbWlwcy9jb25maWdzL2N1MTgzMC1uZW9fZGVmY29uZmlnLTEwLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9MTA9Q09ORklHX0NHUk9VUFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzoxMTpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZy0xMi1DT05GSUdfQkxLX0NHUk9VUD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTc9Q09ORklHX0lLQ09ORklHX1BST0M9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnOjg6Q09ORklHX01FTUNHPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZy05LUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc9Nz1DT05GSUdfSUtDT05GSUdfUFJPQz15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc6ODpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTktQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnPTc9Q09ORklHX0lLQ09ORklHX1BST0M9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc6ODpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWctOS1DT05GSUdfQkxLX0NHUk9VUD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc9ND1DT05GSUdfSUtDT05GSUdfUFJPQz15XG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZzo1OkNPTkZJR19NRU1DRz15XG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZy02LUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZz0xND1DT05GSUdfVEFTS19JT19BQ0NPVU5USU5HPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnOjE1OkNPTkZJR19NRU1DRz15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy0xNi1DT05GSUdfQkxLX0NHUk9VUD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZz0xNj1DT05GSUdfVEFTS19JT19BQ0NPVU5USU5HPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6MTc6Q09ORklHX01FTUNHPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctMTgtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnOjExOkNPTkZJR19NRU1DRz15XG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZy0xMi1DT05GSUdfQ0dST1VQX1NDSEVEPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy92b2NvcmUyX2RlZmNvbmZpZz0xMD1DT05GSUdfQ0dST1VQUz15XG5hcmNoL21pcHMvY29uZmlncy92b2NvcmUyX2RlZmNvbmZpZzoxMTpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9TQ0hFRD15XG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0xNT1DT05GSUdfQ0dST1VQUz15XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnOjE2OkNPTkZJR19NRU1DRz15XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTE3LUNPTkZJR19DR1JPVVBfUElEUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9MTg9Q09ORklHX0NHUk9VUFM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTk6Q09ORklHX01FTUNHPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTIwLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0yMj1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjIzOkNPTkZJR19NRU1DRz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctMjQtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX01FTUNHPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWctMTAtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0yND1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjI1OkNPTkZJR19NRU1DRz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMjYtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0yMj1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjIzOkNPTkZJR19NRU1DRz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMjQtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzoxMzpDT05GSUdfTUVNQ0c9eVxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9MTI9Q09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc6MTM6Q09ORklHX01FTUNHPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZzoxMzpDT05GSUdfTUVNQ0c9eVxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0NQVUFDQ1Q9eVxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjEzOkNPTkZJR19NRU1DRz15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWc9Nz1DT05GSUdfQlNEX1BST0NFU1NfQUNDVD15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3ZpcnRfZGVmY29uZmlnOjg6Q09ORklHX01FTUNHPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWctOS1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZz03PUNPTkZJR19CU0RfUFJPQ0VTU19BQ0NUPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZzo4OkNPTkZJR19NRU1DRz15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctOS1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYz0xNTU2PXN0cnVjdCBjZ3JvdXBfc3Vic3lzIGlvX2NncnBfc3Vic3lzID0ge1xuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy0xNTY1LVx0LmV4aXQgPSBibGtjZ19leGl0LFxuYmxvY2svYmxrLWNncm91cC5jOjE1NjY6I2lmZGVmIENPTkZJR19NRU1DR1xuYmxvY2svYmxrLWNncm91cC5jLTE1NjctXHQvKlxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjA0PXN0YXRpYyBpbnQgYWNwaV9zY2FuX3RyeV90b19vZmZsaW5lKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjEyLVx0ICogYmVjYXVzZSBpZiB0aGUgZGV2aWNlcyBpbiBxdWVzdGlvbiBhcmUgbWVtb3J5IGJsb2NrcyBhbmRcbmRyaXZlcnMvYWNwaS9zY2FuLmM6MjEzOlx0ICogQ09ORklHX01FTUNHIGlzIHNldCwgb25lIG9mIHRoZSBibG9ja3MgbWF5IGhvbGQgZGF0YSBzdHJ1Y3R1cmVzXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTIxNC1cdCAqIHRoYXQgdGhlIG90aGVyIGJsb2NrcyBkZXBlbmQgb24sIGJ1dCBpdCBpcyBub3Qga25vd24gaW4gYWR2YW5jZSB3aGljaFxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE4NTE9c3RhdGljIGJsa19zdGF0dXNfdCBsb29wX3F1ZXVlX3JxKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LFxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE4NzktXHRcdGNtZC1cdTAwM2VibGtjZ19jc3MgPSBiaW9fYmxrY2dfY3NzKHJxLVx1MDAzZWJpbyk7XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxODgwOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE4ODEtXHRcdGlmIChjbWQtXHUwMDNlYmxrY2dfY3NzKSB7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5jPTE5PUlPUFRERVNDX01BVENIKF9yZWZjb3VudCwgX19wYWdlX3JlZmNvdW50KTtcbmRyaXZlcnMvaW9tbXUvaW9tbXUtcGFnZXMuYzoyMDojaWZkZWYgQ09ORklHX01FTUNHXG5kcml2ZXJzL2lvbW11L2lvbW11LXBhZ2VzLmMtMjEtSU9QVERFU0NfTUFUQ0gobWVtY2dfZGF0YSwgbWVtY2dfZGF0YSk7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oPTE5PXN0cnVjdCBpb3B0ZGVzYyB7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oLTMxLVx0YXRvbWljX3QgX19wYWdlX3JlZmNvdW50O1xuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oOjMyOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmRyaXZlcnMvaW9tbXUvaW9tbXUtcGFnZXMuaC0zMy1cdHVuc2lnbmVkIGxvbmcgbWVtY2dfZGF0YTtcbi0tXG5mcy9wcm9jL3BhZ2UuYz0yNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jX29wcyBrcGFnZWZsYWdzX3Byb2Nfb3BzID0ge1xuLS1cbmZzL3Byb2MvcGFnZS5jLTI3Ni1cbmZzL3Byb2MvcGFnZS5jOjI3NzojaWZkZWYgQ09ORklHX01FTUNHXG5mcy9wcm9jL3BhZ2UuYy0yNzgtc3RhdGljIHNzaXplX3Qga3BhZ2VjZ3JvdXBfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5mcy9wcm9jL3BhZ2UuYz0yODM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jX29wcyBrcGFnZWNncm91cF9wcm9jX29wcyA9IHtcbi0tXG5mcy9wcm9jL3BhZ2UuYy0yODctfTtcbmZzL3Byb2MvcGFnZS5jOjI4ODojZW5kaWYgLyogQ09ORklHX01FTUNHICovXG5mcy9wcm9jL3BhZ2UuYy0yODktXG5mcy9wcm9jL3BhZ2UuYz0yOTA9c3RhdGljIGludCBfX2luaXQgcHJvY19wYWdlX2luaXQodm9pZClcbi0tXG5mcy9wcm9jL3BhZ2UuYy0yOTMtXHRwcm9jX2NyZWF0ZShcJiMzNDtrcGFnZWZsYWdzXCYjMzQ7LCBTX0lSVVNSLCBOVUxMLCBcdTAwMjZrcGFnZWZsYWdzX3Byb2Nfb3BzKTtcbmZzL3Byb2MvcGFnZS5jOjI5NDojaWZkZWYgQ09ORklHX01FTUNHXG5mcy9wcm9jL3BhZ2UuYy0yOTUtXHRwcm9jX2NyZWF0ZShcJiMzNDtrcGFnZWNncm91cFwmIzM0OywgU19JUlVTUiwgTlVMTCwgXHUwMDI2a3BhZ2VjZ3JvdXBfcHJvY19vcHMpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9Mjk2PXN0cnVjdCBicGZfbWFwIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMxNS1cdHN0cnVjdCBidGYgKmJ0ZjtcbmluY2x1ZGUvbGludXgvYnBmLmg6MzE2OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE3LVx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjY1ND1pbnQgYnBmX21hcF9hbGxvY19wYWdlcyhjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbmlkLFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjU1LVx0XHRcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIHN0cnVjdCBwYWdlICoqcGFnZV9hcnJheSk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI2NTY6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9icGYuaC0yNjU3LXZvaWQgYnBmX21hcF9tZW1jZ19lbnRlcihjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgbWVtX2Nncm91cCAqKm9sZF9tZW1jZyxcbi0tXG5pbmNsdWRlL2xpbnV4L2Nncm91cF9zdWJzeXMuaD0yNT1TVUJTWVMoaW8pXG4tLVxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmgtMjctXG5pbmNsdWRlL2xpbnV4L2Nncm91cF9zdWJzeXMuaDoyODojaWYgSVNfRU5BQkxFRChDT05GSUdfTUVNQ0cpXG5pbmNsdWRlL2xpbnV4L2Nncm91cF9zdWJzeXMuaC0yOS1TVUJTWVMobWVtb3J5KVxuLS1cbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaD01MT1zdHJ1Y3QgbGlzdF9scnUge1xuaW5jbHVkZS9saW51eC9saXN0X2xydS5oLTUyLVx0c3RydWN0IGxpc3RfbHJ1X25vZGVcdCpub2RlO1xuaW5jbHVkZS9saW51eC9saXN0X2xydS5oOjUzOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC01NC1cdHN0cnVjdCBsaXN0X2hlYWRcdGxpc3Q7XG4tLVxuaW5jbHVkZS9saW51eC9saXN0X2xydS5oPTgyPWludCBtZW1jZ19saXN0X2xydV9hbGxvYyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBsaXN0X2xydSAqbHJ1LFxuLS1cbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC04NC1cbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaDo4NTojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgtODYtLyoqXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9NjA9c3RydWN0IG1lbV9jZ3JvdXBfcmVjbGFpbV9jb29raWUge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTY0LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6NjU6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtNjYtXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9ODk9c3RydWN0IG1lbV9jZ3JvdXBfcGVyX25vZGUge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6OTg6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTktXHQvKlxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTEyOC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjEyOTojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xMzAtXHQvKiBzbGFiIHN0YXRzIGZvciBubWkgY29udGV4dCAqL1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTIwMj1zdHJ1Y3QgbWVtX2Nncm91cCB7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjU3LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MjU4OiNpZmRlZiBDT05GSUdfTUVNQ0dfTk1JX1NBRkVUWV9SRVFVSVJFU19BVE9NSUNcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTI1OS1cdC8qIE1FTUNHX0tNRU0gZm9yIG5taSBjb250ZXh0ICovXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjg1LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6Mjg2OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTI4Ny1cdC8qIExlZ2FjeSBjb25zdW1lci1vcmllbnRlZCBjb3VudGVycyAqL1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTMyMC1cdHNwaW5sb2NrX3QgZXZlbnRfbGlzdF9sb2NrO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MzIxOiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTMyMi1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0zMzU9ZW51bSBwYWdlX21lbWNnX2RhdGFfZmxhZ3Mge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTM0Ni1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjM0NzojZWxzZSAvKiBDT05GSUdfTUVNQ0cgKi9cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTM0OC1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNTEtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDozNTI6I2VuZGlmIC8qIENPTkZJR19NRU1DRyAqL1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzUzLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MzU0PWVudW0gb2JqZXh0X2ZsYWdzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNjctXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDozNjg6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzY5LS8qXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTAyNz1leHRlcm4gaW50IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjEwMjg6I2Vsc2UgLyogQ09ORklHX01FTUNHICovXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xMDI5LVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE0NDA9c3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF9pbml0KHZvaWQpIHsgcmV0dXJuIDA7IH1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE0NDE6I2VuZGlmIC8qIENPTkZJR19NRU1DRyAqL1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQ0Mi1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNDQ3PXN0cnVjdCBzbGFib2JqX2V4dCB7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxNDQ4OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE0NDktXHRzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2c7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTU4NT1zdHJ1Y3Qgc29jaztcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE1ODY6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTU4Ny1leHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgbWVtY2dfc29ja2V0c19lbmFibGVkX2tleTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNjczPXN0YXRpYyBpbmxpbmUgaW50IHNocmlua2VyX2lkKHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTY3OC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE2Nzk6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTY4MC1ib29sIG1lbV9jZ3JvdXBfa21lbV9kaXNhYmxlZCh2b2lkKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xODQxPXN0YXRpYyBpbmxpbmUgYm9vbCBtZW1jZ19pc19keWluZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0NC19XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODQ1OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDYtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODQ3OiNpZiBkZWZpbmVkKENPTkZJR19NRU1DRykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1pTV0FQKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0OC1ib29sIG9ial9jZ3JvdXBfbWF5X3pzd2FwKHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZyk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTg2NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtX2Nncm91cF96c3dhcF93cml0ZWJhY2tfZW5hYmxlZChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg3NC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4NzU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg3Ni11bnNpZ25lZCBsb25nIG1lbWNnMV9zb2Z0X2xpbWl0X3JlY2xhaW0ocGdfZGF0YV90ICpwZ2RhdCwgaW50IG9yZGVyLFxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4OTM9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfZXhpdF91c2VyX2ZhdWx0KHZvaWQpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg5OC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4OTk6I2Vsc2UgLyogQ09ORklHX01FTUNHX1YxICovXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTAwLXN0YXRpYyBpbmxpbmVcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xOTIyPXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX2V4aXRfdXNlcl9mYXVsdCh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE5MjUtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxOTI2OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE5MjctXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxOTI4OiNpZiBkZWZpbmVkKENPTkZJR19NRU1DR19WMSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NXQVApXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI5LVxuLS1cbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg9NDc9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHVwZGF0ZV9scnVfc2l6ZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXG4tLVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01MS1cdF9fdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6aWQsIG5yX3BhZ2VzKTtcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg6NTI6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01My1cdG1lbV9jZ3JvdXBfdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6aWQsIG5yX3BhZ2VzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9Nzk9c3RydWN0IHBhZ2Uge1xuLS1cbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xODUtXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTg2OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xODctXHR1bnNpZ25lZCBsb25nIG1lbWNnX2RhdGE7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTMxMj10eXBlZGVmIHN3cF9lbnRyeV90IHNvZnRsZWFmX3Q7XG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMzEzLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjMxNDojaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIHx8IGRlZmluZWQoQ09ORklHX1NMQUJfT0JKX0VYVClcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0zMTUtLyogV2UgaGF2ZSBzb21lIGV4dHJhIHJvb20gYWZ0ZXIgdGhlIHJlZmNvdW50IGluIHRhaWwgcGFnZXMuICovXG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTQwMT1zdHJ1Y3QgZm9saW8ge1xuLS1cbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC00MzEtXHRcdFx0YXRvbWljX3QgX3JlZmNvdW50O1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjQzMjojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtNDMzLVx0XHRcdHVuc2lnbmVkIGxvbmcgbWVtY2dfZGF0YTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9NTE3PUZPTElPX01BVENIKF9yZWZjb3VudCwgX3JlZmNvdW50KTtcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDo1MTg6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTUxOS1GT0xJT19NQVRDSChtZW1jZ19kYXRhLCBtZW1jZ19kYXRhKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9NTcyPXN0cnVjdCBwdGRlc2Mge1xuLS1cbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MDMtXHRhdG9taWNfdCBfX3BhZ2VfcmVmY291bnQ7XG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6NjA0OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MDUtXHR1bnNpZ25lZCBsb25nIHB0X21lbWNnX2RhdGE7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTYxOD1UQUJMRV9NQVRDSChfcmVmY291bnQsIF9fcGFnZV9yZWZjb3VudCk7XG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6NjE5OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MjAtVEFCTEVfTUFUQ0gobWVtY2dfZGF0YSwgcHRfbWVtY2dfZGF0YSk7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTExNTk9c3RydWN0IG1tX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMTgtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTMxOTojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTMyMC1cdFx0Lypcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTQwNC1cdFx0XHR1bnNpZ25lZCBsb25nIGJpdG1hcDtcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDoxNDA1OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xNDA2LVx0XHRcdC8qIHBvaW50cyB0byB0aGUgbWVtY2cgb2YgXCYjMzQ7b3duZXJcJiMzNDsgYWJvdmUgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9MTQ5ND1zdGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dlbl9pbml0X21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xNDk3LVx0bW0tXHUwMDNlbHJ1X2dlbi5iaXRtYXAgPSAwO1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjE0OTg6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE0OTktXHRtbS1cdTAwM2VscnVfZ2VuLm1lbWNnID0gTlVMTDtcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTc1OD1zdHJ1Y3QgbHJ1dmVjIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTc4Mi0jZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cbmluY2x1ZGUvbGludXgvbW16b25lLmg6NzgzOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW16b25lLmgtNzg0LVx0c3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdDtcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTE2NTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGdsaXN0X2RhdGEgKmxydXZlY19wZ2RhdChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE2NTMte1xuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxNjU0OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTY1NS1cdHJldHVybiBscnV2ZWMtXHUwMDNlcGdkYXQ7XG4tLVxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaD05MD1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV9jb3VudGVyX3Jlc2V0X3dhdGVybWFyayhzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmgtMTAxLVxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaDoxMDI6I2lmIElTX0VOQUJMRUQoQ09ORklHX01FTUNHKSB8fCBJU19FTkFCTEVEKENPTkZJR19DR1JPVVBfRE1FTSlcbmluY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmgtMTAzLXZvaWQgcGFnZV9jb3VudGVyX2NhbGN1bGF0ZV9wcm90ZWN0aW9uKHN0cnVjdCBwYWdlX2NvdW50ZXIgKnJvb3QsXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oPTgyMD1zdHJ1Y3QgdGFza19zdHJ1Y3Qge1xuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMDEzLSNlbmRpZlxuaW5jbHVkZS9saW51eC9zY2hlZC5oOjEwMTQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEwMTUtXHR1bnNpZ25lZFx0XHRcdGluX3VzZXJfZmF1bHQ6MTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTUyOS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxNTMwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTMxLVx0c3RydWN0IG1lbV9jZ3JvdXBcdFx0Km1lbWNnX2luX29vbTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTUzMy1cbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxNTM0OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTM1LVx0LyogTnVtYmVyIG9mIHBhZ2VzIHRvIHJlY2xhaW0gb24gcmV0dXJuaW5nIHRvIHVzZXJsYW5kOiAqL1xuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaD0xNjE9ZXh0ZXJuIHZvaWQgZXhlY19tbV9yZWxlYXNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBzdHJ1Y3QgbW1fc3RydWN0ICopO1xuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oLTE2Mi1cbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaDoxNjM6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oLTE2NC1leHRlcm4gdm9pZCBtbV91cGRhdGVfbmV4dF9vd25lcihzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oPTE2Nj1zdGF0aWMgaW5saW5lIHZvaWQgbW1fdXBkYXRlX25leHRfb3duZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oLTE2OC19XG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg6MTY5OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaC0xNzAtXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oPTQ2OT1zdGF0aWMgaW5saW5lIHZvaWQgbWVtYWxsb2NfcGluX3Jlc3RvcmUodW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaC00NzMtXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg6NDc0OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaC00NzUtREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCBtZW1fY2dyb3VwICosIGludF9hY3RpdmVfbWVtY2cpO1xuLS1cbmluY2x1ZGUvbGludXgvc2hyaW5rZXIuaD04Mj1zdHJ1Y3Qgc2hyaW5rZXIge1xuLS1cbmluY2x1ZGUvbGludXgvc2hyaW5rZXIuaC0xMDYtXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG5pbmNsdWRlL2xpbnV4L3Nocmlua2VyLmg6MTA3OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2hyaW5rZXIuaC0xMDgtXHQvKiBJRCBpbiBzaHJpbmtlcl9pZHIgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD0yNj1lbnVtIF9zbGFiX2ZsYWdfYml0cyB7XG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtNDUtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo0NjojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC00Ny1cdF9TTEFCX0FDQ09VTlQsXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjAxLSAqL1xuaW5jbHVkZS9saW51eC9zbGFiLmg6MjAyOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2xhYi5oLTIwMy0jIGRlZmluZSBTTEFCX0FDQ09VTlRcdFx0X19TTEFCX0ZMQUdfQklUKF9TTEFCX0FDQ09VTlQpXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmg9NjI5PWVudW0ga21hbGxvY19jYWNoZV90eXBlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC02MzMtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2MzQ6I2lmbmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2xhYi5oLTYzNS1cdEtNQUxMT0NfQ0dST1VQID0gS01BTExPQ19OT1JNQUwsXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjQ2LSNlbmRpZlxuaW5jbHVkZS9saW51eC9zbGFiLmg6NjQ3OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY0OC1cdEtNQUxMT0NfQ0dST1VQLFxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oPTY1NT1leHRlcm4ga21lbV9idWNrZXRzIGttYWxsb2NfY2FjaGVzW05SX0tNQUxMT0NfVFlQRVNdO1xuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTY2Mi1cdChJU19FTkFCTEVEKENPTkZJR19aT05FX0RNQSkgICA/IF9fR0ZQX0RNQSA6IDApIHxcdFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2NjM6XHQoSVNfRU5BQkxFRChDT05GSUdfTUVNQ0cpID8gX19HRlBfQUNDT1VOVCA6IDApKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjY0LVxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oPTY2Nz1zdGF0aWMgX19hbHdheXNfaW5saW5lIGVudW0ga21hbGxvY19jYWNoZV90eXBlIGttYWxsb2NfdHlwZShnZnBfdCBmbGFncywgdW5zaWduZWQgbG9uZyBjYWxsZXIpXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjkwLVx0XHRyZXR1cm4gS01BTExPQ19ETUE7XG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2OTE6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01FTUNHKSB8fCAoZmxhZ3MgXHUwMDI2IF9fR0ZQX1JFQ0xBSU1BQkxFKSlcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY5Mi1cdFx0cmV0dXJuIEtNQUxMT0NfUkVDTEFJTTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD03NzA9dm9pZCAqa21lbV9jYWNoZV9hbGxvY19scnVfbm9wcm9mKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3QgbGlzdF9scnUgKmxydSxcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC03OTMtICpcbmluY2x1ZGUvbGludXgvc2xhYi5oOjc5NDogKiAxLiBGb3IgIUNPTkZJR19NRU1DRyBvciBjZ3JvdXBfZGlzYWJsZT1tZW1vcnkgc3lzdGVtcy5cbmluY2x1ZGUvbGludXgvc2xhYi5oLTc5NS0gKiAyLiBBbHJlYWR5IGNoYXJnZWQgc2xhYiBvYmplY3RzLlxuLS1cbmluY2x1ZGUvbGludXgvc3dhcC5oPTUzND1zdGF0aWMgaW5saW5lIGludCBhZGRfc3dhcF9leHRlbnQoc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpcyxcbi0tXG5pbmNsdWRlL2xpbnV4L3N3YXAuaC01NDAtI2VuZGlmIC8qIENPTkZJR19TV0FQICovXG5pbmNsdWRlL2xpbnV4L3N3YXAuaDo1NDE6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9zd2FwLmgtNTQyLXN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfc3dhcHBpbmVzcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxuaW5jbHVkZS9saW51eC9zd2FwLmg9NTU3PXN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfc3dhcHBpbmVzcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtKVxuLS1cbmluY2x1ZGUvbGludXgvc3dhcC5oLTU2Mi1cbmluY2x1ZGUvbGludXgvc3dhcC5oOjU2MzojaWYgZGVmaW5lZChDT05GSUdfU1dBUCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTUNHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQkxLX0NHUk9VUClcbmluY2x1ZGUvbGludXgvc3dhcC5oLTU2NC12b2lkIF9fZm9saW9fdGhyb3R0bGVfc3dhcHJhdGUoc3RydWN0IGZvbGlvICpmb2xpbywgZ2ZwX3QgZ2ZwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3N3YXAuaD01NzI9c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcClcbi0tXG5pbmNsdWRlL2xpbnV4L3N3YXAuaC01NzYtXG5pbmNsdWRlL2xpbnV4L3N3YXAuaDo1Nzc6I2lmIGRlZmluZWQoQ09ORklHX01FTUNHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfU1dBUClcbmluY2x1ZGUvbGludXgvc3dhcC5oLTU3OC1pbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaD0zMD1zdHJ1Y3QgbWVtX2Nncm91cDtcbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oLTMxLVxuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmg6MzI6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmgtMzMtdm9pZCB2bXByZXNzdXJlKGdmcF90IGdmcCwgaW50IG9yZGVyLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGJvb2wgdHJlZSxcbi0tXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaD01MD1zdGF0aWMgaW5saW5lIHZvaWQgdm1wcmVzc3VyZV9wcmlvKGdmcF90IGdmcCwgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmgtNTEtXHRcdFx0XHQgICBpbnQgcHJpbykge31cbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oOjUyOiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oLTUzLSNlbmRpZiAvKiBfX0xJTlVYX1ZNUFJFU1NVUkVfSCAqL1xuLS1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg9NTA3PXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqdm1fZXZlbnRfbmFtZShlbnVtIHZtX2V2ZW50X2l0ZW0gaXRlbSlcbi0tXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oLTUxNi1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg6NTE3OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvdm1zdGF0LmgtNTE4LVxuLS1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg9NTQ1PXN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbHJ1dmVjX3BhZ2Vfc3RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuaW5jbHVkZS9saW51eC92bXN0YXQuaC01NTAtXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oOjU1MTojZW5kaWYgLyogQ09ORklHX01FTUNHICovXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oLTU1Mi1cbi0tXG5pbmNsdWRlL25ldC9zb2NrLmg9MzY1PXN0cnVjdCBzb2NrIHtcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmgtNDYwLVx0c3RydWN0IHNvY2tldFx0XHQqc2tfc29ja2V0O1xuaW5jbHVkZS9uZXQvc29jay5oOjQ2MTojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL25ldC9zb2NrLmgtNDYyLVx0c3RydWN0IG1lbV9jZ3JvdXBcdCpza19tZW1jZztcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmg9MjY2Mj1zdGF0aWMgaW5saW5lIGdmcF90IGdmcF9tZW1jZ19jaGFyZ2Uodm9pZClcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY2Ni1cbmluY2x1ZGUvbmV0L3NvY2suaDoyNjY3OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjY4LXN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbV9jZ3JvdXBfZnJvbV9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9uZXQvc29jay5oPTI2Nzg9c3RhdGljIGlubGluZSBib29sIG1lbV9jZ3JvdXBfc2tfdW5kZXJfbWVtb3J5X3ByZXNzdXJlKGNvbnN0IHN0cnVjdCBzb2NrICpzaylcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4MS1cbmluY2x1ZGUvbmV0L3NvY2suaDoyNjgyOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjgzLVx0aWYgKCFjZ3JvdXBfc3Vic3lzX29uX2RmbChtZW1vcnlfY2dycF9zdWJzeXMpKVxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODQtXHRcdHJldHVybiAhIW1lbWNnLVx1MDAzZXRjcG1lbV9wcmVzc3VyZTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY4MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19NRU1DR19WMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD04OT1zdHJ1Y3QgbWVtX2Nncm91cF9wZXJfbm9kZSB7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTctXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5ODojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05OS1cdC8qXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MjAyPXN0cnVjdCBtZW1fY2dyb3VwIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0yODUtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoyODY6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjg3LVx0LyogTGVnYWN5IGNvbnN1bWVyLW9yaWVudGVkIGNvdW50ZXJzICovXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzIwLVx0c3BpbmxvY2tfdCBldmVudF9saXN0X2xvY2s7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDozMjE6I2VuZGlmIC8qIENPTkZJR19NRU1DR19WMSAqL1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzIyLVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4NjU9c3RhdGljIGlubGluZSBib29sIG1lbV9jZ3JvdXBfenN3YXBfd3JpdGViYWNrX2VuYWJsZWQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NzQtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODc1OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NzYtdW5zaWduZWQgbG9uZyBtZW1jZzFfc29mdF9saW1pdF9yZWNsYWltKHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlcixcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xODkzPXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX2V4aXRfdXNlcl9mYXVsdCh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4OTgtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODk5OiNlbHNlIC8qIENPTkZJR19NRU1DR19WMSAqL1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkwMC1zdGF0aWMgaW5saW5lXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTkyMj1zdGF0aWMgaW5saW5lIHZvaWQgbWVtX2Nncm91cF9leGl0X3VzZXJfZmF1bHQodm9pZClcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI1LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTkyNjojZW5kaWYgLyogQ09ORklHX01FTUNHX1YxICovXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI3LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTkyODojaWYgZGVmaW5lZChDT05GSUdfTUVNQ0dfVjEpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkyOS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODIwPXN0cnVjdCB0YXNrX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEwMTMtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTAxNDojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTAxNS1cdHVuc2lnbmVkXHRcdFx0aW5fdXNlcl9mYXVsdDoxO1xuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTI5LVxuaW5jbHVkZS9saW51eC9zY2hlZC5oOjE1MzA6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTE1MzEtXHRzdHJ1Y3QgbWVtX2Nncm91cFx0XHQqbWVtY2dfaW5fb29tO1xuLS1cbmluY2x1ZGUvbmV0L3NvY2suaD0yNjc4PXN0YXRpYyBpbmxpbmUgYm9vbCBtZW1fY2dyb3VwX3NrX3VuZGVyX21lbW9yeV9wcmVzc3VyZShjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODEtXG5pbmNsdWRlL25ldC9zb2NrLmg6MjY4MjojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4My1cdGlmICghY2dyb3VwX3N1YnN5c19vbl9kZmwobWVtb3J5X2NncnBfc3Vic3lzKSlcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjg0LVx0XHRyZXR1cm4gISFtZW1jZy1cdTAwM2V0Y3BtZW1fcHJlc3N1cmU7XG5pbmNsdWRlL25ldC9zb2NrLmg6MjY4NTojZW5kaWYgLyogQ09ORklHX01FTUNHX1YxICovXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4Ni1cbi0tXG5tbS9NYWtlZmlsZT0xMDM9b2JqLSQoQ09ORklHX0xJVkVVUERBVEVfTUVNRkQpICYjNDM7PSBtZW1mZF9sdW8ub1xubW0vTWFrZWZpbGU6MTA0Om9iai0kKENPTkZJR19NRU1DR19WMSkgJiM0Mzs9IG1lbWNvbnRyb2wtdjEub1xubW0vTWFrZWZpbGUtMTA1LW9iai0kKENPTkZJR19NRU1DRykgJiM0Mzs9IG1lbWNvbnRyb2wubyB2bXByZXNzdXJlLm9cbi0tXG5tbS9tZW1jb250cm9sLXYxLmg9MzA9c3RydWN0IG1lbV9jZ3JvdXAgKm1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9nZXRfb25saW5lKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbi0tXG5tbS9tZW1jb250cm9sLXYxLmgtMzMtLyogQ2dyb3VwIHYxLXNwZWNpZmljIGRlY2xhcmF0aW9ucyAqL1xubW0vbWVtY29udHJvbC12MS5oOjM0OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wtdjEuaC0zNS1cbi0tXG5tbS9tZW1jb250cm9sLXYxLmg9OTc9ZXh0ZXJuIHN0cnVjdCBjZnR5cGUgbWVtX2Nncm91cF9sZWdhY3lfZmlsZXNbXTtcbm1tL21lbWNvbnRyb2wtdjEuaC05OC1cbm1tL21lbWNvbnRyb2wtdjEuaDo5OTojZWxzZVx0LyogQ09ORklHX01FTUNHX1YxICovXG5tbS9tZW1jb250cm9sLXYxLmgtMTAwLVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuaD0xMjc9c3RhdGljIGlubGluZSB2b2lkIG1lbWNnMV91bmNoYXJnZV9za21lbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGludCBucl9wYWdlcykge31cbm1tL21lbWNvbnRyb2wtdjEuaC0xMjgtXG5tbS9tZW1jb250cm9sLXYxLmg6MTI5OiNlbmRpZlx0LyogQ09ORklHX01FTUNHX1YxICovXG5tbS9tZW1jb250cm9sLXYxLmgtMTMwLVxuLS1cbm1tL21lbWNvbnRyb2wuYz0yMDk9c3RhdGljIGlubGluZSBzdHJ1Y3Qgb2JqX2Nncm91cCAqX19tZW1jZ19yZXBhcmVudF9vYmpjZ3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL21lbWNvbnRyb2wuYy0yMjgtXG5tbS9tZW1jb250cm9sLmM6MjI5OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0yMzAtc3RhdGljIHZvaWQgX19tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgYm9vbCBmb3JjZSk7XG4tLVxubW0vbWVtY29udHJvbC5jPTUwNT11bnNpZ25lZCBsb25nIGxydXZlY19wYWdlX3N0YXRlX2xvY2FsKHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS9tZW1jb250cm9sLmMtNTI3LVxubW0vbWVtY29udHJvbC5jOjUyODojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtNTI5LXN0YXRpYyB2b2lkIF9fbW9kX21lbWNnX2xydXZlY19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cF9wZXJfbm9kZSAqcG4sXG4tLVxubW0vbWVtY29udHJvbC5jPTU1Mz1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1lbWNnX3ZtX2V2ZW50X3N0YXRbXSA9IHtcbm1tL21lbWNvbnRyb2wuYzo1NTQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTU1NS1cdFBHUEdJTixcbi0tXG5tbS9tZW1jb250cm9sLmM9Nzg3PXN0YXRpYyBsb25nIG1lbWNnX3N0YXRlX3ZhbF9pbl9wYWdlcyhpbnQgaWR4LCBsb25nIHZhbClcbi0tXG5tbS9tZW1jb250cm9sLmMtODAyLVxubW0vbWVtY29udHJvbC5jOjgwMzojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtODA0LS8qXG4tLVxubW0vbWVtY29udHJvbC5jPTg3MT12b2lkIG1vZF9tZW1jZ19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGVudW0gbWVtY2dfc3RhdF9pdGVtIGlkeCxcbi0tXG5tbS9tZW1jb250cm9sLmMtODgzLVxubW0vbWVtY29udHJvbC5jOjg4NDojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtODg1LS8qIGlkeCBjYW4gYmUgb2YgdHlwZSBlbnVtIG1lbWNnX3N0YXRfaXRlbSBvciBub2RlX3N0YXRfaXRlbS4gKi9cbi0tXG5tbS9tZW1jb250cm9sLmM9MTA1OT1ib29sIG1lbWNnX3ZtX2V2ZW50X2l0ZW1fdmFsaWQoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcbi0tXG5tbS9tZW1jb250cm9sLmMtMTA2Ni1cbm1tL21lbWNvbnRyb2wuYzoxMDY3OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xMDY4LXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxuLS1cbm1tL21lbWNvbnRyb2wuYz0xNjY3PXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcbi0tXG5tbS9tZW1jb250cm9sLmMtMTY3Mi1cbm1tL21lbWNvbnRyb2wuYzoxNjczOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xNjc0LXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9sb2NhbF9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcbi0tXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xNzM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShtZW1jZ192bV9ldmVudF9zdGF0KTsgaSYjNDM7JiM0MzspIHtcbm1tL21lbWNvbnRyb2wuYzoxNzQwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xNzQxLVx0XHRpZiAobWVtY2dfdm1fZXZlbnRfc3RhdFtpXSA9PSBQR1BHSU4gfHxcbi0tXG5tbS9tZW1jb250cm9sLmM9MTc5MT12b2lkIG1lbV9jZ3JvdXBfcHJpbnRfb29tX21lbWluZm8oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xODEyLVx0XHRcdGF0b21pY19sb25nX3JlYWQoXHUwMDI2bWVtY2ctXHUwMDNlbWVtb3J5X2V2ZW50c1tNRU1DR19TV0FQX01BWF0pKTtcbm1tL21lbWNvbnRyb2wuYzoxODEzOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xODE0LVx0ZWxzZSB7XG4tLVxubW0vbWVtY29udHJvbC5jPTQxNTY9bWVtX2Nncm91cF9jc3NfYWxsb2Moc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKnBhcmVudF9jc3MpXG4tLVxubW0vbWVtY29udHJvbC5jLTQxNzktXHRcdHBhZ2VfY291bnRlcl9pbml0KFx1MDAyNm1lbWNnLVx1MDAzZXN3YXAsIFx1MDAyNnBhcmVudC1cdTAwM2Vzd2FwLCBmYWxzZSk7XG5tbS9tZW1jb250cm9sLmM6NDE4MDojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtNDE4MS1cdFx0bWVtY2ctXHUwMDNlbWVtb3J5LnRyYWNrX2ZhaWxjbnQgPSAhbWVtY2dfb25fZGZsO1xuLS1cbm1tL21lbWNvbnRyb2wuYy00MTkwLVx0XHRwYWdlX2NvdW50ZXJfaW5pdChcdTAwMjZtZW1jZy1cdTAwM2Vzd2FwLCBOVUxMLCBmYWxzZSk7XG5tbS9tZW1jb250cm9sLmM6NDE5MTojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtNDE5Mi1cdFx0cGFnZV9jb3VudGVyX2luaXQoXHUwMDI2bWVtY2ctXHUwMDNla21lbSwgTlVMTCwgZmFsc2UpO1xuLS1cbm1tL21lbWNvbnRyb2wuYz00MzU4PXN0YXRpYyB2b2lkIG1lbV9jZ3JvdXBfY3NzX3Jlc2V0KHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MpXG4tLVxubW0vbWVtY29udHJvbC5jLTQzNjMtXHRwYWdlX2NvdW50ZXJfc2V0X21heChcdTAwMjZtZW1jZy1cdTAwM2Vzd2FwLCBQQUdFX0NPVU5URVJfTUFYKTtcbm1tL21lbWNvbnRyb2wuYzo0MzY0OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy00MzY1LVx0cGFnZV9jb3VudGVyX3NldF9tYXgoXHUwMDI2bWVtY2ctXHUwMDNla21lbSwgUEFHRV9DT1VOVEVSX01BWCk7XG4tLVxubW0vbWVtY29udHJvbC5jPTUwODE9c3RydWN0IGNncm91cF9zdWJzeXMgbWVtb3J5X2NncnBfc3Vic3lzID0ge1xuLS1cbm1tL21lbWNvbnRyb2wuYy01MDkyLVx0LmRmbF9jZnR5cGVzID0gbWVtb3J5X2ZpbGVzLFxubW0vbWVtY29udHJvbC5jOjUwOTM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTUwOTQtXHQubGVnYWN5X2NmdHlwZXMgPSBtZW1fY2dyb3VwX2xlZ2FjeV9maWxlcyxcbi0tXG5tbS9tZW1jb250cm9sLmM9NjAyNz1zdGF0aWMgaW50IF9faW5pdCBtZW1fY2dyb3VwX3N3YXBfaW5pdCh2b2lkKVxuLS1cbm1tL21lbWNvbnRyb2wuYy02MDMyLVx0V0FSTl9PTihjZ3JvdXBfYWRkX2RmbF9jZnR5cGVzKFx1MDAyNm1lbW9yeV9jZ3JwX3N1YnN5cywgc3dhcF9maWxlcykpO1xubW0vbWVtY29udHJvbC5jOjYwMzM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTYwMzQtXHRXQVJOX09OKGNncm91cF9hZGRfbGVnYWN5X2NmdHlwZXMoXHUwMDI2bWVtb3J5X2NncnBfc3Vic3lzLCBtZW1zd19maWxlcykpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjUwMwoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaDogU2FmZWd1YXJkaW5nIE1lbW9yeSBDb250cm9sIGluIER5aW5nIGNncm91cHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1ha2luZyBhIHNtYWxsLCBidXQgcG90ZW50aWFsbHkgaW1wb3J0YW50LCBjaGFuZ2UuIFRoZXkmIzM5O3JlIGFkZGluZyBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkgYnJlYWs7YCB0byB0aHJlZSBmdW5jdGlvbnMuIFRoZSBmdW5jdGlvbnMgYXJlIGBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCAoYm90aCBpbiBgbW0vbWVtY29udHJvbC5jYCkgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gYG1tL3Ztc2Nhbi5jYCkuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSB0aWVkIHRvIGNncm91cCBtZW1vcnkgY29udHJvbCwgb3IgbWVtY2csIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKYG1lbW9yeV9oaWdoX3dyaXRlYCBhbmQgYG1lbW9yeV9tYXhfd3JpdGVgIGFyZSB0aGUgd3JpdGUgaGFuZGxlcnMgZm9yIHRoZSBgbWVtb3J5LmhpZ2hgIGFuZCBgbWVtb3J5Lm1heGAgZmlsZXMgaW4gY2dyb3VwIHYyLCBzbyB0aGF0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCBpcyB3aGVyZSBpdCBnZXRzIGEgbGl0dGxlIG1vcmUgaW52b2x2ZWQuIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBtZW1vcnlfcmVjbGFpbWAgd2hpY2ggaGFuZGxlcyB3cml0aW5nIHRvIHRoZSBgbWVtb3J5LnJlY2xhaW1gIGZpbGUsIGFsc28gYSBjZ3JvdXAgdjIgZmlsZSwgYW5kIGByZWNsYWltX3N0b3JlYCwgd2hpY2ggSSBuZWVkIHRvIGludmVzdGlnYXRlIGEgYml0IG1vcmUuCgpUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIGZ1bmN0aW9uYWwg4oCTIGl0JiMzOTtzIGJhc2ljYWxseSBwcmV2ZW50aW5nIHdvcmsgZnJvbSBiZWluZyBkb25lIG9uIGEgbWVtY2cgdGhhdCYjMzk7cyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLiBUaGlzIHNlZW1zIHNlbnNpYmxlLCBhcyBpdCB3b3VsZCBwcmV2ZW50IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZXJyb3JzLCBzbyBmYXIsIHNvIGdvb2QuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBoZXJlIGlzIHRoYXQgdGhlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGp1c3QgYnkgd3JpdGluZyB0byB0aGUgYXBwcm9wcmlhdGUgY2dyb3VwIGZpbGVzLCBzcGVjaWZpY2FsbHkgYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBvciBgbWVtb3J5LnJlY2xhaW1gLCBhbmQgdGhhdCBhbGwgb2YgdGhpcyBjYW4gb2NjdXIgd2hlbiB0aGUgY2dyb3VwIGlzIGFscmVhZHkgYmVpbmcgZGVsZXRlZC4KCkxldCYjMzk7cyBkbyBzb21lIGNvbmZpZyBjaGVja3MgdG8gc2VlIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBgQ09ORklHX01FTUNHYCBpcyB0aGUgbWFpbiBvbmUsIG9mIGNvdXJzZSwgZm9yIG1lbW9yeSBjZ3JvdXBzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHRvIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zLCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLgoKYG1lbW9yeV9oaWdoX3dyaXRlYCBhbmQgYG1lbW9yeV9tYXhfd3JpdGVgIGFyZSBkZWZpbml0ZWx5IHdpdGhpbiBgbW0vbWVtY29udHJvbC5jYCBhbmQgdW5kZXIgYENPTkZJR19NRU1DR2AuIEdvb2QuIE5vdywgd2hhdCBhYm91dCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWA/IExldCYjMzk7cyBjaGVjayB0aGUgY29kZToKCmBgYGMKaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLAoJCQkgICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHBnX2RhdGFfdCAqcGdkYXQpCnsKCS4uLgoJaWYgKG1lbWNnKSB7CgkJdW5zaWduZWQgaW50IHJlY2xhaW1fb3B0aW9uczsKCgkJaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkKCQkJYnJlYWs7CgkJLi4uCmBgYAoKQWgsIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCBjaGVja3MgZm9yIHRoZSBtZW1jZyBiZWluZyBkZWFkICppbnNpZGUqIHRoZSBmdW5jdGlvbi4gTWFrZXMgc2Vuc2UsIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGZyb20gdHdvIG90aGVyIHBsYWNlcywgb25lIG9mIHRoZW0sIGBtZW1vcnlfcmVjbGFpbWAsIGlzIHVuZGVyIGBDT05GSUdfTUVNQ0dgLiBCdXQgd2hhdCBhYm91dCB0aGUgb3RoZXI/IEkgcmVjYWxsIHRoYXQgaXQgaXMgZnJvbSBgcmVjbGFpbV9zdG9yZWAsIHdoaWNoIGlzIHVuZGVyIGBDT05GSUdfTlVNQWAsIHdoaWNoIGNhbGxzIHRoaXMgZnVuY3Rpb24uIEhtbS4gTmVlZCB0byBjb25maXJtIHRoYXQuIExldCYjMzk7cyBsb29rIGF0IGByZWNsYWltX3N0b3JlYCBpbiBgbW0vdm1zY2FuLmNgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlY2xhaW1fc3RvcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvc3lzZnMuYz05NTI9c3RhdGljIHNzaXplX3QgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxuZnMvYnRyZnMvc3lzZnMuYy05NjAtXG5mcy9idHJmcy9zeXNmcy5jOjk2MTpzdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19keW5hbWljX3JlY2xhaW1fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG5mcy9idHJmcy9zeXNmcy5jLTk2Mi1cdFx0XHRcdFx0XHQgc3RydWN0IGtvYmpfYXR0cmlidXRlICphLFxuLS1cbmZzL2J0cmZzL3N5c2ZzLmM9OTgxPUJUUkZTX0FUVFJfUlcoc3BhY2VfaW5mbywgZHluYW1pY19yZWNsYWltLFxuZnMvYnRyZnMvc3lzZnMuYy05ODItXHQgICAgICBidHJmc19zaW5mb19keW5hbWljX3JlY2xhaW1fc2hvdyxcbmZzL2J0cmZzL3N5c2ZzLmM6OTgzOlx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3N0b3JlKTtcbmZzL2J0cmZzL3N5c2ZzLmMtOTg0LVxuZnMvYnRyZnMvc3lzZnMuYz05ODU9c3RhdGljIHNzaXplX3QgYnRyZnNfc2luZm9fcGVyaW9kaWNfcmVjbGFpbV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmZzL2J0cmZzL3N5c2ZzLmMtOTkzLVxuZnMvYnRyZnMvc3lzZnMuYzo5OTQ6c3RhdGljIHNzaXplX3QgYnRyZnNfc2luZm9fcGVyaW9kaWNfcmVjbGFpbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbmZzL2J0cmZzL3N5c2ZzLmMtOTk1LVx0XHRcdFx0XHRcdCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmEsXG4tLVxuZnMvYnRyZnMvc3lzZnMuYz0xMDE0PUJUUkZTX0FUVFJfUlcoc3BhY2VfaW5mbywgcGVyaW9kaWNfcmVjbGFpbSxcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNS1cdCAgICAgIGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc2hvdyxcbmZzL2J0cmZzL3N5c2ZzLmM6MTAxNjpcdCAgICAgIGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc3RvcmUpO1xuZnMvYnRyZnMvc3lzZnMuYy0xMDE3LVxuLS1cbm1tL3Ztc2Nhbi5jPTgwMDk9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xuLS1cbm1tL3Ztc2Nhbi5jLTgwMTEtI2lmIGRlZmluZWQoQ09ORklHX1NZU0ZTKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTlVNQSlcbm1tL3Ztc2Nhbi5jOjgwMTI6c3RhdGljIHNzaXplX3QgcmVjbGFpbV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5tbS92bXNjYW4uYy04MDEzLVx0XHRcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTkxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHJlY2xhaW1fc3RvcmVgIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBgcmVjbGFpbV9zdG9yZWAgaXMgbmVzdGVkIHVuZGVyIGBDT05GSUdfU1lTRlNgIGFuZCBgQ09ORklHX05VTUFgLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHRoYXQgYGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpYCBjaGVjayAqaW5zaWRlKiB0aGUgYGlmIChtZW1jZylgIGJsb2NrIHdpdGhpbiBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFRoaXMgbWVhbnMgaXQgKm9ubHkqIGFmZmVjdHMgdGhlIG1lbWNnIHBhdGgsIHJpZ2h0PyBUaGVyZWZvcmUsIGBDT05GSUdfTUVNQ0dgIGlzIHRoZSByZWFsIGRlY2lkaW5nIGZhY3RvciBoZXJlLiBJdCYjMzk7cyB0aGUgb25seSBvbmUgdGhhdCByZWFsbHkgbWF0dGVycyBmb3Igd2hldGhlciB0aGlzIGNoYW5nZSBldmVuIGRvZXMgYW55dGhpbmcuCgpIYW5nIG9uIGEgc2Vjb25k4oCmIGBtZW1jZ19pc19keWluZ2AgaXMgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhgLiBMZXQgbWUgcXVpY2tseSBsb29rIGF0IHRoYXQgZGVmaW5pdGlvbjoKCmBgYGMKc3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKewoJcmV0dXJuICEobWVtY2ctJmd0O2Nzcy5mbGFncyAmYW1wOyBDU1NfT05MSU5FKTsKfQpgYGAKCk9rYXksIHNvIGl0IGNoZWNrcyBgQ1NTX09OTElORWAuIEJ1dC4uLiB3YWl0ISBgbWVtY2dfaXNfZHlpbmdgIGlzICpvbmx5KiBhdmFpbGFibGUgaWYgYENPTkZJR19NRU1DR2AgaXMgZW5hYmxlZCEgSWYgaXQmIzM5O3MgZGlzYWJsZWQsIHRoZW4gdGhlIGZ1bmN0aW9uIG1pZ2h0IG5vdCBldmVuIGJlIGRlZmluZWQsIG9yIGl0IG1pZ2h0IGJlIGRlZmluZWQgdG8gYSBkZWZhdWx0IG9mIGBmYWxzZWAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZSBhbmQgc2VlIHdoYXQgaGFwcGVucyB3aGVuIGBDT05GSUdfTUVNQ0dgIGlzIG5vdCBzZXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVtY2dfaXNfZHlpbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTc2Mz12b2lkIG1lbV9jZ3JvdXBfc2hvd19wcm90ZWN0ZWRfbWVtb3J5KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyk7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzY0LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTc2NTpzdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfaXNfZHlpbmcoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTc2Ni17XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTgzNz1zdGF0aWMgaW5saW5lIHZvaWQgbWVtX2Nncm91cF9zaG93X3Byb3RlY3RlZF9tZW1vcnkoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDAtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODQxOnN0YXRpYyBpbmxpbmUgYm9vbCBtZW1jZ19pc19keWluZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODQyLXtcbi0tXG5tbS9tZW1jb250cm9sLmM9ODA4PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKmdldF9ub25fZHlpbmdfbWVtY2dfc3RhcnQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL21lbWNvbnRyb2wuYy04MTktXG5tbS9tZW1jb250cm9sLmM6ODIwOlx0d2hpbGUgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcbm1tL21lbWNvbnRyb2wuYy04MjEtXHRcdG1lbWNnID0gcGFyZW50X21lbV9jZ3JvdXAobWVtY2cpO1xuLS1cbm1tL21lbWNvbnRyb2wuYz00NzY3PXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbi0tXG5tbS9tZW1jb250cm9sLmMtNDc5NS1cbm1tL21lbWNvbnRyb2wuYzo0Nzk2Olx0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxubW0vbWVtY29udHJvbC5jLTQ3OTctXHRcdFx0YnJlYWs7XG4tLVxubW0vbWVtY29udHJvbC5jPTQ4MjI9c3RhdGljIHNzaXplX3QgbWVtb3J5X21heF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXG4tLVxubW0vbWVtY29udHJvbC5jLTQ4NDktXG5tbS9tZW1jb250cm9sLmM6NDg1MDpcdFx0aWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcbm1tL21lbWNvbnRyb2wuYy00ODUxLVx0XHRcdGJyZWFrO1xuLS1cbm1tL3Ztc2Nhbi5jPTc4NjY9aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuLS1cbm1tL3Ztc2Nhbi5jLTc5MjQtXG5tbS92bXNjYW4uYzo3OTI1Olx0XHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG5tbS92bXNjYW4uYy03OTI2LVx0XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzM3CgkJCQkJCQlvdXRwdXQ6IDE5MgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21lbW9yeV9oaWdoX3dyaXRlJiMzNDssCiAgICAmIzM0O21lbW9yeV9tYXhfd3JpdGUmIzM0OywKICAgICYjMzQ7dXNlcl9wcm9hY3RpdmVfcmVjbGFpbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGNoZWNrcyBmb3IgYG1lbWNnX2lzX2R5aW5nKG1lbWNnKWAgaW4gYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgIChpbiBtbS9tZW1jb250cm9sLmMpLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIChpbiBtbS92bXNjYW4uYykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBjZ3JvdXBmcyB3cml0ZXMgKGBtZW1vcnkuaGlnaGAsIGBtZW1vcnkubWF4YCwgYG1lbW9yeS5yZWNsYWltYCkgYW5kIHN5c2ZzIHdyaXRlcyAoYHJlY2xhaW1gKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYXMgdGhleSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgYnJlYWtpbmcgb3V0IG9mIGxvb3BzIGlmIHRoZSBtZW1vcnkgY2dyb3VwIGlzIGR5aW5nLiBUaGUgY29kZSBpcyBndWFyZGVkIGJ5IENPTkZJR19NRU1DRywgd2hpY2ggbmVlZHMgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNQ0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZW1vcnlfaGlnaF93cml0ZSYjMzQ7LAogICAgJiMzNDttZW1vcnlfbWF4X3dyaXRlJiMzNDssCiAgICAmIzM0O3VzZXJfcHJvYWN0aXZlX3JlY2xhaW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBjaGVja3MgZm9yIGBtZW1jZ19pc19keWluZyhtZW1jZylgIGluIGBtZW1vcnlfaGlnaF93cml0ZWAsIGBtZW1vcnlfbWF4X3dyaXRlYCAoaW4gbW0vbWVtY29udHJvbC5jKSwgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gbW0vdm1zY2FuLmMpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgY2dyb3VwZnMgd3JpdGVzIChgbWVtb3J5LmhpZ2hgLCBgbWVtb3J5Lm1heGAsIGBtZW1vcnkucmVjbGFpbWApIGFuZCBzeXNmcyB3cml0ZXMgKGByZWNsYWltYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFzIHRoZXkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGJ5IGJyZWFraW5nIG91dCBvZiBsb29wcyBpZiB0aGUgbWVtb3J5IGNncm91cCBpcyBkeWluZy4gVGhlIGNvZGUgaXMgZ3VhcmRlZCBieSBDT05GSUdfTUVNQ0csIHdoaWNoIG5lZWRzIHRvIGJlIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxMS4zODk1OTk1OTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIzNTE0NzU4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZW1vcnlfaGlnaF93cml0ZVwiLFxuICAgIFwibWVtb3J5X21heF93cml0ZVwiLFxuICAgIFwidXNlcl9wcm9hY3RpdmVfcmVjbGFpbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgY2hlY2tzIGZvciBgbWVtY2dfaXNfZHlpbmcobWVtY2cpYCBpbiBgbWVtb3J5X2hpZ2hfd3JpdGVgLCBgbWVtb3J5X21heF93cml0ZWAgKGluIG1tL21lbWNvbnRyb2wuYyksIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgKGluIG1tL3Ztc2Nhbi5jKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdmlhIGNncm91cGZzIHdyaXRlcyAoYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBgbWVtb3J5LnJlY2xhaW1gKSBhbmQgc3lzZnMgd3JpdGVzIChgcmVjbGFpbWApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhcyB0aGV5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBieSBicmVha2luZyBvdXQgb2YgbG9vcHMgaWYgdGhlIG1lbW9yeSBjZ3JvdXAgaXMgZHlpbmcuIFRoZSBjb2RlIGlzIGd1YXJkZWQgYnkgQ09ORklHX01FTUNHLCB3aGljaCBuZWVkcyB0byBiZSBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxMS4zODk2MDY2NzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjM1NjEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdmZDViZGQyMDkzZmQxODZkMDFlYjQ0OWRlZGY1ZWJkN2RkZGNlYjhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTU6MTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jXFxuaW5kZXggNTZjZDRhZjA4MjMyNmIuLjA2YmRlNmM1MzE4ZjJiIDEwMDY0NFxcbi0tLSBhL21tL21lbWNvbnRyb2wuY1xcbisrKyBiL21tL21lbWNvbnRyb2wuY1xcbkBAIC00NzkzLDYgKzQ3OTMsOSBAQCBzdGF0aWMgc3NpemVfdCBtZW1vcnlfaGlnaF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuIFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbitcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuIFxcdFxcdGlmICghZHJhaW5lZCkge1xcbiBcXHRcXHRcXHRkcmFpbl9hbGxfc3RvY2sobWVtY2cpO1xcbiBcXHRcXHRcXHRkcmFpbmVkID0gdHJ1ZTtcXG5AQCAtNDg0NCw2ICs0ODQ3LDkgQEAgc3RhdGljIHNzaXplX3QgbWVtb3J5X21heF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuIFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbitcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuIFxcdFxcdGlmICghZHJhaW5lZCkge1xcbiBcXHRcXHRcXHRkcmFpbl9hbGxfc3RvY2sobWVtY2cpO1xcbiBcXHRcXHRcXHRkcmFpbmVkID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xcbmluZGV4IDgxOTBjNGFiZWM4NDE4Li4xMTYyYjdmNzY2NTVlOSAxMDA2NDRcXG4tLS0gYS9tbS92bXNjYW4uY1xcbisrKyBiL21tL3Ztc2Nhbi5jXFxuQEAgLTc5MjIsNiArNzkyMiw5IEBAIGludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcXG4gXFx0XFx0aWYgKG1lbWNnKSB7XFxuIFxcdFxcdFxcdHVuc2lnbmVkIGludCByZWNsYWltX29wdGlvbnM7XFxuIFxcbitcXHRcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFxuIFxcdFxcdFxcdHJlY2xhaW1fb3B0aW9ucyA9IE1FTUNHX1JFQ0xBSU1fTUFZX1NXQVAgfFxcbiBcXHRcXHRcXHRcXHRcXHQgIE1FTUNHX1JFQ0xBSU1fUFJPQUNUSVZFO1xcbiBcXHRcXHRcXHRyZWNsYWltZWQgPSB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzKG1lbWNnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxMS44NjI2MzM2NjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MTg3ODQzMzY5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1DR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1lbW9yeV9oaWdoX3dyaXRlXCIsXG4gICAgXCJtZW1vcnlfbWF4X3dyaXRlXCIsXG4gICAgXCJ1c2VyX3Byb2FjdGl2ZV9yZWNsYWltXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBjaGVja3MgZm9yIGBtZW1jZ19pc19keWluZyhtZW1jZylgIGluIGBtZW1vcnlfaGlnaF93cml0ZWAsIGBtZW1vcnlfbWF4X3dyaXRlYCAoaW4gbW0vbWVtY29udHJvbC5jKSwgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gbW0vdm1zY2FuLmMpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgY2dyb3VwZnMgd3JpdGVzIChgbWVtb3J5LmhpZ2hgLCBgbWVtb3J5Lm1heGAsIGBtZW1vcnkucmVjbGFpbWApIGFuZCBzeXNmcyB3cml0ZXMgKGByZWNsYWltYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFzIHRoZXkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGJ5IGJyZWFraW5nIG91dCBvZiBsb29wcyBpZiB0aGUgbWVtb3J5IGNncm91cCBpcyBkeWluZy4gVGhlIGNvZGUgaXMgZ3VhcmRlZCBieSBDT05GSUdfTUVNQ0csIHdoaWNoIG5lZWRzIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2ZkNWJkZDIwOTNmZDE4NmQwMWViNDQ5ZGVkZjVlYmQ3ZGRkY2ViOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDA2OjU1OjEwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jXG5pbmRleCA1NmNkNGFmMDgyMzI2Yi4uMDZiZGU2YzUzMThmMmIgMTAwNjQ0XG4tLS0gYS9tbS9tZW1jb250cm9sLmNcbisrKyBiL21tL21lbWNvbnRyb2wuY1xuQEAgLTQ3OTMsNiArNDc5Myw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbiBcdFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIFx0XHRcdGJyZWFrO1xuIFxuK1x0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxuK1x0XHRcdGJyZWFrO1xuK1xuIFx0XHRpZiAoIWRyYWluZWQpIHtcbiBcdFx0XHRkcmFpbl9hbGxfc3RvY2sobWVtY2cpO1xuIFx0XHRcdGRyYWluZWQgPSB0cnVlO1xuQEAgLTQ4NDQsNiArNDg0Nyw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuIFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4gXHRcdFx0YnJlYWs7XG4gXG4rXHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG4rXHRcdFx0YnJlYWs7XG4rXG4gXHRcdGlmICghZHJhaW5lZCkge1xuIFx0XHRcdGRyYWluX2FsbF9zdG9jayhtZW1jZyk7XG4gXHRcdFx0ZHJhaW5lZCA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggODE5MGM0YWJlYzg0MTguLjExNjJiN2Y3NjY1NWU5IDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbisrKyBiL21tL3Ztc2Nhbi5jXG5AQCAtNzkyMiw2ICs3OTIyLDkgQEAgaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuIFx0XHRpZiAobWVtY2cpIHtcbiBcdFx0XHR1bnNpZ25lZCBpbnQgcmVjbGFpbV9vcHRpb25zO1xuIFxuK1x0XHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG4rXHRcdFx0XHRicmVhaztcbitcbiBcdFx0XHRyZWNsYWltX29wdGlvbnMgPSBNRU1DR19SRUNMQUlNX01BWV9TV0FQIHxcbiBcdFx0XHRcdFx0ICBNRU1DR19SRUNMQUlNX1BST0FDVElWRTtcbiBcdFx0XHRyZWNsYWltZWQgPSB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzKG1lbWNnLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTU6MTEuODYyNjM1NDkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2OTM5OTg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFByb3Bvc2VkIE1lbW9yeSBDb250cm9sbGVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbW0vbWVtY29udHJvbC5jYCBhbmQgYG1tL3Ztc2Nhbi5jYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkgYnJlYWs7YCBpbiB0aHJlZSBzcG90cy4gTGV0J3Mgc2VlLi4uIHRoZSBmaXJzdCB0d28gYXJlIGluIGBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCwgYm90aCBpbiBgbW0vbWVtY29udHJvbC5jYC4gUmlnaHQsIHRob3NlIGFyZSB0aGUgY2dyb3VwIHYyIGhhbmRsZXJzIGZvciBgbWVtb3J5LmhpZ2hgIGFuZCBgbWVtb3J5Lm1heGAsIHRoZSBtZW1vcnkgbGltaXRzLiBBbmQgdGhlIHRoaXJkIGluc3RhbmNlIGlzIGluIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCB3aGljaCBpcyBhbHNvIGluIGBtbS92bXNjYW4uY2AsIHNvIHRoYXQncyB0aGUgaGFuZGxlciBmb3IgdGhlIGBtZW1vcnkucmVjbGFpbWAgY29udHJvbCBmaWxlIGluIHRoZSBjZ3JvdXAgdjIgbWVtb3J5IGNvbnRyb2xsZXIuIE1ha2VzIHNlbnNlLCB0aGF0J3Mgd2hlcmUgeW91J2QgZXhwZWN0IHRvIHNlZSB0aGVzZSBraW5kcyBvZiBjaGVja3MuXG5cbk5vdywgd2hhdCBhYm91dCBgbWVtY2dfaXNfZHlpbmdgPyBBaCwgaXQncyBub3QgZGVmaW5lZCBpbiB0aGUgcGF0Y2ggaXRzZWxmLCBzbyBpdCBtdXN0IGJlIHNvbWV0aGluZyBwcmUtZXhpc3RpbmcuIElzIGl0IGBtZW1fY2dyb3VwX2lzX2R5aW5nYCBvciBqdXN0IGBtZW1jZ19pc19keWluZ2A/IFRoZSBwYXRjaCBzYXlzIGBtZW1jZ19pc19keWluZ2AuIElzIHRoaXMgYSBtYWNybyBvciBhIGZ1bmN0aW9uPyBJdCBzaG91bGQgYmUgaW4gYG1tL21lbWNvbnRyb2wuY2Agb3IgYGluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oYCwgcHJvYmFibHkuIExldCdzIGxvb2sgdGhlcmUgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IG1lYW5zIGZvciBhIG1lbW9yeSBjb250cm9sIGdyb3VwIHRvIGJlIFwiZHlpbmdcIiBhbmQgd2h5IHdlJ3JlIGJyZWFraW5nIG91dCBvZiB0aGVzZSB3cml0ZSBoYW5kbGVycyB3aGVuIHRoYXQncyB0aGUgY2FzZS4gVGhhdCdzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxNy43MzIwMzcxNzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNjE4NDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW1jZ19pc19keWluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNzYzPXZvaWQgbWVtX2Nncm91cF9zaG93X3Byb3RlY3RlZF9tZW1vcnkoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzY0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE3NjU6c3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzY2LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4Mzc9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfc2hvd19wcm90ZWN0ZWRfbWVtb3J5KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDAtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTg0MTpzdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfaXNfZHlpbmcoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDIte1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTgwOD1zdGF0aWMgaW5saW5lIHN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbm9uX2R5aW5nX21lbWNnX3N0YXJ0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy04MTktXFxubW0vbWVtY29udHJvbC5jOjgyMDpcXHR3aGlsZSAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbm1tL21lbWNvbnRyb2wuYy04MjEtXFx0XFx0bWVtY2cgPSBwYXJlbnRfbWVtX2Nncm91cChtZW1jZyk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDc2Nz1zdGF0aWMgc3NpemVfdCBtZW1vcnlfaGlnaF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDc5NS1cXG5tbS9tZW1jb250cm9sLmM6NDc5NjpcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbm1tL21lbWNvbnRyb2wuYy00Nzk3LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTQ4MjI9c3RhdGljIHNzaXplX3QgbWVtb3J5X21heF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDg0OS1cXG5tbS9tZW1jb250cm9sLmM6NDg1MDpcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbm1tL21lbWNvbnRyb2wuYy00ODUxLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubW0vdm1zY2FuLmM9Nzg2Nj1pbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXFxuLS1cXG5tbS92bXNjYW4uYy03OTI0LVxcbm1tL3Ztc2Nhbi5jOjc5MjU6XFx0XFx0XFx0aWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcXG5tbS92bXNjYW4uYy03OTI2LVxcdFxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxOS43NDgyMjg4OTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTYyMTkzMzczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldyBNZW1jZyBEeWluZyBDaGVja3MqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYG1lbWNnX2lzX2R5aW5nKG1lbWNnKWAgY2hlY2tzIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0IHRhcmdldHMgYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gLiBSaWdodCBhd2F5LCBJIHNlZSB0aGVzZSBhcmUgYWxsIGNydWNpYWwgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCBjZ3JvdXAgbWVtb3J5IGxpbWl0cyBhbmQgcHJvYWN0aXZlIHJlY2xhaW0sIHdoaWNoIGFyZSBhcmVhcyBJJ20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBUaGUgZmlyc3QgdHdvLCBgbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAsIGFyZSBkZWZpbmVkIGluIGBtbS9tZW1jb250cm9sLmNgLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIHJlc2lkZXMgaW4gYG1tL3Ztc2Nhbi5jYC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIGBtbS9tZW1jb250cm9sLmNgLCBhcyBleHBlY3RlZCwgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiBgQ09ORklHX01FTUNHYC4gVGhpcyB0ZWxscyBtZSB0aGF0IHRoZSBjaGVja3Mgd2l0aGluIGl0IGFyZSBwYXJ0IG9mIHRoZSBjb3JlIG1lbWNnIGZ1bmN0aW9uYWxpdHkuIGBtbS92bXNjYW4uY2AgaXMgYWx3YXlzIGluY2x1ZGVkLCBidXQgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoZSBpbmNsdXNpb24gb2YgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIGlzIHNwZWNpZmljYWxseSBndWFyZGVkIGJ5IGBDT05GSUdfTUVNQ0dgIG9yIHNvbWUgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb24uIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgY29tcGlsYXRpb24gY29udGV4dCB0byBkZXRlcm1pbmUgZXhhY3RseSBob3cgdGhlIHBhdGNoIHdpbGwgYmVoYXZlIGFjcm9zcyBkaWZmZXJlbnQgc3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5hbHlzaXMgSSBwZXJmb3JtIHdoZW4gcmV2aWV3aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODEsIk91dHB1dFRva2VucyI6NTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTY6MDUuMzcwMTY1MTg5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODQ1Mjc2MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVtb3J5X2hpZ2hfd3JpdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtY29udHJvbC5jPTQ3NjE9c3RhdGljIGludCBtZW1vcnlfaGlnaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00NzY2LVxcbm1tL21lbWNvbnRyb2wuYzo0NzY3OnN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG5tbS9tZW1jb250cm9sLmMtNDc2OC1cXHRcXHRcXHRcXHQgY2hhciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2ZmKVxcbi0tXFxubW0vbWVtY29udHJvbC5jPTUwMDc9c3RhdGljIHN0cnVjdCBjZnR5cGUgbWVtb3J5X2ZpbGVzW10gPSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNTAzNi1cXHRcXHQuc2VxX3Nob3cgPSBtZW1vcnlfaGlnaF9zaG93LFxcbm1tL21lbWNvbnRyb2wuYzo1MDM3OlxcdFxcdC53cml0ZSA9IG1lbW9yeV9oaWdoX3dyaXRlLFxcbm1tL21lbWNvbnRyb2wuYy01MDM4LVxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjU2OjA3LjY1NDcwMjE0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1NzUwOTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbW9yeV9tYXhfd3JpdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtY29udHJvbC5jPTQ4MTY9c3RhdGljIGludCBtZW1vcnlfbWF4X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTQ4MjEtXFxubW0vbWVtY29udHJvbC5jOjQ4MjI6c3RhdGljIHNzaXplX3QgbWVtb3J5X21heF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxubW0vbWVtY29udHJvbC5jLTQ4MjMtXFx0XFx0XFx0XFx0Y2hhciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2ZmKVxcbi0tXFxubW0vbWVtY29udHJvbC5jPTUwMDc9c3RhdGljIHN0cnVjdCBjZnR5cGUgbWVtb3J5X2ZpbGVzW10gPSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNTA0Mi1cXHRcXHQuc2VxX3Nob3cgPSBtZW1vcnlfbWF4X3Nob3csXFxubW0vbWVtY29udHJvbC5jOjUwNDM6XFx0XFx0LndyaXRlID0gbWVtb3J5X21heF93cml0ZSxcXG5tbS9tZW1jb250cm9sLmMtNTA0NC1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NjowOS40NjA0NTgyODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MjY4NTQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2VyX3Byb2FjdGl2ZV9yZWNsYWltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2ludGVybmFsLmg9NjI0PWV4dGVybiB2b2lkIHJlY2xhaW1fdGhyb3R0bGUocGdfZGF0YV90ICpwZ2RhdCwgZW51bSB2bXNjYW5fdGhyb3R0bGVfc3RhdGUgcmVhc29uKTtcXG5tbS9pbnRlcm5hbC5oOjYyNTppbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXFxubW0vaW50ZXJuYWwuaC02MjYtXFx0XFx0XFx0ICAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBwZ19kYXRhX3QgKnBnZGF0KTtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz00OTk0PXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9yZWNsYWltKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTQ5OTktXFxubW0vbWVtY29udHJvbC5jOjUwMDA6XFx0cmV0ID0gdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShidWYsIG1lbWNnLCBOVUxMKTtcXG5tbS9tZW1jb250cm9sLmMtNTAwMS1cXHRpZiAocmV0KVxcbi0tXFxubW0vdm1zY2FuLmM9Nzg2MD1zdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCB0b2tlbnMgPSB7XFxuLS1cXG5tbS92bXNjYW4uYy03ODY1LVxcbm1tL3Ztc2Nhbi5jOjc4NjY6aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxcbm1tL3Ztc2Nhbi5jLTc4NjctXFx0XFx0XFx0ICAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBwZ19kYXRhX3QgKnBnZGF0KVxcbi0tXFxubW0vdm1zY2FuLmM9ODAxMj1zdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbm1tL3Ztc2Nhbi5jLTgwMTctXFxubW0vdm1zY2FuLmM6ODAxODpcXHRyZXQgPSB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKChjaGFyICopYnVmLCBOVUxMLCBOT0RFX0RBVEEobmlkKSk7XFxubW0vdm1zY2FuLmMtODAxOS1cXHRyZXR1cm4gcmV0ID8gLUVBR0FJTiA6IGNvdW50O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NjoxMS4yNTMxNTExMTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjE3NTQ1NjU5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGBpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKSBicmVhaztgIGludG8gYSBmZXcga2V5IG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uczogYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gLiBSaWdodCBhd2F5LCBteSBleHBlcnQgaW50dWl0aW9uIGlzIGVuZ2FnZWQ7IHRoZXNlIGFyZSBjb3JlIGZ1bmN0aW9ucy4gVGhleSdyZSBhbGwgdHJpZ2dlcmVkIGJ5IHdyaXRlcyB0byBjZ3JvdXBmcyBmaWxlczogYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBhbmQgYG1lbW9yeS5yZWNsYWltYCwgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHN5c2ZzIGByZWNsYWltYCBmb3Igbm9kZXMuIFRoaXMgaW1wYWN0cyB0aGUgY3JpdGljYWwgZXhlY3V0aW9uIGZsb3cgcmVsYXRlZCB0byBjZ3JvdXAgbWVtb3J5IGxpbWl0cyBhbmQgdGhlIHByb2FjdGl2ZSByZWNsYWltIG1lY2hhbmlzbXMuIFRoYXQgbWFrZXMgaXQgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlIOKAkyByZWFjaGFibGUgdmlhIGNncm91cGZzIGlzIGEgYmlnIHJlZCBmbGFnLiBUaGUgcGF0Y2ggYXV0aG9yIGV2ZW4gZmxhZ2dlZCBpdCBhcyBXb3J0aEZ1enppbmc9dHJ1ZS4gSSBhZ3JlZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlLCB0aGVyZSdzIGEgc3Ryb25nIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciwgZWRnZSBjYXNlcywgYW5kIHBvdGVudGlhbGx5IHZ1bG5lcmFiaWxpdGllcyB3aXRoIGNvbmN1cnJlbnQgYWNjZXNzLlxuXG5MZXQncyBkcmlsbCBkb3duIGEgYml0IGZ1cnRoZXIuIGBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCBhcmUgY2xlYXJseSBpbiBgbW0vbWVtY29udHJvbC5jYCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIGlzIGluIGBtbS92bXNjYW4uY2AuIEkgbmVlZCB0byByZXZpZXcgdGhvc2Ugc2VjdGlvbnMgb2YgY29kZS4gQW5kIG9idmlvdXNseSwgdGhlIGBNRU1DR2AgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4gSSBzaG91bGQgY2hlY2sgaWYgdGhpcyBwYXRjaCBkZXBlbmRzIG9uIGFueSBvdGhlciBjb25maWdzLCBldmVuIGlmIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIG9uZXMgeWV0LiBUaGlzIGxvb2tzIGxpa2UgYSBkZWZpbml0ZSBjYW5kaWRhdGUgZm9yIGluLWRlcHRoIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjUxLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTY6MzMuNDI4NjEwNTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzQ1ODAwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX01FTUNHXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTIwNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdD00MDU9VG8gdXNlIHRoZSB1c2VyIGludGVyZmFjZTpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12MS9tZW1vcnkucnN0LTQwNi1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12MS9tZW1vcnkucnN0OjQwNzoxLiBFbmFibGUgQ09ORklHX0NHUk9VUFMgYW5kIENPTkZJR19NRU1DRyBvcHRpb25zXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdC00MDgtMi4gUHJlcGFyZSB0aGUgY2dyb3VwcyAoc2VlIDpyZWY6YFdoeSBhcmUgY2dyb3VwcyBuZWVkZWQ/XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3BhZ2VtYXAucnN0PTY1PW51bWJlciBvZiB0aW1lcyBhIHBhZ2UgaXMgbWFwcGVkLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9wYWdlbWFwLnJzdC0xMDEtICAgbWVtb3J5IGNncm91cCBlYWNoIHBhZ2UgaXMgY2hhcmdlZCB0bywgaW5kZXhlZCBieSBQRk4uIE9ubHkgYXZhaWxhYmxlIHdoZW5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3BhZ2VtYXAucnN0OjEwMjogICBDT05GSUdfTUVNQ0cgaXMgc2V0LlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vcGFnZW1hcC5yc3QtMTAzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdD0xNz1Vc2FnZTpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vc2hyaW5rZXJfZGVidWdmcy5yc3QtNTgtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdDo1OTogIElmIHRoZSBzaHJpbmtlciBpcyBub3QgbWVtY2ctYXdhcmUgb3IgQ09ORklHX01FTUNHIGlzIG9mZiwgMCBpcyBwcmludGVkXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdC02MC0gIGFzIGNncm91cCBpbm9kZSBpZC4gSWYgdGhlIHNocmlua2VyIGlzIG5vdCBudW1hLWF3YXJlLCAwJ3MgYXJlIHByaW50ZWRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz0xMT1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnOjEyOkNPTkZJR19NRU1DRz15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTEzLUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MTc9Q09ORklHX05VTUFfQkFMQU5DSU5HPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE4OkNPTkZJR19NRU1DRz15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xOS1DT05GSUdfQkxLX0NHUk9VUD15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTIwPUNPTkZJR19MT0dfQlVGX1NISUZUPTE4XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoyMTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctMjItQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0yMz1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MjQ6Q09ORklHX01FTUNHPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTI1LUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2NpMjBfZGVmY29uZmlnPTExPUNPTkZJR19DR1JPVVBTPXlcXG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZzoxMjpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2NpMjBfZGVmY29uZmlnLTEzLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWc6OTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnLTEwLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc6OTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTgzMC1uZW9fZGVmY29uZmlnLTEwLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZz0xMD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzoxMTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWctMTItQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTc9Q09ORklHX0lLQ09ORklHX1BST0M9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZzo4OkNPTkZJR19NRU1DRz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTktQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnPTc9Q09ORklHX0lLQ09ORklHX1BST0M9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZzo4OkNPTkZJR19NRU1DRz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTktQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc9Nz1DT05GSUdfSUtDT05GSUdfUFJPQz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc6ODpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnLTktQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc9ND1DT05GSUdfSUtDT05GSUdfUFJPQz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc6NTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnLTYtQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc9MTQ9Q09ORklHX1RBU0tfSU9fQUNDT1VOVElORz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc6MTU6Q09ORklHX01FTUNHPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy0xNi1DT05GSUdfQkxLX0NHUk9VUD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTE2PUNPTkZJR19UQVNLX0lPX0FDQ09VTlRJTkc9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6MTc6Q09ORklHX01FTUNHPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTE4LUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBTPXlcXG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZzoxMTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnLTEyLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWc9MTA9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3ZvY29yZTJfZGVmY29uZmlnOjExOkNPTkZJR19NRU1DRz15XFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9TQ0hFRD15XFxuLS1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnPTE1PUNPTkZJR19DR1JPVVBTPXlcXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnOjE2OkNPTkZJR19NRU1DRz15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0xNy1DT05GSUdfQ0dST1VQX1BJRFM9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9MTg9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjE5OkNPTkZJR19NRU1DRz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMjAtQ09ORklHX0NHUk9VUF9TQ0hFRD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9MjI9Q09ORklHX05VTUFfQkFMQU5DSU5HPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6MjM6Q09ORklHX01FTUNHPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctMjQtQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz04PUNPTkZJR19DR1JPVVBTPXlcXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX01FTUNHPXlcXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnLTEwLUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0yND1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoyNTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0yNi1DT05GSUdfQkxLX0NHUk9VUD15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MjI9Q09ORklHX05VTUFfQkFMQU5DSU5HPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MjM6Q09ORklHX01FTUNHPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMjQtQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWc9MTI9Q09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzoxMzpDT05GSUdfTUVNQ0c9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnLTE0LUNPTkZJR19OQU1FU1BBQ0VTPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9MTI9Q09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnOjEzOkNPTkZJR19NRU1DRz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZy0xNC1DT05GSUdfTkFNRVNQQUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0NQVUFDQ1Q9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnOjEzOkNPTkZJR19NRU1DRz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjEzOkNPTkZJR19NRU1DRz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnLTE0LUNPTkZJR19OQU1FU1BBQ0VTPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWc9Nz1DT05GSUdfQlNEX1BST0NFU1NfQUNDVD15XFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZzo4OkNPTkZJR19NRU1DRz15XFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZy05LUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWc9Nz1DT05GSUdfQlNEX1BST0NFU1NfQUNDVD15XFxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnOjg6Q09ORklHX01FTUNHPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctOS1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTE1NTY9c3RydWN0IGNncm91cF9zdWJzeXMgaW9fY2dycF9zdWJzeXMgPSB7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtMTU2NS1cXHQuZXhpdCA9IGJsa2NnX2V4aXQsXFxuYmxvY2svYmxrLWNncm91cC5jOjE1NjY6I2lmZGVmIENPTkZJR19NRU1DR1xcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xNTY3LVxcdC8qXFxuLS1cXG5kcml2ZXJzL2FjcGkvc2Nhbi5jPTIwND1zdGF0aWMgaW50IGFjcGlfc2Nhbl90cnlfdG9fb2ZmbGluZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjEyLVxcdCAqIGJlY2F1c2UgaWYgdGhlIGRldmljZXMgaW4gcXVlc3Rpb24gYXJlIG1lbW9yeSBibG9ja3MgYW5kXFxuZHJpdmVycy9hY3BpL3NjYW4uYzoyMTM6XFx0ICogQ09ORklHX01FTUNHIGlzIHNldCwgb25lIG9mIHRoZSBibG9ja3MgbWF5IGhvbGQgZGF0YSBzdHJ1Y3R1cmVzXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yMTQtXFx0ICogdGhhdCB0aGUgb3RoZXIgYmxvY2tzIGRlcGVuZCBvbiwgYnV0IGl0IGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIHdoaWNoXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz0xODUxPXN0YXRpYyBibGtfc3RhdHVzX3QgbG9vcF9xdWV1ZV9ycShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE4NzktXFx0XFx0Y21kLVxcdTAwM2VibGtjZ19jc3MgPSBiaW9fYmxrY2dfY3NzKHJxLVxcdTAwM2ViaW8pO1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjE4ODA6I2lmZGVmIENPTkZJR19NRU1DR1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE4ODEtXFx0XFx0aWYgKGNtZC1cXHUwMDNlYmxrY2dfY3NzKSB7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LXBhZ2VzLmM9MTk9SU9QVERFU0NfTUFUQ0goX3JlZmNvdW50LCBfX3BhZ2VfcmVmY291bnQpO1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUtcGFnZXMuYzoyMDojaWZkZWYgQ09ORklHX01FTUNHXFxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5jLTIxLUlPUFRERVNDX01BVENIKG1lbWNnX2RhdGEsIG1lbWNnX2RhdGEpO1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oPTE5PXN0cnVjdCBpb3B0ZGVzYyB7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LXBhZ2VzLmgtMzEtXFx0YXRvbWljX3QgX19wYWdlX3JlZmNvdW50O1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUtcGFnZXMuaDozMjojaWZkZWYgQ09ORklHX01FTUNHXFxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oLTMzLVxcdHVuc2lnbmVkIGxvbmcgbWVtY2dfZGF0YTtcXG4tLVxcbmZzL3Byb2MvcGFnZS5jPTI3MT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb2Nfb3BzIGtwYWdlZmxhZ3NfcHJvY19vcHMgPSB7XFxuLS1cXG5mcy9wcm9jL3BhZ2UuYy0yNzYtXFxuZnMvcHJvYy9wYWdlLmM6Mjc3OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5mcy9wcm9jL3BhZ2UuYy0yNzgtc3RhdGljIHNzaXplX3Qga3BhZ2VjZ3JvdXBfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmZzL3Byb2MvcGFnZS5jPTI4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb2Nfb3BzIGtwYWdlY2dyb3VwX3Byb2Nfb3BzID0ge1xcbi0tXFxuZnMvcHJvYy9wYWdlLmMtMjg3LX07XFxuZnMvcHJvYy9wYWdlLmM6Mjg4OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cXG5mcy9wcm9jL3BhZ2UuYy0yODktXFxuZnMvcHJvYy9wYWdlLmM9MjkwPXN0YXRpYyBpbnQgX19pbml0IHByb2NfcGFnZV9pbml0KHZvaWQpXFxuLS1cXG5mcy9wcm9jL3BhZ2UuYy0yOTMtXFx0cHJvY19jcmVhdGUoXFxcImtwYWdlZmxhZ3NcXFwiLCBTX0lSVVNSLCBOVUxMLCBcXHUwMDI2a3BhZ2VmbGFnc19wcm9jX29wcyk7XFxuZnMvcHJvYy9wYWdlLmM6Mjk0OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5mcy9wcm9jL3BhZ2UuYy0yOTUtXFx0cHJvY19jcmVhdGUoXFxcImtwYWdlY2dyb3VwXFxcIiwgU19JUlVTUiwgTlVMTCwgXFx1MDAyNmtwYWdlY2dyb3VwX3Byb2Nfb3BzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mjk2PXN0cnVjdCBicGZfbWFwIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE1LVxcdHN0cnVjdCBidGYgKmJ0ZjtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjMxNjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMTctXFx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0yNjU0PWludCBicGZfbWFwX2FsbG9jX3BhZ2VzKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXAsIGludCBuaWQsXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjU1LVxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIHN0cnVjdCBwYWdlICoqcGFnZV9hcnJheSk7XFxuaW5jbHVkZS9saW51eC9icGYuaDoyNjU2OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI2NTctdm9pZCBicGZfbWFwX21lbWNnX2VudGVyKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBtZW1fY2dyb3VwICoqb2xkX21lbWNnLFxcbi0tXFxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmg9MjU9U1VCU1lTKGlvKVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmgtMjctXFxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmg6Mjg6I2lmIElTX0VOQUJMRUQoQ09ORklHX01FTUNHKVxcbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oLTI5LVNVQlNZUyhtZW1vcnkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1Lmg9NTE9c3RydWN0IGxpc3RfbHJ1IHtcXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgtNTItXFx0c3RydWN0IGxpc3RfbHJ1X25vZGVcXHQqbm9kZTtcXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1Lmg6NTM6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC01NC1cXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0bGlzdDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaD04Mj1pbnQgbWVtY2dfbGlzdF9scnVfYWxsb2Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBzdHJ1Y3QgbGlzdF9scnUgKmxydSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC04NC1cXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1Lmg6ODU6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC04Ni0vKipcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTYwPXN0cnVjdCBtZW1fY2dyb3VwX3JlY2xhaW1fY29va2llIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTY0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjY1OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC02Ni1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTg5PXN0cnVjdCBtZW1fY2dyb3VwX3Blcl9ub2RlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk4OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05OS1cXHQvKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTI4LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjEyOTojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTMwLVxcdC8qIHNsYWIgc3RhdHMgZm9yIG5taSBjb250ZXh0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0yMDI9c3RydWN0IG1lbV9jZ3JvdXAge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjU3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjI1ODojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjU5LVxcdC8qIE1FTUNHX0tNRU0gZm9yIG5taSBjb250ZXh0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0yODUtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6Mjg2OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0yODctXFx0LyogTGVnYWN5IGNvbnN1bWVyLW9yaWVudGVkIGNvdW50ZXJzICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zMjAtXFx0c3BpbmxvY2tfdCBldmVudF9saXN0X2xvY2s7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MzIxOiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zMjItXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0zMzU9ZW51bSBwYWdlX21lbWNnX2RhdGFfZmxhZ3Mge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzQ2LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjM0NzojZWxzZSAvKiBDT05GSUdfTUVNQ0cgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNDgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNTEtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MzUyOiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNTMtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MzU0PWVudW0gb2JqZXh0X2ZsYWdzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTM2Ny1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDozNjg6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTM2OS0vKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTAyNz1leHRlcm4gaW50IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxMDI4OiNlbHNlIC8qIENPTkZJR19NRU1DRyAqL1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTEwMjktXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNDQwPXN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTQ0MTojZW5kaWYgLyogQ09ORklHX01FTUNHICovXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQ0Mi1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE0NDc9c3RydWN0IHNsYWJvYmpfZXh0IHtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxNDQ4OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDQ5LVxcdHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZztcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE1ODU9c3RydWN0IHNvY2s7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTU4NjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTU4Ny1leHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgbWVtY2dfc29ja2V0c19lbmFibGVkX2tleTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE2NzM9c3RhdGljIGlubGluZSBpbnQgc2hyaW5rZXJfaWQoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcilcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE2NzgtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTY3OTojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTY4MC1ib29sIG1lbV9jZ3JvdXBfa21lbV9kaXNhYmxlZCh2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4NDE9c3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDQtfVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4NDU6I2VuZGlmIC8qIENPTkZJR19NRU1DRyAqL1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDYtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTg0NzojaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1pTV0FQKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDgtYm9vbCBvYmpfY2dyb3VwX21heV96c3dhcChzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2cpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTg2NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtX2Nncm91cF96c3dhcF93cml0ZWJhY2tfZW5hYmxlZChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODc0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4NzU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NzYtdW5zaWduZWQgbG9uZyBtZW1jZzFfc29mdF9saW1pdF9yZWNsYWltKHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlcixcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4OTM9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfZXhpdF91c2VyX2ZhdWx0KHZvaWQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODk4LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4OTk6I2Vsc2UgLyogQ09ORklHX01FTUNHX1YxICovXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkwMC1zdGF0aWMgaW5saW5lXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xOTIyPXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX2V4aXRfdXNlcl9mYXVsdCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkyNS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxOTI2OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE5Mjg6I2lmIGRlZmluZWQoQ09ORklHX01FTUNHX1YxKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE5MjktXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oPTQ3PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB1cGRhdGVfbHJ1X3NpemUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01MS1cXHRfX3VwZGF0ZV9scnVfc2l6ZShscnV2ZWMsIGxydSwgemlkLCBucl9wYWdlcyk7XFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaDo1MjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01My1cXHRtZW1fY2dyb3VwX3VwZGF0ZV9scnVfc2l6ZShscnV2ZWMsIGxydSwgemlkLCBucl9wYWdlcyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9Nzk9c3RydWN0IHBhZ2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE4NS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTg2OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTg3LVxcdHVuc2lnbmVkIGxvbmcgbWVtY2dfZGF0YTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaD0zMTI9dHlwZWRlZiBzd3BfZW50cnlfdCBzb2Z0bGVhZl90O1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0zMTMtXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjMxNDojaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIHx8IGRlZmluZWQoQ09ORklHX1NMQUJfT0JKX0VYVClcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMzE1LS8qIFdlIGhhdmUgc29tZSBleHRyYSByb29tIGFmdGVyIHRoZSByZWZjb3VudCBpbiB0YWlsIHBhZ2VzLiAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTQwMT1zdHJ1Y3QgZm9saW8ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTQzMS1cXHRcXHRcXHRhdG9taWNfdCBfcmVmY291bnQ7XFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjQzMjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTQzMy1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG1lbWNnX2RhdGE7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9NTE3PUZPTElPX01BVENIKF9yZWZjb3VudCwgX3JlZmNvdW50KTtcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6NTE4OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtNTE5LUZPTElPX01BVENIKG1lbWNnX2RhdGEsIG1lbWNnX2RhdGEpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTU3Mj1zdHJ1Y3QgcHRkZXNjIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MDMtXFx0YXRvbWljX3QgX19wYWdlX3JlZmNvdW50O1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDo2MDQ6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MDUtXFx0dW5zaWduZWQgbG9uZyBwdF9tZW1jZ19kYXRhO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTYxOD1UQUJMRV9NQVRDSChfcmVmY291bnQsIF9fcGFnZV9yZWZjb3VudCk7XFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjYxOTojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTYyMC1UQUJMRV9NQVRDSChtZW1jZ19kYXRhLCBwdF9tZW1jZ19kYXRhKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaD0xMTU5PXN0cnVjdCBtbV9zdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMTgtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjEzMTk6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xMzIwLVxcdFxcdC8qXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTQwNC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIGJpdG1hcDtcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTQwNTojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE0MDYtXFx0XFx0XFx0LyogcG9pbnRzIHRvIHRoZSBtZW1jZyBvZiBcXFwib3duZXJcXFwiIGFib3ZlICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9MTQ5ND1zdGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dlbl9pbml0X21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE0OTctXFx0bW0tXFx1MDAzZWxydV9nZW4uYml0bWFwID0gMDtcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTQ5ODojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE0OTktXFx0bW0tXFx1MDAzZWxydV9nZW4ubWVtY2cgPSBOVUxMO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD03NTg9c3RydWN0IGxydXZlYyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTc4Mi0jZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjc4MzojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC03ODQtXFx0c3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg9MTY1Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBwZ2xpc3RfZGF0YSAqbHJ1dmVjX3BnZGF0KHN0cnVjdCBscnV2ZWMgKmxydXZlYylcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE2NTMte1xcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTY1NDojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xNjU1LVxcdHJldHVybiBscnV2ZWMtXFx1MDAzZXBnZGF0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaD05MD1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV9jb3VudGVyX3Jlc2V0X3dhdGVybWFyayhzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaC0xMDEtXFxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaDoxMDI6I2lmIElTX0VOQUJMRUQoQ09ORklHX01FTUNHKSB8fCBJU19FTkFCTEVEKENPTkZJR19DR1JPVVBfRE1FTSlcXG5pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oLTEwMy12b2lkIHBhZ2VfY291bnRlcl9jYWxjdWxhdGVfcHJvdGVjdGlvbihzdHJ1Y3QgcGFnZV9jb3VudGVyICpyb290LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oPTgyMD1zdHJ1Y3QgdGFza19zdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEwMTMtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oOjEwMTQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMDE1LVxcdHVuc2lnbmVkXFx0XFx0XFx0aW5fdXNlcl9mYXVsdDoxO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTE1MjktXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oOjE1MzA6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTMxLVxcdHN0cnVjdCBtZW1fY2dyb3VwXFx0XFx0Km1lbWNnX2luX29vbTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTMzLVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxNTM0OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTUzNS1cXHQvKiBOdW1iZXIgb2YgcGFnZXMgdG8gcmVjbGFpbSBvbiByZXR1cm5pbmcgdG8gdXNlcmxhbmQ6ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg9MTYxPWV4dGVybiB2b2lkIGV4ZWNfbW1fcmVsZWFzZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IG1tX3N0cnVjdCAqKTtcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmgtMTYyLVxcbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaDoxNjM6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaC0xNjQtZXh0ZXJuIHZvaWQgbW1fdXBkYXRlX25leHRfb3duZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oPTE2Nj1zdGF0aWMgaW5saW5lIHZvaWQgbW1fdXBkYXRlX25leHRfb3duZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmgtMTY4LX1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg6MTY5OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmgtMTcwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oPTQ2OT1zdGF0aWMgaW5saW5lIHZvaWQgbWVtYWxsb2NfcGluX3Jlc3RvcmUodW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oLTQ3My1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg6NDc0OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmgtNDc1LURFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbWVtX2Nncm91cCAqLCBpbnRfYWN0aXZlX21lbWNnKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2hyaW5rZXIuaD04Mj1zdHJ1Y3Qgc2hyaW5rZXIge1xcbi0tXFxuaW5jbHVkZS9saW51eC9zaHJpbmtlci5oLTEwNi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuaW5jbHVkZS9saW51eC9zaHJpbmtlci5oOjEwNzojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9zaHJpbmtlci5oLTEwOC1cXHQvKiBJRCBpbiBzaHJpbmtlcl9pZHIgKi9cXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oPTI2PWVudW0gX3NsYWJfZmxhZ19iaXRzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTQ1LSNlbmRpZlxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjQ2OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC00Ny1cXHRfU0xBQl9BQ0NPVU5ULFxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjAxLSAqL1xcbmluY2x1ZGUvbGludXgvc2xhYi5oOjIwMjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjAzLSMgZGVmaW5lIFNMQUJfQUNDT1VOVFxcdFxcdF9fU0xBQl9GTEFHX0JJVChfU0xBQl9BQ0NPVU5UKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9NjI5PWVudW0ga21hbGxvY19jYWNoZV90eXBlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTYzMy0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2MzQ6I2lmbmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC02MzUtXFx0S01BTExPQ19DR1JPVVAgPSBLTUFMTE9DX05PUk1BTCxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY0Ni0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2NDc6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY0OC1cXHRLTUFMTE9DX0NHUk9VUCxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oPTY1NT1leHRlcm4ga21lbV9idWNrZXRzIGttYWxsb2NfY2FjaGVzW05SX0tNQUxMT0NfVFlQRVNdO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjYyLVxcdChJU19FTkFCTEVEKENPTkZJR19aT05FX0RNQSkgICA/IF9fR0ZQX0RNQSA6IDApIHxcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6NjYzOlxcdChJU19FTkFCTEVEKENPTkZJR19NRU1DRykgPyBfX0dGUF9BQ0NPVU5UIDogMCkpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjY0LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9NjY3PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgZW51bSBrbWFsbG9jX2NhY2hlX3R5cGUga21hbGxvY190eXBlKGdmcF90IGZsYWdzLCB1bnNpZ25lZCBsb25nIGNhbGxlcilcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY5MC1cXHRcXHRyZXR1cm4gS01BTExPQ19ETUE7XFxuaW5jbHVkZS9saW51eC9zbGFiLmg6NjkxOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUVNQ0cpIHx8IChmbGFncyBcXHUwMDI2IF9fR0ZQX1JFQ0xBSU1BQkxFKSlcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC02OTItXFx0XFx0cmV0dXJuIEtNQUxMT0NfUkVDTEFJTTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oPTc3MD12b2lkICprbWVtX2NhY2hlX2FsbG9jX2xydV9ub3Byb2Yoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBsaXN0X2xydSAqbHJ1LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtNzkzLSAqXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6Nzk0OiAqIDEuIEZvciAhQ09ORklHX01FTUNHIG9yIGNncm91cF9kaXNhYmxlPW1lbW9yeSBzeXN0ZW1zLlxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTc5NS0gKiAyLiBBbHJlYWR5IGNoYXJnZWQgc2xhYiBvYmplY3RzLlxcbi0tXFxuaW5jbHVkZS9saW51eC9zd2FwLmg9NTM0PXN0YXRpYyBpbmxpbmUgaW50IGFkZF9zd2FwX2V4dGVudChzdHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCAqc2lzLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zd2FwLmgtNTQwLSNlbmRpZiAvKiBDT05GSUdfU1dBUCAqL1xcbmluY2x1ZGUvbGludXgvc3dhcC5oOjU0MTojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9zd2FwLmgtNTQyLXN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfc3dhcHBpbmVzcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N3YXAuaD01NTc9c3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF9zd2FwcGluZXNzKHN0cnVjdCBtZW1fY2dyb3VwICptZW0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N3YXAuaC01NjItXFxuaW5jbHVkZS9saW51eC9zd2FwLmg6NTYzOiNpZiBkZWZpbmVkKENPTkZJR19TV0FQKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1DRykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQkxLX0NHUk9VUClcXG5pbmNsdWRlL2xpbnV4L3N3YXAuaC01NjQtdm9pZCBfX2ZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N3YXAuaD01NzI9c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcClcXG4tLVxcbmluY2x1ZGUvbGludXgvc3dhcC5oLTU3Ni1cXG5pbmNsdWRlL2xpbnV4L3N3YXAuaDo1Nzc6I2lmIGRlZmluZWQoQ09ORklHX01FTUNHKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxcbmluY2x1ZGUvbGludXgvc3dhcC5oLTU3OC1pbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oPTMwPXN0cnVjdCBtZW1fY2dyb3VwO1xcbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oLTMxLVxcbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oOjMyOiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaC0zMy12b2lkIHZtcHJlc3N1cmUoZ2ZwX3QgZ2ZwLCBpbnQgb3JkZXIsIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgYm9vbCB0cmVlLFxcbi0tXFxuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmg9NTA9c3RhdGljIGlubGluZSB2b2lkIHZtcHJlc3N1cmVfcHJpbyhnZnBfdCBnZnAsIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaC01MS1cXHRcXHRcXHRcXHQgICBpbnQgcHJpbykge31cXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaDo1MjojZW5kaWYgLyogQ09ORklHX01FTUNHICovXFxuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmgtNTMtI2VuZGlmIC8qIF9fTElOVVhfVk1QUkVTU1VSRV9IICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oPTUwNz1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKnZtX2V2ZW50X25hbWUoZW51bSB2bV9ldmVudF9pdGVtIGl0ZW0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oLTUxNi1cXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oOjUxNzojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC92bXN0YXQuaC01MTgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oPTU0NT1zdGF0aWMgaW5saW5lIHZvaWQgbW9kX2xydXZlY19wYWdlX3N0YXRlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxuaW5jbHVkZS9saW51eC92bXN0YXQuaC01NTAtXFxuaW5jbHVkZS9saW51eC92bXN0YXQuaDo1NTE6I2VuZGlmIC8qIENPTkZJR19NRU1DRyAqL1xcbmluY2x1ZGUvbGludXgvdm1zdGF0LmgtNTUyLVxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTM2NT1zdHJ1Y3Qgc29jayB7XFxuLS1cXG5pbmNsdWRlL25ldC9zb2NrLmgtNDYwLVxcdHN0cnVjdCBzb2NrZXRcXHRcXHQqc2tfc29ja2V0O1xcbmluY2x1ZGUvbmV0L3NvY2suaDo0NjE6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbmV0L3NvY2suaC00NjItXFx0c3RydWN0IG1lbV9jZ3JvdXBcXHQqc2tfbWVtY2c7XFxuLS1cXG5pbmNsdWRlL25ldC9zb2NrLmg9MjY2Mj1zdGF0aWMgaW5saW5lIGdmcF90IGdmcF9tZW1jZ19jaGFyZ2Uodm9pZClcXG4tLVxcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjY2LVxcbmluY2x1ZGUvbmV0L3NvY2suaDoyNjY3OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY2OC1zdGF0aWMgaW5saW5lIHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX2Zyb21fc2soY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTI2Nzg9c3RhdGljIGlubGluZSBib29sIG1lbV9jZ3JvdXBfc2tfdW5kZXJfbWVtb3J5X3ByZXNzdXJlKGNvbnN0IHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjgxLVxcbmluY2x1ZGUvbmV0L3NvY2suaDoyNjgyOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4My1cXHRpZiAoIWNncm91cF9zdWJzeXNfb25fZGZsKG1lbW9yeV9jZ3JwX3N1YnN5cykpXFxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODQtXFx0XFx0cmV0dXJuICEhbWVtY2ctXFx1MDAzZXRjcG1lbV9wcmVzc3VyZTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTY6MzUuNTAzMTk3MjI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3OTI5MDE4NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MTM2ODAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjU2OjUzLjQzMjIyNTM5MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MjQ1NzE1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUVNQ0dfVjFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9ODk9c3RydWN0IG1lbV9jZ3JvdXBfcGVyX25vZGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTctXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6OTg6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk5LVxcdC8qXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0yMDI9c3RydWN0IG1lbV9jZ3JvdXAge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjg1LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjI4NjojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjg3LVxcdC8qIExlZ2FjeSBjb25zdW1lci1vcmllbnRlZCBjb3VudGVycyAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzIwLVxcdHNwaW5sb2NrX3QgZXZlbnRfbGlzdF9sb2NrO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjMyMTojZW5kaWYgLyogQ09ORklHX01FTUNHX1YxICovXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzIyLVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTg2NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtX2Nncm91cF96c3dhcF93cml0ZWJhY2tfZW5hYmxlZChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODc0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4NzU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NzYtdW5zaWduZWQgbG9uZyBtZW1jZzFfc29mdF9saW1pdF9yZWNsYWltKHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlcixcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4OTM9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfZXhpdF91c2VyX2ZhdWx0KHZvaWQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODk4LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4OTk6I2Vsc2UgLyogQ09ORklHX01FTUNHX1YxICovXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkwMC1zdGF0aWMgaW5saW5lXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xOTIyPXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX2V4aXRfdXNlcl9mYXVsdCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkyNS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxOTI2OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE5Mjg6I2lmIGRlZmluZWQoQ09ORklHX01FTUNHX1YxKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE5MjktXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODIwPXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTAxMy0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTAxNDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEwMTUtXFx0dW5zaWduZWRcXHRcXHRcXHRpbl91c2VyX2ZhdWx0OjE7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTUyOS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTUzMDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTE1MzEtXFx0c3RydWN0IG1lbV9jZ3JvdXBcXHRcXHQqbWVtY2dfaW5fb29tO1xcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTI2Nzg9c3RhdGljIGlubGluZSBib29sIG1lbV9jZ3JvdXBfc2tfdW5kZXJfbWVtb3J5X3ByZXNzdXJlKGNvbnN0IHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjgxLVxcbmluY2x1ZGUvbmV0L3NvY2suaDoyNjgyOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4My1cXHRpZiAoIWNncm91cF9zdWJzeXNfb25fZGZsKG1lbW9yeV9jZ3JwX3N1YnN5cykpXFxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODQtXFx0XFx0cmV0dXJuICEhbWVtY2ctXFx1MDAzZXRjcG1lbV9wcmVzc3VyZTtcXG5pbmNsdWRlL25ldC9zb2NrLmg6MjY4NTojZW5kaWYgLyogQ09ORklHX01FTUNHX1YxICovXFxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODYtXFxuLS1cXG5tbS9NYWtlZmlsZT0xMDM9b2JqLSQoQ09ORklHX0xJVkVVUERBVEVfTUVNRkQpICs9IG1lbWZkX2x1by5vXFxubW0vTWFrZWZpbGU6MTA0Om9iai0kKENPTkZJR19NRU1DR19WMSkgKz0gbWVtY29udHJvbC12MS5vXFxubW0vTWFrZWZpbGUtMTA1LW9iai0kKENPTkZJR19NRU1DRykgKz0gbWVtY29udHJvbC5vIHZtcHJlc3N1cmUub1xcbi0tXFxubW0vbWVtY29udHJvbC12MS5oPTMwPXN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX3ByaXZhdGVfaWRfZ2V0X29ubGluZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmgtMzMtLyogQ2dyb3VwIHYxLXNwZWNpZmljIGRlY2xhcmF0aW9ucyAqL1xcbm1tL21lbWNvbnRyb2wtdjEuaDozNDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC12MS5oLTM1LVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5oPTk3PWV4dGVybiBzdHJ1Y3QgY2Z0eXBlIG1lbV9jZ3JvdXBfbGVnYWN5X2ZpbGVzW107XFxubW0vbWVtY29udHJvbC12MS5oLTk4LVxcbm1tL21lbWNvbnRyb2wtdjEuaDo5OTojZWxzZVxcdC8qIENPTkZJR19NRU1DR19WMSAqL1xcbm1tL21lbWNvbnRyb2wtdjEuaC0xMDAtXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmg9MTI3PXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1jZzFfdW5jaGFyZ2Vfc2ttZW0oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpIHt9XFxubW0vbWVtY29udHJvbC12MS5oLTEyOC1cXG5tbS9tZW1jb250cm9sLXYxLmg6MTI5OiNlbmRpZlxcdC8qIENPTkZJR19NRU1DR19WMSAqL1xcbm1tL21lbWNvbnRyb2wtdjEuaC0xMzAtXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MjA5PXN0YXRpYyBpbmxpbmUgc3RydWN0IG9ial9jZ3JvdXAgKl9fbWVtY2dfcmVwYXJlbnRfb2JqY2dzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0yMjgtXFxubW0vbWVtY29udHJvbC5jOjIyOTojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTIzMC1zdGF0aWMgdm9pZCBfX21lbV9jZ3JvdXBfZmx1c2hfc3RhdHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBib29sIGZvcmNlKTtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz01MDU9dW5zaWduZWQgbG9uZyBscnV2ZWNfcGFnZV9zdGF0ZV9sb2NhbChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNTI3LVxcbm1tL21lbWNvbnRyb2wuYzo1Mjg6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy01Mjktc3RhdGljIHZvaWQgX19tb2RfbWVtY2dfbHJ1dmVjX3N0YXRlKHN0cnVjdCBtZW1fY2dyb3VwX3Blcl9ub2RlICpwbixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz01NTM9c3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtZW1jZ192bV9ldmVudF9zdGF0W10gPSB7XFxubW0vbWVtY29udHJvbC5jOjU1NDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTU1NS1cXHRQR1BHSU4sXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9Nzg3PXN0YXRpYyBsb25nIG1lbWNnX3N0YXRlX3ZhbF9pbl9wYWdlcyhpbnQgaWR4LCBsb25nIHZhbClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy04MDItXFxubW0vbWVtY29udHJvbC5jOjgwMzojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTgwNC0vKlxcbi0tXFxubW0vbWVtY29udHJvbC5jPTg3MT12b2lkIG1vZF9tZW1jZ19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGVudW0gbWVtY2dfc3RhdF9pdGVtIGlkeCxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy04ODMtXFxubW0vbWVtY29udHJvbC5jOjg4NDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTg4NS0vKiBpZHggY2FuIGJlIG9mIHR5cGUgZW51bSBtZW1jZ19zdGF0X2l0ZW0gb3Igbm9kZV9zdGF0X2l0ZW0uICovXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTA1OT1ib29sIG1lbWNnX3ZtX2V2ZW50X2l0ZW1fdmFsaWQoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xMDY2LVxcbm1tL21lbWNvbnRyb2wuYzoxMDY3OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMTA2OC11bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50c19sb2NhbChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xNjY3PXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xNjcyLVxcbm1tL21lbWNvbnRyb2wuYzoxNjczOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMTY3NC11bnNpZ25lZCBsb25nIG1lbWNnX3BhZ2Vfc3RhdGVfbG9jYWxfb3V0cHV0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGl0ZW0pXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE3MzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobWVtY2dfdm1fZXZlbnRfc3RhdCk7IGkrKykge1xcbm1tL21lbWNvbnRyb2wuYzoxNzQwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMTc0MS1cXHRcXHRpZiAobWVtY2dfdm1fZXZlbnRfc3RhdFtpXSA9PSBQR1BHSU4gfHxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xNzkxPXZvaWQgbWVtX2Nncm91cF9wcmludF9vb21fbWVtaW5mbyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTgxMi1cXHRcXHRcXHRhdG9taWNfbG9uZ19yZWFkKFxcdTAwMjZtZW1jZy1cXHUwMDNlbWVtb3J5X2V2ZW50c1tNRU1DR19TV0FQX01BWF0pKTtcXG5tbS9tZW1jb250cm9sLmM6MTgxMzojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTE4MTQtXFx0ZWxzZSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDE1Nj1tZW1fY2dyb3VwX2Nzc19hbGxvYyhzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcGFyZW50X2NzcylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00MTc5LVxcdFxcdHBhZ2VfY291bnRlcl9pbml0KFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCwgXFx1MDAyNnBhcmVudC1cXHUwMDNlc3dhcCwgZmFsc2UpO1xcbm1tL21lbWNvbnRyb2wuYzo0MTgwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtNDE4MS1cXHRcXHRtZW1jZy1cXHUwMDNlbWVtb3J5LnRyYWNrX2ZhaWxjbnQgPSAhbWVtY2dfb25fZGZsO1xcbi0tXFxubW0vbWVtY29udHJvbC5jLTQxOTAtXFx0XFx0cGFnZV9jb3VudGVyX2luaXQoXFx1MDAyNm1lbWNnLVxcdTAwM2Vzd2FwLCBOVUxMLCBmYWxzZSk7XFxubW0vbWVtY29udHJvbC5jOjQxOTE6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy00MTkyLVxcdFxcdHBhZ2VfY291bnRlcl9pbml0KFxcdTAwMjZtZW1jZy1cXHUwMDNla21lbSwgTlVMTCwgZmFsc2UpO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTQzNTg9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9jc3NfcmVzZXQoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00MzYzLVxcdHBhZ2VfY291bnRlcl9zZXRfbWF4KFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCwgUEFHRV9DT1VOVEVSX01BWCk7XFxubW0vbWVtY29udHJvbC5jOjQzNjQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy00MzY1LVxcdHBhZ2VfY291bnRlcl9zZXRfbWF4KFxcdTAwMjZtZW1jZy1cXHUwMDNla21lbSwgUEFHRV9DT1VOVEVSX01BWCk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NTA4MT1zdHJ1Y3QgY2dyb3VwX3N1YnN5cyBtZW1vcnlfY2dycF9zdWJzeXMgPSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNTA5Mi1cXHQuZGZsX2NmdHlwZXMgPSBtZW1vcnlfZmlsZXMsXFxubW0vbWVtY29udHJvbC5jOjUwOTM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy01MDk0LVxcdC5sZWdhY3lfY2Z0eXBlcyA9IG1lbV9jZ3JvdXBfbGVnYWN5X2ZpbGVzLFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTYwMjc9c3RhdGljIGludCBfX2luaXQgbWVtX2Nncm91cF9zd2FwX2luaXQodm9pZClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy02MDMyLVxcdFdBUk5fT04oY2dyb3VwX2FkZF9kZmxfY2Z0eXBlcyhcXHUwMDI2bWVtb3J5X2NncnBfc3Vic3lzLCBzd2FwX2ZpbGVzKSk7XFxubW0vbWVtY29udHJvbC5jOjYwMzM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy02MDM0LVxcdFdBUk5fT04oY2dyb3VwX2FkZF9sZWdhY3lfY2Z0eXBlcyhcXHUwMDI2bWVtb3J5X2NncnBfc3Vic3lzLCBtZW1zd19maWxlcykpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1Njo1NS4yODQ2ODg5OTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU0MTE2MDEyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2g6IFNhZmVndWFyZGluZyBNZW1vcnkgQ29udHJvbCBpbiBEeWluZyBjZ3JvdXBzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtYWtpbmcgYSBzbWFsbCwgYnV0IHBvdGVudGlhbGx5IGltcG9ydGFudCwgY2hhbmdlLiBUaGV5J3JlIGFkZGluZyBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkgYnJlYWs7YCB0byB0aHJlZSBmdW5jdGlvbnMuIFRoZSBmdW5jdGlvbnMgYXJlIGBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCAoYm90aCBpbiBgbW0vbWVtY29udHJvbC5jYCkgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gYG1tL3Ztc2Nhbi5jYCkuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSB0aWVkIHRvIGNncm91cCBtZW1vcnkgY29udHJvbCwgb3IgbWVtY2csIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5gbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAgYXJlIHRoZSB3cml0ZSBoYW5kbGVycyBmb3IgdGhlIGBtZW1vcnkuaGlnaGAgYW5kIGBtZW1vcnkubWF4YCBmaWxlcyBpbiBjZ3JvdXAgdjIsIHNvIHRoYXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgd2hlcmUgaXQgZ2V0cyBhIGxpdHRsZSBtb3JlIGludm9sdmVkLiBJdCdzIGNhbGxlZCBmcm9tIGBtZW1vcnlfcmVjbGFpbWAgd2hpY2ggaGFuZGxlcyB3cml0aW5nIHRvIHRoZSBgbWVtb3J5LnJlY2xhaW1gIGZpbGUsIGFsc28gYSBjZ3JvdXAgdjIgZmlsZSwgYW5kIGByZWNsYWltX3N0b3JlYCwgd2hpY2ggSSBuZWVkIHRvIGludmVzdGlnYXRlIGEgYml0IG1vcmUuXG5cblRoZSBwYXRjaCBpdHNlbGYgbG9va3MgZnVuY3Rpb25hbCDigJMgaXQncyBiYXNpY2FsbHkgcHJldmVudGluZyB3b3JrIGZyb20gYmVpbmcgZG9uZSBvbiBhIG1lbWNnIHRoYXQncyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLiBUaGlzIHNlZW1zIHNlbnNpYmxlLCBhcyBpdCB3b3VsZCBwcmV2ZW50IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZXJyb3JzLCBzbyBmYXIsIHNvIGdvb2QuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBoZXJlIGlzIHRoYXQgdGhlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGp1c3QgYnkgd3JpdGluZyB0byB0aGUgYXBwcm9wcmlhdGUgY2dyb3VwIGZpbGVzLCBzcGVjaWZpY2FsbHkgYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBvciBgbWVtb3J5LnJlY2xhaW1gLCBhbmQgdGhhdCBhbGwgb2YgdGhpcyBjYW4gb2NjdXIgd2hlbiB0aGUgY2dyb3VwIGlzIGFscmVhZHkgYmVpbmcgZGVsZXRlZC5cblxuTGV0J3MgZG8gc29tZSBjb25maWcgY2hlY2tzIHRvIHNlZSBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4gYENPTkZJR19NRU1DR2AgaXMgdGhlIG1haW4gb25lLCBvZiBjb3Vyc2UsIGZvciBtZW1vcnkgY2dyb3Vwcy4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHRvIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zLCBidXQgbGV0J3MganVzdCBtYWtlIHN1cmUuXG5cbmBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCBhcmUgZGVmaW5pdGVseSB3aXRoaW4gYG1tL21lbWNvbnRyb2wuY2AgYW5kIHVuZGVyIGBDT05GSUdfTUVNQ0dgLiBHb29kLiBOb3csIHdoYXQgYWJvdXQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gPyBMZXQncyBjaGVjayB0aGUgY29kZTpcblxuYGBgY1xuaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuXHRcdFx0ICAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBwZ19kYXRhX3QgKnBnZGF0KVxue1xuXHQuLi5cblx0aWYgKG1lbWNnKSB7XG5cdFx0dW5zaWduZWQgaW50IHJlY2xhaW1fb3B0aW9ucztcblxuXHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG5cdFx0XHRicmVhaztcblx0XHQuLi5cbmBgYFxuXG5BaCwgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIGNoZWNrcyBmb3IgdGhlIG1lbWNnIGJlaW5nIGRlYWQgKmluc2lkZSogdGhlIGZ1bmN0aW9uLiBNYWtlcyBzZW5zZSwgYmVjYXVzZSBpdCBpcyBjYWxsZWQgZnJvbSB0d28gb3RoZXIgcGxhY2VzLCBvbmUgb2YgdGhlbSwgYG1lbW9yeV9yZWNsYWltYCwgaXMgdW5kZXIgYENPTkZJR19NRU1DR2AuIEJ1dCB3aGF0IGFib3V0IHRoZSBvdGhlcj8gSSByZWNhbGwgdGhhdCBpdCBpcyBmcm9tIGByZWNsYWltX3N0b3JlYCwgd2hpY2ggaXMgdW5kZXIgYENPTkZJR19OVU1BYCwgd2hpY2ggY2FsbHMgdGhpcyBmdW5jdGlvbi4gSG1tLiBOZWVkIHRvIGNvbmZpcm0gdGhhdC4gTGV0J3MgbG9vayBhdCBgcmVjbGFpbV9zdG9yZWAgaW4gYG1tL3Ztc2Nhbi5jYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjUwMywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NzoyMC42OTYyOTM2MjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODA2NDc2ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjbGFpbV9zdG9yZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9zeXNmcy5jPTk1Mj1zdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19keW5hbWljX3JlY2xhaW1fc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbmZzL2J0cmZzL3N5c2ZzLmMtOTYwLVxcbmZzL2J0cmZzL3N5c2ZzLmM6OTYxOnN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX2R5bmFtaWNfcmVjbGFpbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5mcy9idHJmcy9zeXNmcy5jLTk2Mi1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGtvYmpfYXR0cmlidXRlICphLFxcbi0tXFxuZnMvYnRyZnMvc3lzZnMuYz05ODE9QlRSRlNfQVRUUl9SVyhzcGFjZV9pbmZvLCBkeW5hbWljX3JlY2xhaW0sXFxuZnMvYnRyZnMvc3lzZnMuYy05ODItXFx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3Nob3csXFxuZnMvYnRyZnMvc3lzZnMuYzo5ODM6XFx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3N0b3JlKTtcXG5mcy9idHJmcy9zeXNmcy5jLTk4NC1cXG5mcy9idHJmcy9zeXNmcy5jPTk4NT1zdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5mcy9idHJmcy9zeXNmcy5jLTk5My1cXG5mcy9idHJmcy9zeXNmcy5jOjk5NDpzdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbmZzL2J0cmZzL3N5c2ZzLmMtOTk1LVxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmEsXFxuLS1cXG5mcy9idHJmcy9zeXNmcy5jPTEwMTQ9QlRSRlNfQVRUUl9SVyhzcGFjZV9pbmZvLCBwZXJpb2RpY19yZWNsYWltLFxcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNS1cXHQgICAgICBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3csXFxuZnMvYnRyZnMvc3lzZnMuYzoxMDE2OlxcdCAgICAgIGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc3RvcmUpO1xcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNy1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTgwMDk9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xcbi0tXFxubW0vdm1zY2FuLmMtODAxMS0jaWYgZGVmaW5lZChDT05GSUdfU1lTRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXFxubW0vdm1zY2FuLmM6ODAxMjpzdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5tbS92bXNjYW4uYy04MDEzLVxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjU3OjIzLjg3Njk0NzgyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDA5NDQ1ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHJlY2xhaW1fc3RvcmVgIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIGByZWNsYWltX3N0b3JlYCBpcyBuZXN0ZWQgdW5kZXIgYENPTkZJR19TWVNGU2AgYW5kIGBDT05GSUdfTlVNQWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBCdXQgdGhpcyBwYXRjaCBpcyBhZGRpbmcgdGhhdCBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlgIGNoZWNrICppbnNpZGUqIHRoZSBgaWYgKG1lbWNnKWAgYmxvY2sgd2l0aGluIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYC4gVGhpcyBtZWFucyBpdCAqb25seSogYWZmZWN0cyB0aGUgbWVtY2cgcGF0aCwgcmlnaHQ/IFRoZXJlZm9yZSwgYENPTkZJR19NRU1DR2AgaXMgdGhlIHJlYWwgZGVjaWRpbmcgZmFjdG9yIGhlcmUuIEl0J3MgdGhlIG9ubHkgb25lIHRoYXQgcmVhbGx5IG1hdHRlcnMgZm9yIHdoZXRoZXIgdGhpcyBjaGFuZ2UgZXZlbiBkb2VzIGFueXRoaW5nLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIGBtZW1jZ19pc19keWluZ2AgaXMgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhgLiBMZXQgbWUgcXVpY2tseSBsb29rIGF0IHRoYXQgZGVmaW5pdGlvbjpcblxuYGBgY1xuc3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbntcblx0cmV0dXJuICEobWVtY2ctXHUwMDNlY3NzLmZsYWdzIFx1MDAyNiBDU1NfT05MSU5FKTtcbn1cbmBgYFxuXG5Pa2F5LCBzbyBpdCBjaGVja3MgYENTU19PTkxJTkVgLiBCdXQuLi4gd2FpdCEgYG1lbWNnX2lzX2R5aW5nYCBpcyAqb25seSogYXZhaWxhYmxlIGlmIGBDT05GSUdfTUVNQ0dgIGlzIGVuYWJsZWQhIElmIGl0J3MgZGlzYWJsZWQsIHRoZW4gdGhlIGZ1bmN0aW9uIG1pZ2h0IG5vdCBldmVuIGJlIGRlZmluZWQsIG9yIGl0IG1pZ2h0IGJlIGRlZmluZWQgdG8gYSBkZWZhdWx0IG9mIGBmYWxzZWAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZSBhbmQgc2VlIHdoYXQgaGFwcGVucyB3aGVuIGBDT05GSUdfTUVNQ0dgIGlzIG5vdCBzZXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5OTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTc6MjkuMjg2Mzk1OTE3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYzMTU5MDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbWNnX2lzX2R5aW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE3NjM9dm9pZCBtZW1fY2dyb3VwX3Nob3dfcHJvdGVjdGVkX21lbW9yeShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE3NjQtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTc2NTpzdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfaXNfZHlpbmcoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE3NjYte1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTgzNz1zdGF0aWMgaW5saW5lIHZvaWQgbWVtX2Nncm91cF9zaG93X3Byb3RlY3RlZF9tZW1vcnkoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0MC1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODQxOnN0YXRpYyBpbmxpbmUgYm9vbCBtZW1jZ19pc19keWluZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0Mi17XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9ODA4PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKmdldF9ub25fZHlpbmdfbWVtY2dfc3RhcnQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTgxOS1cXG5tbS9tZW1jb250cm9sLmM6ODIwOlxcdHdoaWxlIChtZW1jZ19pc19keWluZyhtZW1jZykpXFxubW0vbWVtY29udHJvbC5jLTgyMS1cXHRcXHRtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKTtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz00NzY3PXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00Nzk1LVxcbm1tL21lbWNvbnRyb2wuYzo0Nzk2OlxcdFxcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXFxubW0vbWVtY29udHJvbC5jLTQ3OTctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDgyMj1zdGF0aWMgc3NpemVfdCBtZW1vcnlfbWF4X3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00ODQ5LVxcbm1tL21lbWNvbnRyb2wuYzo0ODUwOlxcdFxcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXFxubW0vbWVtY29udHJvbC5jLTQ4NTEtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS92bXNjYW4uYz03ODY2PWludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcXG4tLVxcbm1tL3Ztc2Nhbi5jLTc5MjQtXFxubW0vdm1zY2FuLmM6NzkyNTpcXHRcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbm1tL3Ztc2Nhbi5jLTc5MjYtXFx0XFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjU3OjMxLjI0OTU2MjM3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjQxMzYyNDA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjE4NzM3LCJPdXRwdXRUb2tlbnMiOjE5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTc6NTMuNjYzMTg4OTc5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc4NzQ0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWVtb3J5X2hpZ2hfd3JpdGVcIixcbiAgICBcIm1lbW9yeV9tYXhfd3JpdGVcIixcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGNoZWNrcyBmb3IgYG1lbWNnX2lzX2R5aW5nKG1lbWNnKWAgaW4gYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgIChpbiBtbS9tZW1jb250cm9sLmMpLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIChpbiBtbS92bXNjYW4uYykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBjZ3JvdXBmcyB3cml0ZXMgKGBtZW1vcnkuaGlnaGAsIGBtZW1vcnkubWF4YCwgYG1lbW9yeS5yZWNsYWltYCkgYW5kIHN5c2ZzIHdyaXRlcyAoYHJlY2xhaW1gKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYXMgdGhleSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgYnJlYWtpbmcgb3V0IG9mIGxvb3BzIGlmIHRoZSBtZW1vcnkgY2dyb3VwIGlzIGR5aW5nLiBUaGUgY29kZSBpcyBndWFyZGVkIGJ5IENPTkZJR19NRU1DRywgd2hpY2ggbmVlZHMgdG8gYmUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1DR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1lbW9yeV9oaWdoX3dyaXRlXCIsXG4gICAgXCJtZW1vcnlfbWF4X3dyaXRlXCIsXG4gICAgXCJ1c2VyX3Byb2FjdGl2ZV9yZWNsYWltXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBjaGVja3MgZm9yIGBtZW1jZ19pc19keWluZyhtZW1jZylgIGluIGBtZW1vcnlfaGlnaF93cml0ZWAsIGBtZW1vcnlfbWF4X3dyaXRlYCAoaW4gbW0vbWVtY29udHJvbC5jKSwgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gbW0vdm1zY2FuLmMpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgY2dyb3VwZnMgd3JpdGVzIChgbWVtb3J5LmhpZ2hgLCBgbWVtb3J5Lm1heGAsIGBtZW1vcnkucmVjbGFpbWApIGFuZCBzeXNmcyB3cml0ZXMgKGByZWNsYWltYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFzIHRoZXkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGJ5IGJyZWFraW5nIG91dCBvZiBsb29wcyBpZiB0aGUgbWVtb3J5IGNncm91cCBpcyBkeWluZy4gVGhlIGNvZGUgaXMgZ3VhcmRlZCBieSBDT05GSUdfTUVNQ0csIHdoaWNoIG5lZWRzIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4lw7w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 06:41:27 +0000 UTC FinishedAt: 2026-06-23 06:57:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "189ce3c81f8188fb737d59a8a8784f074e830238", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "189ce3c81f8188fb737d59a8a8784f074e830238", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG" ], "series_id": "f083a444-0640-48ca-919d-2cce5c38575a" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "memory_high_write", "memory_max_write", "user_proactive_reclaim" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWVtb3J5X2hpZ2hfd3JpdGUmIzM0OywKICAgICYjMzQ7bWVtb3J5X21heF93cml0ZSYjMzQ7LAogICAgJiMzNDt1c2VyX3Byb2FjdGl2ZV9yZWNsYWltJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgY2hlY2tzIGZvciBgbWVtY2dfaXNfZHlpbmcobWVtY2cpYCBpbiBgbWVtb3J5X2hpZ2hfd3JpdGVgLCBgbWVtb3J5X21heF93cml0ZWAgKGluIG1tL21lbWNvbnRyb2wuYyksIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgKGluIG1tL3Ztc2Nhbi5jKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdmlhIGNncm91cGZzIHdyaXRlcyAoYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBgbWVtb3J5LnJlY2xhaW1gKSBhbmQgc3lzZnMgd3JpdGVzIChgcmVjbGFpbWApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhcyB0aGV5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBieSBicmVha2luZyBvdXQgb2YgbG9vcHMgaWYgdGhlIG1lbW9yeSBjZ3JvdXAgaXMgZHlpbmcuIFRoZSBjb2RlIGlzIGd1YXJkZWQgYnkgQ09ORklHX01FTUNHLCB3aGljaCBuZWVkcyB0byBiZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2ZkNWJkZDIwOTNmZDE4NmQwMWViNDQ5ZGVkZjVlYmQ3ZGRkY2ViOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDA2OjU1OjEwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xuaW5kZXggNTZjZDRhZjA4MjMyNmIuLjA2YmRlNmM1MzE4ZjJiIDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1jb250cm9sLmNcbkBAIC00NzkzLDYgJiM0Mzs0NzkzLDkgQEAgc3RhdGljIHNzaXplX3QgbWVtb3J5X2hpZ2hfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuIFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4gXHRcdFx0YnJlYWs7XG4gXG4mIzQzO1x0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdGlmICghZHJhaW5lZCkge1xuIFx0XHRcdGRyYWluX2FsbF9zdG9jayhtZW1jZyk7XG4gXHRcdFx0ZHJhaW5lZCA9IHRydWU7XG5AQCAtNDg0NCw2ICYjNDM7NDg0Nyw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuIFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4gXHRcdFx0YnJlYWs7XG4gXG4mIzQzO1x0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdGlmICghZHJhaW5lZCkge1xuIFx0XHRcdGRyYWluX2FsbF9zdG9jayhtZW1jZyk7XG4gXHRcdFx0ZHJhaW5lZCA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggODE5MGM0YWJlYzg0MTguLjExNjJiN2Y3NjY1NWU5IDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3Ztc2Nhbi5jXG5AQCAtNzkyMiw2ICYjNDM7NzkyMiw5IEBAIGludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcbiBcdFx0aWYgKG1lbWNnKSB7XG4gXHRcdFx0dW5zaWduZWQgaW50IHJlY2xhaW1fb3B0aW9ucztcbiBcbiYjNDM7XHRcdFx0aWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdFx0cmVjbGFpbV9vcHRpb25zID0gTUVNQ0dfUkVDTEFJTV9NQVlfU1dBUCB8XG4gXHRcdFx0XHRcdCAgTUVNQ0dfUkVDTEFJTV9QUk9BQ1RJVkU7XG4gXHRcdFx0cmVjbGFpbWVkID0gdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlcyhtZW1jZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21lbW9yeV9oaWdoX3dyaXRlJiMzNDssCiAgICAmIzM0O21lbW9yeV9tYXhfd3JpdGUmIzM0OywKICAgICYjMzQ7dXNlcl9wcm9hY3RpdmVfcmVjbGFpbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGNoZWNrcyBmb3IgYG1lbWNnX2lzX2R5aW5nKG1lbWNnKWAgaW4gYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgIChpbiBtbS9tZW1jb250cm9sLmMpLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIChpbiBtbS92bXNjYW4uYykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBjZ3JvdXBmcyB3cml0ZXMgKGBtZW1vcnkuaGlnaGAsIGBtZW1vcnkubWF4YCwgYG1lbW9yeS5yZWNsYWltYCkgYW5kIHN5c2ZzIHdyaXRlcyAoYHJlY2xhaW1gKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYXMgdGhleSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgYnJlYWtpbmcgb3V0IG9mIGxvb3BzIGlmIHRoZSBtZW1vcnkgY2dyb3VwIGlzIGR5aW5nLiBUaGUgY29kZSBpcyBndWFyZGVkIGJ5IENPTkZJR19NRU1DRywgd2hpY2ggbmVlZHMgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2ZkNWJkZDIwOTNmZDE4NmQwMWViNDQ5ZGVkZjVlYmQ3ZGRkY2ViOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDA2OjU1OjEwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jCmluZGV4IDU2Y2Q0YWYwODIzMjZiLi4wNmJkZTZjNTMxOGYyYiAxMDA2NDQKLS0tIGEvbW0vbWVtY29udHJvbC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbWNvbnRyb2wuYwpAQCAtNDc5Myw2ICYjNDM7NDc5Myw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwKIAkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQogCQkJYnJlYWs7CiAKJiM0MzsJCWlmIChtZW1jZ19pc19keWluZyhtZW1jZykpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiAJCWlmICghZHJhaW5lZCkgewogCQkJZHJhaW5fYWxsX3N0b2NrKG1lbWNnKTsKIAkJCWRyYWluZWQgPSB0cnVlOwpAQCAtNDg0NCw2ICYjNDM7NDg0Nyw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLAogCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCiAJCQlicmVhazsKIAomIzQzOwkJaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKIAkJaWYgKCFkcmFpbmVkKSB7CiAJCQlkcmFpbl9hbGxfc3RvY2sobWVtY2cpOwogCQkJZHJhaW5lZCA9IHRydWU7CmRpZmYgLS1naXQgYS9tbS92bXNjYW4uYyBiL21tL3Ztc2Nhbi5jCmluZGV4IDgxOTBjNGFiZWM4NDE4Li4xMTYyYjdmNzY2NTVlOSAxMDA2NDQKLS0tIGEvbW0vdm1zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vdm1zY2FuLmMKQEAgLTc5MjIsNiAmIzQzOzc5MjIsOSBAQCBpbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsCiAJCWlmIChtZW1jZykgewogCQkJdW5zaWduZWQgaW50IHJlY2xhaW1fb3B0aW9uczsKIAomIzQzOwkJCWlmIChtZW1jZ19pc19keWluZyhtZW1jZykpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwogCQkJcmVjbGFpbV9vcHRpb25zID0gTUVNQ0dfUkVDTEFJTV9NQVlfU1dBUCB8CiAJCQkJCSAgTUVNQ0dfUkVDTEFJTV9QUk9BQ1RJVkU7CiAJCQlyZWNsYWltZWQgPSB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzKG1lbWNnLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTEwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgTWVtb3J5IENvbnRyb2xsZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbW0vbWVtY29udHJvbC5jYCBhbmQgYG1tL3Ztc2Nhbi5jYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkgYnJlYWs7YCBpbiB0aHJlZSBzcG90cy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZmlyc3QgdHdvIGFyZSBpbiBgbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAsIGJvdGggaW4gYG1tL21lbWNvbnRyb2wuY2AuIFJpZ2h0LCB0aG9zZSBhcmUgdGhlIGNncm91cCB2MiBoYW5kbGVycyBmb3IgYG1lbW9yeS5oaWdoYCBhbmQgYG1lbW9yeS5tYXhgLCB0aGUgbWVtb3J5IGxpbWl0cy4gQW5kIHRoZSB0aGlyZCBpbnN0YW5jZSBpcyBpbiBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgd2hpY2ggaXMgYWxzbyBpbiBgbW0vdm1zY2FuLmNgLCBzbyB0aGF0JiMzOTtzIHRoZSBoYW5kbGVyIGZvciB0aGUgYG1lbW9yeS5yZWNsYWltYCBjb250cm9sIGZpbGUgaW4gdGhlIGNncm91cCB2MiBtZW1vcnkgY29udHJvbGxlci4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3Mgd2hlcmUgeW91JiMzOTtkIGV4cGVjdCB0byBzZWUgdGhlc2Uga2luZHMgb2YgY2hlY2tzLgoKTm93LCB3aGF0IGFib3V0IGBtZW1jZ19pc19keWluZ2A/IEFoLCBpdCYjMzk7cyBub3QgZGVmaW5lZCBpbiB0aGUgcGF0Y2ggaXRzZWxmLCBzbyBpdCBtdXN0IGJlIHNvbWV0aGluZyBwcmUtZXhpc3RpbmcuIElzIGl0IGBtZW1fY2dyb3VwX2lzX2R5aW5nYCBvciBqdXN0IGBtZW1jZ19pc19keWluZ2A/IFRoZSBwYXRjaCBzYXlzIGBtZW1jZ19pc19keWluZ2AuIElzIHRoaXMgYSBtYWNybyBvciBhIGZ1bmN0aW9uPyBJdCBzaG91bGQgYmUgaW4gYG1tL21lbWNvbnRyb2wuY2Agb3IgYGluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oYCwgcHJvYmFibHkuIExldCYjMzk7cyBsb29rIHRoZXJlIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBtZWFucyBmb3IgYSBtZW1vcnkgY29udHJvbCBncm91cCB0byBiZSAmIzM0O2R5aW5nJiMzNDsgYW5kIHdoeSB3ZSYjMzk7cmUgYnJlYWtpbmcgb3V0IG9mIHRoZXNlIHdyaXRlIGhhbmRsZXJzIHdoZW4gdGhhdCYjMzk7cyB0aGUgY2FzZS4gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbWNnX2lzX2R5aW5nJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE3NjM9dm9pZCBtZW1fY2dyb3VwX3Nob3dfcHJvdGVjdGVkX21lbW9yeShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTc2NC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE3NjU6c3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE3NjYte1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4Mzc9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfc2hvd19wcm90ZWN0ZWRfbWVtb3J5KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODQwLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTg0MTpzdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfaXNfZHlpbmcoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0Mi17XG4tLVxubW0vbWVtY29udHJvbC5jPTgwOD1zdGF0aWMgaW5saW5lIHN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbm9uX2R5aW5nX21lbWNnX3N0YXJ0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbi0tXG5tbS9tZW1jb250cm9sLmMtODE5LVxubW0vbWVtY29udHJvbC5jOjgyMDpcdHdoaWxlIChtZW1jZ19pc19keWluZyhtZW1jZykpXG5tbS9tZW1jb250cm9sLmMtODIxLVx0XHRtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKTtcbi0tXG5tbS9tZW1jb250cm9sLmM9NDc2Nz1zdGF0aWMgc3NpemVfdCBtZW1vcnlfaGlnaF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXG4tLVxubW0vbWVtY29udHJvbC5jLTQ3OTUtXG5tbS9tZW1jb250cm9sLmM6NDc5NjpcdFx0aWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcbm1tL21lbWNvbnRyb2wuYy00Nzk3LVx0XHRcdGJyZWFrO1xuLS1cbm1tL21lbWNvbnRyb2wuYz00ODIyPXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbm1tL21lbWNvbnRyb2wuYy00ODQ5LVxubW0vbWVtY29udHJvbC5jOjQ4NTA6XHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG5tbS9tZW1jb250cm9sLmMtNDg1MS1cdFx0XHRicmVhaztcbi0tXG5tbS92bXNjYW4uYz03ODY2PWludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1Zixcbi0tXG5tbS92bXNjYW4uYy03OTI0LVxubW0vdm1zY2FuLmM6NzkyNTpcdFx0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxubW0vdm1zY2FuLmMtNzkyNi1cdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODEKCQkJCQkJCW91dHB1dDogNTkKCQkJCQkJCXRob3VnaHRzOiAxNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXcgTWVtY2cgRHlpbmcgQ2hlY2tzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgbWVtY2dfaXNfZHlpbmcobWVtY2cpYCBjaGVja3Mgd2l0aGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQgdGFyZ2V0cyBgbWVtb3J5X2hpZ2hfd3JpdGVgLCBgbWVtb3J5X21heF93cml0ZWAsIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXNlIGFyZSBhbGwgY3J1Y2lhbCBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIGNncm91cCBtZW1vcnkgbGltaXRzIGFuZCBwcm9hY3RpdmUgcmVjbGFpbSwgd2hpY2ggYXJlIGFyZWFzIEkmIzM5O20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBUaGUgZmlyc3QgdHdvLCBgbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAsIGFyZSBkZWZpbmVkIGluIGBtbS9tZW1jb250cm9sLmNgLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIHJlc2lkZXMgaW4gYG1tL3Ztc2Nhbi5jYC4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBgbW0vbWVtY29udHJvbC5jYCwgYXMgZXhwZWN0ZWQsIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19NRU1DR2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgY2hlY2tzIHdpdGhpbiBpdCBhcmUgcGFydCBvZiB0aGUgY29yZSBtZW1jZyBmdW5jdGlvbmFsaXR5LiBgbW0vdm1zY2FuLmNgIGlzIGFsd2F5cyBpbmNsdWRlZCwgYnV0IEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHdoZXRoZXIgdGhlIGluY2x1c2lvbiBvZiBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgc3BlY2lmaWNhbGx5IGd1YXJkZWQgYnkgYENPTkZJR19NRU1DR2Agb3Igc29tZSBvdGhlciBkZXBlbmRlbnQgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgY29tcGlsYXRpb24gY29udGV4dCB0byBkZXRlcm1pbmUgZXhhY3RseSBob3cgdGhlIHBhdGNoIHdpbGwgYmVoYXZlIGFjcm9zcyBkaWZmZXJlbnQgc3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5hbHlzaXMgSSBwZXJmb3JtIHdoZW4gcmV2aWV3aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVtb3J5X2hpZ2hfd3JpdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbWVtY29udHJvbC5jPTQ3NjE9c3RhdGljIGludCBtZW1vcnlfaGlnaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5tbS9tZW1jb250cm9sLmMtNDc2Ni1cbm1tL21lbWNvbnRyb2wuYzo0NzY3OnN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbm1tL21lbWNvbnRyb2wuYy00NzY4LVx0XHRcdFx0IGNoYXIgKmJ1Ziwgc2l6ZV90IG5ieXRlcywgbG9mZl90IG9mZilcbi0tXG5tbS9tZW1jb250cm9sLmM9NTAwNz1zdGF0aWMgc3RydWN0IGNmdHlwZSBtZW1vcnlfZmlsZXNbXSA9IHtcbi0tXG5tbS9tZW1jb250cm9sLmMtNTAzNi1cdFx0LnNlcV9zaG93ID0gbWVtb3J5X2hpZ2hfc2hvdyxcbm1tL21lbWNvbnRyb2wuYzo1MDM3Olx0XHQud3JpdGUgPSBtZW1vcnlfaGlnaF93cml0ZSxcbm1tL21lbWNvbnRyb2wuYy01MDM4LVx0fSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW1vcnlfbWF4X3dyaXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wuYz00ODE2PXN0YXRpYyBpbnQgbWVtb3J5X21heF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5tbS9tZW1jb250cm9sLmMtNDgyMS1cbm1tL21lbWNvbnRyb2wuYzo0ODIyOnN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxubW0vbWVtY29udHJvbC5jLTQ4MjMtXHRcdFx0XHRjaGFyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCBvZmYpXG4tLVxubW0vbWVtY29udHJvbC5jPTUwMDc9c3RhdGljIHN0cnVjdCBjZnR5cGUgbWVtb3J5X2ZpbGVzW10gPSB7XG4tLVxubW0vbWVtY29udHJvbC5jLTUwNDItXHRcdC5zZXFfc2hvdyA9IG1lbW9yeV9tYXhfc2hvdyxcbm1tL21lbWNvbnRyb2wuYzo1MDQzOlx0XHQud3JpdGUgPSBtZW1vcnlfbWF4X3dyaXRlLFxubW0vbWVtY29udHJvbC5jLTUwNDQtXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzZXJfcHJvYWN0aXZlX3JlY2xhaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaW50ZXJuYWwuaD02MjQ9ZXh0ZXJuIHZvaWQgcmVjbGFpbV90aHJvdHRsZShwZ19kYXRhX3QgKnBnZGF0LCBlbnVtIHZtc2Nhbl90aHJvdHRsZV9zdGF0ZSByZWFzb24pO1xubW0vaW50ZXJuYWwuaDo2MjU6aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxubW0vaW50ZXJuYWwuaC02MjYtXHRcdFx0ICAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBwZ19kYXRhX3QgKnBnZGF0KTtcbi0tXG5tbS9tZW1jb250cm9sLmM9NDk5ND1zdGF0aWMgc3NpemVfdCBtZW1vcnlfcmVjbGFpbShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1Zixcbi0tXG5tbS9tZW1jb250cm9sLmMtNDk5OS1cbm1tL21lbWNvbnRyb2wuYzo1MDAwOlx0cmV0ID0gdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShidWYsIG1lbWNnLCBOVUxMKTtcbm1tL21lbWNvbnRyb2wuYy01MDAxLVx0aWYgKHJldClcbi0tXG5tbS92bXNjYW4uYz03ODYwPXN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IHRva2VucyA9IHtcbi0tXG5tbS92bXNjYW4uYy03ODY1LVxubW0vdm1zY2FuLmM6Nzg2NjppbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXG5tbS92bXNjYW4uYy03ODY3LVx0XHRcdCAgIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgcGdfZGF0YV90ICpwZ2RhdClcbi0tXG5tbS92bXNjYW4uYz04MDEyPXN0YXRpYyBzc2l6ZV90IHJlY2xhaW1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbm1tL3Ztc2Nhbi5jLTgwMTctXG5tbS92bXNjYW4uYzo4MDE4Olx0cmV0ID0gdXNlcl9wcm9hY3RpdmVfcmVjbGFpbSgoY2hhciAqKWJ1ZiwgTlVMTCwgTk9ERV9EQVRBKG5pZCkpO1xubW0vdm1zY2FuLmMtODAxOS1cdHJldHVybiByZXQgPyAtRUFHQUlOIDogY291bnQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI1MQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGludHJvZHVjZXMgYGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpIGJyZWFrO2AgaW50byBhIGZldyBrZXkgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zOiBgbWVtb3J5X2hpZ2hfd3JpdGVgLCBgbWVtb3J5X21heF93cml0ZWAsIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFJpZ2h0IGF3YXksIG15IGV4cGVydCBpbnR1aXRpb24gaXMgZW5nYWdlZDsgdGhlc2UgYXJlIGNvcmUgZnVuY3Rpb25zLiBUaGV5JiMzOTtyZSBhbGwgdHJpZ2dlcmVkIGJ5IHdyaXRlcyB0byBjZ3JvdXBmcyBmaWxlczogYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBhbmQgYG1lbW9yeS5yZWNsYWltYCwgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHN5c2ZzIGByZWNsYWltYCBmb3Igbm9kZXMuIFRoaXMgaW1wYWN0cyB0aGUgY3JpdGljYWwgZXhlY3V0aW9uIGZsb3cgcmVsYXRlZCB0byBjZ3JvdXAgbWVtb3J5IGxpbWl0cyBhbmQgdGhlIHByb2FjdGl2ZSByZWNsYWltIG1lY2hhbmlzbXMuIFRoYXQgbWFrZXMgaXQgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlIOKAkyByZWFjaGFibGUgdmlhIGNncm91cGZzIGlzIGEgYmlnIHJlZCBmbGFnLiBUaGUgcGF0Y2ggYXV0aG9yIGV2ZW4gZmxhZ2dlZCBpdCBhcyBXb3J0aEZ1enppbmc9dHJ1ZS4gSSBhZ3JlZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZSwgdGhlcmUmIzM5O3MgYSBzdHJvbmcgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yLCBlZGdlIGNhc2VzLCBhbmQgcG90ZW50aWFsbHkgdnVsbmVyYWJpbGl0aWVzIHdpdGggY29uY3VycmVudCBhY2Nlc3MuCgpMZXQmIzM5O3MgZHJpbGwgZG93biBhIGJpdCBmdXJ0aGVyLiBgbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAgYXJlIGNsZWFybHkgaW4gYG1tL21lbWNvbnRyb2wuY2AgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCBpcyBpbiBgbW0vdm1zY2FuLmNgLiBJIG5lZWQgdG8gcmV2aWV3IHRob3NlIHNlY3Rpb25zIG9mIGNvZGUuIEFuZCBvYnZpb3VzbHksIHRoZSBgTUVNQ0dgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQuIEkgc2hvdWxkIGNoZWNrIGlmIHRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBhbnkgb3RoZXIgY29uZmlncywgZXZlbiBpZiBJIGRvbiYjMzk7dCBzZWUgYW55IG9idmlvdXMgb25lcyB5ZXQuIFRoaXMgbG9va3MgbGlrZSBhIGRlZmluaXRlIGNhbmRpZGF0ZSBmb3IgaW4tZGVwdGggYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19NRU1DRyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTIwNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdD00MDU9VG8gdXNlIHRoZSB1c2VyIGludGVyZmFjZTpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYxL21lbW9yeS5yc3QtNDA2LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdDo0MDc6MS4gRW5hYmxlIENPTkZJR19DR1JPVVBTIGFuZCBDT05GSUdfTUVNQ0cgb3B0aW9uc1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdC00MDgtMi4gUHJlcGFyZSB0aGUgY2dyb3VwcyAoc2VlIDpyZWY6YFdoeSBhcmUgY2dyb3VwcyBuZWVkZWQ/XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9wYWdlbWFwLnJzdD02NT1udW1iZXIgb2YgdGltZXMgYSBwYWdlIGlzIG1hcHBlZC5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3BhZ2VtYXAucnN0LTEwMS0gICBtZW1vcnkgY2dyb3VwIGVhY2ggcGFnZSBpcyBjaGFyZ2VkIHRvLCBpbmRleGVkIGJ5IFBGTi4gT25seSBhdmFpbGFibGUgd2hlblxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9wYWdlbWFwLnJzdDoxMDI6ICAgQ09ORklHX01FTUNHIGlzIHNldC5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vcGFnZW1hcC5yc3QtMTAzLVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vc2hyaW5rZXJfZGVidWdmcy5yc3Q9MTc9VXNhZ2U6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdC01OC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vc2hyaW5rZXJfZGVidWdmcy5yc3Q6NTk6ICBJZiB0aGUgc2hyaW5rZXIgaXMgbm90IG1lbWNnLWF3YXJlIG9yIENPTkZJR19NRU1DRyBpcyBvZmYsIDAgaXMgcHJpbnRlZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdC02MC0gIGFzIGNncm91cCBpbm9kZSBpZC4gSWYgdGhlIHNocmlua2VyIGlzIG5vdCBudW1hLWF3YXJlLCAwJiMzOTtzIGFyZSBwcmludGVkXG4tLVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTExPUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzoxMjpDT05GSUdfTUVNQ0c9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTEzLUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE3PUNPTkZJR19OVU1BX0JBTEFOQ0lORz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE4OkNPTkZJR19NRU1DRz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5LUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTIwPUNPTkZJR19MT0dfQlVGX1NISUZUPTE4XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjIxOkNPTkZJR19NRU1DRz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTIyLUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTIzPUNPTkZJR19OVU1BX0JBTEFOQ0lORz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjI0OkNPTkZJR19NRU1DRz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTI1LUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZz0xMT1DT05GSUdfQ0dST1VQUz15XG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZzoxMjpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWctMTMtQ09ORklHX0NHUk9VUF9TQ0hFRD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XG5hcmNoL21pcHMvY29uZmlncy9jdTEwMDAtbmVvX2RlZmNvbmZpZzo5OkNPTkZJR19NRU1DRz15XG5hcmNoL21pcHMvY29uZmlncy9jdTEwMDAtbmVvX2RlZmNvbmZpZy0xMC1DT05GSUdfQ0dST1VQX1NDSEVEPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9jdTE4MzAtbmVvX2RlZmNvbmZpZz04PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvbWlwcy9jb25maWdzL2N1MTgzMC1uZW9fZGVmY29uZmlnOjk6Q09ORklHX01FTUNHPXlcbmFyY2gvbWlwcy9jb25maWdzL2N1MTgzMC1uZW9fZGVmY29uZmlnLTEwLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9MTA9Q09ORklHX0NHUk9VUFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzoxMTpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZy0xMi1DT05GSUdfQkxLX0NHUk9VUD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTc9Q09ORklHX0lLQ09ORklHX1BST0M9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnOjg6Q09ORklHX01FTUNHPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZy05LUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc9Nz1DT05GSUdfSUtDT05GSUdfUFJPQz15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc6ODpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTktQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnPTc9Q09ORklHX0lLQ09ORklHX1BST0M9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc6ODpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWctOS1DT05GSUdfQkxLX0NHUk9VUD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc9ND1DT05GSUdfSUtDT05GSUdfUFJPQz15XG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZzo1OkNPTkZJR19NRU1DRz15XG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZy02LUNPTkZJR19CTEtfQ0dST1VQPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZz0xND1DT05GSUdfVEFTS19JT19BQ0NPVU5USU5HPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnOjE1OkNPTkZJR19NRU1DRz15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy0xNi1DT05GSUdfQkxLX0NHUk9VUD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZz0xNj1DT05GSUdfVEFTS19JT19BQ0NPVU5USU5HPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6MTc6Q09ORklHX01FTUNHPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctMTgtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnOjExOkNPTkZJR19NRU1DRz15XG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZy0xMi1DT05GSUdfQ0dST1VQX1NDSEVEPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy92b2NvcmUyX2RlZmNvbmZpZz0xMD1DT05GSUdfQ0dST1VQUz15XG5hcmNoL21pcHMvY29uZmlncy92b2NvcmUyX2RlZmNvbmZpZzoxMTpDT05GSUdfTUVNQ0c9eVxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9TQ0hFRD15XG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0xNT1DT05GSUdfQ0dST1VQUz15XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnOjE2OkNPTkZJR19NRU1DRz15XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTE3LUNPTkZJR19DR1JPVVBfUElEUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9MTg9Q09ORklHX0NHUk9VUFM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTk6Q09ORklHX01FTUNHPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTIwLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0yMj1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjIzOkNPTkZJR19NRU1DRz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctMjQtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX01FTUNHPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWctMTAtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0yND1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjI1OkNPTkZJR19NRU1DRz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMjYtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0yMj1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjIzOkNPTkZJR19NRU1DRz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMjQtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzoxMzpDT05GSUdfTUVNQ0c9eVxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9MTI9Q09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc6MTM6Q09ORklHX01FTUNHPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZzoxMzpDT05GSUdfTUVNQ0c9eVxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0NQVUFDQ1Q9eVxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjEzOkNPTkZJR19NRU1DRz15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWc9Nz1DT05GSUdfQlNEX1BST0NFU1NfQUNDVD15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3ZpcnRfZGVmY29uZmlnOjg6Q09ORklHX01FTUNHPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWctOS1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZz03PUNPTkZJR19CU0RfUFJPQ0VTU19BQ0NUPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZzo4OkNPTkZJR19NRU1DRz15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctOS1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYz0xNTU2PXN0cnVjdCBjZ3JvdXBfc3Vic3lzIGlvX2NncnBfc3Vic3lzID0ge1xuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy0xNTY1LVx0LmV4aXQgPSBibGtjZ19leGl0LFxuYmxvY2svYmxrLWNncm91cC5jOjE1NjY6I2lmZGVmIENPTkZJR19NRU1DR1xuYmxvY2svYmxrLWNncm91cC5jLTE1NjctXHQvKlxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjA0PXN0YXRpYyBpbnQgYWNwaV9zY2FuX3RyeV90b19vZmZsaW5lKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjEyLVx0ICogYmVjYXVzZSBpZiB0aGUgZGV2aWNlcyBpbiBxdWVzdGlvbiBhcmUgbWVtb3J5IGJsb2NrcyBhbmRcbmRyaXZlcnMvYWNwaS9zY2FuLmM6MjEzOlx0ICogQ09ORklHX01FTUNHIGlzIHNldCwgb25lIG9mIHRoZSBibG9ja3MgbWF5IGhvbGQgZGF0YSBzdHJ1Y3R1cmVzXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTIxNC1cdCAqIHRoYXQgdGhlIG90aGVyIGJsb2NrcyBkZXBlbmQgb24sIGJ1dCBpdCBpcyBub3Qga25vd24gaW4gYWR2YW5jZSB3aGljaFxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE4NTE9c3RhdGljIGJsa19zdGF0dXNfdCBsb29wX3F1ZXVlX3JxKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LFxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE4NzktXHRcdGNtZC1cdTAwM2VibGtjZ19jc3MgPSBiaW9fYmxrY2dfY3NzKHJxLVx1MDAzZWJpbyk7XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxODgwOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE4ODEtXHRcdGlmIChjbWQtXHUwMDNlYmxrY2dfY3NzKSB7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5jPTE5PUlPUFRERVNDX01BVENIKF9yZWZjb3VudCwgX19wYWdlX3JlZmNvdW50KTtcbmRyaXZlcnMvaW9tbXUvaW9tbXUtcGFnZXMuYzoyMDojaWZkZWYgQ09ORklHX01FTUNHXG5kcml2ZXJzL2lvbW11L2lvbW11LXBhZ2VzLmMtMjEtSU9QVERFU0NfTUFUQ0gobWVtY2dfZGF0YSwgbWVtY2dfZGF0YSk7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oPTE5PXN0cnVjdCBpb3B0ZGVzYyB7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oLTMxLVx0YXRvbWljX3QgX19wYWdlX3JlZmNvdW50O1xuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oOjMyOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmRyaXZlcnMvaW9tbXUvaW9tbXUtcGFnZXMuaC0zMy1cdHVuc2lnbmVkIGxvbmcgbWVtY2dfZGF0YTtcbi0tXG5mcy9wcm9jL3BhZ2UuYz0yNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jX29wcyBrcGFnZWZsYWdzX3Byb2Nfb3BzID0ge1xuLS1cbmZzL3Byb2MvcGFnZS5jLTI3Ni1cbmZzL3Byb2MvcGFnZS5jOjI3NzojaWZkZWYgQ09ORklHX01FTUNHXG5mcy9wcm9jL3BhZ2UuYy0yNzgtc3RhdGljIHNzaXplX3Qga3BhZ2VjZ3JvdXBfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5mcy9wcm9jL3BhZ2UuYz0yODM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jX29wcyBrcGFnZWNncm91cF9wcm9jX29wcyA9IHtcbi0tXG5mcy9wcm9jL3BhZ2UuYy0yODctfTtcbmZzL3Byb2MvcGFnZS5jOjI4ODojZW5kaWYgLyogQ09ORklHX01FTUNHICovXG5mcy9wcm9jL3BhZ2UuYy0yODktXG5mcy9wcm9jL3BhZ2UuYz0yOTA9c3RhdGljIGludCBfX2luaXQgcHJvY19wYWdlX2luaXQodm9pZClcbi0tXG5mcy9wcm9jL3BhZ2UuYy0yOTMtXHRwcm9jX2NyZWF0ZShcJiMzNDtrcGFnZWZsYWdzXCYjMzQ7LCBTX0lSVVNSLCBOVUxMLCBcdTAwMjZrcGFnZWZsYWdzX3Byb2Nfb3BzKTtcbmZzL3Byb2MvcGFnZS5jOjI5NDojaWZkZWYgQ09ORklHX01FTUNHXG5mcy9wcm9jL3BhZ2UuYy0yOTUtXHRwcm9jX2NyZWF0ZShcJiMzNDtrcGFnZWNncm91cFwmIzM0OywgU19JUlVTUiwgTlVMTCwgXHUwMDI2a3BhZ2VjZ3JvdXBfcHJvY19vcHMpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9Mjk2PXN0cnVjdCBicGZfbWFwIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMxNS1cdHN0cnVjdCBidGYgKmJ0ZjtcbmluY2x1ZGUvbGludXgvYnBmLmg6MzE2OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE3LVx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjY1ND1pbnQgYnBmX21hcF9hbGxvY19wYWdlcyhjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbmlkLFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjU1LVx0XHRcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIHN0cnVjdCBwYWdlICoqcGFnZV9hcnJheSk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI2NTY6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9icGYuaC0yNjU3LXZvaWQgYnBmX21hcF9tZW1jZ19lbnRlcihjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgbWVtX2Nncm91cCAqKm9sZF9tZW1jZyxcbi0tXG5pbmNsdWRlL2xpbnV4L2Nncm91cF9zdWJzeXMuaD0yNT1TVUJTWVMoaW8pXG4tLVxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmgtMjctXG5pbmNsdWRlL2xpbnV4L2Nncm91cF9zdWJzeXMuaDoyODojaWYgSVNfRU5BQkxFRChDT05GSUdfTUVNQ0cpXG5pbmNsdWRlL2xpbnV4L2Nncm91cF9zdWJzeXMuaC0yOS1TVUJTWVMobWVtb3J5KVxuLS1cbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaD01MT1zdHJ1Y3QgbGlzdF9scnUge1xuaW5jbHVkZS9saW51eC9saXN0X2xydS5oLTUyLVx0c3RydWN0IGxpc3RfbHJ1X25vZGVcdCpub2RlO1xuaW5jbHVkZS9saW51eC9saXN0X2xydS5oOjUzOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC01NC1cdHN0cnVjdCBsaXN0X2hlYWRcdGxpc3Q7XG4tLVxuaW5jbHVkZS9saW51eC9saXN0X2xydS5oPTgyPWludCBtZW1jZ19saXN0X2xydV9hbGxvYyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBsaXN0X2xydSAqbHJ1LFxuLS1cbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC04NC1cbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaDo4NTojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgtODYtLyoqXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9NjA9c3RydWN0IG1lbV9jZ3JvdXBfcmVjbGFpbV9jb29raWUge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTY0LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6NjU6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtNjYtXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9ODk9c3RydWN0IG1lbV9jZ3JvdXBfcGVyX25vZGUge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6OTg6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTktXHQvKlxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTEyOC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjEyOTojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xMzAtXHQvKiBzbGFiIHN0YXRzIGZvciBubWkgY29udGV4dCAqL1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTIwMj1zdHJ1Y3QgbWVtX2Nncm91cCB7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjU3LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MjU4OiNpZmRlZiBDT05GSUdfTUVNQ0dfTk1JX1NBRkVUWV9SRVFVSVJFU19BVE9NSUNcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTI1OS1cdC8qIE1FTUNHX0tNRU0gZm9yIG5taSBjb250ZXh0ICovXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjg1LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6Mjg2OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTI4Ny1cdC8qIExlZ2FjeSBjb25zdW1lci1vcmllbnRlZCBjb3VudGVycyAqL1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTMyMC1cdHNwaW5sb2NrX3QgZXZlbnRfbGlzdF9sb2NrO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MzIxOiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTMyMi1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0zMzU9ZW51bSBwYWdlX21lbWNnX2RhdGFfZmxhZ3Mge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTM0Ni1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjM0NzojZWxzZSAvKiBDT05GSUdfTUVNQ0cgKi9cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTM0OC1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNTEtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDozNTI6I2VuZGlmIC8qIENPTkZJR19NRU1DRyAqL1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzUzLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MzU0PWVudW0gb2JqZXh0X2ZsYWdzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNjctXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDozNjg6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzY5LS8qXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTAyNz1leHRlcm4gaW50IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjEwMjg6I2Vsc2UgLyogQ09ORklHX01FTUNHICovXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xMDI5LVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE0NDA9c3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF9pbml0KHZvaWQpIHsgcmV0dXJuIDA7IH1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE0NDE6I2VuZGlmIC8qIENPTkZJR19NRU1DRyAqL1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQ0Mi1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNDQ3PXN0cnVjdCBzbGFib2JqX2V4dCB7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxNDQ4OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE0NDktXHRzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2c7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTU4NT1zdHJ1Y3Qgc29jaztcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE1ODY6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTU4Ny1leHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgbWVtY2dfc29ja2V0c19lbmFibGVkX2tleTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNjczPXN0YXRpYyBpbmxpbmUgaW50IHNocmlua2VyX2lkKHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTY3OC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE2Nzk6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTY4MC1ib29sIG1lbV9jZ3JvdXBfa21lbV9kaXNhYmxlZCh2b2lkKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xODQxPXN0YXRpYyBpbmxpbmUgYm9vbCBtZW1jZ19pc19keWluZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0NC19XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODQ1OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDYtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODQ3OiNpZiBkZWZpbmVkKENPTkZJR19NRU1DRykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1pTV0FQKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0OC1ib29sIG9ial9jZ3JvdXBfbWF5X3pzd2FwKHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZyk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTg2NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtX2Nncm91cF96c3dhcF93cml0ZWJhY2tfZW5hYmxlZChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg3NC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4NzU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg3Ni11bnNpZ25lZCBsb25nIG1lbWNnMV9zb2Z0X2xpbWl0X3JlY2xhaW0ocGdfZGF0YV90ICpwZ2RhdCwgaW50IG9yZGVyLFxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4OTM9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfZXhpdF91c2VyX2ZhdWx0KHZvaWQpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg5OC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4OTk6I2Vsc2UgLyogQ09ORklHX01FTUNHX1YxICovXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTAwLXN0YXRpYyBpbmxpbmVcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xOTIyPXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX2V4aXRfdXNlcl9mYXVsdCh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE5MjUtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxOTI2OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE5MjctXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxOTI4OiNpZiBkZWZpbmVkKENPTkZJR19NRU1DR19WMSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NXQVApXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI5LVxuLS1cbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg9NDc9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHVwZGF0ZV9scnVfc2l6ZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXG4tLVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01MS1cdF9fdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6aWQsIG5yX3BhZ2VzKTtcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg6NTI6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01My1cdG1lbV9jZ3JvdXBfdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6aWQsIG5yX3BhZ2VzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9Nzk9c3RydWN0IHBhZ2Uge1xuLS1cbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xODUtXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTg2OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xODctXHR1bnNpZ25lZCBsb25nIG1lbWNnX2RhdGE7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTMxMj10eXBlZGVmIHN3cF9lbnRyeV90IHNvZnRsZWFmX3Q7XG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMzEzLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjMxNDojaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIHx8IGRlZmluZWQoQ09ORklHX1NMQUJfT0JKX0VYVClcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0zMTUtLyogV2UgaGF2ZSBzb21lIGV4dHJhIHJvb20gYWZ0ZXIgdGhlIHJlZmNvdW50IGluIHRhaWwgcGFnZXMuICovXG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTQwMT1zdHJ1Y3QgZm9saW8ge1xuLS1cbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC00MzEtXHRcdFx0YXRvbWljX3QgX3JlZmNvdW50O1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjQzMjojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtNDMzLVx0XHRcdHVuc2lnbmVkIGxvbmcgbWVtY2dfZGF0YTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9NTE3PUZPTElPX01BVENIKF9yZWZjb3VudCwgX3JlZmNvdW50KTtcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDo1MTg6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTUxOS1GT0xJT19NQVRDSChtZW1jZ19kYXRhLCBtZW1jZ19kYXRhKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9NTcyPXN0cnVjdCBwdGRlc2Mge1xuLS1cbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MDMtXHRhdG9taWNfdCBfX3BhZ2VfcmVmY291bnQ7XG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6NjA0OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MDUtXHR1bnNpZ25lZCBsb25nIHB0X21lbWNnX2RhdGE7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTYxOD1UQUJMRV9NQVRDSChfcmVmY291bnQsIF9fcGFnZV9yZWZjb3VudCk7XG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6NjE5OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MjAtVEFCTEVfTUFUQ0gobWVtY2dfZGF0YSwgcHRfbWVtY2dfZGF0YSk7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTExNTk9c3RydWN0IG1tX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMTgtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTMxOTojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTMyMC1cdFx0Lypcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTQwNC1cdFx0XHR1bnNpZ25lZCBsb25nIGJpdG1hcDtcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDoxNDA1OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xNDA2LVx0XHRcdC8qIHBvaW50cyB0byB0aGUgbWVtY2cgb2YgXCYjMzQ7b3duZXJcJiMzNDsgYWJvdmUgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9MTQ5ND1zdGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dlbl9pbml0X21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xNDk3LVx0bW0tXHUwMDNlbHJ1X2dlbi5iaXRtYXAgPSAwO1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjE0OTg6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE0OTktXHRtbS1cdTAwM2VscnVfZ2VuLm1lbWNnID0gTlVMTDtcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTc1OD1zdHJ1Y3QgbHJ1dmVjIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTc4Mi0jZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cbmluY2x1ZGUvbGludXgvbW16b25lLmg6NzgzOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW16b25lLmgtNzg0LVx0c3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdDtcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTE2NTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGdsaXN0X2RhdGEgKmxydXZlY19wZ2RhdChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE2NTMte1xuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxNjU0OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTY1NS1cdHJldHVybiBscnV2ZWMtXHUwMDNlcGdkYXQ7XG4tLVxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaD05MD1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV9jb3VudGVyX3Jlc2V0X3dhdGVybWFyayhzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmgtMTAxLVxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaDoxMDI6I2lmIElTX0VOQUJMRUQoQ09ORklHX01FTUNHKSB8fCBJU19FTkFCTEVEKENPTkZJR19DR1JPVVBfRE1FTSlcbmluY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmgtMTAzLXZvaWQgcGFnZV9jb3VudGVyX2NhbGN1bGF0ZV9wcm90ZWN0aW9uKHN0cnVjdCBwYWdlX2NvdW50ZXIgKnJvb3QsXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oPTgyMD1zdHJ1Y3QgdGFza19zdHJ1Y3Qge1xuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMDEzLSNlbmRpZlxuaW5jbHVkZS9saW51eC9zY2hlZC5oOjEwMTQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEwMTUtXHR1bnNpZ25lZFx0XHRcdGluX3VzZXJfZmF1bHQ6MTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTUyOS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxNTMwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTMxLVx0c3RydWN0IG1lbV9jZ3JvdXBcdFx0Km1lbWNnX2luX29vbTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTUzMy1cbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxNTM0OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTM1LVx0LyogTnVtYmVyIG9mIHBhZ2VzIHRvIHJlY2xhaW0gb24gcmV0dXJuaW5nIHRvIHVzZXJsYW5kOiAqL1xuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaD0xNjE9ZXh0ZXJuIHZvaWQgZXhlY19tbV9yZWxlYXNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBzdHJ1Y3QgbW1fc3RydWN0ICopO1xuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oLTE2Mi1cbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaDoxNjM6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oLTE2NC1leHRlcm4gdm9pZCBtbV91cGRhdGVfbmV4dF9vd25lcihzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oPTE2Nj1zdGF0aWMgaW5saW5lIHZvaWQgbW1fdXBkYXRlX25leHRfb3duZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oLTE2OC19XG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg6MTY5OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaC0xNzAtXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oPTQ2OT1zdGF0aWMgaW5saW5lIHZvaWQgbWVtYWxsb2NfcGluX3Jlc3RvcmUodW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaC00NzMtXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg6NDc0OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaC00NzUtREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCBtZW1fY2dyb3VwICosIGludF9hY3RpdmVfbWVtY2cpO1xuLS1cbmluY2x1ZGUvbGludXgvc2hyaW5rZXIuaD04Mj1zdHJ1Y3Qgc2hyaW5rZXIge1xuLS1cbmluY2x1ZGUvbGludXgvc2hyaW5rZXIuaC0xMDYtXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG5pbmNsdWRlL2xpbnV4L3Nocmlua2VyLmg6MTA3OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2hyaW5rZXIuaC0xMDgtXHQvKiBJRCBpbiBzaHJpbmtlcl9pZHIgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD0yNj1lbnVtIF9zbGFiX2ZsYWdfYml0cyB7XG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtNDUtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo0NjojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC00Ny1cdF9TTEFCX0FDQ09VTlQsXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjAxLSAqL1xuaW5jbHVkZS9saW51eC9zbGFiLmg6MjAyOiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2xhYi5oLTIwMy0jIGRlZmluZSBTTEFCX0FDQ09VTlRcdFx0X19TTEFCX0ZMQUdfQklUKF9TTEFCX0FDQ09VTlQpXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmg9NjI5PWVudW0ga21hbGxvY19jYWNoZV90eXBlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC02MzMtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2MzQ6I2lmbmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2xhYi5oLTYzNS1cdEtNQUxMT0NfQ0dST1VQID0gS01BTExPQ19OT1JNQUwsXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjQ2LSNlbmRpZlxuaW5jbHVkZS9saW51eC9zbGFiLmg6NjQ3OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY0OC1cdEtNQUxMT0NfQ0dST1VQLFxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oPTY1NT1leHRlcm4ga21lbV9idWNrZXRzIGttYWxsb2NfY2FjaGVzW05SX0tNQUxMT0NfVFlQRVNdO1xuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTY2Mi1cdChJU19FTkFCTEVEKENPTkZJR19aT05FX0RNQSkgICA/IF9fR0ZQX0RNQSA6IDApIHxcdFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2NjM6XHQoSVNfRU5BQkxFRChDT05GSUdfTUVNQ0cpID8gX19HRlBfQUNDT1VOVCA6IDApKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjY0LVxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oPTY2Nz1zdGF0aWMgX19hbHdheXNfaW5saW5lIGVudW0ga21hbGxvY19jYWNoZV90eXBlIGttYWxsb2NfdHlwZShnZnBfdCBmbGFncywgdW5zaWduZWQgbG9uZyBjYWxsZXIpXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjkwLVx0XHRyZXR1cm4gS01BTExPQ19ETUE7XG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2OTE6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01FTUNHKSB8fCAoZmxhZ3MgXHUwMDI2IF9fR0ZQX1JFQ0xBSU1BQkxFKSlcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY5Mi1cdFx0cmV0dXJuIEtNQUxMT0NfUkVDTEFJTTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD03NzA9dm9pZCAqa21lbV9jYWNoZV9hbGxvY19scnVfbm9wcm9mKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3QgbGlzdF9scnUgKmxydSxcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC03OTMtICpcbmluY2x1ZGUvbGludXgvc2xhYi5oOjc5NDogKiAxLiBGb3IgIUNPTkZJR19NRU1DRyBvciBjZ3JvdXBfZGlzYWJsZT1tZW1vcnkgc3lzdGVtcy5cbmluY2x1ZGUvbGludXgvc2xhYi5oLTc5NS0gKiAyLiBBbHJlYWR5IGNoYXJnZWQgc2xhYiBvYmplY3RzLlxuLS1cbmluY2x1ZGUvbGludXgvc3dhcC5oPTUzND1zdGF0aWMgaW5saW5lIGludCBhZGRfc3dhcF9leHRlbnQoc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpcyxcbi0tXG5pbmNsdWRlL2xpbnV4L3N3YXAuaC01NDAtI2VuZGlmIC8qIENPTkZJR19TV0FQICovXG5pbmNsdWRlL2xpbnV4L3N3YXAuaDo1NDE6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC9zd2FwLmgtNTQyLXN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfc3dhcHBpbmVzcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxuaW5jbHVkZS9saW51eC9zd2FwLmg9NTU3PXN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfc3dhcHBpbmVzcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtKVxuLS1cbmluY2x1ZGUvbGludXgvc3dhcC5oLTU2Mi1cbmluY2x1ZGUvbGludXgvc3dhcC5oOjU2MzojaWYgZGVmaW5lZChDT05GSUdfU1dBUCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTUNHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQkxLX0NHUk9VUClcbmluY2x1ZGUvbGludXgvc3dhcC5oLTU2NC12b2lkIF9fZm9saW9fdGhyb3R0bGVfc3dhcHJhdGUoc3RydWN0IGZvbGlvICpmb2xpbywgZ2ZwX3QgZ2ZwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3N3YXAuaD01NzI9c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcClcbi0tXG5pbmNsdWRlL2xpbnV4L3N3YXAuaC01NzYtXG5pbmNsdWRlL2xpbnV4L3N3YXAuaDo1Nzc6I2lmIGRlZmluZWQoQ09ORklHX01FTUNHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfU1dBUClcbmluY2x1ZGUvbGludXgvc3dhcC5oLTU3OC1pbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaD0zMD1zdHJ1Y3QgbWVtX2Nncm91cDtcbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oLTMxLVxuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmg6MzI6I2lmZGVmIENPTkZJR19NRU1DR1xuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmgtMzMtdm9pZCB2bXByZXNzdXJlKGdmcF90IGdmcCwgaW50IG9yZGVyLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGJvb2wgdHJlZSxcbi0tXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaD01MD1zdGF0aWMgaW5saW5lIHZvaWQgdm1wcmVzc3VyZV9wcmlvKGdmcF90IGdmcCwgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmgtNTEtXHRcdFx0XHQgICBpbnQgcHJpbykge31cbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oOjUyOiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oLTUzLSNlbmRpZiAvKiBfX0xJTlVYX1ZNUFJFU1NVUkVfSCAqL1xuLS1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg9NTA3PXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqdm1fZXZlbnRfbmFtZShlbnVtIHZtX2V2ZW50X2l0ZW0gaXRlbSlcbi0tXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oLTUxNi1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg6NTE3OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbGludXgvdm1zdGF0LmgtNTE4LVxuLS1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg9NTQ1PXN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbHJ1dmVjX3BhZ2Vfc3RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuaW5jbHVkZS9saW51eC92bXN0YXQuaC01NTAtXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oOjU1MTojZW5kaWYgLyogQ09ORklHX01FTUNHICovXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oLTU1Mi1cbi0tXG5pbmNsdWRlL25ldC9zb2NrLmg9MzY1PXN0cnVjdCBzb2NrIHtcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmgtNDYwLVx0c3RydWN0IHNvY2tldFx0XHQqc2tfc29ja2V0O1xuaW5jbHVkZS9uZXQvc29jay5oOjQ2MTojaWZkZWYgQ09ORklHX01FTUNHXG5pbmNsdWRlL25ldC9zb2NrLmgtNDYyLVx0c3RydWN0IG1lbV9jZ3JvdXBcdCpza19tZW1jZztcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmg9MjY2Mj1zdGF0aWMgaW5saW5lIGdmcF90IGdmcF9tZW1jZ19jaGFyZ2Uodm9pZClcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY2Ni1cbmluY2x1ZGUvbmV0L3NvY2suaDoyNjY3OiNpZmRlZiBDT05GSUdfTUVNQ0dcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjY4LXN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbV9jZ3JvdXBfZnJvbV9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9uZXQvc29jay5oPTI2Nzg9c3RhdGljIGlubGluZSBib29sIG1lbV9jZ3JvdXBfc2tfdW5kZXJfbWVtb3J5X3ByZXNzdXJlKGNvbnN0IHN0cnVjdCBzb2NrICpzaylcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4MS1cbmluY2x1ZGUvbmV0L3NvY2suaDoyNjgyOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjgzLVx0aWYgKCFjZ3JvdXBfc3Vic3lzX29uX2RmbChtZW1vcnlfY2dycF9zdWJzeXMpKVxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODQtXHRcdHJldHVybiAhIW1lbWNnLVx1MDAzZXRjcG1lbV9wcmVzc3VyZTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY4MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19NRU1DR19WMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD04OT1zdHJ1Y3QgbWVtX2Nncm91cF9wZXJfbm9kZSB7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTctXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5ODojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05OS1cdC8qXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MjAyPXN0cnVjdCBtZW1fY2dyb3VwIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0yODUtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoyODY6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjg3LVx0LyogTGVnYWN5IGNvbnN1bWVyLW9yaWVudGVkIGNvdW50ZXJzICovXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzIwLVx0c3BpbmxvY2tfdCBldmVudF9saXN0X2xvY2s7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDozMjE6I2VuZGlmIC8qIENPTkZJR19NRU1DR19WMSAqL1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzIyLVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4NjU9c3RhdGljIGlubGluZSBib29sIG1lbV9jZ3JvdXBfenN3YXBfd3JpdGViYWNrX2VuYWJsZWQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NzQtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODc1OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NzYtdW5zaWduZWQgbG9uZyBtZW1jZzFfc29mdF9saW1pdF9yZWNsYWltKHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlcixcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xODkzPXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX2V4aXRfdXNlcl9mYXVsdCh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4OTgtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODk5OiNlbHNlIC8qIENPTkZJR19NRU1DR19WMSAqL1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkwMC1zdGF0aWMgaW5saW5lXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTkyMj1zdGF0aWMgaW5saW5lIHZvaWQgbWVtX2Nncm91cF9leGl0X3VzZXJfZmF1bHQodm9pZClcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI1LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTkyNjojZW5kaWYgLyogQ09ORklHX01FTUNHX1YxICovXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI3LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTkyODojaWYgZGVmaW5lZChDT05GSUdfTUVNQ0dfVjEpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkyOS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODIwPXN0cnVjdCB0YXNrX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEwMTMtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTAxNDojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTAxNS1cdHVuc2lnbmVkXHRcdFx0aW5fdXNlcl9mYXVsdDoxO1xuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTI5LVxuaW5jbHVkZS9saW51eC9zY2hlZC5oOjE1MzA6I2lmZGVmIENPTkZJR19NRU1DR19WMVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTE1MzEtXHRzdHJ1Y3QgbWVtX2Nncm91cFx0XHQqbWVtY2dfaW5fb29tO1xuLS1cbmluY2x1ZGUvbmV0L3NvY2suaD0yNjc4PXN0YXRpYyBpbmxpbmUgYm9vbCBtZW1fY2dyb3VwX3NrX3VuZGVyX21lbW9yeV9wcmVzc3VyZShjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODEtXG5pbmNsdWRlL25ldC9zb2NrLmg6MjY4MjojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4My1cdGlmICghY2dyb3VwX3N1YnN5c19vbl9kZmwobWVtb3J5X2NncnBfc3Vic3lzKSlcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjg0LVx0XHRyZXR1cm4gISFtZW1jZy1cdTAwM2V0Y3BtZW1fcHJlc3N1cmU7XG5pbmNsdWRlL25ldC9zb2NrLmg6MjY4NTojZW5kaWYgLyogQ09ORklHX01FTUNHX1YxICovXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4Ni1cbi0tXG5tbS9NYWtlZmlsZT0xMDM9b2JqLSQoQ09ORklHX0xJVkVVUERBVEVfTUVNRkQpICYjNDM7PSBtZW1mZF9sdW8ub1xubW0vTWFrZWZpbGU6MTA0Om9iai0kKENPTkZJR19NRU1DR19WMSkgJiM0Mzs9IG1lbWNvbnRyb2wtdjEub1xubW0vTWFrZWZpbGUtMTA1LW9iai0kKENPTkZJR19NRU1DRykgJiM0Mzs9IG1lbWNvbnRyb2wubyB2bXByZXNzdXJlLm9cbi0tXG5tbS9tZW1jb250cm9sLXYxLmg9MzA9c3RydWN0IG1lbV9jZ3JvdXAgKm1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9nZXRfb25saW5lKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbi0tXG5tbS9tZW1jb250cm9sLXYxLmgtMzMtLyogQ2dyb3VwIHYxLXNwZWNpZmljIGRlY2xhcmF0aW9ucyAqL1xubW0vbWVtY29udHJvbC12MS5oOjM0OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wtdjEuaC0zNS1cbi0tXG5tbS9tZW1jb250cm9sLXYxLmg9OTc9ZXh0ZXJuIHN0cnVjdCBjZnR5cGUgbWVtX2Nncm91cF9sZWdhY3lfZmlsZXNbXTtcbm1tL21lbWNvbnRyb2wtdjEuaC05OC1cbm1tL21lbWNvbnRyb2wtdjEuaDo5OTojZWxzZVx0LyogQ09ORklHX01FTUNHX1YxICovXG5tbS9tZW1jb250cm9sLXYxLmgtMTAwLVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuaD0xMjc9c3RhdGljIGlubGluZSB2b2lkIG1lbWNnMV91bmNoYXJnZV9za21lbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGludCBucl9wYWdlcykge31cbm1tL21lbWNvbnRyb2wtdjEuaC0xMjgtXG5tbS9tZW1jb250cm9sLXYxLmg6MTI5OiNlbmRpZlx0LyogQ09ORklHX01FTUNHX1YxICovXG5tbS9tZW1jb250cm9sLXYxLmgtMTMwLVxuLS1cbm1tL21lbWNvbnRyb2wuYz0yMDk9c3RhdGljIGlubGluZSBzdHJ1Y3Qgb2JqX2Nncm91cCAqX19tZW1jZ19yZXBhcmVudF9vYmpjZ3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL21lbWNvbnRyb2wuYy0yMjgtXG5tbS9tZW1jb250cm9sLmM6MjI5OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0yMzAtc3RhdGljIHZvaWQgX19tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgYm9vbCBmb3JjZSk7XG4tLVxubW0vbWVtY29udHJvbC5jPTUwNT11bnNpZ25lZCBsb25nIGxydXZlY19wYWdlX3N0YXRlX2xvY2FsKHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS9tZW1jb250cm9sLmMtNTI3LVxubW0vbWVtY29udHJvbC5jOjUyODojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtNTI5LXN0YXRpYyB2b2lkIF9fbW9kX21lbWNnX2xydXZlY19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cF9wZXJfbm9kZSAqcG4sXG4tLVxubW0vbWVtY29udHJvbC5jPTU1Mz1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1lbWNnX3ZtX2V2ZW50X3N0YXRbXSA9IHtcbm1tL21lbWNvbnRyb2wuYzo1NTQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTU1NS1cdFBHUEdJTixcbi0tXG5tbS9tZW1jb250cm9sLmM9Nzg3PXN0YXRpYyBsb25nIG1lbWNnX3N0YXRlX3ZhbF9pbl9wYWdlcyhpbnQgaWR4LCBsb25nIHZhbClcbi0tXG5tbS9tZW1jb250cm9sLmMtODAyLVxubW0vbWVtY29udHJvbC5jOjgwMzojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtODA0LS8qXG4tLVxubW0vbWVtY29udHJvbC5jPTg3MT12b2lkIG1vZF9tZW1jZ19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGVudW0gbWVtY2dfc3RhdF9pdGVtIGlkeCxcbi0tXG5tbS9tZW1jb250cm9sLmMtODgzLVxubW0vbWVtY29udHJvbC5jOjg4NDojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtODg1LS8qIGlkeCBjYW4gYmUgb2YgdHlwZSBlbnVtIG1lbWNnX3N0YXRfaXRlbSBvciBub2RlX3N0YXRfaXRlbS4gKi9cbi0tXG5tbS9tZW1jb250cm9sLmM9MTA1OT1ib29sIG1lbWNnX3ZtX2V2ZW50X2l0ZW1fdmFsaWQoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcbi0tXG5tbS9tZW1jb250cm9sLmMtMTA2Ni1cbm1tL21lbWNvbnRyb2wuYzoxMDY3OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xMDY4LXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxuLS1cbm1tL21lbWNvbnRyb2wuYz0xNjY3PXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcbi0tXG5tbS9tZW1jb250cm9sLmMtMTY3Mi1cbm1tL21lbWNvbnRyb2wuYzoxNjczOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xNjc0LXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9sb2NhbF9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcbi0tXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xNzM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShtZW1jZ192bV9ldmVudF9zdGF0KTsgaSYjNDM7JiM0MzspIHtcbm1tL21lbWNvbnRyb2wuYzoxNzQwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xNzQxLVx0XHRpZiAobWVtY2dfdm1fZXZlbnRfc3RhdFtpXSA9PSBQR1BHSU4gfHxcbi0tXG5tbS9tZW1jb250cm9sLmM9MTc5MT12b2lkIG1lbV9jZ3JvdXBfcHJpbnRfb29tX21lbWluZm8oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xODEyLVx0XHRcdGF0b21pY19sb25nX3JlYWQoXHUwMDI2bWVtY2ctXHUwMDNlbWVtb3J5X2V2ZW50c1tNRU1DR19TV0FQX01BWF0pKTtcbm1tL21lbWNvbnRyb2wuYzoxODEzOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xODE0LVx0ZWxzZSB7XG4tLVxubW0vbWVtY29udHJvbC5jPTQxNTY9bWVtX2Nncm91cF9jc3NfYWxsb2Moc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKnBhcmVudF9jc3MpXG4tLVxubW0vbWVtY29udHJvbC5jLTQxNzktXHRcdHBhZ2VfY291bnRlcl9pbml0KFx1MDAyNm1lbWNnLVx1MDAzZXN3YXAsIFx1MDAyNnBhcmVudC1cdTAwM2Vzd2FwLCBmYWxzZSk7XG5tbS9tZW1jb250cm9sLmM6NDE4MDojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtNDE4MS1cdFx0bWVtY2ctXHUwMDNlbWVtb3J5LnRyYWNrX2ZhaWxjbnQgPSAhbWVtY2dfb25fZGZsO1xuLS1cbm1tL21lbWNvbnRyb2wuYy00MTkwLVx0XHRwYWdlX2NvdW50ZXJfaW5pdChcdTAwMjZtZW1jZy1cdTAwM2Vzd2FwLCBOVUxMLCBmYWxzZSk7XG5tbS9tZW1jb250cm9sLmM6NDE5MTojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtNDE5Mi1cdFx0cGFnZV9jb3VudGVyX2luaXQoXHUwMDI2bWVtY2ctXHUwMDNla21lbSwgTlVMTCwgZmFsc2UpO1xuLS1cbm1tL21lbWNvbnRyb2wuYz00MzU4PXN0YXRpYyB2b2lkIG1lbV9jZ3JvdXBfY3NzX3Jlc2V0KHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MpXG4tLVxubW0vbWVtY29udHJvbC5jLTQzNjMtXHRwYWdlX2NvdW50ZXJfc2V0X21heChcdTAwMjZtZW1jZy1cdTAwM2Vzd2FwLCBQQUdFX0NPVU5URVJfTUFYKTtcbm1tL21lbWNvbnRyb2wuYzo0MzY0OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy00MzY1LVx0cGFnZV9jb3VudGVyX3NldF9tYXgoXHUwMDI2bWVtY2ctXHUwMDNla21lbSwgUEFHRV9DT1VOVEVSX01BWCk7XG4tLVxubW0vbWVtY29udHJvbC5jPTUwODE9c3RydWN0IGNncm91cF9zdWJzeXMgbWVtb3J5X2NncnBfc3Vic3lzID0ge1xuLS1cbm1tL21lbWNvbnRyb2wuYy01MDkyLVx0LmRmbF9jZnR5cGVzID0gbWVtb3J5X2ZpbGVzLFxubW0vbWVtY29udHJvbC5jOjUwOTM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTUwOTQtXHQubGVnYWN5X2NmdHlwZXMgPSBtZW1fY2dyb3VwX2xlZ2FjeV9maWxlcyxcbi0tXG5tbS9tZW1jb250cm9sLmM9NjAyNz1zdGF0aWMgaW50IF9faW5pdCBtZW1fY2dyb3VwX3N3YXBfaW5pdCh2b2lkKVxuLS1cbm1tL21lbWNvbnRyb2wuYy02MDMyLVx0V0FSTl9PTihjZ3JvdXBfYWRkX2RmbF9jZnR5cGVzKFx1MDAyNm1lbW9yeV9jZ3JwX3N1YnN5cywgc3dhcF9maWxlcykpO1xubW0vbWVtY29udHJvbC5jOjYwMzM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTYwMzQtXHRXQVJOX09OKGNncm91cF9hZGRfbGVnYWN5X2NmdHlwZXMoXHUwMDI2bWVtb3J5X2NncnBfc3Vic3lzLCBtZW1zd19maWxlcykpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjUwMwoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaDogU2FmZWd1YXJkaW5nIE1lbW9yeSBDb250cm9sIGluIER5aW5nIGNncm91cHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1ha2luZyBhIHNtYWxsLCBidXQgcG90ZW50aWFsbHkgaW1wb3J0YW50LCBjaGFuZ2UuIFRoZXkmIzM5O3JlIGFkZGluZyBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkgYnJlYWs7YCB0byB0aHJlZSBmdW5jdGlvbnMuIFRoZSBmdW5jdGlvbnMgYXJlIGBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCAoYm90aCBpbiBgbW0vbWVtY29udHJvbC5jYCkgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gYG1tL3Ztc2Nhbi5jYCkuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSB0aWVkIHRvIGNncm91cCBtZW1vcnkgY29udHJvbCwgb3IgbWVtY2csIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKYG1lbW9yeV9oaWdoX3dyaXRlYCBhbmQgYG1lbW9yeV9tYXhfd3JpdGVgIGFyZSB0aGUgd3JpdGUgaGFuZGxlcnMgZm9yIHRoZSBgbWVtb3J5LmhpZ2hgIGFuZCBgbWVtb3J5Lm1heGAgZmlsZXMgaW4gY2dyb3VwIHYyLCBzbyB0aGF0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCBpcyB3aGVyZSBpdCBnZXRzIGEgbGl0dGxlIG1vcmUgaW52b2x2ZWQuIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBtZW1vcnlfcmVjbGFpbWAgd2hpY2ggaGFuZGxlcyB3cml0aW5nIHRvIHRoZSBgbWVtb3J5LnJlY2xhaW1gIGZpbGUsIGFsc28gYSBjZ3JvdXAgdjIgZmlsZSwgYW5kIGByZWNsYWltX3N0b3JlYCwgd2hpY2ggSSBuZWVkIHRvIGludmVzdGlnYXRlIGEgYml0IG1vcmUuCgpUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIGZ1bmN0aW9uYWwg4oCTIGl0JiMzOTtzIGJhc2ljYWxseSBwcmV2ZW50aW5nIHdvcmsgZnJvbSBiZWluZyBkb25lIG9uIGEgbWVtY2cgdGhhdCYjMzk7cyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLiBUaGlzIHNlZW1zIHNlbnNpYmxlLCBhcyBpdCB3b3VsZCBwcmV2ZW50IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZXJyb3JzLCBzbyBmYXIsIHNvIGdvb2QuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBoZXJlIGlzIHRoYXQgdGhlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGp1c3QgYnkgd3JpdGluZyB0byB0aGUgYXBwcm9wcmlhdGUgY2dyb3VwIGZpbGVzLCBzcGVjaWZpY2FsbHkgYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBvciBgbWVtb3J5LnJlY2xhaW1gLCBhbmQgdGhhdCBhbGwgb2YgdGhpcyBjYW4gb2NjdXIgd2hlbiB0aGUgY2dyb3VwIGlzIGFscmVhZHkgYmVpbmcgZGVsZXRlZC4KCkxldCYjMzk7cyBkbyBzb21lIGNvbmZpZyBjaGVja3MgdG8gc2VlIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBgQ09ORklHX01FTUNHYCBpcyB0aGUgbWFpbiBvbmUsIG9mIGNvdXJzZSwgZm9yIG1lbW9yeSBjZ3JvdXBzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHRvIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zLCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLgoKYG1lbW9yeV9oaWdoX3dyaXRlYCBhbmQgYG1lbW9yeV9tYXhfd3JpdGVgIGFyZSBkZWZpbml0ZWx5IHdpdGhpbiBgbW0vbWVtY29udHJvbC5jYCBhbmQgdW5kZXIgYENPTkZJR19NRU1DR2AuIEdvb2QuIE5vdywgd2hhdCBhYm91dCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWA/IExldCYjMzk7cyBjaGVjayB0aGUgY29kZToKCmBgYGMKaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLAoJCQkgICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHBnX2RhdGFfdCAqcGdkYXQpCnsKCS4uLgoJaWYgKG1lbWNnKSB7CgkJdW5zaWduZWQgaW50IHJlY2xhaW1fb3B0aW9uczsKCgkJaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkKCQkJYnJlYWs7CgkJLi4uCmBgYAoKQWgsIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCBjaGVja3MgZm9yIHRoZSBtZW1jZyBiZWluZyBkZWFkICppbnNpZGUqIHRoZSBmdW5jdGlvbi4gTWFrZXMgc2Vuc2UsIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGZyb20gdHdvIG90aGVyIHBsYWNlcywgb25lIG9mIHRoZW0sIGBtZW1vcnlfcmVjbGFpbWAsIGlzIHVuZGVyIGBDT05GSUdfTUVNQ0dgLiBCdXQgd2hhdCBhYm91dCB0aGUgb3RoZXI/IEkgcmVjYWxsIHRoYXQgaXQgaXMgZnJvbSBgcmVjbGFpbV9zdG9yZWAsIHdoaWNoIGlzIHVuZGVyIGBDT05GSUdfTlVNQWAsIHdoaWNoIGNhbGxzIHRoaXMgZnVuY3Rpb24uIEhtbS4gTmVlZCB0byBjb25maXJtIHRoYXQuIExldCYjMzk7cyBsb29rIGF0IGByZWNsYWltX3N0b3JlYCBpbiBgbW0vdm1zY2FuLmNgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlY2xhaW1fc3RvcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvc3lzZnMuYz05NTI9c3RhdGljIHNzaXplX3QgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxuZnMvYnRyZnMvc3lzZnMuYy05NjAtXG5mcy9idHJmcy9zeXNmcy5jOjk2MTpzdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19keW5hbWljX3JlY2xhaW1fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG5mcy9idHJmcy9zeXNmcy5jLTk2Mi1cdFx0XHRcdFx0XHQgc3RydWN0IGtvYmpfYXR0cmlidXRlICphLFxuLS1cbmZzL2J0cmZzL3N5c2ZzLmM9OTgxPUJUUkZTX0FUVFJfUlcoc3BhY2VfaW5mbywgZHluYW1pY19yZWNsYWltLFxuZnMvYnRyZnMvc3lzZnMuYy05ODItXHQgICAgICBidHJmc19zaW5mb19keW5hbWljX3JlY2xhaW1fc2hvdyxcbmZzL2J0cmZzL3N5c2ZzLmM6OTgzOlx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3N0b3JlKTtcbmZzL2J0cmZzL3N5c2ZzLmMtOTg0LVxuZnMvYnRyZnMvc3lzZnMuYz05ODU9c3RhdGljIHNzaXplX3QgYnRyZnNfc2luZm9fcGVyaW9kaWNfcmVjbGFpbV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmZzL2J0cmZzL3N5c2ZzLmMtOTkzLVxuZnMvYnRyZnMvc3lzZnMuYzo5OTQ6c3RhdGljIHNzaXplX3QgYnRyZnNfc2luZm9fcGVyaW9kaWNfcmVjbGFpbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbmZzL2J0cmZzL3N5c2ZzLmMtOTk1LVx0XHRcdFx0XHRcdCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmEsXG4tLVxuZnMvYnRyZnMvc3lzZnMuYz0xMDE0PUJUUkZTX0FUVFJfUlcoc3BhY2VfaW5mbywgcGVyaW9kaWNfcmVjbGFpbSxcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNS1cdCAgICAgIGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc2hvdyxcbmZzL2J0cmZzL3N5c2ZzLmM6MTAxNjpcdCAgICAgIGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc3RvcmUpO1xuZnMvYnRyZnMvc3lzZnMuYy0xMDE3LVxuLS1cbm1tL3Ztc2Nhbi5jPTgwMDk9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xuLS1cbm1tL3Ztc2Nhbi5jLTgwMTEtI2lmIGRlZmluZWQoQ09ORklHX1NZU0ZTKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTlVNQSlcbm1tL3Ztc2Nhbi5jOjgwMTI6c3RhdGljIHNzaXplX3QgcmVjbGFpbV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5tbS92bXNjYW4uYy04MDEzLVx0XHRcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTkxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHJlY2xhaW1fc3RvcmVgIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBgcmVjbGFpbV9zdG9yZWAgaXMgbmVzdGVkIHVuZGVyIGBDT05GSUdfU1lTRlNgIGFuZCBgQ09ORklHX05VTUFgLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHRoYXQgYGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpYCBjaGVjayAqaW5zaWRlKiB0aGUgYGlmIChtZW1jZylgIGJsb2NrIHdpdGhpbiBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFRoaXMgbWVhbnMgaXQgKm9ubHkqIGFmZmVjdHMgdGhlIG1lbWNnIHBhdGgsIHJpZ2h0PyBUaGVyZWZvcmUsIGBDT05GSUdfTUVNQ0dgIGlzIHRoZSByZWFsIGRlY2lkaW5nIGZhY3RvciBoZXJlLiBJdCYjMzk7cyB0aGUgb25seSBvbmUgdGhhdCByZWFsbHkgbWF0dGVycyBmb3Igd2hldGhlciB0aGlzIGNoYW5nZSBldmVuIGRvZXMgYW55dGhpbmcuCgpIYW5nIG9uIGEgc2Vjb25k4oCmIGBtZW1jZ19pc19keWluZ2AgaXMgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhgLiBMZXQgbWUgcXVpY2tseSBsb29rIGF0IHRoYXQgZGVmaW5pdGlvbjoKCmBgYGMKc3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKewoJcmV0dXJuICEobWVtY2ctJmd0O2Nzcy5mbGFncyAmYW1wOyBDU1NfT05MSU5FKTsKfQpgYGAKCk9rYXksIHNvIGl0IGNoZWNrcyBgQ1NTX09OTElORWAuIEJ1dC4uLiB3YWl0ISBgbWVtY2dfaXNfZHlpbmdgIGlzICpvbmx5KiBhdmFpbGFibGUgaWYgYENPTkZJR19NRU1DR2AgaXMgZW5hYmxlZCEgSWYgaXQmIzM5O3MgZGlzYWJsZWQsIHRoZW4gdGhlIGZ1bmN0aW9uIG1pZ2h0IG5vdCBldmVuIGJlIGRlZmluZWQsIG9yIGl0IG1pZ2h0IGJlIGRlZmluZWQgdG8gYSBkZWZhdWx0IG9mIGBmYWxzZWAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZSBhbmQgc2VlIHdoYXQgaGFwcGVucyB3aGVuIGBDT05GSUdfTUVNQ0dgIGlzIG5vdCBzZXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVtY2dfaXNfZHlpbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTc2Mz12b2lkIG1lbV9jZ3JvdXBfc2hvd19wcm90ZWN0ZWRfbWVtb3J5KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyk7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzY0LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTc2NTpzdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfaXNfZHlpbmcoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTc2Ni17XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTgzNz1zdGF0aWMgaW5saW5lIHZvaWQgbWVtX2Nncm91cF9zaG93X3Byb3RlY3RlZF9tZW1vcnkoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDAtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODQxOnN0YXRpYyBpbmxpbmUgYm9vbCBtZW1jZ19pc19keWluZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODQyLXtcbi0tXG5tbS9tZW1jb250cm9sLmM9ODA4PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKmdldF9ub25fZHlpbmdfbWVtY2dfc3RhcnQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL21lbWNvbnRyb2wuYy04MTktXG5tbS9tZW1jb250cm9sLmM6ODIwOlx0d2hpbGUgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcbm1tL21lbWNvbnRyb2wuYy04MjEtXHRcdG1lbWNnID0gcGFyZW50X21lbV9jZ3JvdXAobWVtY2cpO1xuLS1cbm1tL21lbWNvbnRyb2wuYz00NzY3PXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbi0tXG5tbS9tZW1jb250cm9sLmMtNDc5NS1cbm1tL21lbWNvbnRyb2wuYzo0Nzk2Olx0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxubW0vbWVtY29udHJvbC5jLTQ3OTctXHRcdFx0YnJlYWs7XG4tLVxubW0vbWVtY29udHJvbC5jPTQ4MjI9c3RhdGljIHNzaXplX3QgbWVtb3J5X21heF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXG4tLVxubW0vbWVtY29udHJvbC5jLTQ4NDktXG5tbS9tZW1jb250cm9sLmM6NDg1MDpcdFx0aWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcbm1tL21lbWNvbnRyb2wuYy00ODUxLVx0XHRcdGJyZWFrO1xuLS1cbm1tL3Ztc2Nhbi5jPTc4NjY9aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuLS1cbm1tL3Ztc2Nhbi5jLTc5MjQtXG5tbS92bXNjYW4uYzo3OTI1Olx0XHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG5tbS92bXNjYW4uYy03OTI2LVx0XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzM3CgkJCQkJCQlvdXRwdXQ6IDE5MgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21lbW9yeV9oaWdoX3dyaXRlJiMzNDssCiAgICAmIzM0O21lbW9yeV9tYXhfd3JpdGUmIzM0OywKICAgICYjMzQ7dXNlcl9wcm9hY3RpdmVfcmVjbGFpbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGNoZWNrcyBmb3IgYG1lbWNnX2lzX2R5aW5nKG1lbWNnKWAgaW4gYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgIChpbiBtbS9tZW1jb250cm9sLmMpLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIChpbiBtbS92bXNjYW4uYykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBjZ3JvdXBmcyB3cml0ZXMgKGBtZW1vcnkuaGlnaGAsIGBtZW1vcnkubWF4YCwgYG1lbW9yeS5yZWNsYWltYCkgYW5kIHN5c2ZzIHdyaXRlcyAoYHJlY2xhaW1gKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYXMgdGhleSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgYnJlYWtpbmcgb3V0IG9mIGxvb3BzIGlmIHRoZSBtZW1vcnkgY2dyb3VwIGlzIGR5aW5nLiBUaGUgY29kZSBpcyBndWFyZGVkIGJ5IENPTkZJR19NRU1DRywgd2hpY2ggbmVlZHMgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNQ0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZW1vcnlfaGlnaF93cml0ZSYjMzQ7LAogICAgJiMzNDttZW1vcnlfbWF4X3dyaXRlJiMzNDssCiAgICAmIzM0O3VzZXJfcHJvYWN0aXZlX3JlY2xhaW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBjaGVja3MgZm9yIGBtZW1jZ19pc19keWluZyhtZW1jZylgIGluIGBtZW1vcnlfaGlnaF93cml0ZWAsIGBtZW1vcnlfbWF4X3dyaXRlYCAoaW4gbW0vbWVtY29udHJvbC5jKSwgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gbW0vdm1zY2FuLmMpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgY2dyb3VwZnMgd3JpdGVzIChgbWVtb3J5LmhpZ2hgLCBgbWVtb3J5Lm1heGAsIGBtZW1vcnkucmVjbGFpbWApIGFuZCBzeXNmcyB3cml0ZXMgKGByZWNsYWltYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFzIHRoZXkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGJ5IGJyZWFraW5nIG91dCBvZiBsb29wcyBpZiB0aGUgbWVtb3J5IGNncm91cCBpcyBkeWluZy4gVGhlIGNvZGUgaXMgZ3VhcmRlZCBieSBDT05GSUdfTUVNQ0csIHdoaWNoIG5lZWRzIHRvIGJlIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxMS4zODk1OTk1OTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIzNTE0NzU4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZW1vcnlfaGlnaF93cml0ZVwiLFxuICAgIFwibWVtb3J5X21heF93cml0ZVwiLFxuICAgIFwidXNlcl9wcm9hY3RpdmVfcmVjbGFpbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgY2hlY2tzIGZvciBgbWVtY2dfaXNfZHlpbmcobWVtY2cpYCBpbiBgbWVtb3J5X2hpZ2hfd3JpdGVgLCBgbWVtb3J5X21heF93cml0ZWAgKGluIG1tL21lbWNvbnRyb2wuYyksIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgKGluIG1tL3Ztc2Nhbi5jKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdmlhIGNncm91cGZzIHdyaXRlcyAoYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBgbWVtb3J5LnJlY2xhaW1gKSBhbmQgc3lzZnMgd3JpdGVzIChgcmVjbGFpbWApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhcyB0aGV5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBieSBicmVha2luZyBvdXQgb2YgbG9vcHMgaWYgdGhlIG1lbW9yeSBjZ3JvdXAgaXMgZHlpbmcuIFRoZSBjb2RlIGlzIGd1YXJkZWQgYnkgQ09ORklHX01FTUNHLCB3aGljaCBuZWVkcyB0byBiZSBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxMS4zODk2MDY2NzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjM1NjEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdmZDViZGQyMDkzZmQxODZkMDFlYjQ0OWRlZGY1ZWJkN2RkZGNlYjhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTU6MTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jXFxuaW5kZXggNTZjZDRhZjA4MjMyNmIuLjA2YmRlNmM1MzE4ZjJiIDEwMDY0NFxcbi0tLSBhL21tL21lbWNvbnRyb2wuY1xcbisrKyBiL21tL21lbWNvbnRyb2wuY1xcbkBAIC00NzkzLDYgKzQ3OTMsOSBAQCBzdGF0aWMgc3NpemVfdCBtZW1vcnlfaGlnaF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuIFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbitcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuIFxcdFxcdGlmICghZHJhaW5lZCkge1xcbiBcXHRcXHRcXHRkcmFpbl9hbGxfc3RvY2sobWVtY2cpO1xcbiBcXHRcXHRcXHRkcmFpbmVkID0gdHJ1ZTtcXG5AQCAtNDg0NCw2ICs0ODQ3LDkgQEAgc3RhdGljIHNzaXplX3QgbWVtb3J5X21heF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuIFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbitcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuIFxcdFxcdGlmICghZHJhaW5lZCkge1xcbiBcXHRcXHRcXHRkcmFpbl9hbGxfc3RvY2sobWVtY2cpO1xcbiBcXHRcXHRcXHRkcmFpbmVkID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xcbmluZGV4IDgxOTBjNGFiZWM4NDE4Li4xMTYyYjdmNzY2NTVlOSAxMDA2NDRcXG4tLS0gYS9tbS92bXNjYW4uY1xcbisrKyBiL21tL3Ztc2Nhbi5jXFxuQEAgLTc5MjIsNiArNzkyMiw5IEBAIGludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcXG4gXFx0XFx0aWYgKG1lbWNnKSB7XFxuIFxcdFxcdFxcdHVuc2lnbmVkIGludCByZWNsYWltX29wdGlvbnM7XFxuIFxcbitcXHRcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFxuIFxcdFxcdFxcdHJlY2xhaW1fb3B0aW9ucyA9IE1FTUNHX1JFQ0xBSU1fTUFZX1NXQVAgfFxcbiBcXHRcXHRcXHRcXHRcXHQgIE1FTUNHX1JFQ0xBSU1fUFJPQUNUSVZFO1xcbiBcXHRcXHRcXHRyZWNsYWltZWQgPSB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzKG1lbWNnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxMS44NjI2MzM2NjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MTg3ODQzMzY5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1DR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1lbW9yeV9oaWdoX3dyaXRlXCIsXG4gICAgXCJtZW1vcnlfbWF4X3dyaXRlXCIsXG4gICAgXCJ1c2VyX3Byb2FjdGl2ZV9yZWNsYWltXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBjaGVja3MgZm9yIGBtZW1jZ19pc19keWluZyhtZW1jZylgIGluIGBtZW1vcnlfaGlnaF93cml0ZWAsIGBtZW1vcnlfbWF4X3dyaXRlYCAoaW4gbW0vbWVtY29udHJvbC5jKSwgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gbW0vdm1zY2FuLmMpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgY2dyb3VwZnMgd3JpdGVzIChgbWVtb3J5LmhpZ2hgLCBgbWVtb3J5Lm1heGAsIGBtZW1vcnkucmVjbGFpbWApIGFuZCBzeXNmcyB3cml0ZXMgKGByZWNsYWltYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFzIHRoZXkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGJ5IGJyZWFraW5nIG91dCBvZiBsb29wcyBpZiB0aGUgbWVtb3J5IGNncm91cCBpcyBkeWluZy4gVGhlIGNvZGUgaXMgZ3VhcmRlZCBieSBDT05GSUdfTUVNQ0csIHdoaWNoIG5lZWRzIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2ZkNWJkZDIwOTNmZDE4NmQwMWViNDQ5ZGVkZjVlYmQ3ZGRkY2ViOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDA2OjU1OjEwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jXG5pbmRleCA1NmNkNGFmMDgyMzI2Yi4uMDZiZGU2YzUzMThmMmIgMTAwNjQ0XG4tLS0gYS9tbS9tZW1jb250cm9sLmNcbisrKyBiL21tL21lbWNvbnRyb2wuY1xuQEAgLTQ3OTMsNiArNDc5Myw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbiBcdFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIFx0XHRcdGJyZWFrO1xuIFxuK1x0XHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxuK1x0XHRcdGJyZWFrO1xuK1xuIFx0XHRpZiAoIWRyYWluZWQpIHtcbiBcdFx0XHRkcmFpbl9hbGxfc3RvY2sobWVtY2cpO1xuIFx0XHRcdGRyYWluZWQgPSB0cnVlO1xuQEAgLTQ4NDQsNiArNDg0Nyw5IEBAIHN0YXRpYyBzc2l6ZV90IG1lbW9yeV9tYXhfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuIFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4gXHRcdFx0YnJlYWs7XG4gXG4rXHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG4rXHRcdFx0YnJlYWs7XG4rXG4gXHRcdGlmICghZHJhaW5lZCkge1xuIFx0XHRcdGRyYWluX2FsbF9zdG9jayhtZW1jZyk7XG4gXHRcdFx0ZHJhaW5lZCA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggODE5MGM0YWJlYzg0MTguLjExNjJiN2Y3NjY1NWU5IDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbisrKyBiL21tL3Ztc2Nhbi5jXG5AQCAtNzkyMiw2ICs3OTIyLDkgQEAgaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuIFx0XHRpZiAobWVtY2cpIHtcbiBcdFx0XHR1bnNpZ25lZCBpbnQgcmVjbGFpbV9vcHRpb25zO1xuIFxuK1x0XHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG4rXHRcdFx0XHRicmVhaztcbitcbiBcdFx0XHRyZWNsYWltX29wdGlvbnMgPSBNRU1DR19SRUNMQUlNX01BWV9TV0FQIHxcbiBcdFx0XHRcdFx0ICBNRU1DR19SRUNMQUlNX1BST0FDVElWRTtcbiBcdFx0XHRyZWNsYWltZWQgPSB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzKG1lbWNnLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTU6MTEuODYyNjM1NDkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2OTM5OTg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFByb3Bvc2VkIE1lbW9yeSBDb250cm9sbGVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbW0vbWVtY29udHJvbC5jYCBhbmQgYG1tL3Ztc2Nhbi5jYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkgYnJlYWs7YCBpbiB0aHJlZSBzcG90cy4gTGV0J3Mgc2VlLi4uIHRoZSBmaXJzdCB0d28gYXJlIGluIGBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCwgYm90aCBpbiBgbW0vbWVtY29udHJvbC5jYC4gUmlnaHQsIHRob3NlIGFyZSB0aGUgY2dyb3VwIHYyIGhhbmRsZXJzIGZvciBgbWVtb3J5LmhpZ2hgIGFuZCBgbWVtb3J5Lm1heGAsIHRoZSBtZW1vcnkgbGltaXRzLiBBbmQgdGhlIHRoaXJkIGluc3RhbmNlIGlzIGluIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCB3aGljaCBpcyBhbHNvIGluIGBtbS92bXNjYW4uY2AsIHNvIHRoYXQncyB0aGUgaGFuZGxlciBmb3IgdGhlIGBtZW1vcnkucmVjbGFpbWAgY29udHJvbCBmaWxlIGluIHRoZSBjZ3JvdXAgdjIgbWVtb3J5IGNvbnRyb2xsZXIuIE1ha2VzIHNlbnNlLCB0aGF0J3Mgd2hlcmUgeW91J2QgZXhwZWN0IHRvIHNlZSB0aGVzZSBraW5kcyBvZiBjaGVja3MuXG5cbk5vdywgd2hhdCBhYm91dCBgbWVtY2dfaXNfZHlpbmdgPyBBaCwgaXQncyBub3QgZGVmaW5lZCBpbiB0aGUgcGF0Y2ggaXRzZWxmLCBzbyBpdCBtdXN0IGJlIHNvbWV0aGluZyBwcmUtZXhpc3RpbmcuIElzIGl0IGBtZW1fY2dyb3VwX2lzX2R5aW5nYCBvciBqdXN0IGBtZW1jZ19pc19keWluZ2A/IFRoZSBwYXRjaCBzYXlzIGBtZW1jZ19pc19keWluZ2AuIElzIHRoaXMgYSBtYWNybyBvciBhIGZ1bmN0aW9uPyBJdCBzaG91bGQgYmUgaW4gYG1tL21lbWNvbnRyb2wuY2Agb3IgYGluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oYCwgcHJvYmFibHkuIExldCdzIGxvb2sgdGhlcmUgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IG1lYW5zIGZvciBhIG1lbW9yeSBjb250cm9sIGdyb3VwIHRvIGJlIFwiZHlpbmdcIiBhbmQgd2h5IHdlJ3JlIGJyZWFraW5nIG91dCBvZiB0aGVzZSB3cml0ZSBoYW5kbGVycyB3aGVuIHRoYXQncyB0aGUgY2FzZS4gVGhhdCdzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxNy43MzIwMzcxNzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNjE4NDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW1jZ19pc19keWluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNzYzPXZvaWQgbWVtX2Nncm91cF9zaG93X3Byb3RlY3RlZF9tZW1vcnkoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzY0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE3NjU6c3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzY2LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4Mzc9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfc2hvd19wcm90ZWN0ZWRfbWVtb3J5KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDAtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTg0MTpzdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfaXNfZHlpbmcoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDIte1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTgwOD1zdGF0aWMgaW5saW5lIHN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbm9uX2R5aW5nX21lbWNnX3N0YXJ0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy04MTktXFxubW0vbWVtY29udHJvbC5jOjgyMDpcXHR3aGlsZSAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbm1tL21lbWNvbnRyb2wuYy04MjEtXFx0XFx0bWVtY2cgPSBwYXJlbnRfbWVtX2Nncm91cChtZW1jZyk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDc2Nz1zdGF0aWMgc3NpemVfdCBtZW1vcnlfaGlnaF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDc5NS1cXG5tbS9tZW1jb250cm9sLmM6NDc5NjpcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbm1tL21lbWNvbnRyb2wuYy00Nzk3LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTQ4MjI9c3RhdGljIHNzaXplX3QgbWVtb3J5X21heF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDg0OS1cXG5tbS9tZW1jb250cm9sLmM6NDg1MDpcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbm1tL21lbWNvbnRyb2wuYy00ODUxLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubW0vdm1zY2FuLmM9Nzg2Nj1pbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXFxuLS1cXG5tbS92bXNjYW4uYy03OTI0LVxcbm1tL3Ztc2Nhbi5jOjc5MjU6XFx0XFx0XFx0aWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlcXG5tbS92bXNjYW4uYy03OTI2LVxcdFxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NToxOS43NDgyMjg4OTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTYyMTkzMzczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldyBNZW1jZyBEeWluZyBDaGVja3MqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYG1lbWNnX2lzX2R5aW5nKG1lbWNnKWAgY2hlY2tzIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0IHRhcmdldHMgYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gLiBSaWdodCBhd2F5LCBJIHNlZSB0aGVzZSBhcmUgYWxsIGNydWNpYWwgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCBjZ3JvdXAgbWVtb3J5IGxpbWl0cyBhbmQgcHJvYWN0aXZlIHJlY2xhaW0sIHdoaWNoIGFyZSBhcmVhcyBJJ20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBUaGUgZmlyc3QgdHdvLCBgbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAsIGFyZSBkZWZpbmVkIGluIGBtbS9tZW1jb250cm9sLmNgLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIHJlc2lkZXMgaW4gYG1tL3Ztc2Nhbi5jYC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIGBtbS9tZW1jb250cm9sLmNgLCBhcyBleHBlY3RlZCwgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiBgQ09ORklHX01FTUNHYC4gVGhpcyB0ZWxscyBtZSB0aGF0IHRoZSBjaGVja3Mgd2l0aGluIGl0IGFyZSBwYXJ0IG9mIHRoZSBjb3JlIG1lbWNnIGZ1bmN0aW9uYWxpdHkuIGBtbS92bXNjYW4uY2AgaXMgYWx3YXlzIGluY2x1ZGVkLCBidXQgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoZSBpbmNsdXNpb24gb2YgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIGlzIHNwZWNpZmljYWxseSBndWFyZGVkIGJ5IGBDT05GSUdfTUVNQ0dgIG9yIHNvbWUgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb24uIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgY29tcGlsYXRpb24gY29udGV4dCB0byBkZXRlcm1pbmUgZXhhY3RseSBob3cgdGhlIHBhdGNoIHdpbGwgYmVoYXZlIGFjcm9zcyBkaWZmZXJlbnQgc3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5hbHlzaXMgSSBwZXJmb3JtIHdoZW4gcmV2aWV3aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODEsIk91dHB1dFRva2VucyI6NTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTY6MDUuMzcwMTY1MTg5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODQ1Mjc2MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVtb3J5X2hpZ2hfd3JpdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtY29udHJvbC5jPTQ3NjE9c3RhdGljIGludCBtZW1vcnlfaGlnaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00NzY2LVxcbm1tL21lbWNvbnRyb2wuYzo0NzY3OnN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG5tbS9tZW1jb250cm9sLmMtNDc2OC1cXHRcXHRcXHRcXHQgY2hhciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2ZmKVxcbi0tXFxubW0vbWVtY29udHJvbC5jPTUwMDc9c3RhdGljIHN0cnVjdCBjZnR5cGUgbWVtb3J5X2ZpbGVzW10gPSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNTAzNi1cXHRcXHQuc2VxX3Nob3cgPSBtZW1vcnlfaGlnaF9zaG93LFxcbm1tL21lbWNvbnRyb2wuYzo1MDM3OlxcdFxcdC53cml0ZSA9IG1lbW9yeV9oaWdoX3dyaXRlLFxcbm1tL21lbWNvbnRyb2wuYy01MDM4LVxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjU2OjA3LjY1NDcwMjE0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1NzUwOTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbW9yeV9tYXhfd3JpdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtY29udHJvbC5jPTQ4MTY9c3RhdGljIGludCBtZW1vcnlfbWF4X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTQ4MjEtXFxubW0vbWVtY29udHJvbC5jOjQ4MjI6c3RhdGljIHNzaXplX3QgbWVtb3J5X21heF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxubW0vbWVtY29udHJvbC5jLTQ4MjMtXFx0XFx0XFx0XFx0Y2hhciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2ZmKVxcbi0tXFxubW0vbWVtY29udHJvbC5jPTUwMDc9c3RhdGljIHN0cnVjdCBjZnR5cGUgbWVtb3J5X2ZpbGVzW10gPSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNTA0Mi1cXHRcXHQuc2VxX3Nob3cgPSBtZW1vcnlfbWF4X3Nob3csXFxubW0vbWVtY29udHJvbC5jOjUwNDM6XFx0XFx0LndyaXRlID0gbWVtb3J5X21heF93cml0ZSxcXG5tbS9tZW1jb250cm9sLmMtNTA0NC1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NjowOS40NjA0NTgyODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MjY4NTQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2VyX3Byb2FjdGl2ZV9yZWNsYWltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2ludGVybmFsLmg9NjI0PWV4dGVybiB2b2lkIHJlY2xhaW1fdGhyb3R0bGUocGdfZGF0YV90ICpwZ2RhdCwgZW51bSB2bXNjYW5fdGhyb3R0bGVfc3RhdGUgcmVhc29uKTtcXG5tbS9pbnRlcm5hbC5oOjYyNTppbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXFxubW0vaW50ZXJuYWwuaC02MjYtXFx0XFx0XFx0ICAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBwZ19kYXRhX3QgKnBnZGF0KTtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz00OTk0PXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9yZWNsYWltKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTQ5OTktXFxubW0vbWVtY29udHJvbC5jOjUwMDA6XFx0cmV0ID0gdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShidWYsIG1lbWNnLCBOVUxMKTtcXG5tbS9tZW1jb250cm9sLmMtNTAwMS1cXHRpZiAocmV0KVxcbi0tXFxubW0vdm1zY2FuLmM9Nzg2MD1zdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCB0b2tlbnMgPSB7XFxuLS1cXG5tbS92bXNjYW4uYy03ODY1LVxcbm1tL3Ztc2Nhbi5jOjc4NjY6aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxcbm1tL3Ztc2Nhbi5jLTc4NjctXFx0XFx0XFx0ICAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBwZ19kYXRhX3QgKnBnZGF0KVxcbi0tXFxubW0vdm1zY2FuLmM9ODAxMj1zdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbm1tL3Ztc2Nhbi5jLTgwMTctXFxubW0vdm1zY2FuLmM6ODAxODpcXHRyZXQgPSB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKChjaGFyICopYnVmLCBOVUxMLCBOT0RFX0RBVEEobmlkKSk7XFxubW0vdm1zY2FuLmMtODAxOS1cXHRyZXR1cm4gcmV0ID8gLUVBR0FJTiA6IGNvdW50O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NjoxMS4yNTMxNTExMTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjE3NTQ1NjU5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGBpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKSBicmVhaztgIGludG8gYSBmZXcga2V5IG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uczogYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gLiBSaWdodCBhd2F5LCBteSBleHBlcnQgaW50dWl0aW9uIGlzIGVuZ2FnZWQ7IHRoZXNlIGFyZSBjb3JlIGZ1bmN0aW9ucy4gVGhleSdyZSBhbGwgdHJpZ2dlcmVkIGJ5IHdyaXRlcyB0byBjZ3JvdXBmcyBmaWxlczogYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBhbmQgYG1lbW9yeS5yZWNsYWltYCwgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHN5c2ZzIGByZWNsYWltYCBmb3Igbm9kZXMuIFRoaXMgaW1wYWN0cyB0aGUgY3JpdGljYWwgZXhlY3V0aW9uIGZsb3cgcmVsYXRlZCB0byBjZ3JvdXAgbWVtb3J5IGxpbWl0cyBhbmQgdGhlIHByb2FjdGl2ZSByZWNsYWltIG1lY2hhbmlzbXMuIFRoYXQgbWFrZXMgaXQgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlIOKAkyByZWFjaGFibGUgdmlhIGNncm91cGZzIGlzIGEgYmlnIHJlZCBmbGFnLiBUaGUgcGF0Y2ggYXV0aG9yIGV2ZW4gZmxhZ2dlZCBpdCBhcyBXb3J0aEZ1enppbmc9dHJ1ZS4gSSBhZ3JlZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlLCB0aGVyZSdzIGEgc3Ryb25nIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciwgZWRnZSBjYXNlcywgYW5kIHBvdGVudGlhbGx5IHZ1bG5lcmFiaWxpdGllcyB3aXRoIGNvbmN1cnJlbnQgYWNjZXNzLlxuXG5MZXQncyBkcmlsbCBkb3duIGEgYml0IGZ1cnRoZXIuIGBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCBhcmUgY2xlYXJseSBpbiBgbW0vbWVtY29udHJvbC5jYCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIGlzIGluIGBtbS92bXNjYW4uY2AuIEkgbmVlZCB0byByZXZpZXcgdGhvc2Ugc2VjdGlvbnMgb2YgY29kZS4gQW5kIG9idmlvdXNseSwgdGhlIGBNRU1DR2AgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4gSSBzaG91bGQgY2hlY2sgaWYgdGhpcyBwYXRjaCBkZXBlbmRzIG9uIGFueSBvdGhlciBjb25maWdzLCBldmVuIGlmIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIG9uZXMgeWV0LiBUaGlzIGxvb2tzIGxpa2UgYSBkZWZpbml0ZSBjYW5kaWRhdGUgZm9yIGluLWRlcHRoIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjUxLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTY6MzMuNDI4NjEwNTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzQ1ODAwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX01FTUNHXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTIwNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdD00MDU9VG8gdXNlIHRoZSB1c2VyIGludGVyZmFjZTpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12MS9tZW1vcnkucnN0LTQwNi1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12MS9tZW1vcnkucnN0OjQwNzoxLiBFbmFibGUgQ09ORklHX0NHUk9VUFMgYW5kIENPTkZJR19NRU1DRyBvcHRpb25zXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdC00MDgtMi4gUHJlcGFyZSB0aGUgY2dyb3VwcyAoc2VlIDpyZWY6YFdoeSBhcmUgY2dyb3VwcyBuZWVkZWQ/XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3BhZ2VtYXAucnN0PTY1PW51bWJlciBvZiB0aW1lcyBhIHBhZ2UgaXMgbWFwcGVkLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9wYWdlbWFwLnJzdC0xMDEtICAgbWVtb3J5IGNncm91cCBlYWNoIHBhZ2UgaXMgY2hhcmdlZCB0bywgaW5kZXhlZCBieSBQRk4uIE9ubHkgYXZhaWxhYmxlIHdoZW5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3BhZ2VtYXAucnN0OjEwMjogICBDT05GSUdfTUVNQ0cgaXMgc2V0LlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vcGFnZW1hcC5yc3QtMTAzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdD0xNz1Vc2FnZTpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vc2hyaW5rZXJfZGVidWdmcy5yc3QtNTgtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdDo1OTogIElmIHRoZSBzaHJpbmtlciBpcyBub3QgbWVtY2ctYXdhcmUgb3IgQ09ORklHX01FTUNHIGlzIG9mZiwgMCBpcyBwcmludGVkXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9zaHJpbmtlcl9kZWJ1Z2ZzLnJzdC02MC0gIGFzIGNncm91cCBpbm9kZSBpZC4gSWYgdGhlIHNocmlua2VyIGlzIG5vdCBudW1hLWF3YXJlLCAwJ3MgYXJlIHByaW50ZWRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz0xMT1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnOjEyOkNPTkZJR19NRU1DRz15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTEzLUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MTc9Q09ORklHX05VTUFfQkFMQU5DSU5HPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE4OkNPTkZJR19NRU1DRz15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xOS1DT05GSUdfQkxLX0NHUk9VUD15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTIwPUNPTkZJR19MT0dfQlVGX1NISUZUPTE4XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoyMTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctMjItQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0yMz1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MjQ6Q09ORklHX01FTUNHPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTI1LUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2NpMjBfZGVmY29uZmlnPTExPUNPTkZJR19DR1JPVVBTPXlcXG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZzoxMjpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2NpMjBfZGVmY29uZmlnLTEzLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWc6OTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnLTEwLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc6OTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTgzMC1uZW9fZGVmY29uZmlnLTEwLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZz0xMD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzoxMTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWctMTItQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTc9Q09ORklHX0lLQ09ORklHX1BST0M9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZzo4OkNPTkZJR19NRU1DRz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTktQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnPTc9Q09ORklHX0lLQ09ORklHX1BST0M9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZzo4OkNPTkZJR19NRU1DRz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTktQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc9Nz1DT05GSUdfSUtDT05GSUdfUFJPQz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc6ODpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnLTktQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc9ND1DT05GSUdfSUtDT05GSUdfUFJPQz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc6NTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnLTYtQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc9MTQ9Q09ORklHX1RBU0tfSU9fQUNDT1VOVElORz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc6MTU6Q09ORklHX01FTUNHPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy0xNi1DT05GSUdfQkxLX0NHUk9VUD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTE2PUNPTkZJR19UQVNLX0lPX0FDQ09VTlRJTkc9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6MTc6Q09ORklHX01FTUNHPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTE4LUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBTPXlcXG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZzoxMTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnLTEyLUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWc9MTA9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3ZvY29yZTJfZGVmY29uZmlnOjExOkNPTkZJR19NRU1DRz15XFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9TQ0hFRD15XFxuLS1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnPTE1PUNPTkZJR19DR1JPVVBTPXlcXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnOjE2OkNPTkZJR19NRU1DRz15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0xNy1DT05GSUdfQ0dST1VQX1BJRFM9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9MTg9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjE5OkNPTkZJR19NRU1DRz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMjAtQ09ORklHX0NHUk9VUF9TQ0hFRD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9MjI9Q09ORklHX05VTUFfQkFMQU5DSU5HPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6MjM6Q09ORklHX01FTUNHPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctMjQtQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz04PUNPTkZJR19DR1JPVVBTPXlcXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX01FTUNHPXlcXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnLTEwLUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0yND1DT05GSUdfTlVNQV9CQUxBTkNJTkc9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoyNTpDT05GSUdfTUVNQ0c9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0yNi1DT05GSUdfQkxLX0NHUk9VUD15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MjI9Q09ORklHX05VTUFfQkFMQU5DSU5HPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MjM6Q09ORklHX01FTUNHPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMjQtQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWc9MTI9Q09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzoxMzpDT05GSUdfTUVNQ0c9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnLTE0LUNPTkZJR19OQU1FU1BBQ0VTPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9MTI9Q09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnOjEzOkNPTkZJR19NRU1DRz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZy0xNC1DT05GSUdfTkFNRVNQQUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0NQVUFDQ1Q9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnOjEzOkNPTkZJR19NRU1DRz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWctMTQtQ09ORklHX05BTUVTUEFDRVM9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjEzOkNPTkZJR19NRU1DRz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnLTE0LUNPTkZJR19OQU1FU1BBQ0VTPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWc9Nz1DT05GSUdfQlNEX1BST0NFU1NfQUNDVD15XFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZzo4OkNPTkZJR19NRU1DRz15XFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZy05LUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWc9Nz1DT05GSUdfQlNEX1BST0NFU1NfQUNDVD15XFxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnOjg6Q09ORklHX01FTUNHPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctOS1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTE1NTY9c3RydWN0IGNncm91cF9zdWJzeXMgaW9fY2dycF9zdWJzeXMgPSB7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtMTU2NS1cXHQuZXhpdCA9IGJsa2NnX2V4aXQsXFxuYmxvY2svYmxrLWNncm91cC5jOjE1NjY6I2lmZGVmIENPTkZJR19NRU1DR1xcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xNTY3LVxcdC8qXFxuLS1cXG5kcml2ZXJzL2FjcGkvc2Nhbi5jPTIwND1zdGF0aWMgaW50IGFjcGlfc2Nhbl90cnlfdG9fb2ZmbGluZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjEyLVxcdCAqIGJlY2F1c2UgaWYgdGhlIGRldmljZXMgaW4gcXVlc3Rpb24gYXJlIG1lbW9yeSBibG9ja3MgYW5kXFxuZHJpdmVycy9hY3BpL3NjYW4uYzoyMTM6XFx0ICogQ09ORklHX01FTUNHIGlzIHNldCwgb25lIG9mIHRoZSBibG9ja3MgbWF5IGhvbGQgZGF0YSBzdHJ1Y3R1cmVzXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yMTQtXFx0ICogdGhhdCB0aGUgb3RoZXIgYmxvY2tzIGRlcGVuZCBvbiwgYnV0IGl0IGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIHdoaWNoXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz0xODUxPXN0YXRpYyBibGtfc3RhdHVzX3QgbG9vcF9xdWV1ZV9ycShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE4NzktXFx0XFx0Y21kLVxcdTAwM2VibGtjZ19jc3MgPSBiaW9fYmxrY2dfY3NzKHJxLVxcdTAwM2ViaW8pO1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjE4ODA6I2lmZGVmIENPTkZJR19NRU1DR1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE4ODEtXFx0XFx0aWYgKGNtZC1cXHUwMDNlYmxrY2dfY3NzKSB7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LXBhZ2VzLmM9MTk9SU9QVERFU0NfTUFUQ0goX3JlZmNvdW50LCBfX3BhZ2VfcmVmY291bnQpO1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUtcGFnZXMuYzoyMDojaWZkZWYgQ09ORklHX01FTUNHXFxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5jLTIxLUlPUFRERVNDX01BVENIKG1lbWNnX2RhdGEsIG1lbWNnX2RhdGEpO1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oPTE5PXN0cnVjdCBpb3B0ZGVzYyB7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LXBhZ2VzLmgtMzEtXFx0YXRvbWljX3QgX19wYWdlX3JlZmNvdW50O1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUtcGFnZXMuaDozMjojaWZkZWYgQ09ORklHX01FTUNHXFxuZHJpdmVycy9pb21tdS9pb21tdS1wYWdlcy5oLTMzLVxcdHVuc2lnbmVkIGxvbmcgbWVtY2dfZGF0YTtcXG4tLVxcbmZzL3Byb2MvcGFnZS5jPTI3MT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb2Nfb3BzIGtwYWdlZmxhZ3NfcHJvY19vcHMgPSB7XFxuLS1cXG5mcy9wcm9jL3BhZ2UuYy0yNzYtXFxuZnMvcHJvYy9wYWdlLmM6Mjc3OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5mcy9wcm9jL3BhZ2UuYy0yNzgtc3RhdGljIHNzaXplX3Qga3BhZ2VjZ3JvdXBfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmZzL3Byb2MvcGFnZS5jPTI4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb2Nfb3BzIGtwYWdlY2dyb3VwX3Byb2Nfb3BzID0ge1xcbi0tXFxuZnMvcHJvYy9wYWdlLmMtMjg3LX07XFxuZnMvcHJvYy9wYWdlLmM6Mjg4OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cXG5mcy9wcm9jL3BhZ2UuYy0yODktXFxuZnMvcHJvYy9wYWdlLmM9MjkwPXN0YXRpYyBpbnQgX19pbml0IHByb2NfcGFnZV9pbml0KHZvaWQpXFxuLS1cXG5mcy9wcm9jL3BhZ2UuYy0yOTMtXFx0cHJvY19jcmVhdGUoXFxcImtwYWdlZmxhZ3NcXFwiLCBTX0lSVVNSLCBOVUxMLCBcXHUwMDI2a3BhZ2VmbGFnc19wcm9jX29wcyk7XFxuZnMvcHJvYy9wYWdlLmM6Mjk0OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5mcy9wcm9jL3BhZ2UuYy0yOTUtXFx0cHJvY19jcmVhdGUoXFxcImtwYWdlY2dyb3VwXFxcIiwgU19JUlVTUiwgTlVMTCwgXFx1MDAyNmtwYWdlY2dyb3VwX3Byb2Nfb3BzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mjk2PXN0cnVjdCBicGZfbWFwIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE1LVxcdHN0cnVjdCBidGYgKmJ0ZjtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjMxNjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMTctXFx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0yNjU0PWludCBicGZfbWFwX2FsbG9jX3BhZ2VzKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXAsIGludCBuaWQsXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjU1LVxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIHN0cnVjdCBwYWdlICoqcGFnZV9hcnJheSk7XFxuaW5jbHVkZS9saW51eC9icGYuaDoyNjU2OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI2NTctdm9pZCBicGZfbWFwX21lbWNnX2VudGVyKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBtZW1fY2dyb3VwICoqb2xkX21lbWNnLFxcbi0tXFxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmg9MjU9U1VCU1lTKGlvKVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmgtMjctXFxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmg6Mjg6I2lmIElTX0VOQUJMRUQoQ09ORklHX01FTUNHKVxcbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oLTI5LVNVQlNZUyhtZW1vcnkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1Lmg9NTE9c3RydWN0IGxpc3RfbHJ1IHtcXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgtNTItXFx0c3RydWN0IGxpc3RfbHJ1X25vZGVcXHQqbm9kZTtcXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1Lmg6NTM6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC01NC1cXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0bGlzdDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaD04Mj1pbnQgbWVtY2dfbGlzdF9scnVfYWxsb2Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBzdHJ1Y3QgbGlzdF9scnUgKmxydSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC04NC1cXG5pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1Lmg6ODU6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbGlzdF9scnUuaC04Ni0vKipcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTYwPXN0cnVjdCBtZW1fY2dyb3VwX3JlY2xhaW1fY29va2llIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTY0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjY1OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC02Ni1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTg5PXN0cnVjdCBtZW1fY2dyb3VwX3Blcl9ub2RlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk4OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05OS1cXHQvKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTI4LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjEyOTojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTMwLVxcdC8qIHNsYWIgc3RhdHMgZm9yIG5taSBjb250ZXh0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0yMDI9c3RydWN0IG1lbV9jZ3JvdXAge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjU3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjI1ODojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjU5LVxcdC8qIE1FTUNHX0tNRU0gZm9yIG5taSBjb250ZXh0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0yODUtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6Mjg2OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0yODctXFx0LyogTGVnYWN5IGNvbnN1bWVyLW9yaWVudGVkIGNvdW50ZXJzICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zMjAtXFx0c3BpbmxvY2tfdCBldmVudF9saXN0X2xvY2s7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MzIxOiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zMjItXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0zMzU9ZW51bSBwYWdlX21lbWNnX2RhdGFfZmxhZ3Mge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzQ2LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjM0NzojZWxzZSAvKiBDT05GSUdfTUVNQ0cgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNDgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNTEtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MzUyOiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0zNTMtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MzU0PWVudW0gb2JqZXh0X2ZsYWdzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTM2Ny1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDozNjg6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTM2OS0vKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTAyNz1leHRlcm4gaW50IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxMDI4OiNlbHNlIC8qIENPTkZJR19NRU1DRyAqL1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTEwMjktXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNDQwPXN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTQ0MTojZW5kaWYgLyogQ09ORklHX01FTUNHICovXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQ0Mi1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE0NDc9c3RydWN0IHNsYWJvYmpfZXh0IHtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxNDQ4OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDQ5LVxcdHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZztcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE1ODU9c3RydWN0IHNvY2s7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTU4NjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTU4Ny1leHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgbWVtY2dfc29ja2V0c19lbmFibGVkX2tleTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE2NzM9c3RhdGljIGlubGluZSBpbnQgc2hyaW5rZXJfaWQoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcilcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE2NzgtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTY3OTojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTY4MC1ib29sIG1lbV9jZ3JvdXBfa21lbV9kaXNhYmxlZCh2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4NDE9c3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDQtfVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4NDU6I2VuZGlmIC8qIENPTkZJR19NRU1DRyAqL1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDYtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTg0NzojaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1pTV0FQKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NDgtYm9vbCBvYmpfY2dyb3VwX21heV96c3dhcChzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2cpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTg2NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtX2Nncm91cF96c3dhcF93cml0ZWJhY2tfZW5hYmxlZChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODc0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4NzU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NzYtdW5zaWduZWQgbG9uZyBtZW1jZzFfc29mdF9saW1pdF9yZWNsYWltKHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlcixcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4OTM9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfZXhpdF91c2VyX2ZhdWx0KHZvaWQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODk4LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4OTk6I2Vsc2UgLyogQ09ORklHX01FTUNHX1YxICovXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkwMC1zdGF0aWMgaW5saW5lXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xOTIyPXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX2V4aXRfdXNlcl9mYXVsdCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkyNS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxOTI2OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE5Mjg6I2lmIGRlZmluZWQoQ09ORklHX01FTUNHX1YxKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE5MjktXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oPTQ3PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB1cGRhdGVfbHJ1X3NpemUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01MS1cXHRfX3VwZGF0ZV9scnVfc2l6ZShscnV2ZWMsIGxydSwgemlkLCBucl9wYWdlcyk7XFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaDo1MjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01My1cXHRtZW1fY2dyb3VwX3VwZGF0ZV9scnVfc2l6ZShscnV2ZWMsIGxydSwgemlkLCBucl9wYWdlcyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9Nzk9c3RydWN0IHBhZ2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE4NS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTg2OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTg3LVxcdHVuc2lnbmVkIGxvbmcgbWVtY2dfZGF0YTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaD0zMTI9dHlwZWRlZiBzd3BfZW50cnlfdCBzb2Z0bGVhZl90O1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0zMTMtXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjMxNDojaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIHx8IGRlZmluZWQoQ09ORklHX1NMQUJfT0JKX0VYVClcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMzE1LS8qIFdlIGhhdmUgc29tZSBleHRyYSByb29tIGFmdGVyIHRoZSByZWZjb3VudCBpbiB0YWlsIHBhZ2VzLiAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTQwMT1zdHJ1Y3QgZm9saW8ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTQzMS1cXHRcXHRcXHRhdG9taWNfdCBfcmVmY291bnQ7XFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjQzMjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTQzMy1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG1lbWNnX2RhdGE7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9NTE3PUZPTElPX01BVENIKF9yZWZjb3VudCwgX3JlZmNvdW50KTtcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6NTE4OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtNTE5LUZPTElPX01BVENIKG1lbWNnX2RhdGEsIG1lbWNnX2RhdGEpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTU3Mj1zdHJ1Y3QgcHRkZXNjIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MDMtXFx0YXRvbWljX3QgX19wYWdlX3JlZmNvdW50O1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDo2MDQ6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC02MDUtXFx0dW5zaWduZWQgbG9uZyBwdF9tZW1jZ19kYXRhO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTYxOD1UQUJMRV9NQVRDSChfcmVmY291bnQsIF9fcGFnZV9yZWZjb3VudCk7XFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjYxOTojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTYyMC1UQUJMRV9NQVRDSChtZW1jZ19kYXRhLCBwdF9tZW1jZ19kYXRhKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaD0xMTU5PXN0cnVjdCBtbV9zdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMTgtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjEzMTk6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC0xMzIwLVxcdFxcdC8qXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTQwNC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIGJpdG1hcDtcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTQwNTojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE0MDYtXFx0XFx0XFx0LyogcG9pbnRzIHRvIHRoZSBtZW1jZyBvZiBcXFwib3duZXJcXFwiIGFib3ZlICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg9MTQ5ND1zdGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dlbl9pbml0X21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE0OTctXFx0bW0tXFx1MDAzZWxydV9nZW4uYml0bWFwID0gMDtcXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmg6MTQ5ODojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTE0OTktXFx0bW0tXFx1MDAzZWxydV9nZW4ubWVtY2cgPSBOVUxMO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD03NTg9c3RydWN0IGxydXZlYyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTc4Mi0jZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjc4MzojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC03ODQtXFx0c3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg9MTY1Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBwZ2xpc3RfZGF0YSAqbHJ1dmVjX3BnZGF0KHN0cnVjdCBscnV2ZWMgKmxydXZlYylcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE2NTMte1xcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTY1NDojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xNjU1LVxcdHJldHVybiBscnV2ZWMtXFx1MDAzZXBnZGF0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaD05MD1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV9jb3VudGVyX3Jlc2V0X3dhdGVybWFyayhzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaC0xMDEtXFxuaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaDoxMDI6I2lmIElTX0VOQUJMRUQoQ09ORklHX01FTUNHKSB8fCBJU19FTkFCTEVEKENPTkZJR19DR1JPVVBfRE1FTSlcXG5pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oLTEwMy12b2lkIHBhZ2VfY291bnRlcl9jYWxjdWxhdGVfcHJvdGVjdGlvbihzdHJ1Y3QgcGFnZV9jb3VudGVyICpyb290LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oPTgyMD1zdHJ1Y3QgdGFza19zdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEwMTMtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oOjEwMTQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMDE1LVxcdHVuc2lnbmVkXFx0XFx0XFx0aW5fdXNlcl9mYXVsdDoxO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTE1MjktXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oOjE1MzA6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTMxLVxcdHN0cnVjdCBtZW1fY2dyb3VwXFx0XFx0Km1lbWNnX2luX29vbTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTMzLVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxNTM0OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTUzNS1cXHQvKiBOdW1iZXIgb2YgcGFnZXMgdG8gcmVjbGFpbSBvbiByZXR1cm5pbmcgdG8gdXNlcmxhbmQ6ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg9MTYxPWV4dGVybiB2b2lkIGV4ZWNfbW1fcmVsZWFzZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IG1tX3N0cnVjdCAqKTtcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmgtMTYyLVxcbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaDoxNjM6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvc2NoZWQvbW0uaC0xNjQtZXh0ZXJuIHZvaWQgbW1fdXBkYXRlX25leHRfb3duZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oPTE2Nj1zdGF0aWMgaW5saW5lIHZvaWQgbW1fdXBkYXRlX25leHRfb3duZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmgtMTY4LX1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg6MTY5OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0cgKi9cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmgtMTcwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oPTQ2OT1zdGF0aWMgaW5saW5lIHZvaWQgbWVtYWxsb2NfcGluX3Jlc3RvcmUodW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9tbS5oLTQ3My1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmg6NDc0OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL21tLmgtNDc1LURFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbWVtX2Nncm91cCAqLCBpbnRfYWN0aXZlX21lbWNnKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2hyaW5rZXIuaD04Mj1zdHJ1Y3Qgc2hyaW5rZXIge1xcbi0tXFxuaW5jbHVkZS9saW51eC9zaHJpbmtlci5oLTEwNi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuaW5jbHVkZS9saW51eC9zaHJpbmtlci5oOjEwNzojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9zaHJpbmtlci5oLTEwOC1cXHQvKiBJRCBpbiBzaHJpbmtlcl9pZHIgKi9cXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oPTI2PWVudW0gX3NsYWJfZmxhZ19iaXRzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTQ1LSNlbmRpZlxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjQ2OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC00Ny1cXHRfU0xBQl9BQ0NPVU5ULFxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjAxLSAqL1xcbmluY2x1ZGUvbGludXgvc2xhYi5oOjIwMjojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjAzLSMgZGVmaW5lIFNMQUJfQUNDT1VOVFxcdFxcdF9fU0xBQl9GTEFHX0JJVChfU0xBQl9BQ0NPVU5UKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9NjI5PWVudW0ga21hbGxvY19jYWNoZV90eXBlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTYzMy0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2MzQ6I2lmbmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC02MzUtXFx0S01BTExPQ19DR1JPVVAgPSBLTUFMTE9DX05PUk1BTCxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY0Ni0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo2NDc6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY0OC1cXHRLTUFMTE9DX0NHUk9VUCxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oPTY1NT1leHRlcm4ga21lbV9idWNrZXRzIGttYWxsb2NfY2FjaGVzW05SX0tNQUxMT0NfVFlQRVNdO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjYyLVxcdChJU19FTkFCTEVEKENPTkZJR19aT05FX0RNQSkgICA/IF9fR0ZQX0RNQSA6IDApIHxcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6NjYzOlxcdChJU19FTkFCTEVEKENPTkZJR19NRU1DRykgPyBfX0dGUF9BQ0NPVU5UIDogMCkpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtNjY0LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9NjY3PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgZW51bSBrbWFsbG9jX2NhY2hlX3R5cGUga21hbGxvY190eXBlKGdmcF90IGZsYWdzLCB1bnNpZ25lZCBsb25nIGNhbGxlcilcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTY5MC1cXHRcXHRyZXR1cm4gS01BTExPQ19ETUE7XFxuaW5jbHVkZS9saW51eC9zbGFiLmg6NjkxOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUVNQ0cpIHx8IChmbGFncyBcXHUwMDI2IF9fR0ZQX1JFQ0xBSU1BQkxFKSlcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC02OTItXFx0XFx0cmV0dXJuIEtNQUxMT0NfUkVDTEFJTTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oPTc3MD12b2lkICprbWVtX2NhY2hlX2FsbG9jX2xydV9ub3Byb2Yoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBsaXN0X2xydSAqbHJ1LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtNzkzLSAqXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6Nzk0OiAqIDEuIEZvciAhQ09ORklHX01FTUNHIG9yIGNncm91cF9kaXNhYmxlPW1lbW9yeSBzeXN0ZW1zLlxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTc5NS0gKiAyLiBBbHJlYWR5IGNoYXJnZWQgc2xhYiBvYmplY3RzLlxcbi0tXFxuaW5jbHVkZS9saW51eC9zd2FwLmg9NTM0PXN0YXRpYyBpbmxpbmUgaW50IGFkZF9zd2FwX2V4dGVudChzdHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCAqc2lzLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zd2FwLmgtNTQwLSNlbmRpZiAvKiBDT05GSUdfU1dBUCAqL1xcbmluY2x1ZGUvbGludXgvc3dhcC5oOjU0MTojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC9zd2FwLmgtNTQyLXN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfc3dhcHBpbmVzcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N3YXAuaD01NTc9c3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF9zd2FwcGluZXNzKHN0cnVjdCBtZW1fY2dyb3VwICptZW0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N3YXAuaC01NjItXFxuaW5jbHVkZS9saW51eC9zd2FwLmg6NTYzOiNpZiBkZWZpbmVkKENPTkZJR19TV0FQKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1DRykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQkxLX0NHUk9VUClcXG5pbmNsdWRlL2xpbnV4L3N3YXAuaC01NjQtdm9pZCBfX2ZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N3YXAuaD01NzI9c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcClcXG4tLVxcbmluY2x1ZGUvbGludXgvc3dhcC5oLTU3Ni1cXG5pbmNsdWRlL2xpbnV4L3N3YXAuaDo1Nzc6I2lmIGRlZmluZWQoQ09ORklHX01FTUNHKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxcbmluY2x1ZGUvbGludXgvc3dhcC5oLTU3OC1pbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oPTMwPXN0cnVjdCBtZW1fY2dyb3VwO1xcbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oLTMxLVxcbmluY2x1ZGUvbGludXgvdm1wcmVzc3VyZS5oOjMyOiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaC0zMy12b2lkIHZtcHJlc3N1cmUoZ2ZwX3QgZ2ZwLCBpbnQgb3JkZXIsIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgYm9vbCB0cmVlLFxcbi0tXFxuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmg9NTA9c3RhdGljIGlubGluZSB2b2lkIHZtcHJlc3N1cmVfcHJpbyhnZnBfdCBnZnAsIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaC01MS1cXHRcXHRcXHRcXHQgICBpbnQgcHJpbykge31cXG5pbmNsdWRlL2xpbnV4L3ZtcHJlc3N1cmUuaDo1MjojZW5kaWYgLyogQ09ORklHX01FTUNHICovXFxuaW5jbHVkZS9saW51eC92bXByZXNzdXJlLmgtNTMtI2VuZGlmIC8qIF9fTElOVVhfVk1QUkVTU1VSRV9IICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oPTUwNz1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKnZtX2V2ZW50X25hbWUoZW51bSB2bV9ldmVudF9pdGVtIGl0ZW0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oLTUxNi1cXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oOjUxNzojaWZkZWYgQ09ORklHX01FTUNHXFxuaW5jbHVkZS9saW51eC92bXN0YXQuaC01MTgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oPTU0NT1zdGF0aWMgaW5saW5lIHZvaWQgbW9kX2xydXZlY19wYWdlX3N0YXRlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxuaW5jbHVkZS9saW51eC92bXN0YXQuaC01NTAtXFxuaW5jbHVkZS9saW51eC92bXN0YXQuaDo1NTE6I2VuZGlmIC8qIENPTkZJR19NRU1DRyAqL1xcbmluY2x1ZGUvbGludXgvdm1zdGF0LmgtNTUyLVxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTM2NT1zdHJ1Y3Qgc29jayB7XFxuLS1cXG5pbmNsdWRlL25ldC9zb2NrLmgtNDYwLVxcdHN0cnVjdCBzb2NrZXRcXHRcXHQqc2tfc29ja2V0O1xcbmluY2x1ZGUvbmV0L3NvY2suaDo0NjE6I2lmZGVmIENPTkZJR19NRU1DR1xcbmluY2x1ZGUvbmV0L3NvY2suaC00NjItXFx0c3RydWN0IG1lbV9jZ3JvdXBcXHQqc2tfbWVtY2c7XFxuLS1cXG5pbmNsdWRlL25ldC9zb2NrLmg9MjY2Mj1zdGF0aWMgaW5saW5lIGdmcF90IGdmcF9tZW1jZ19jaGFyZ2Uodm9pZClcXG4tLVxcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjY2LVxcbmluY2x1ZGUvbmV0L3NvY2suaDoyNjY3OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY2OC1zdGF0aWMgaW5saW5lIHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX2Zyb21fc2soY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTI2Nzg9c3RhdGljIGlubGluZSBib29sIG1lbV9jZ3JvdXBfc2tfdW5kZXJfbWVtb3J5X3ByZXNzdXJlKGNvbnN0IHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjgxLVxcbmluY2x1ZGUvbmV0L3NvY2suaDoyNjgyOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4My1cXHRpZiAoIWNncm91cF9zdWJzeXNfb25fZGZsKG1lbW9yeV9jZ3JwX3N1YnN5cykpXFxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODQtXFx0XFx0cmV0dXJuICEhbWVtY2ctXFx1MDAzZXRjcG1lbV9wcmVzc3VyZTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTY6MzUuNTAzMTk3MjI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3OTI5MDE4NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MTM2ODAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjU2OjUzLjQzMjIyNTM5MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MjQ1NzE1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUVNQ0dfVjFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9ODk9c3RydWN0IG1lbV9jZ3JvdXBfcGVyX25vZGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTctXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6OTg6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk5LVxcdC8qXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0yMDI9c3RydWN0IG1lbV9jZ3JvdXAge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjg1LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjI4NjojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMjg3LVxcdC8qIExlZ2FjeSBjb25zdW1lci1vcmllbnRlZCBjb3VudGVycyAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzIwLVxcdHNwaW5sb2NrX3QgZXZlbnRfbGlzdF9sb2NrO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjMyMTojZW5kaWYgLyogQ09ORklHX01FTUNHX1YxICovXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMzIyLVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTg2NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtX2Nncm91cF96c3dhcF93cml0ZWJhY2tfZW5hYmxlZChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODc0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4NzU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE4NzYtdW5zaWduZWQgbG9uZyBtZW1jZzFfc29mdF9saW1pdF9yZWNsYWltKHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlcixcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE4OTM9c3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBfZXhpdF91c2VyX2ZhdWx0KHZvaWQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xODk4LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE4OTk6I2Vsc2UgLyogQ09ORklHX01FTUNHX1YxICovXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkwMC1zdGF0aWMgaW5saW5lXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xOTIyPXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX2V4aXRfdXNlcl9mYXVsdCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTkyNS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxOTI2OiNlbmRpZiAvKiBDT05GSUdfTUVNQ0dfVjEgKi9cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xOTI3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE5Mjg6I2lmIGRlZmluZWQoQ09ORklHX01FTUNHX1YxKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE5MjktXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODIwPXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTAxMy0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTAxNDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEwMTUtXFx0dW5zaWduZWRcXHRcXHRcXHRpbl91c2VyX2ZhdWx0OjE7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTUyOS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTUzMDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTE1MzEtXFx0c3RydWN0IG1lbV9jZ3JvdXBcXHRcXHQqbWVtY2dfaW5fb29tO1xcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTI2Nzg9c3RhdGljIGlubGluZSBib29sIG1lbV9jZ3JvdXBfc2tfdW5kZXJfbWVtb3J5X3ByZXNzdXJlKGNvbnN0IHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbmV0L3NvY2suaC0yNjgxLVxcbmluY2x1ZGUvbmV0L3NvY2suaDoyNjgyOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5pbmNsdWRlL25ldC9zb2NrLmgtMjY4My1cXHRpZiAoIWNncm91cF9zdWJzeXNfb25fZGZsKG1lbW9yeV9jZ3JwX3N1YnN5cykpXFxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODQtXFx0XFx0cmV0dXJuICEhbWVtY2ctXFx1MDAzZXRjcG1lbV9wcmVzc3VyZTtcXG5pbmNsdWRlL25ldC9zb2NrLmg6MjY4NTojZW5kaWYgLyogQ09ORklHX01FTUNHX1YxICovXFxuaW5jbHVkZS9uZXQvc29jay5oLTI2ODYtXFxuLS1cXG5tbS9NYWtlZmlsZT0xMDM9b2JqLSQoQ09ORklHX0xJVkVVUERBVEVfTUVNRkQpICs9IG1lbWZkX2x1by5vXFxubW0vTWFrZWZpbGU6MTA0Om9iai0kKENPTkZJR19NRU1DR19WMSkgKz0gbWVtY29udHJvbC12MS5vXFxubW0vTWFrZWZpbGUtMTA1LW9iai0kKENPTkZJR19NRU1DRykgKz0gbWVtY29udHJvbC5vIHZtcHJlc3N1cmUub1xcbi0tXFxubW0vbWVtY29udHJvbC12MS5oPTMwPXN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX3ByaXZhdGVfaWRfZ2V0X29ubGluZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmgtMzMtLyogQ2dyb3VwIHYxLXNwZWNpZmljIGRlY2xhcmF0aW9ucyAqL1xcbm1tL21lbWNvbnRyb2wtdjEuaDozNDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC12MS5oLTM1LVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5oPTk3PWV4dGVybiBzdHJ1Y3QgY2Z0eXBlIG1lbV9jZ3JvdXBfbGVnYWN5X2ZpbGVzW107XFxubW0vbWVtY29udHJvbC12MS5oLTk4LVxcbm1tL21lbWNvbnRyb2wtdjEuaDo5OTojZWxzZVxcdC8qIENPTkZJR19NRU1DR19WMSAqL1xcbm1tL21lbWNvbnRyb2wtdjEuaC0xMDAtXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmg9MTI3PXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1jZzFfdW5jaGFyZ2Vfc2ttZW0oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpIHt9XFxubW0vbWVtY29udHJvbC12MS5oLTEyOC1cXG5tbS9tZW1jb250cm9sLXYxLmg6MTI5OiNlbmRpZlxcdC8qIENPTkZJR19NRU1DR19WMSAqL1xcbm1tL21lbWNvbnRyb2wtdjEuaC0xMzAtXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MjA5PXN0YXRpYyBpbmxpbmUgc3RydWN0IG9ial9jZ3JvdXAgKl9fbWVtY2dfcmVwYXJlbnRfb2JqY2dzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0yMjgtXFxubW0vbWVtY29udHJvbC5jOjIyOTojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTIzMC1zdGF0aWMgdm9pZCBfX21lbV9jZ3JvdXBfZmx1c2hfc3RhdHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBib29sIGZvcmNlKTtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz01MDU9dW5zaWduZWQgbG9uZyBscnV2ZWNfcGFnZV9zdGF0ZV9sb2NhbChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNTI3LVxcbm1tL21lbWNvbnRyb2wuYzo1Mjg6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy01Mjktc3RhdGljIHZvaWQgX19tb2RfbWVtY2dfbHJ1dmVjX3N0YXRlKHN0cnVjdCBtZW1fY2dyb3VwX3Blcl9ub2RlICpwbixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz01NTM9c3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtZW1jZ192bV9ldmVudF9zdGF0W10gPSB7XFxubW0vbWVtY29udHJvbC5jOjU1NDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTU1NS1cXHRQR1BHSU4sXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9Nzg3PXN0YXRpYyBsb25nIG1lbWNnX3N0YXRlX3ZhbF9pbl9wYWdlcyhpbnQgaWR4LCBsb25nIHZhbClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy04MDItXFxubW0vbWVtY29udHJvbC5jOjgwMzojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTgwNC0vKlxcbi0tXFxubW0vbWVtY29udHJvbC5jPTg3MT12b2lkIG1vZF9tZW1jZ19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGVudW0gbWVtY2dfc3RhdF9pdGVtIGlkeCxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy04ODMtXFxubW0vbWVtY29udHJvbC5jOjg4NDojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTg4NS0vKiBpZHggY2FuIGJlIG9mIHR5cGUgZW51bSBtZW1jZ19zdGF0X2l0ZW0gb3Igbm9kZV9zdGF0X2l0ZW0uICovXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTA1OT1ib29sIG1lbWNnX3ZtX2V2ZW50X2l0ZW1fdmFsaWQoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xMDY2LVxcbm1tL21lbWNvbnRyb2wuYzoxMDY3OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMTA2OC11bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50c19sb2NhbChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xNjY3PXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xNjcyLVxcbm1tL21lbWNvbnRyb2wuYzoxNjczOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMTY3NC11bnNpZ25lZCBsb25nIG1lbWNnX3BhZ2Vfc3RhdGVfbG9jYWxfb3V0cHV0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGl0ZW0pXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE3MzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobWVtY2dfdm1fZXZlbnRfc3RhdCk7IGkrKykge1xcbm1tL21lbWNvbnRyb2wuYzoxNzQwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMTc0MS1cXHRcXHRpZiAobWVtY2dfdm1fZXZlbnRfc3RhdFtpXSA9PSBQR1BHSU4gfHxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xNzkxPXZvaWQgbWVtX2Nncm91cF9wcmludF9vb21fbWVtaW5mbyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTgxMi1cXHRcXHRcXHRhdG9taWNfbG9uZ19yZWFkKFxcdTAwMjZtZW1jZy1cXHUwMDNlbWVtb3J5X2V2ZW50c1tNRU1DR19TV0FQX01BWF0pKTtcXG5tbS9tZW1jb250cm9sLmM6MTgxMzojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTE4MTQtXFx0ZWxzZSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDE1Nj1tZW1fY2dyb3VwX2Nzc19hbGxvYyhzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcGFyZW50X2NzcylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00MTc5LVxcdFxcdHBhZ2VfY291bnRlcl9pbml0KFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCwgXFx1MDAyNnBhcmVudC1cXHUwMDNlc3dhcCwgZmFsc2UpO1xcbm1tL21lbWNvbnRyb2wuYzo0MTgwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtNDE4MS1cXHRcXHRtZW1jZy1cXHUwMDNlbWVtb3J5LnRyYWNrX2ZhaWxjbnQgPSAhbWVtY2dfb25fZGZsO1xcbi0tXFxubW0vbWVtY29udHJvbC5jLTQxOTAtXFx0XFx0cGFnZV9jb3VudGVyX2luaXQoXFx1MDAyNm1lbWNnLVxcdTAwM2Vzd2FwLCBOVUxMLCBmYWxzZSk7XFxubW0vbWVtY29udHJvbC5jOjQxOTE6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy00MTkyLVxcdFxcdHBhZ2VfY291bnRlcl9pbml0KFxcdTAwMjZtZW1jZy1cXHUwMDNla21lbSwgTlVMTCwgZmFsc2UpO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTQzNTg9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9jc3NfcmVzZXQoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00MzYzLVxcdHBhZ2VfY291bnRlcl9zZXRfbWF4KFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCwgUEFHRV9DT1VOVEVSX01BWCk7XFxubW0vbWVtY29udHJvbC5jOjQzNjQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy00MzY1LVxcdHBhZ2VfY291bnRlcl9zZXRfbWF4KFxcdTAwMjZtZW1jZy1cXHUwMDNla21lbSwgUEFHRV9DT1VOVEVSX01BWCk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NTA4MT1zdHJ1Y3QgY2dyb3VwX3N1YnN5cyBtZW1vcnlfY2dycF9zdWJzeXMgPSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNTA5Mi1cXHQuZGZsX2NmdHlwZXMgPSBtZW1vcnlfZmlsZXMsXFxubW0vbWVtY29udHJvbC5jOjUwOTM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy01MDk0LVxcdC5sZWdhY3lfY2Z0eXBlcyA9IG1lbV9jZ3JvdXBfbGVnYWN5X2ZpbGVzLFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTYwMjc9c3RhdGljIGludCBfX2luaXQgbWVtX2Nncm91cF9zd2FwX2luaXQodm9pZClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy02MDMyLVxcdFdBUk5fT04oY2dyb3VwX2FkZF9kZmxfY2Z0eXBlcyhcXHUwMDI2bWVtb3J5X2NncnBfc3Vic3lzLCBzd2FwX2ZpbGVzKSk7XFxubW0vbWVtY29udHJvbC5jOjYwMzM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy02MDM0LVxcdFdBUk5fT04oY2dyb3VwX2FkZF9sZWdhY3lfY2Z0eXBlcyhcXHUwMDI2bWVtb3J5X2NncnBfc3Vic3lzLCBtZW1zd19maWxlcykpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1Njo1NS4yODQ2ODg5OTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU0MTE2MDEyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2g6IFNhZmVndWFyZGluZyBNZW1vcnkgQ29udHJvbCBpbiBEeWluZyBjZ3JvdXBzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtYWtpbmcgYSBzbWFsbCwgYnV0IHBvdGVudGlhbGx5IGltcG9ydGFudCwgY2hhbmdlLiBUaGV5J3JlIGFkZGluZyBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSkgYnJlYWs7YCB0byB0aHJlZSBmdW5jdGlvbnMuIFRoZSBmdW5jdGlvbnMgYXJlIGBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCAoYm90aCBpbiBgbW0vbWVtY29udHJvbC5jYCkgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gYG1tL3Ztc2Nhbi5jYCkuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSB0aWVkIHRvIGNncm91cCBtZW1vcnkgY29udHJvbCwgb3IgbWVtY2csIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5gbWVtb3J5X2hpZ2hfd3JpdGVgIGFuZCBgbWVtb3J5X21heF93cml0ZWAgYXJlIHRoZSB3cml0ZSBoYW5kbGVycyBmb3IgdGhlIGBtZW1vcnkuaGlnaGAgYW5kIGBtZW1vcnkubWF4YCBmaWxlcyBpbiBjZ3JvdXAgdjIsIHNvIHRoYXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgd2hlcmUgaXQgZ2V0cyBhIGxpdHRsZSBtb3JlIGludm9sdmVkLiBJdCdzIGNhbGxlZCBmcm9tIGBtZW1vcnlfcmVjbGFpbWAgd2hpY2ggaGFuZGxlcyB3cml0aW5nIHRvIHRoZSBgbWVtb3J5LnJlY2xhaW1gIGZpbGUsIGFsc28gYSBjZ3JvdXAgdjIgZmlsZSwgYW5kIGByZWNsYWltX3N0b3JlYCwgd2hpY2ggSSBuZWVkIHRvIGludmVzdGlnYXRlIGEgYml0IG1vcmUuXG5cblRoZSBwYXRjaCBpdHNlbGYgbG9va3MgZnVuY3Rpb25hbCDigJMgaXQncyBiYXNpY2FsbHkgcHJldmVudGluZyB3b3JrIGZyb20gYmVpbmcgZG9uZSBvbiBhIG1lbWNnIHRoYXQncyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLiBUaGlzIHNlZW1zIHNlbnNpYmxlLCBhcyBpdCB3b3VsZCBwcmV2ZW50IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZXJyb3JzLCBzbyBmYXIsIHNvIGdvb2QuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBoZXJlIGlzIHRoYXQgdGhlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGp1c3QgYnkgd3JpdGluZyB0byB0aGUgYXBwcm9wcmlhdGUgY2dyb3VwIGZpbGVzLCBzcGVjaWZpY2FsbHkgYG1lbW9yeS5oaWdoYCwgYG1lbW9yeS5tYXhgLCBvciBgbWVtb3J5LnJlY2xhaW1gLCBhbmQgdGhhdCBhbGwgb2YgdGhpcyBjYW4gb2NjdXIgd2hlbiB0aGUgY2dyb3VwIGlzIGFscmVhZHkgYmVpbmcgZGVsZXRlZC5cblxuTGV0J3MgZG8gc29tZSBjb25maWcgY2hlY2tzIHRvIHNlZSBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4gYENPTkZJR19NRU1DR2AgaXMgdGhlIG1haW4gb25lLCBvZiBjb3Vyc2UsIGZvciBtZW1vcnkgY2dyb3Vwcy4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHRvIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zLCBidXQgbGV0J3MganVzdCBtYWtlIHN1cmUuXG5cbmBtZW1vcnlfaGlnaF93cml0ZWAgYW5kIGBtZW1vcnlfbWF4X3dyaXRlYCBhcmUgZGVmaW5pdGVseSB3aXRoaW4gYG1tL21lbWNvbnRyb2wuY2AgYW5kIHVuZGVyIGBDT05GSUdfTUVNQ0dgLiBHb29kLiBOb3csIHdoYXQgYWJvdXQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gPyBMZXQncyBjaGVjayB0aGUgY29kZTpcblxuYGBgY1xuaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuXHRcdFx0ICAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBwZ19kYXRhX3QgKnBnZGF0KVxue1xuXHQuLi5cblx0aWYgKG1lbWNnKSB7XG5cdFx0dW5zaWduZWQgaW50IHJlY2xhaW1fb3B0aW9ucztcblxuXHRcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXG5cdFx0XHRicmVhaztcblx0XHQuLi5cbmBgYFxuXG5BaCwgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIGNoZWNrcyBmb3IgdGhlIG1lbWNnIGJlaW5nIGRlYWQgKmluc2lkZSogdGhlIGZ1bmN0aW9uLiBNYWtlcyBzZW5zZSwgYmVjYXVzZSBpdCBpcyBjYWxsZWQgZnJvbSB0d28gb3RoZXIgcGxhY2VzLCBvbmUgb2YgdGhlbSwgYG1lbW9yeV9yZWNsYWltYCwgaXMgdW5kZXIgYENPTkZJR19NRU1DR2AuIEJ1dCB3aGF0IGFib3V0IHRoZSBvdGhlcj8gSSByZWNhbGwgdGhhdCBpdCBpcyBmcm9tIGByZWNsYWltX3N0b3JlYCwgd2hpY2ggaXMgdW5kZXIgYENPTkZJR19OVU1BYCwgd2hpY2ggY2FsbHMgdGhpcyBmdW5jdGlvbi4gSG1tLiBOZWVkIHRvIGNvbmZpcm0gdGhhdC4gTGV0J3MgbG9vayBhdCBgcmVjbGFpbV9zdG9yZWAgaW4gYG1tL3Ztc2Nhbi5jYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjUwMywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1NzoyMC42OTYyOTM2MjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODA2NDc2ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjbGFpbV9zdG9yZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9zeXNmcy5jPTk1Mj1zdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19keW5hbWljX3JlY2xhaW1fc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbmZzL2J0cmZzL3N5c2ZzLmMtOTYwLVxcbmZzL2J0cmZzL3N5c2ZzLmM6OTYxOnN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX2R5bmFtaWNfcmVjbGFpbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5mcy9idHJmcy9zeXNmcy5jLTk2Mi1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGtvYmpfYXR0cmlidXRlICphLFxcbi0tXFxuZnMvYnRyZnMvc3lzZnMuYz05ODE9QlRSRlNfQVRUUl9SVyhzcGFjZV9pbmZvLCBkeW5hbWljX3JlY2xhaW0sXFxuZnMvYnRyZnMvc3lzZnMuYy05ODItXFx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3Nob3csXFxuZnMvYnRyZnMvc3lzZnMuYzo5ODM6XFx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3N0b3JlKTtcXG5mcy9idHJmcy9zeXNmcy5jLTk4NC1cXG5mcy9idHJmcy9zeXNmcy5jPTk4NT1zdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5mcy9idHJmcy9zeXNmcy5jLTk5My1cXG5mcy9idHJmcy9zeXNmcy5jOjk5NDpzdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbmZzL2J0cmZzL3N5c2ZzLmMtOTk1LVxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmEsXFxuLS1cXG5mcy9idHJmcy9zeXNmcy5jPTEwMTQ9QlRSRlNfQVRUUl9SVyhzcGFjZV9pbmZvLCBwZXJpb2RpY19yZWNsYWltLFxcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNS1cXHQgICAgICBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3csXFxuZnMvYnRyZnMvc3lzZnMuYzoxMDE2OlxcdCAgICAgIGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc3RvcmUpO1xcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNy1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTgwMDk9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xcbi0tXFxubW0vdm1zY2FuLmMtODAxMS0jaWYgZGVmaW5lZChDT05GSUdfU1lTRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXFxubW0vdm1zY2FuLmM6ODAxMjpzdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5tbS92bXNjYW4uYy04MDEzLVxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjU3OjIzLjg3Njk0NzgyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDA5NDQ1ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHJlY2xhaW1fc3RvcmVgIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIGByZWNsYWltX3N0b3JlYCBpcyBuZXN0ZWQgdW5kZXIgYENPTkZJR19TWVNGU2AgYW5kIGBDT05GSUdfTlVNQWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBCdXQgdGhpcyBwYXRjaCBpcyBhZGRpbmcgdGhhdCBgaWYgKG1lbWNnX2lzX2R5aW5nKG1lbWNnKSlgIGNoZWNrICppbnNpZGUqIHRoZSBgaWYgKG1lbWNnKWAgYmxvY2sgd2l0aGluIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYC4gVGhpcyBtZWFucyBpdCAqb25seSogYWZmZWN0cyB0aGUgbWVtY2cgcGF0aCwgcmlnaHQ/IFRoZXJlZm9yZSwgYENPTkZJR19NRU1DR2AgaXMgdGhlIHJlYWwgZGVjaWRpbmcgZmFjdG9yIGhlcmUuIEl0J3MgdGhlIG9ubHkgb25lIHRoYXQgcmVhbGx5IG1hdHRlcnMgZm9yIHdoZXRoZXIgdGhpcyBjaGFuZ2UgZXZlbiBkb2VzIGFueXRoaW5nLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIGBtZW1jZ19pc19keWluZ2AgaXMgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhgLiBMZXQgbWUgcXVpY2tseSBsb29rIGF0IHRoYXQgZGVmaW5pdGlvbjpcblxuYGBgY1xuc3RhdGljIGlubGluZSBib29sIG1lbWNnX2lzX2R5aW5nKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbntcblx0cmV0dXJuICEobWVtY2ctXHUwMDNlY3NzLmZsYWdzIFx1MDAyNiBDU1NfT05MSU5FKTtcbn1cbmBgYFxuXG5Pa2F5LCBzbyBpdCBjaGVja3MgYENTU19PTkxJTkVgLiBCdXQuLi4gd2FpdCEgYG1lbWNnX2lzX2R5aW5nYCBpcyAqb25seSogYXZhaWxhYmxlIGlmIGBDT05GSUdfTUVNQ0dgIGlzIGVuYWJsZWQhIElmIGl0J3MgZGlzYWJsZWQsIHRoZW4gdGhlIGZ1bmN0aW9uIG1pZ2h0IG5vdCBldmVuIGJlIGRlZmluZWQsIG9yIGl0IG1pZ2h0IGJlIGRlZmluZWQgdG8gYSBkZWZhdWx0IG9mIGBmYWxzZWAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZSBhbmQgc2VlIHdoYXQgaGFwcGVucyB3aGVuIGBDT05GSUdfTUVNQ0dgIGlzIG5vdCBzZXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5OTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTc6MjkuMjg2Mzk1OTE3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYzMTU5MDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbWNnX2lzX2R5aW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE3NjM9dm9pZCBtZW1fY2dyb3VwX3Nob3dfcHJvdGVjdGVkX21lbW9yeShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE3NjQtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTc2NTpzdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfaXNfZHlpbmcoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE3NjYte1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTgzNz1zdGF0aWMgaW5saW5lIHZvaWQgbWVtX2Nncm91cF9zaG93X3Byb3RlY3RlZF9tZW1vcnkoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0MC1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxODQxOnN0YXRpYyBpbmxpbmUgYm9vbCBtZW1jZ19pc19keWluZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTg0Mi17XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9ODA4PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKmdldF9ub25fZHlpbmdfbWVtY2dfc3RhcnQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTgxOS1cXG5tbS9tZW1jb250cm9sLmM6ODIwOlxcdHdoaWxlIChtZW1jZ19pc19keWluZyhtZW1jZykpXFxubW0vbWVtY29udHJvbC5jLTgyMS1cXHRcXHRtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKTtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz00NzY3PXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9oaWdoX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00Nzk1LVxcbm1tL21lbWNvbnRyb2wuYzo0Nzk2OlxcdFxcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXFxubW0vbWVtY29udHJvbC5jLTQ3OTctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDgyMj1zdGF0aWMgc3NpemVfdCBtZW1vcnlfbWF4X3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00ODQ5LVxcbm1tL21lbWNvbnRyb2wuYzo0ODUwOlxcdFxcdGlmIChtZW1jZ19pc19keWluZyhtZW1jZykpXFxubW0vbWVtY29udHJvbC5jLTQ4NTEtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS92bXNjYW4uYz03ODY2PWludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcXG4tLVxcbm1tL3Ztc2Nhbi5jLTc5MjQtXFxubW0vdm1zY2FuLmM6NzkyNTpcXHRcXHRcXHRpZiAobWVtY2dfaXNfZHlpbmcobWVtY2cpKVxcbm1tL3Ztc2Nhbi5jLTc5MjYtXFx0XFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjU3OjMxLjI0OTU2MjM3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjQxMzYyNDA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjE4NzM3LCJPdXRwdXRUb2tlbnMiOjE5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTc6NTMuNjYzMTg4OTc5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc4NzQ0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWVtb3J5X2hpZ2hfd3JpdGVcIixcbiAgICBcIm1lbW9yeV9tYXhfd3JpdGVcIixcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGNoZWNrcyBmb3IgYG1lbWNnX2lzX2R5aW5nKG1lbWNnKWAgaW4gYG1lbW9yeV9oaWdoX3dyaXRlYCwgYG1lbW9yeV9tYXhfd3JpdGVgIChpbiBtbS9tZW1jb250cm9sLmMpLCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gIChpbiBtbS92bXNjYW4uYykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBjZ3JvdXBmcyB3cml0ZXMgKGBtZW1vcnkuaGlnaGAsIGBtZW1vcnkubWF4YCwgYG1lbW9yeS5yZWNsYWltYCkgYW5kIHN5c2ZzIHdyaXRlcyAoYHJlY2xhaW1gKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYXMgdGhleSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgYnJlYWtpbmcgb3V0IG9mIGxvb3BzIGlmIHRoZSBtZW1vcnkgY2dyb3VwIGlzIGR5aW5nLiBUaGUgY29kZSBpcyBndWFyZGVkIGJ5IENPTkZJR19NRU1DRywgd2hpY2ggbmVlZHMgdG8gYmUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1DR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1lbW9yeV9oaWdoX3dyaXRlXCIsXG4gICAgXCJtZW1vcnlfbWF4X3dyaXRlXCIsXG4gICAgXCJ1c2VyX3Byb2FjdGl2ZV9yZWNsYWltXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBjaGVja3MgZm9yIGBtZW1jZ19pc19keWluZyhtZW1jZylgIGluIGBtZW1vcnlfaGlnaF93cml0ZWAsIGBtZW1vcnlfbWF4X3dyaXRlYCAoaW4gbW0vbWVtY29udHJvbC5jKSwgYW5kIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCAoaW4gbW0vdm1zY2FuLmMpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgY2dyb3VwZnMgd3JpdGVzIChgbWVtb3J5LmhpZ2hgLCBgbWVtb3J5Lm1heGAsIGBtZW1vcnkucmVjbGFpbWApIGFuZCBzeXNmcyB3cml0ZXMgKGByZWNsYWltYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFzIHRoZXkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGJ5IGJyZWFraW5nIG91dCBvZiBsb29wcyBpZiB0aGUgbWVtb3J5IGNncm91cCBpcyBkeWluZy4gVGhlIGNvZGUgaXMgZ3VhcmRlZCBieSBDT05GSUdfTUVNQ0csIHdoaWNoIG5lZWRzIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4lw7w[1] Phase: Succeeded StartedAt: 2026-06-23 06:58:05 +0000 UTC FinishedAt: 2026-06-23 06:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 06:58:05 +0000 UTC FinishedAt: 2026-06-23 06:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2] Phase: Succeeded StartedAt: 2026-06-23 06:58:05 +0000 UTC FinishedAt: 2026-06-23 10:52:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-23 06:58:05 +0000 UTC FinishedAt: 2026-06-23 10:52:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-23 06:58:05 +0000 UTC FinishedAt: 2026-06-23 06:59:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-23 06:58:05 +0000 UTC FinishedAt: 2026-06-23 06:58:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow4lw7w/series-workflow4lw7w-convert-artifact-373378454/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-23 06:59:09 +0000 UTC FinishedAt: 2026-06-23 07:24:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-23 06:59:09 +0000 UTC FinishedAt: 2026-06-23 07:24:37 +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:*aacd082d-aa88-4323-8073-d12bc739d2c8,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-workflow4lw7w/series-workflow4lw7w-convert-artifact-373378454/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": "41585299-f71d-4835-bcb4-5b33516b7029", "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-workflow4lw7w/series-workflow4lw7w-build-action-1058831660/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-23 06:59:09 +0000 UTC FinishedAt: 2026-06-23 07:24:27 +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:*aacd082d-aa88-4323-8073-d12bc739d2c8,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-workflow4lw7w/series-workflow4lw7w-convert-artifact-373378454/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": "41585299-f71d-4835-bcb4-5b33516b7029", "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-workflow4lw7w/series-workflow4lw7w-build-action-1058831660/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-23 07:24:37 +0000 UTC FinishedAt: 2026-06-23 07:24:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-23 07:24:37 +0000 UTC FinishedAt: 2026-06-23 07:24:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-23 07:24:37 +0000 UTC FinishedAt: 2026-06-23 07:24:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-23 07:24:37 +0000 UTC FinishedAt: 2026-06-23 07:24:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow4lw7w/series-workflow4lw7w-convert-artifact-389265961/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-23 07:24:47 +0000 UTC FinishedAt: 2026-06-23 07:26:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-23 07:24:47 +0000 UTC FinishedAt: 2026-06-23 07:26:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*41585299-f71d-4835-bcb4-5b33516b7029,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-workflow4lw7w/series-workflow4lw7w-build-action-1058831660/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-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-23 07:26:37 +0000 UTC FinishedAt: 2026-06-23 07:26:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-23 07:26:37 +0000 UTC FinishedAt: 2026-06-23 07:26:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-23 07:26:37 +0000 UTC FinishedAt: 2026-06-23 07:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-23 07:26:37 +0000 UTC FinishedAt: 2026-06-23 07:48:26 +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:*aacd082d-aa88-4323-8073-d12bc739d2c8,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-workflow4lw7w/series-workflow4lw7w-convert-artifact-389265961/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": "0c2cb030-76b8-4adf-a732-8c33d3514728", "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-workflow4lw7w/series-workflow4lw7w-build-action-2245721861/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-23 07:26:37 +0000 UTC FinishedAt: 2026-06-23 07:48:16 +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:*aacd082d-aa88-4323-8073-d12bc739d2c8,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-workflow4lw7w/series-workflow4lw7w-convert-artifact-389265961/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": "0c2cb030-76b8-4adf-a732-8c33d3514728", "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-workflow4lw7w/series-workflow4lw7w-build-action-2245721861/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-23 07:48:26 +0000 UTC FinishedAt: 2026-06-23 07:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-23 07:48:26 +0000 UTC FinishedAt: 2026-06-23 07:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-23 07:48:26 +0000 UTC FinishedAt: 2026-06-23 07:50:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-23 07:48:26 +0000 UTC FinishedAt: 2026-06-23 07:50:27 +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:*0c2cb030-76b8-4adf-a732-8c33d3514728,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-workflow4lw7w/series-workflow4lw7w-build-action-2245721861/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-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-23 07:50:37 +0000 UTC FinishedAt: 2026-06-23 10:52:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-23 07:50:37 +0000 UTC FinishedAt: 2026-06-23 10:52:01 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},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:*41585299-f71d-4835-bcb4-5b33516b7029,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0c2cb030-76b8-4adf-a732-8c33d3514728,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-workflow4lw7w/series-workflow4lw7w-build-action-1058831660/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-workflow4lw7w/series-workflow4lw7w-build-action-2245721861/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-23 07:50:37 +0000 UTC FinishedAt: 2026-06-23 07:50:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-23 07:50:37 +0000 UTC FinishedAt: 2026-06-23 07:50:41 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},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-workflow4lw7w/series-workflow4lw7w-convert-artifact-944917118/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-23 07:50:37 +0000 UTC FinishedAt: 2026-06-23 07:50:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-23 07:50:37 +0000 UTC FinishedAt: 2026-06-23 07:50:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-23 07:50:37 +0000 UTC FinishedAt: 2026-06-23 07:50:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-23 07:50:47 +0000 UTC FinishedAt: 2026-06-23 10:52:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4lw7w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["memory_high_write","memory_max_write","user_proactive_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG"],"series_id":"f083a444-0640-48ca-919d-2cce5c38575a","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-23 07:50:47 +0000 UTC FinishedAt: 2026-06-23 10:51:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*41585299-f71d-4835-bcb4-5b33516b7029,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0c2cb030-76b8-4adf-a732-8c33d3514728,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-workflow4lw7w/series-workflow4lw7w-build-action-1058831660/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-workflow4lw7w/series-workflow4lw7w-build-action-2245721861/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-workflow4lw7w/series-workflow4lw7w-convert-artifact-944917118/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,}