Name: series-workflowsvjs4 Phase: Failed StartedAt: 2026-09-02 19:57:42 +0000 UTC FinishedAt: 2026-09-02 20:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsvjs4[0] Phase: Succeeded StartedAt: 2026-09-02 19:57:42 +0000 UTC FinishedAt: 2026-09-02 20:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsvjs4[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 19:57:42 +0000 UTC FinishedAt: 2026-09-02 20:00:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ1MTRiNzI4OTQ4YTRmMjI2YjViYjdlMmE2NjAyZWMxNmMwNjg2ZDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDE5OjU5OjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jXG5pbmRleCBkODhiMTk5OWQ1OTYyLi5lNjU2NTFhYzU2N2E3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xuQEAgLTExNyw2ICYjNDM7MTE3LDkgQEAgc3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHQgKiB3ZSBjaGVjayBpbml0aWFsIHZhbHVlIG9mIEJNQ1IgQXV0byBuZWdvdGlhdGlvbiBlbmFibGUgYml0XG4gXHQgKi9cbiBcdHZhbCA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0JNQ1IpO1xuJiM0MztcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gdmFsO1xuJiM0MztcbiBcdGlmICghKHZhbCBcdTAwMjYgQk1DUl9BTkVOQUJMRSkpXG4gXHRcdHBoeWRldi1cdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSByZXR1cm4gdmFsdWUgY2hlY2sgZm9yIHBoeV9yZWFkIGluIGRwODM4NDhfY29uZmlnX2luaXQoKSB3aXRoaW4gZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy4gVGhpcyBkcml2ZXIgaXMgZm9yIGEgc3BlY2lmaWMgcGh5c2ljYWwgRXRoZXJuZXQgUEhZIGNoaXAgKFRJIERQODM4NDgvRFA4MzYyMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NTE0YjcyODk0OGE0ZjIyNmI1YmI3ZTJhNjYwMmVjMTZjMDY4NmQ0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAxOTo1OToxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jCmluZGV4IGQ4OGIxOTk5ZDU5NjIuLmU2NTY1MWFjNTY3YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYwpAQCAtMTE3LDYgJiM0MzsxMTcsOSBAQCBzdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkgKiB3ZSBjaGVjayBpbml0aWFsIHZhbHVlIG9mIEJNQ1IgQXV0byBuZWdvdGlhdGlvbiBlbmFibGUgYml0CiAJICovCiAJdmFsID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfQk1DUik7CiYjNDM7CWlmICh2YWwgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHZhbDsKJiM0MzsKIAlpZiAoISh2YWwgJmFtcDsgQk1DUl9BTkVOQUJMRSkpCiAJCXBoeWRldi0mZ3Q7YXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBIWSBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbW1pdCBjaGFuZ2luZyBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBuYXR1cmUgb2YgdGhpcyBjaGFuZ2UuIEl0IHNlZW1zIHdlJiMzOTtyZSBhZGRpbmcgYSBjaGVjayBmb3IgYSBuZWdhdGl2ZSByZXR1cm4gdmFsdWUgZnJvbSBgcGh5X3JlYWRgIGluIGBkcDgzODQ4X2NvbmZpZ19pbml0YC4gQSBuZWdhdGl2ZSB2YWx1ZSB0aGVyZSBpbmRpY2F0ZXMgYW4gZXJyb3IgcmVhZGluZyB0aGUgUEhZJiMzOTtzIGNvbnRyb2wgcmVnaXN0ZXIuIFNtYXJ0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB3aWRlciBpbXBsaWNhdGlvbnMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgpGaXJzdCwgSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIHRoaXMgaGFyZHdhcmUgZXZlbiBoYXMgYSBwYXRoIHRvIG15IGN1cnJlbnQgYnVpbGQgY29uZmlnLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIFBIWSBkcml2ZXIgaXMgdXNlZCwgYW5kIGluIHdoYXQgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AgZmlsZSBhbmQgdGhlbiBpdHMgc3Vycm91bmRpbmcgS2NvbmZpZyBmaWxlcy4gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXM/IFdoYXQgYXJlIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHM/IENhbiBJIGV2ZW4gKnJlYWNoKiB0aGUgRFA4Mzg0OCBpbiBteSBjdXJyZW50IGVudmlyb25tZW50LCBzYXksIGluIFFFTVU/IEkmIzM5O2xsIHByb2JhYmx5IHJ1biBhIHF1aWNrIHNlYXJjaCBmb3IgYGRwODM4NDhgIGluIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBhY3Jvc3MgdGhlIHJlbGV2YW50IGRyaXZlciB1c2FnZSwgdG8gZW5zdXJlIGl0IGlzIGF2YWlsYWJsZSBpbiBteSBidWlsZC4gSSYjMzk7bSB0aGlua2luZyBvZiByZWFjaGFiaWxpdHkgYW5kIGltcGFjdC4gQW55IHByb2JsZW1zIG9yIHN1cnByaXNlcywgaWYgdGhpcyBQSFkgY2FuIG9yIGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RQODM4NDgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDQxPWNvbmZpZyBEUDgzVEM4MTFfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDQ1LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ2OmNvbmZpZyBEUDgzODQ4X1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ3Olx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ0OC1cdGhlbHBcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ0OTpcdCAgU3VwcG9ydHMgdGhlIERQODM4NDggUEhZLlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01OT1vYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXHQmIzQzOz0gZHA4MzgyMi5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVx0JiM0Mzs9IGRwODM4NDgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTYxLW9iai0kKENPTkZJR19EUDgzODY3X1BIWSlcdCYjNDM7PSBkcDgzODY3Lm9cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTItLypcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzogKiBEcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy00LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTE6I2RlZmluZSBUSV9EUDgzODQ4Q19QSFlfSURcdFx0MHgyMDAwNWNhMFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMi0jZGVmaW5lIFRJX0RQODM2MjBfUEhZX0lEXHRcdDB4MjAwMDVjZTBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTM6I2RlZmluZSBOU19EUDgzODQ4Q19QSFlfSURcdFx0MHgyMDAwNWM5MFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNC0jZGVmaW5lIFRMSzEwWF9QSFlfSURcdFx0XHQweDIwMDBhMjEwXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNi0vKiBSZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTc6I2RlZmluZSBEUDgzODQ4X01JQ1JcdFx0XHQweDExIC8qIE1JSSBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxODojZGVmaW5lIERQODM4NDhfTUlTUlx0XHRcdDB4MTIgLyogTUlJIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTktXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTIwLS8qIE1JQ1IgUmVnaXN0ZXIgRmllbGRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjIxOiNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVF9PRVx0XHRCSVQoMCkgLyogSW50ZXJydXB0IE91dHB1dCBFbmFibGUgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjI6I2RlZmluZSBEUDgzODQ4X01JQ1JfSU5URU5cdFx0QklUKDEpIC8qIEludGVycnVwdCBFbmFibGUgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTI0LS8qIE1JU1IgUmVnaXN0ZXIgRmllbGRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI1OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1JIRl9JTlRfRU5cdFx0QklUKDApIC8qIFJlY2VpdmUgRXJyb3IgQ291bnRlciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyNjojZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UX0VOXHRcdEJJVCgxKSAvKiBGYWxzZSBDYXJyaWVyIENvdW50ZXIgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mjc6I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVF9FTlx0XHRCSVQoMikgLyogQXV0by1uZWdvdGlhdGlvbiBjb21wbGV0ZSAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyODojZGVmaW5lIERQODM4NDhfTUlTUl9EVVBfSU5UX0VOXHRcdEJJVCgzKSAvKiBEdXBsZXggU3RhdHVzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI5OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRfRU5cdFx0QklUKDQpIC8qIFNwZWVkIHN0YXR1cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozMDojZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTlx0QklUKDUpIC8qIExpbmsgc3RhdHVzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMxOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0VEX0lOVF9FTlx0XHRCSVQoNikgLyogRW5lcmd5IGRldGVjdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozMjojZGVmaW5lIERQODM4NDhfTUlTUl9MUU1fSU5UX0VOXHRcdEJJVCg3KSAvKiBMaW5rIFF1YWxpdHkgTW9uaXRvciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0zMy1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzQ6I2RlZmluZSBEUDgzODQ4X0lOVF9FTl9NQVNLXHRcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM1Olx0KERQODM4NDhfTUlTUl9BTkNfSU5UX0VOIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM2Olx0IERQODM4NDhfTUlTUl9EVVBfSU5UX0VOIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM3Olx0IERQODM4NDhfTUlTUl9TUERfSU5UX0VOIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM4Olx0IERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzktXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQwOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1JIRl9JTlRcdFx0QklUKDgpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQxOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0ZIRl9JTlRcdFx0QklUKDkpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQyOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0FOQ19JTlRcdFx0QklUKDEwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MzojZGVmaW5lIERQODM4NDhfTUlTUl9EVVBfSU5UXHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDQ6I2RlZmluZSBEUDgzODQ4X01JU1JfU1BEX0lOVFx0XHRCSVQoMTIpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ1OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UXHRcdEJJVCgxMylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDY6I2RlZmluZSBEUDgzODQ4X01JU1JfRURfSU5UXHRcdEJJVCgxNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNDctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ4OiNkZWZpbmUgRFA4Mzg0OF9JTlRfTUFTS1x0XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0OTpcdChEUDgzODQ4X01JU1JfQU5DX0lOVCB8XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MDpcdCBEUDgzODQ4X01JU1JfRFVQX0lOVCB8XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MTpcdCBEUDgzODQ4X01JU1JfU1BEX0lOVCB8XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MjpcdCBEUDgzODQ4X01JU1JfTElOS19JTlQpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz01ND1zdGF0aWMgaW50IGRwODM4NDhfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01NS17XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjU2Olx0aW50IGVyciA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSVNSKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNTctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz02MT1zdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo2NTpcdGNvbnRyb2wgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlDUik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY2LVx0aWYgKGNvbnRyb2wgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy03My1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NzQ6XHRcdGNvbnRyb2wgfD0gRFA4Mzg0OF9NSUNSX0lOVF9PRTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NzU6XHRcdGNvbnRyb2wgfD0gRFA4Mzg0OF9NSUNSX0lOVEVOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy03Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Nzc6XHRcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlTUiwgRFA4Mzg0OF9JTlRfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc4LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjgxOlx0XHRyZXQgPSBwaHlfd3JpdGUocGh5ZGV2LCBEUDgzODQ4X01JQ1IsIGNvbnRyb2wpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04Mi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjgzOlx0XHRjb250cm9sIFx1MDAyNj0gfkRQODM4NDhfTUlDUl9JTlRFTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODQ6XHRcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTg1LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9OTQ9c3RhdGljIGlycXJldHVybl90IGRwODM4NDhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjk4Olx0aXJxX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSVNSKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTktXHRpZiAoaXJxX3N0YXR1cyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTAzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMDQ6XHRpZiAoIShpcnFfc3RhdHVzIFx1MDAyNiBEUDgzODQ4X0lOVF9NQVNLKSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTA1LVx0XHRyZXR1cm4gSVJRX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkcDgzODQ4X3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzA6XHR7IFRJX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzE6XHR7IE5TX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzItXHR7IFRJX0RQODM2MjBfUEhZX0lELCAweGZmZmZmZmYwIH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xMzY9TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkcDgzODQ4X3RibCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNy1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTM4OiNkZWZpbmUgRFA4Mzg0OF9QSFlfRFJJVkVSKF9pZCwgX25hbWUsIF9jb25maWdfaW5pdClcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM5LVx0e1x0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTE1Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTU4Olx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRJX0RQODM4NDhDX1BIWV9JRCwgXCYjMzQ7VEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNTktXHRcdFx0ICAgTlVMTCksXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MDpcdERQODM4NDhfUEhZX0RSSVZFUihOU19EUDgzODQ4Q19QSFlfSUQsIFwmIzM0O05TIERQODM4NDhDIDEwLzEwMCBNYnBzIFBIWVwmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYxLVx0XHRcdCAgIE5VTEwpLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjI6XHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4MzYyMF9QSFlfSUQsIFwmIzM0O1RJIERQODM2MjAgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjMtXHRcdFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2NDpcdERQODM4NDhfUEhZX0RSSVZFUihUTEsxMFhfUEhZX0lELCBcJiMzNDtUSSBUTEsxMFggMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjUtXHRcdFx0ICAgTlVMTCksXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xNjc9bW9kdWxlX3BoeV9kcml2ZXIoZHA4Mzg0OF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2OTpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFkgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTcwLU1PRFVMRV9BVVRIT1IoXCYjMzQ7QW5kcmV3IEYuIERhdmlzIFx1MDAzY2FmZEB0aS5jb21cdTAwM2VcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNTUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBXb3J0aGluZXNzKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdC4gTGV0JiMzOTtzIGRpdmUgcmlnaHQgaW50byBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AgYW5kIGdldCBhIGhhbmRsZSBvbiBob3cgTURJTyBQSFkgZHJpdmVycyBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGlzIHNwZWNpZmljIGRyaXZlci4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBldmVuIHdpdGggdG9vbHMgbGlrZSBzeXprYWxsZXIuCgpJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYSB3YXkgdG8gY3JlYXRlIGFuZCBpbnRlcmFjdCB3aXRoIE1ESU8gUEhZIGRldmljZXMgd2l0aG91dCAqYWN0dWFsKiBwaHlzaWNhbCBoYXJkd2FyZS4gQ2FuIEkgc2ltdWxhdGUgdGhlbSB1c2luZyBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIGBtZGlvIG5ldGxpbmtgLCBhIG1vY2sgTURJTywgbWF5YmUgZXZlbiBhIFVTQiBFdGhlcm5ldCBkb25nbGU/IE9yIGFtIEkgY29tcGxldGVseSByZWxpYW50IG9uIHRoZSBleGlzdGVuY2Ugb2YgcmVhbCBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBvciBBQ1BJIHNldHVwPyBNb3JlIHNwZWNpZmljYWxseSwgY2FuIEkgcHJvYmUgdGhlIERQODM2MjAgUEhZIElEIGluIFFFTVU/IFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludC4KCkJlZm9yZSBnZXR0aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgUEhZIGRyaXZlcnMgYXJlIHV0aWxpemVkLiBBcmUgdGhleSBnZW5lcmFsbHkgY29uc2lkZXJlZCAmIzM0O25vbi1yZWFjaGFibGUmIzM0OyBoYXJkd2FyZSwgb3IgaXMgdGhlcmUgYSB3YXkgdG8gZXhlcmNpc2UgdGhlbSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGlzIGRyaXZlciBmaXRzIHdpdGhpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuCgpOb3csIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBpbnN0cnVjdGlvbiwgc3BlY2lmaWNhbGx5IHdoYXQgbWFrZXMgdGhpcyBwYXRjaCBub3Qgd29ydGggZnV6emluZy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGlzIHdvcmsgaXNuJiMzOTt0OgoKKiAgIERvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIG9yIGNvbW1lbnRzLgoqICAgRGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50cy4KKiAgIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGFmZmVjdCBleGVjdXRpb24uCiogICBDb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSBvciBzaW1pbGFyIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIChsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gKS4KKiAgIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLgoqICAgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgY2FsbGJhY2tzLgoKU28gSSBuZWVkIHRvIGNoZWNrIGhvdyBgZHA4Mzg0OF9jb25maWdfaW5pdGAgd29ya3MsIGFuZCB0aGVuIEkgYW0gZ29pbmcgdG8gcmVhZCBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBEcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVxuICAgNDpcdCAqXG4gICA1Olx0ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICAxMDpcdFxuICAxMTpcdCNkZWZpbmUgVElfRFA4Mzg0OENfUEhZX0lEXHRcdDB4MjAwMDVjYTBcbiAgMTI6XHQjZGVmaW5lIFRJX0RQODM2MjBfUEhZX0lEXHRcdDB4MjAwMDVjZTBcbiAgMTM6XHQjZGVmaW5lIE5TX0RQODM4NDhDX1BIWV9JRFx0XHQweDIwMDA1YzkwXG4gIDE0Olx0I2RlZmluZSBUTEsxMFhfUEhZX0lEXHRcdFx0MHgyMDAwYTIxMFxuICAxNTpcdFxuICAxNjpcdC8qIFJlZ2lzdGVycyAqL1xuICAxNzpcdCNkZWZpbmUgRFA4Mzg0OF9NSUNSXHRcdFx0MHgxMSAvKiBNSUkgSW50ZXJydXB0IENvbnRyb2wgUmVnaXN0ZXIgKi9cbiAgMTg6XHQjZGVmaW5lIERQODM4NDhfTUlTUlx0XHRcdDB4MTIgLyogTUlJIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi9cbiAgMTk6XHRcbiAgMjA6XHQvKiBNSUNSIFJlZ2lzdGVyIEZpZWxkcyAqL1xuICAyMTpcdCNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVF9PRVx0XHRCSVQoMCkgLyogSW50ZXJydXB0IE91dHB1dCBFbmFibGUgKi9cbiAgMjI6XHQjZGVmaW5lIERQODM4NDhfTUlDUl9JTlRFTlx0XHRCSVQoMSkgLyogSW50ZXJydXB0IEVuYWJsZSAqL1xuICAyMzpcdFxuICAyNDpcdC8qIE1JU1IgUmVnaXN0ZXIgRmllbGRzICovXG4gIDI1Olx0I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVF9FTlx0XHRCSVQoMCkgLyogUmVjZWl2ZSBFcnJvciBDb3VudGVyICovXG4gIDI2Olx0I2RlZmluZSBEUDgzODQ4X01JU1JfRkhGX0lOVF9FTlx0XHRCSVQoMSkgLyogRmFsc2UgQ2FycmllciBDb3VudGVyICovXG4gIDI3Olx0I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVF9FTlx0XHRCSVQoMikgLyogQXV0by1uZWdvdGlhdGlvbiBjb21wbGV0ZSAqL1xuICAyODpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU5cdFx0QklUKDMpIC8qIER1cGxleCBTdGF0dXMgKi9cbiAgMjk6XHQjZGVmaW5lIERQODM4NDhfTUlTUl9TUERfSU5UX0VOXHRcdEJJVCg0KSAvKiBTcGVlZCBzdGF0dXMgKi9cbiAgMzA6XHQjZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTlx0QklUKDUpIC8qIExpbmsgc3RhdHVzICovXG4gIDMxOlx0I2RlZmluZSBEUDgzODQ4X01JU1JfRURfSU5UX0VOXHRcdEJJVCg2KSAvKiBFbmVyZ3kgZGV0ZWN0ICovXG4gIDMyOlx0I2RlZmluZSBEUDgzODQ4X01JU1JfTFFNX0lOVF9FTlx0XHRCSVQoNykgLyogTGluayBRdWFsaXR5IE1vbml0b3IgKi9cbiAgMzM6XHRcbiAgMzQ6XHQjZGVmaW5lIERQODM4NDhfSU5UX0VOX01BU0tcdFx0XFxcbiAgMzU6XHRcdChEUDgzODQ4X01JU1JfQU5DX0lOVF9FTiB8XHRcXFxuICAzNjpcdFx0IERQODM4NDhfTUlTUl9EVVBfSU5UX0VOIHxcdFxcXG4gIDM3Olx0XHQgRFA4Mzg0OF9NSVNSX1NQRF9JTlRfRU4gfFx0XFxcbiAgMzg6XHRcdCBEUDgzODQ4X01JU1JfTElOS19JTlRfRU4pXG4gIDM5Olx0XG4gIDQwOlx0I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVFx0XHRCSVQoOClcbiAgNDE6XHQjZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UXHRcdEJJVCg5KVxuICA0MjpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0FOQ19JTlRcdFx0QklUKDEwKVxuICA0MzpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRcdFx0QklUKDExKVxuICA0NDpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRcdFx0QklUKDEyKVxuICA0NTpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UXHRcdEJJVCgxMylcbiAgNDY6XHQjZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRcdFx0QklUKDE0KVxuICA0NzpcdFxuICA0ODpcdCNkZWZpbmUgRFA4Mzg0OF9JTlRfTUFTS1x0XHRcXFxuICA0OTpcdFx0KERQODM4NDhfTUlTUl9BTkNfSU5UIHxcdFxcXG4gIDUwOlx0XHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlQgfFx0XFxcbiAgNTE6XHRcdCBEUDgzODQ4X01JU1JfU1BEX0lOVCB8XHRcXFxuICA1MjpcdFx0IERQODM4NDhfTUlTUl9MSU5LX0lOVClcbiAgNTM6XHRcbiAgNTQ6XHRzdGF0aWMgaW50IGRwODM4NDhfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuICA1NTpcdHtcbiAgNTY6XHRcdGludCBlcnIgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlTUik7XG4gIDU3Olx0XG4gIDU4Olx0XHRyZXR1cm4gZXJyIFx1MDAzYyAwID8gZXJyIDogMDtcbiAgNTk6XHR9XG4gIDYwOlx0XG4gIDYxOlx0c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gIDYyOlx0e1xuICA2MzpcdFx0aW50IGNvbnRyb2wsIHJldDtcbiAgNjQ6XHRcbiAgNjU6XHRcdGNvbnRyb2wgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlDUik7XG4gIDY2Olx0XHRpZiAoY29udHJvbCBcdTAwM2MgMClcbiAgNjc6XHRcdFx0cmV0dXJuIGNvbnRyb2w7XG4gIDY4Olx0XG4gIDY5Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWludGVycnVwdHMgPT0gUEhZX0lOVEVSUlVQVF9FTkFCTEVEKSB7XG4gIDcwOlx0XHRcdHJldCA9IGRwODM4NDhfYWNrX2ludGVycnVwdChwaHlkZXYpO1xuICA3MTpcdFx0XHRpZiAocmV0KVxuICA3MjpcdFx0XHRcdHJldHVybiByZXQ7XG4gIDczOlx0XG4gIDc0Olx0XHRcdGNvbnRyb2wgfD0gRFA4Mzg0OF9NSUNSX0lOVF9PRTtcbiAgNzU6XHRcdFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5URU47XG4gIDc2Olx0XG4gIDc3Olx0XHRcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlTUiwgRFA4Mzg0OF9JTlRfRU5fTUFTSyk7XG4gIDc4Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gIDc5Olx0XHRcdFx0cmV0dXJuIHJldDtcbiAgODA6XHRcbiAgODE6XHRcdFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcbiAgODI6XHRcdH0gZWxzZSB7XG4gIDgzOlx0XHRcdGNvbnRyb2wgXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xuICA4NDpcdFx0XHRyZXQgPSBwaHlfd3JpdGUocGh5ZGV2LCBEUDgzODQ4X01JQ1IsIGNvbnRyb2wpO1xuICA4NTpcdFx0XHRpZiAocmV0KVxuICA4NjpcdFx0XHRcdHJldHVybiByZXQ7XG4gIDg3Olx0XG4gIDg4Olx0XHRcdHJldCA9IGRwODM4NDhfYWNrX2ludGVycnVwdChwaHlkZXYpO1xuICA4OTpcdFx0fVxuICA5MDpcdFxuICA5MTpcdFx0cmV0dXJuIHJldDtcbiAgOTI6XHR9XG4gIDkzOlx0XG4gIDk0Olx0c3RhdGljIGlycXJldHVybl90IGRwODM4NDhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuICA5NTpcdHtcbiAgOTY6XHRcdGludCBpcnFfc3RhdHVzO1xuICA5NzpcdFxuICA5ODpcdFx0aXJxX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSVNSKTtcbiAgOTk6XHRcdGlmIChpcnFfc3RhdHVzIFx1MDAzYyAwKSB7XG4gMTAwOlx0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4OTEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSB3ZSBnby4uLgoKKipEZWx2aW5nIGludG8gdGhlIGRwODM4NDguYyBTb3VyY2UqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNgLiBJJiMzOTt2ZSBhbHJlYWR5IGdvdCBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGJhc2ljIFBIWSBmdW5jdGlvbnMsIGJ1dCB0aGVyZSBhcmUgYWx3YXlzIG51YW5jZXMgdG8gdW5jb3ZlciBhbmQgb3B0aW1pemF0aW9ucyB0byBjb25zaWRlci4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBsaW5rIHNwZWVkIGFuZCBkdXBsZXhpdHkgbmVnb3RpYXRpb24sIGVycm9yIGRldGVjdGlvbiwgYW5kIGFueSBzcGVjaWZpYyBxdWlya3Mgb2YgdGhpcyBwYXJ0aWN1bGFyIFBIWSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBjbG9zZWx5IGF0IHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgY2xldmVyIHRyaWNrcyB1c2VkIGZvciBlZmZpY2llbmN5IG9yIHNwZWNpZmljIGhhcmR3YXJlIHdvcmthcm91bmRzIGltcGxlbWVudGVkLiBJJiMzOTtsbCBhbHNvIGJlIHNlYXJjaGluZyBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMgdGhhdCBjb3VsZCBhcmlzZSBpbiBhIG11bHRpdGhyZWFkZWQgbmV0d29yayBzdGFjay4gRnVydGhlcm1vcmUsIEkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGludGVycnVwdCBoYW5kbGluZywgbG9va2luZyBmb3IgYW55IG9wcG9ydHVuaXRpZXMgdG8gaW1wcm92ZSByZXNwb25zaXZlbmVzcyBvciByZWR1Y2UgaW50ZXJydXB0IGxhdGVuY3kuIFVsdGltYXRlbHksIG15IGdvYWwgaXMgdG8gYXNzZXNzIHRoZSBjb2RlJiMzOTtzIHF1YWxpdHksIGlkZW50aWZ5IGFueSBhcmVhcyBmb3IgaW1wcm92ZW1lbnQsIGFuZCBlbnN1cmUgaXQgaW50ZWdyYXRlcyBzZWFtbGVzc2x5IGludG8gdGhlIGJyb2FkZXIgbmV0d29ya2luZyBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gd2l0aGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAxOlx0XHRcdHJldHVybiBJUlFfTk9ORTtcbiAxMDI6XHRcdH1cbiAxMDM6XHRcbiAxMDQ6XHRcdGlmICghKGlycV9zdGF0dXMgXHUwMDI2IERQODM4NDhfSU5UX01BU0spKVxuIDEwNTpcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4gMTA2Olx0XG4gMTA3Olx0XHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XG4gMTA4Olx0XG4gMTA5Olx0XHRyZXR1cm4gSVJRX0hBTkRMRUQ7XG4gMTEwOlx0fVxuIDExMTpcdFxuIDExMjpcdHN0YXRpYyBpbnQgZHA4Mzg0OF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIDExMzpcdHtcbiAxMTQ6XHRcdGludCB2YWw7XG4gMTE1Olx0XG4gMTE2Olx0XHQvKiBEUDgzNjIwIGFsd2F5cyByZXBvcnRzIEF1dG8gTmVnb3RpYXRpb24gQWJpbGl0eSBvbiBCTVNSLiBJbnN0ZWFkLFxuIDExNzpcdFx0ICogd2UgY2hlY2sgaW5pdGlhbCB2YWx1ZSBvZiBCTUNSIEF1dG8gbmVnb3RpYXRpb24gZW5hYmxlIGJpdFxuIDExODpcdFx0ICovXG4gMTE5Olx0XHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9CTUNSKTtcbiAxMjA6XHRcdGlmICh2YWwgXHUwMDNjIDApXG4gMTIxOlx0XHRcdHJldHVybiB2YWw7XG4gMTIyOlx0XG4gMTIzOlx0XHRpZiAoISh2YWwgXHUwMDI2IEJNQ1JfQU5FTkFCTEUpKVxuIDEyNDpcdFx0XHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTtcbiAxMjU6XHRcbiAxMjY6XHRcdHJldHVybiAwO1xuIDEyNzpcdH1cbiAxMjg6XHRcbiAxMjk6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM4NDhfdGJsW10gPSB7XG4gMTMwOlx0XHR7IFRJX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuIDEzMTpcdFx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbiAxMzI6XHRcdHsgVElfRFA4MzYyMF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbiAxMzM6XHRcdHsgVExLMTBYX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuIDEzNDpcdFx0eyB9XG4gMTM1Olx0fTtcbiAxMzY6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRwODM4NDhfdGJsKTtcbiAxMzc6XHRcbiAxMzg6XHQjZGVmaW5lIERQODM4NDhfUEhZX0RSSVZFUihfaWQsIF9uYW1lLCBfY29uZmlnX2luaXQpXHRcdFxcXG4gMTM5Olx0XHR7XHRcdFx0XHRcdFx0XHRcXFxuIDE0MDpcdFx0XHQucGh5X2lkXHRcdD0gX2lkLFx0XHRcdFx0XFxcbiAxNDE6XHRcdFx0LnBoeV9pZF9tYXNrXHQ9IDB4ZmZmZmZmZjAsXHRcdFx0XFxcbiAxNDI6XHRcdFx0Lm5hbWVcdFx0PSBfbmFtZSxcdFx0XHRcXFxuIDE0MzpcdFx0XHQvKiBQSFlfQkFTSUNfRkVBVFVSRVMgKi9cdFx0XHRcXFxuIDE0NDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIDE0NTpcdFx0XHQuc29mdF9yZXNldFx0PSBnZW5waHlfc29mdF9yZXNldCxcdFx0XFxcbiAxNDY6XHRcdFx0LmNvbmZpZ19pbml0XHQ9IF9jb25maWdfaW5pdCxcdFx0XHRcXFxuIDE0NzpcdFx0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcdFx0XFxcbiAxNDg6XHRcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXHRcdFxcXG4gMTQ5Olx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gMTUwOlx0XHRcdC8qIElSUSByZWxhdGVkICovXHRcdFx0XHRcXFxuIDE1MTpcdFx0XHQuY29uZmlnX2ludHJcdD0gZHA4Mzg0OF9jb25maWdfaW50cixcdFx0XFxcbiAxNTI6XHRcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBkcDgzODQ4X2hhbmRsZV9pbnRlcnJ1cHQsXHRcXFxuIDE1MzpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIDE1NDpcdFx0XHQuZmxhZ3NcdFx0PSBQSFlfUlNUX0FGVEVSX0NMS19FTixcdFx0XFxcbiAxNTU6XHRcdH1cbiAxNTY6XHRcbiAxNTc6XHRzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcbiAxNTg6XHRcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzODQ4Q19QSFlfSUQsIFwmIzM0O1RJIERQODM4NDhDIDEwLzEwMCBNYnBzIFBIWVwmIzM0OyxcbiAxNTk6XHRcdFx0XHQgICBOVUxMKSxcbiAxNjA6XHRcdERQODM4NDhfUEhZX0RSSVZFUihOU19EUDgzODQ4Q19QSFlfSUQsIFwmIzM0O05TIERQODM4NDhDIDEwLzEwMCBNYnBzIFBIWVwmIzM0OyxcbiAxNjE6XHRcdFx0XHQgICBOVUxMKSxcbiAxNjI6XHRcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzNjIwX1BIWV9JRCwgXCYjMzQ7VEkgRFA4MzYyMCAxMC8xMDAgTWJwcyBQSFlcJiMzNDssXG4gMTYzOlx0XHRcdFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXG4gMTY0Olx0XHREUDgzODQ4X1BIWV9EUklWRVIoVExLMTBYX1BIWV9JRCwgXCYjMzQ7VEkgVExLMTBYIDEwLzEwMCBNYnBzIFBIWVwmIzM0OyxcbiAxNjU6XHRcdFx0XHQgICBOVUxMKSxcbiAxNjY6XHR9O1xuIDE2NzpcdG1vZHVsZV9waHlfZHJpdmVyKGRwODM4NDhfZHJpdmVyKTtcbiAxNjg6XHRcbiAxNjk6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFkgZHJpdmVyXCYjMzQ7KTtcbiAxNzA6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0FuZHJldyBGLiBEYXZpcyBcdTAwM2NhZmRAdGkuY29tXHUwMDNlXCYjMzQ7KTtcbiAxNzE6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDIxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgRFA4Mzg0OCBFbXVsYXRpb24gUG9zc2liaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBkcDgzODQ4YCBkcml2ZXIsIHNwZWNpZmljYWxseSwgaXQmIzM5O3MgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IGFuZCBEUDgzNjIwIFBIWSBjaGlwcywgd2hpY2ggbWFrZXMgc2Vuc2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgYWN0dWFsbHkgKnVzZSogdGhpcyB3aXRoaW4gYSBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudD8gSXMgdGhlcmUgYW55IGtpbmQgb2YgZW11bGF0aW9uIGF2YWlsYWJsZSwgZWl0aGVyIHRocm91Z2ggc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucywgR29vZ2xlIENvbXB1dGUgRW5naW5lIGZlYXR1cmVzLCBhIFVTQi1iYXNlZCBzb2x1dGlvbiwgb3IgZXZlbiBhIHB1cmUgc29mdHdhcmUgZW11bGF0aW9uPwoKVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgUUVNVSBvciBHQ0UgZXZlbiAqcHJlc2VudCogYSBEUDgzNjIwIG9yIERQODM4NDggdG8gdGhlIGd1ZXN0IE9TLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBhbnkgb2YgdGhlIGV4aXN0aW5nIEV0aGVybmV0IGRyaXZlcnMgb3IsIHBvdGVudGlhbGx5LCBldmVuIGEgVVNCIGRyaXZlciwgaW5jb3Jwb3JhdGVzIG9yIHJlZmVyZW5jZXMgdGhlIGBkcDgzODQ4YC4gTXkgbmV4dCBzdGVwIGlzIGEgdGFyZ2V0ZWQgc2VhcmNoLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGNsdWVzLiBJJiMzOTtsbCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgdGhlIGBUSV9EUDgzNjIwX1BIWV9JRGAgZGVmaW5pdGlvbiwgdGhlIFBIWSBJRCBgMHgyMDAwNWNlMGAsIG9yIHNpbXBseSB0aGUgc3RyaW5nIGBkcDgzODQ4YCBpdHNlbGYgd2l0aGluIHRoZSBrZXJuZWwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRhdGEgSSBuZWVkIHRvIGtub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OygweDIwMDA1Y2UwfFRJX0RQODM2MjBfUEhZX0lEfGRwODM4NDgpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHM9MzU3PVx0cGh5MDogZXRoZXJuZXQtcGh5QDEge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHMtMzY2LVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHM6MzY3Olx0XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZkcDgzODQ4Y19yc3RcdTAwM2U7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzLTM2OC1cdH07XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0cz0zNzE9XHUwMDI2cGluY3RybCB7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzOjM3MjpcdGRwODM4NDhjIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHM6MzczOlx0XHRkcDgzODQ4Y19yc3Q6IGRwODM4NDhjLXJzdCB7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzLTM3NC1cdFx0XHRyb2NrY2hpcCxwaW5zID0gXHUwMDNjMiBSS19QRDAgUktfRlVOQ19HUElPIFx1MDAyNnBjZmdfcHVsbF9ub25lXHUwMDNlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01OT1vYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXHQmIzQzOz0gZHA4MzgyMi5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVx0JiM0Mzs9IGRwODM4NDgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTYxLW9iai0kKENPTkZJR19EUDgzODY3X1BIWSlcdCYjNDM7PSBkcDgzODY3Lm9cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTExLSNkZWZpbmUgVElfRFA4Mzg0OENfUEhZX0lEXHRcdDB4MjAwMDVjYTBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTI6I2RlZmluZSBUSV9EUDgzNjIwX1BIWV9JRFx0XHQweDIwMDA1Y2UwXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzLSNkZWZpbmUgTlNfRFA4Mzg0OENfUEhZX0lEXHRcdDB4MjAwMDVjOTBcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1NDpzdGF0aWMgaW50IGRwODM4NDhfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy02MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NjE6c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTYyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY5LVx0aWYgKHBoeWRldi1cdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3MDpcdFx0cmV0ID0gZHA4Mzg0OF9hY2tfaW50ZXJydXB0KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTcxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjg4Olx0XHRyZXQgPSBkcDgzODQ4X2Fja19pbnRlcnJ1cHQocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODktXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05My1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6OTQ6c3RhdGljIGlycXJldHVybl90IGRwODM4NDhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMTEtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjExMjpzdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTEzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZHA4Mzg0OF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTMwLVx0eyBUSV9EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTMxLVx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTMyOlx0eyBUSV9EUDgzNjIwX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzMtXHR7IFRMSzEwWF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNS19O1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzY6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkcDgzODQ4X3RibCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNy1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1MC1cdFx0LyogSVJRIHJlbGF0ZWQgKi9cdFx0XHRcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1MTpcdFx0LmNvbmZpZ19pbnRyXHQ9IGRwODM4NDhfY29uZmlnX2ludHIsXHRcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1MjpcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBkcDgzODQ4X2hhbmRsZV9pbnRlcnJ1cHQsXHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNTMtXHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNTYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1NzpzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTU4LVx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRJX0RQODM4NDhDX1BIWV9JRCwgXCYjMzQ7VEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYxLVx0XHRcdCAgIE5VTEwpLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjI6XHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4MzYyMF9QSFlfSUQsIFwmIzM0O1RJIERQODM2MjAgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjM6XHRcdFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NC1cdERQODM4NDhfUEhZX0RSSVZFUihUTEsxMFhfUEhZX0lELCBcJiMzNDtUSSBUTEsxMFggMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTY2LX07XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2Nzptb2R1bGVfcGh5X2RyaXZlcihkcDgzODQ4X2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIERQODM4NDggUEhZIEluc3RhbnRpYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhlIERQODM4NDggUEhZIGRyaXZlciBnZXRzIGxvYWRlZCBpbiBMaW51eC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoZSBzdGFuZGFyZCBNRElPIGJ1cyBzY2FubmluZyBwcm9jZXNzLiBJdCBtYXRjaGVzIGFnYWluc3QgYGRwODM4NDhfdGJsYCBiYXNlZCBvbiB0aGUgUEhZIElEIHJlZ2lzdGVycywgc3BlY2lmaWNhbGx5IHdoZW4gYChwaHlfaWQgJmFtcDsgMHhmZmZmZmZmMClgIG1hdGNoZXMgYFRJX0RQODM2MjBfUEhZX0lEYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuCgpOb3csIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBEUDgzODQ4IGlzICplbXVsYXRlZCogaW4gUUVNVS4gSSBuZWVkIHRvIHNlZSB3aGF0IFFFTVUgb2ZmZXJzIGluIHRlcm1zIG9mIGVtdWxhdGVkIGV0aGVybmV0IFBIWXMgb3IgTURJTyBkZXZpY2VzLiBJIGtub3cgaXQgaGFuZGxlcyB0aGUgdXN1YWwgc3VzcGVjdHMg4oCTIGUxMDAwLCBydGw4MTM5LCB2aXJ0aW8tbmV0LCBwY25ldCwgbmUya19wY2ksIHRnMy9iY201N3h4IOKAkyBidXQgbm9uZSBvZiB0aG9zZSB0eXBpY2FsbHkgc2hvdyB1cCB3aXRoIGEgVEkgRFA4Mzg0OCBvciBEUDgzNjIwIFBIWSBJRCBvbiBhbiBNRElPIGJ1cy4gU28sIHRoYXQmIzM5O3MgYSBkZWFkIGVuZCwgYXQgbGVhc3QgYXMgZmFyIGFzIGEgZGlyZWN0IFFFTVUgZW11bGF0aW9uLgoKVGhhdCBtYWtlcyBtZSB0aGluazogQ2FuIGFuIE1ESU8gUEhZIGRldmljZSBiZSBicm91Z2h0IHVwIHZpYSB1c2Vyc3BhY2Ugb3Igc29tZSBzb3J0IG9mIHNvZnR3YXJlIGVtdWxhdGlvbiB0ZWNobmlxdWU/IExpa2UsIHBlcmhhcHMsIHNvbWUgbW9jayBkZXZpY2UsIHNpbWlsYXIgdG8gdGhlIGFwcHJvYWNoIHdpdGggdXNiLWdhZGdldCBvciBuZXRsaW5rIGludGVyZmFjZXM/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgdXNlcnNwYWNlIGludGVyZmFjZXMgb3Iga2VybmVsIGhvb2tzIHRoYXQgYWxsb3cgbWUgdG8gaW5zdGFudGlhdGUgYW4gTURJTyBQSFkgd2l0aCBhIHNwZWNpZmljIFBIWSBJRC4gSSYjMzk7bGwgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHVzaW5nIGtleXdvcmRzIGxpa2UgJiMzNDttZGlvJiMzNDsgYW5kICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OyB0byBzZWUgaWYgSSBjYW4gZmluZCBhbnl0aGluZyByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTExNz1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNC1cdGVsc2VcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMzU6XHRcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCAwLCBOVUxMKTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMzYtXHRpZiAoSVNfRVJSKHBoeSkpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYz01NTE9c3RhdGljIHZvaWQgdGphMTEwMl9wMV9yZWdpc3RlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg1LVx0XHQvKiBSZWFsIFBIWSBJRCBvZiBQb3J0IDEgaXMgMCAqL1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTg2Olx0XHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIFBIWV9JRF9USkExMTAyLCBmYWxzZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODctXHRcdGlmIChJU19FUlIocGh5KSkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5Mi1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5MzpcdFx0LyogT3ZlcndyaXRlIHBhcmVudCBkZXZpY2UuIHBoeV9kZXZpY2VfY3JlYXRlKCkgc2V0IHBhcmVudCB0b1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk0LVx0XHQgKiB0aGUgbWlpX2J1cy1cdTAwM2VkZXYsIHdoaWNoIGlzIG5vdCBjb3JyZWN0IGluIGNhc2UuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz03Mjg9c3RhdGljIGludCBwaHlfcmVxdWVzdF9kcml2ZXJfbW9kdWxlKHN0cnVjdCBwaHlfZGV2aWNlICpkZXYsIHUzMiBwaHlfaWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjc0ODpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0OS1cdFx0XHRcdCAgICAgYm9vbCBpc19jNDUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04MzktfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo4NDA6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTg0MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEwNzE9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTYtXHRcdGlmICghcilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA5NzpcdFx0XHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTgtXHRcdFx0XHRcdFx0IHRydWUsIFx1MDAyNmM0NV9pZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwMTpcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgaXNfYzQ1LCBcdTAwMjZjNDVfaWRzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzU3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVU0IgRXRoZXJuZXQgYW5kIE1ESU8gRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBVU0IgRXRoZXJuZXQgZGV2aWNlcywgcG90ZW50aWFsIE1ESU8gaW50ZXJhY3Rpb25zIChzcGVjaWZpY2FsbHkgd2l0aCB0aGUgRFA4Mzg0OCwgb3IgZXZlbiBhIHNpbXVsYXRlZCBNRElPKSwgYW5kIGlmIHRoZXNlIFBIWSBkcml2ZXJzIGFyZSBzdHJpY3RseSB0aWVkIHRvIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGFyY2hpdGVjdHVyZSBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGhlcmUuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIFVTQiBFdGhlcm5ldCBkcml2ZXJzIHRoZW1zZWx2ZXMsIGxvb2tpbmcgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3VzYi9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IG1hcHBpbmcgdGhpcyBhbGwgb3V0LiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBjbHVlcyBhYm91dCBNRElPIGJ1cyB1dGlsaXphdGlvbiwgRFA4Mzg0OCBzdXBwb3J0IChvciBhIHN0YW5kLWluKSwgYW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgdGhlIFBIWSBsYXllciBpbiBnZW5lcmFsLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlIHBvc3NpYmxlIGNvbmZpZ3VyYXRpb25zIGFuZCBwb3RlbnRpYWwgYWJzdHJhY3Rpb24gbGV2ZWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhkcDgzODQ4fERQODM4NDgpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjQwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgRFA4Mzg0OCBEcml2ZXIgQXNzb2NpYXRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoLCBpZiBhbnksIFVTQiBkZXZpY2VzIGluIHRoZSBMaW51eCBrZXJuZWwgcmVsYXRlIHRvIHRoZSBEUDgzODQ4IEV0aGVybmV0IFBIWS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBwbGFjZXMg4oCTIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnksIG5hdHVyYWxseSwgYXMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgbmV0d29yay1yZWxhdGVkIGRyaXZlcnMgcmVzaWRlLiBCdXQgSSBjYW4mIzM5O3QganVzdCBsaW1pdCBteXNlbGYgdG8gdGhhdC4gRXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGRlcGVuZGVuY2llcyBjYW4gYmUgdHJpY2t5LCBhbmQgdGhlIERQODM4NDggKm1pZ2h0KiBiZSB1c2VkIGluIGEgbGVzcyBkaXJlY3Qgd2F5LiBJIG5lZWQgdG8gY2FzdCBhIHdpZGVyIG5ldCBhbmQgY29uc2lkZXIgc2VhcmNoaW5nIHRoZSBlbnRpcmUga2VybmVsIHRyZWUuIFBlcmhhcHMgaXQmIzM5O3MgYmVpbmcgaGFuZGxlZCB0aHJvdWdoIGEgZ2VuZXJpYyBVU0IgZnJhbWV3b3JrIG9yIGEgbW9yZSBhYnN0cmFjdGVkIGxheWVyLiBBIGNvbXBsZXRlIHNlYXJjaCBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGEgdG9vbCB0byByYXBpZGx5IHNlYXJjaCB0aGUgc291cmNlIGNvZGUgZm9yIGFueSBkaXJlY3Qgb3IgaW5kaXJlY3QgYmluZGluZ3MgdG8gdGhlIERQODM4NDguIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RQODM4NDgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MjkxPUNPTkZJR19ST0NLQ0hJUF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MjkyOkNPTkZJR19EUDgzODQ4X1BIWT1tXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0yOTMtQ09ORklHX0RQODM4NjdfUEhZPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc9MzMzPUNPTkZJR19TTVNDX1BIWT15XG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc6MzM0OkNPTkZJR19EUDgzODQ4X1BIWT15XG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWctMzM1LUNPTkZJR19EUDgzODY3X1BIWT15XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNnhfcmRrLmR0cz0zMzE9XHRcdFx0XHRwaHkxOiBldGhlcm5ldC1waHlAMSB7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM2eF9yZGsuZHRzOjMzMjpcdFx0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O25hdGlvbmFsLERQODM4NDhWVlwmIzM0OztcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzZ4X3Jkay5kdHMtMzMzLVx0XHRcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzZ4X3Jkay5kdHM9MzQxPVx0XHRcdFx0cGh5MzogZXRoZXJuZXQtcGh5QDMge1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNnhfcmRrLmR0czozNDI6XHRcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtuYXRpb25hbCxEUDgzODQ4VlZcJiMzNDs7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM2eF9yZGsuZHRzLTM0My1cdFx0XHRcdFx0cmVnID0gXHUwMDNjM1x1MDAzZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00NDE9Y29uZmlnIERQODNUQzgxMV9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NDUtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NDY6Y29uZmlnIERQODM4NDhfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NDc6XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVwmIzM0O1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDQ4LVx0aGVscFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ5Olx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NTAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTU5PW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcdCYjNDM7PSBkcDgzODIyLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpXHQmIzQzOz0gZHA4Mzg0OC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNjEtb2JqLSQoQ09ORklHX0RQODM4NjdfUEhZKVx0JiM0Mzs9IGRwODM4Njcub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMi0vKlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozOiAqIERyaXZlciBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMTojZGVmaW5lIFRJX0RQODM4NDhDX1BIWV9JRFx0XHQweDIwMDA1Y2EwXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyLSNkZWZpbmUgVElfRFA4MzYyMF9QSFlfSURcdFx0MHgyMDAwNWNlMFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzojZGVmaW5lIE5TX0RQODM4NDhDX1BIWV9JRFx0XHQweDIwMDA1YzkwXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE0LSNkZWZpbmUgVExLMTBYX1BIWV9JRFx0XHRcdDB4MjAwMGEyMTBcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2LS8qIFJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNzojZGVmaW5lIERQODM4NDhfTUlDUlx0XHRcdDB4MTEgLyogTUlJIEludGVycnVwdCBDb250cm9sIFJlZ2lzdGVyICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE4OiNkZWZpbmUgRFA4Mzg0OF9NSVNSXHRcdFx0MHgxMiAvKiBNSUkgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xOS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjAtLyogTUlDUiBSZWdpc3RlciBGaWVsZHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjE6I2RlZmluZSBEUDgzODQ4X01JQ1JfSU5UX09FXHRcdEJJVCgwKSAvKiBJbnRlcnJ1cHQgT3V0cHV0IEVuYWJsZSAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyMjojZGVmaW5lIERQODM4NDhfTUlDUl9JTlRFTlx0XHRCSVQoMSkgLyogSW50ZXJydXB0IEVuYWJsZSAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0yMy1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjQtLyogTUlTUiBSZWdpc3RlciBGaWVsZHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjU6I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVF9FTlx0XHRCSVQoMCkgLyogUmVjZWl2ZSBFcnJvciBDb3VudGVyICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0ZIRl9JTlRfRU5cdFx0QklUKDEpIC8qIEZhbHNlIENhcnJpZXIgQ291bnRlciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyNzojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UX0VOXHRcdEJJVCgyKSAvKiBBdXRvLW5lZ290aWF0aW9uIGNvbXBsZXRlICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI4OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU5cdFx0QklUKDMpIC8qIER1cGxleCBTdGF0dXMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mjk6I2RlZmluZSBEUDgzODQ4X01JU1JfU1BEX0lOVF9FTlx0XHRCSVQoNCkgLyogU3BlZWQgc3RhdHVzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMwOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOXHRCSVQoNSkgLyogTGluayBzdGF0dXMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzE6I2RlZmluZSBEUDgzODQ4X01JU1JfRURfSU5UX0VOXHRcdEJJVCg2KSAvKiBFbmVyZ3kgZGV0ZWN0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMyOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xRTV9JTlRfRU5cdFx0QklUKDcpIC8qIExpbmsgUXVhbGl0eSBNb25pdG9yICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTMzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNDojZGVmaW5lIERQODM4NDhfSU5UX0VOX01BU0tcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzU6XHQoRFA4Mzg0OF9NSVNSX0FOQ19JTlRfRU4gfFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzY6XHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU4gfFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mzc6XHQgRFA4Mzg0OF9NSVNSX1NQRF9JTlRfRU4gfFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mzg6XHQgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0zOS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDA6I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVFx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDE6I2RlZmluZSBEUDgzODQ4X01JU1JfRkhGX0lOVFx0XHRCSVQoOSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDI6I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVFx0XHRCSVQoMTApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQzOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRcdFx0QklUKDExKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0NDojZGVmaW5lIERQODM4NDhfTUlTUl9TUERfSU5UXHRcdEJJVCgxMilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDU6I2RlZmluZSBEUDgzODQ4X01JU1JfTElOS19JTlRcdFx0QklUKDEzKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0NjojZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRcdFx0QklUKDE0KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy00Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDg6I2RlZmluZSBEUDgzODQ4X0lOVF9NQVNLXHRcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ5Olx0KERQODM4NDhfTUlTUl9BTkNfSU5UIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUwOlx0IERQODM4NDhfTUlTUl9EVVBfSU5UIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUxOlx0IERQODM4NDhfTUlTUl9TUERfSU5UIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUyOlx0IERQODM4NDhfTUlTUl9MSU5LX0lOVClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNTMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTU0PXN0YXRpYyBpbnQgZHA4Mzg0OF9hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTU1LXtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NTY6XHRpbnQgZXJyID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTYxPXN0YXRpYyBpbnQgZHA4Mzg0OF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNjQtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjY1Olx0Y29udHJvbCA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSUNSKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNjYtXHRpZiAoY29udHJvbCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTczLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NDpcdFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5UX09FO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NTpcdFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5URU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NzpcdFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSVNSLCBEUDgzODQ4X0lOVF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNzgtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODE6XHRcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTgyLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODM6XHRcdGNvbnRyb2wgXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo4NDpcdFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODUtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz05ND1zdGF0aWMgaXJxcmV0dXJuX3QgZHA4Mzg0OF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6OTg6XHRpcnFfc3RhdHVzID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05OS1cdGlmIChpcnFfc3RhdHVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMDMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEwNDpcdGlmICghKGlycV9zdGF0dXMgXHUwMDI2IERQODM4NDhfSU5UX01BU0spKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMDUtXHRcdHJldHVybiBJUlFfTk9ORTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTEyOT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM4NDhfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEzMDpcdHsgVElfRFA4Mzg0OENfUEhZX0lELCAweGZmZmZmZmYwIH0sXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEzMTpcdHsgTlNfRFA4Mzg0OENfUEhZX0lELCAweGZmZmZmZmYwIH0sXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMi1cdHsgVElfRFA4MzYyMF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTEzNj1NT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRwODM4NDhfdGJsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM3LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzg6I2RlZmluZSBEUDgzODQ4X1BIWV9EUklWRVIoX2lkLCBfbmFtZSwgX2NvbmZpZ19pbml0KVx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzktXHR7XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9MTU3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzODQ4X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNTg6XHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4Mzg0OENfUEhZX0lELCBcJiMzNDtUSSBEUDgzODQ4QyAxMC8xMDAgTWJwcyBQSFlcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1OS1cdFx0XHQgICBOVUxMKSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTYwOlx0RFA4Mzg0OF9QSFlfRFJJVkVSKE5TX0RQODM4NDhDX1BIWV9JRCwgXCYjMzQ7TlMgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjEtXHRcdFx0ICAgTlVMTCksXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MjpcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzNjIwX1BIWV9JRCwgXCYjMzQ7VEkgRFA4MzYyMCAxMC8xMDAgTWJwcyBQSFlcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2My1cdFx0XHQgICBkcDgzODQ4X2NvbmZpZ19pbml0KSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTY0Olx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRMSzEwWF9QSFlfSUQsIFwmIzM0O1RJIFRMSzEwWCAxMC8xMDAgTWJwcyBQSFlcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NS1cdFx0XHQgICBOVUxMKSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTE2Nz1tb2R1bGVfcGh5X2RyaXZlcihkcDgzODQ4X2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2OC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTY5Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWSBkcml2ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNzAtTU9EVUxFX0FVVEhPUihcJiMzNDtBbmRyZXcgRi4gRGF2aXMgXHUwMDNjYWZkQHRpLmNvbVx1MDAzZVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODY2CgkJCQkJCQlvdXRwdXQ6IDEzMwoJCQkJCQkJdGhvdWdodHM6IDU4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IERQODM4NDggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyAmIzM0O1dvcnRoRnV6emluZy4mIzM0OyBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZHA4Mzg0OF9jb25maWdfaW5pdGAgd2l0aGluIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYC4gVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NDgvRFA4MzYyMCBFdGhlcm5ldCBQSFkuIFJpZ2h0LCBhICpwaHlzaWNhbCogUEhZLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbC4KCk5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nLiBJIGtub3cgbXkgaGFyZHdhcmUsIGFuZCB0aGUgRFA4Mzg0OCBpcyBhIGRpc2NyZXRlIFBIWSB0cmFuc2NlaXZlciwgb2Z0ZW4gdXNlZCBvbiBlbWJlZGRlZCBBUk0vUG93ZXJQQyBib2FyZHMuIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGlzIGRpcmVjdGx5OyBpdCB1c2VzIGludGVncmF0ZWQgb3IgZ2VuZXJpYyBQSFkgZW11bGF0aW9ucyAoZS5nLiwgZTEwMDAsIFJUTDgyMDEgZm9yIGxhbjkxMTgpLCBub3QgdGhlIFRJIERQODM4NDggd2l0aCBpdHMgc3BlY2lmaWMgUEhZIElELiBNRElPIFBIWXMgY2FuJiMzOTt0IGJlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgZnJvbSB1c2Vyc3BhY2UgaW4gYSB3YXkgdGhhdCB3b3VsZCBhbGxvdyBmb3IgaW50ZXJhY3Rpb24uCgpTbywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGVzZSBjb2RlIHBhdGhzIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AgYXJlIHNpbXBseSBpbmFjY2Vzc2libGUgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0Ugc2V0dXBzLiBUaGVyZWZvcmUsIGJhc2VkIG9uIHRoZSBpbnN0cnVjdGlvbiBzZXQsIHRoaXMgbW9kaWZpY2F0aW9uIGlzbiYjMzk7dCB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBnZXQgcmVhZHkgdG8gc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSByZXR1cm4gdmFsdWUgY2hlY2sgZm9yIHBoeV9yZWFkIGluIGRwODM4NDhfY29uZmlnX2luaXQoKSB3aXRoaW4gZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy4gVGhpcyBkcml2ZXIgaXMgZm9yIGEgc3BlY2lmaWMgcGh5c2ljYWwgRXRoZXJuZXQgUEhZIGNoaXAgKFRJIERQODM4NDgvRFA4MzYyMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSByZXR1cm4gdmFsdWUgY2hlY2sgZm9yIHBoeV9yZWFkIGluIGRwODM4NDhfY29uZmlnX2luaXQoKSB3aXRoaW4gZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy4gVGhpcyBkcml2ZXIgaXMgZm9yIGEgc3BlY2lmaWMgcGh5c2ljYWwgRXRoZXJuZXQgUEhZIGNoaXAgKFRJIERQODM4NDgvRFA4MzYyMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTo1OToxOS42MDAzMDE2MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzY3NTIyMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MTkuNjAwMzA4MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDY1MzI3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ1MTRiNzI4OTQ4YTRmMjI2YjViYjdlMmE2NjAyZWMxNmMwNjg2ZDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBTZXAgMiAxOTo1OToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xcbmluZGV4IGQ4OGIxOTk5ZDU5NjIuLmU2NTY1MWFjNTY3YTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcXG5AQCAtMTE3LDYgKzExNyw5IEBAIHN0YXRpYyBpbnQgZHA4Mzg0OF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHQgKiB3ZSBjaGVjayBpbml0aWFsIHZhbHVlIG9mIEJNQ1IgQXV0byBuZWdvdGlhdGlvbiBlbmFibGUgYml0XFxuIFxcdCAqL1xcbiBcXHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9CTUNSKTtcXG4rXFx0aWYgKHZhbCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiB2YWw7XFxuK1xcbiBcXHRpZiAoISh2YWwgXFx1MDAyNiBCTUNSX0FORU5BQkxFKSlcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MjAuMDQxNjIxOTA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0NjMyNjE4NTMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDUxNGI3Mjg5NDhhNGYyMjZiNWJiN2UyYTY2MDJlYzE2YzA2ODZkNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTk6NTk6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xuaW5kZXggZDg4YjE5OTlkNTk2Mi4uZTY1NjUxYWM1NjdhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcbkBAIC0xMTcsNiArMTE3LDkgQEAgc3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHQgKiB3ZSBjaGVjayBpbml0aWFsIHZhbHVlIG9mIEJNQ1IgQXV0byBuZWdvdGlhdGlvbiBlbmFibGUgYml0XG4gXHQgKi9cbiBcdHZhbCA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0JNQ1IpO1xuK1x0aWYgKHZhbCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHZhbDtcbitcbiBcdGlmICghKHZhbCBcdTAwMjYgQk1DUl9BTkVOQUJMRSkpXG4gXHRcdHBoeWRldi1cdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MjAuMDQxNjIzMzU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ3NDk2NjQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQSFkgRHJpdmVyIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29tbWl0IGNoYW5naW5nIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG5hdHVyZSBvZiB0aGlzIGNoYW5nZS4gSXQgc2VlbXMgd2UncmUgYWRkaW5nIGEgY2hlY2sgZm9yIGEgbmVnYXRpdmUgcmV0dXJuIHZhbHVlIGZyb20gYHBoeV9yZWFkYCBpbiBgZHA4Mzg0OF9jb25maWdfaW5pdGAuIEEgbmVnYXRpdmUgdmFsdWUgdGhlcmUgaW5kaWNhdGVzIGFuIGVycm9yIHJlYWRpbmcgdGhlIFBIWSdzIGNvbnRyb2wgcmVnaXN0ZXIuIFNtYXJ0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB3aWRlciBpbXBsaWNhdGlvbnMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cbkZpcnN0LCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhpcyBoYXJkd2FyZSBldmVuIGhhcyBhIHBhdGggdG8gbXkgY3VycmVudCBidWlsZCBjb25maWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgUEhZIGRyaXZlciBpcyB1c2VkLCBhbmQgaW4gd2hhdCBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNgIGZpbGUgYW5kIHRoZW4gaXRzIHN1cnJvdW5kaW5nIEtjb25maWcgZmlsZXMuIEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzPyBXaGF0IGFyZSB0aGUgaGFyZHdhcmUgcmVxdWlyZW1lbnRzPyBDYW4gSSBldmVuICpyZWFjaCogdGhlIERQODM4NDggaW4gbXkgY3VycmVudCBlbnZpcm9ubWVudCwgc2F5LCBpbiBRRU1VPyBJJ2xsIHByb2JhYmx5IHJ1biBhIHF1aWNrIHNlYXJjaCBmb3IgYGRwODM4NDhgIGluIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBhY3Jvc3MgdGhlIHJlbGV2YW50IGRyaXZlciB1c2FnZSwgdG8gZW5zdXJlIGl0IGlzIGF2YWlsYWJsZSBpbiBteSBidWlsZC4gSSdtIHRoaW5raW5nIG9mIHJlYWNoYWJpbGl0eSBhbmQgaW1wYWN0LiBBbnkgcHJvYmxlbXMgb3Igc3VycHJpc2VzLCBpZiB0aGlzIFBIWSBjYW4gb3IgY2FuJ3QgYmUgcmVhY2hlZCBpbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZT9cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5OSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjI1LjUxNjU5NTI1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI0Nzk3ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFA4Mzg0OFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDQxPWNvbmZpZyBEUDgzVEM4MTFfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NDUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ2OmNvbmZpZyBEUDgzODQ4X1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ0NzpcXHR0cmlzdGF0ZSBcXFwiVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDQ4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NDk6XFx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTU5PW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcXHQrPSBkcDgzODIyLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVxcdCs9IGRwODM4NDgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02MS1vYmotJChDT05GSUdfRFA4Mzg2N19QSFkpXFx0Kz0gZHA4Mzg2Ny5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTItLypcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM6ICogRHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMTojZGVmaW5lIFRJX0RQODM4NDhDX1BIWV9JRFxcdFxcdDB4MjAwMDVjYTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyLSNkZWZpbmUgVElfRFA4MzYyMF9QSFlfSURcXHRcXHQweDIwMDA1Y2UwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzojZGVmaW5lIE5TX0RQODM4NDhDX1BIWV9JRFxcdFxcdDB4MjAwMDVjOTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE0LSNkZWZpbmUgVExLMTBYX1BIWV9JRFxcdFxcdFxcdDB4MjAwMGEyMTBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYtLyogUmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNzojZGVmaW5lIERQODM4NDhfTUlDUlxcdFxcdFxcdDB4MTEgLyogTUlJIEludGVycnVwdCBDb250cm9sIFJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxODojZGVmaW5lIERQODM4NDhfTUlTUlxcdFxcdFxcdDB4MTIgLyogTUlJIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjAtLyogTUlDUiBSZWdpc3RlciBGaWVsZHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjIxOiNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVF9PRVxcdFxcdEJJVCgwKSAvKiBJbnRlcnJ1cHQgT3V0cHV0IEVuYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjI6I2RlZmluZSBEUDgzODQ4X01JQ1JfSU5URU5cXHRcXHRCSVQoMSkgLyogSW50ZXJydXB0IEVuYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0yNC0vKiBNSVNSIFJlZ2lzdGVyIEZpZWxkcyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjU6I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVF9FTlxcdFxcdEJJVCgwKSAvKiBSZWNlaXZlIEVycm9yIENvdW50ZXIgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0ZIRl9JTlRfRU5cXHRcXHRCSVQoMSkgLyogRmFsc2UgQ2FycmllciBDb3VudGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyNzojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UX0VOXFx0XFx0QklUKDIpIC8qIEF1dG8tbmVnb3RpYXRpb24gY29tcGxldGUgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI4OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU5cXHRcXHRCSVQoMykgLyogRHVwbGV4IFN0YXR1cyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mjk6I2RlZmluZSBEUDgzODQ4X01JU1JfU1BEX0lOVF9FTlxcdFxcdEJJVCg0KSAvKiBTcGVlZCBzdGF0dXMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMwOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOXFx0QklUKDUpIC8qIExpbmsgc3RhdHVzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozMTojZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRfRU5cXHRcXHRCSVQoNikgLyogRW5lcmd5IGRldGVjdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzI6I2RlZmluZSBEUDgzODQ4X01JU1JfTFFNX0lOVF9FTlxcdFxcdEJJVCg3KSAvKiBMaW5rIFF1YWxpdHkgTW9uaXRvciAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNDojZGVmaW5lIERQODM4NDhfSU5UX0VOX01BU0tcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNTpcXHQoRFA4Mzg0OF9NSVNSX0FOQ19JTlRfRU4gfFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM2OlxcdCBEUDgzODQ4X01JU1JfRFVQX0lOVF9FTiB8XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mzc6XFx0IERQODM4NDhfTUlTUl9TUERfSU5UX0VOIHxcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozODpcXHQgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzktXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MDojZGVmaW5lIERQODM4NDhfTUlTUl9SSEZfSU5UXFx0XFx0QklUKDgpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MTojZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MjojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UXFx0XFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDM6I2RlZmluZSBEUDgzODQ4X01JU1JfRFVQX0lOVFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ0OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRcXHRcXHRCSVQoMTIpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0NTojZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVFxcdFxcdEJJVCgxMylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0VEX0lOVFxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDg6I2RlZmluZSBEUDgzODQ4X0lOVF9NQVNLXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDk6XFx0KERQODM4NDhfTUlTUl9BTkNfSU5UIHxcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MDpcXHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlQgfFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUxOlxcdCBEUDgzODQ4X01JU1JfU1BEX0lOVCB8XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NTI6XFx0IERQODM4NDhfTUlTUl9MSU5LX0lOVClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9NTQ9c3RhdGljIGludCBkcDgzODQ4X2Fja19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTU1LXtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjU2OlxcdGludCBlcnIgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlTUik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9NjE9c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NjU6XFx0Y29udHJvbCA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSUNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY2LVxcdGlmIChjb250cm9sIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNzMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NDpcXHRcXHRjb250cm9sIHw9IERQODM4NDhfTUlDUl9JTlRfT0U7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NTpcXHRcXHRjb250cm9sIHw9IERQODM4NDhfTUlDUl9JTlRFTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Nzc6XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSVNSLCBEUDgzODQ4X0lOVF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc4LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjgxOlxcdFxcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODM6XFx0XFx0Y29udHJvbCBcXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODQ6XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTg1LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTk0PXN0YXRpYyBpcnFyZXR1cm5fdCBkcDgzODQ4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo5ODpcXHRpcnFfc3RhdHVzID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTktXFx0aWYgKGlycV9zdGF0dXMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEwMy1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEwNDpcXHRpZiAoIShpcnFfc3RhdHVzIFxcdTAwMjYgRFA4Mzg0OF9JTlRfTUFTSykpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMDUtXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkcDgzODQ4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTMwOlxcdHsgVElfRFA4Mzg0OENfUEhZX0lELCAweGZmZmZmZmYwIH0sXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzE6XFx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMi1cXHR7IFRJX0RQODM2MjBfUEhZX0lELCAweGZmZmZmZmYwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTEzNj1NT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRwODM4NDhfdGJsKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNy1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEzODojZGVmaW5lIERQODM4NDhfUEhZX0RSSVZFUihfaWQsIF9uYW1lLCBfY29uZmlnX2luaXQpXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM5LVxcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTE1Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1ODpcXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4Mzg0OENfUEhZX0lELCBcXFwiVEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1OS1cXHRcXHRcXHQgICBOVUxMKSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MDpcXHREUDgzODQ4X1BIWV9EUklWRVIoTlNfRFA4Mzg0OENfUEhZX0lELCBcXFwiTlMgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2MS1cXHRcXHRcXHQgICBOVUxMKSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MjpcXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4MzYyMF9QSFlfSUQsIFxcXCJUSSBEUDgzNjIwIDEwLzEwMCBNYnBzIFBIWVxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjMtXFx0XFx0XFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjQ6XFx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRMSzEwWF9QSFlfSUQsIFxcXCJUSSBUTEsxMFggMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NS1cXHRcXHRcXHQgICBOVUxMKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9MTY3PW1vZHVsZV9waHlfZHJpdmVyKGRwODM4NDhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2OC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2OTpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZIGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTcwLU1PRFVMRV9BVVRIT1IoXFxcIkFuZHJldyBGLiBEYXZpcyBcXHUwMDNjYWZkQHRpLmNvbVxcdTAwM2VcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MjUuNjc5MDgyNzgzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTAyOTE4MDU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgV29ydGhpbmVzcyoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdC4gTGV0J3MgZGl2ZSByaWdodCBpbnRvIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYCBhbmQgZ2V0IGEgaGFuZGxlIG9uIGhvdyBNRElPIFBIWSBkcml2ZXJzIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIGV2ZW4gd2l0aCB0b29scyBsaWtlIHN5emthbGxlci5cblxuSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYSB3YXkgdG8gY3JlYXRlIGFuZCBpbnRlcmFjdCB3aXRoIE1ESU8gUEhZIGRldmljZXMgd2l0aG91dCAqYWN0dWFsKiBwaHlzaWNhbCBoYXJkd2FyZS4gQ2FuIEkgc2ltdWxhdGUgdGhlbSB1c2luZyBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIGBtZGlvIG5ldGxpbmtgLCBhIG1vY2sgTURJTywgbWF5YmUgZXZlbiBhIFVTQiBFdGhlcm5ldCBkb25nbGU/IE9yIGFtIEkgY29tcGxldGVseSByZWxpYW50IG9uIHRoZSBleGlzdGVuY2Ugb2YgcmVhbCBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBvciBBQ1BJIHNldHVwPyBNb3JlIHNwZWNpZmljYWxseSwgY2FuIEkgcHJvYmUgdGhlIERQODM2MjAgUEhZIElEIGluIFFFTVU/IFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludC5cblxuQmVmb3JlIGdldHRpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQSFkgZHJpdmVycyBhcmUgdXRpbGl6ZWQuIEFyZSB0aGV5IGdlbmVyYWxseSBjb25zaWRlcmVkIFwibm9uLXJlYWNoYWJsZVwiIGhhcmR3YXJlLCBvciBpcyB0aGVyZSBhIHdheSB0byBleGVyY2lzZSB0aGVtIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgZHJpdmVyIGZpdHMgd2l0aGluIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuTm93LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBpbnN0cnVjdGlvbiwgc3BlY2lmaWNhbGx5IHdoYXQgbWFrZXMgdGhpcyBwYXRjaCBub3Qgd29ydGggZnV6emluZy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGlzIHdvcmsgaXNuJ3Q6XG5cbiogICBEb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBvciBjb21tZW50cy5cbiogICBEZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nIG9yIHRyYWNlcG9pbnRzLlxuKiAgIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJ3QgYWZmZWN0IGV4ZWN1dGlvbi5cbiogICBDb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSBvciBzaW1pbGFyIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIChsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gKS5cbiogICBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy5cbiogICBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCBjYWxsYmFja3MuXG5cblNvIEkgbmVlZCB0byBjaGVjayBob3cgYGRwODM4NDhfY29uZmlnX2luaXRgIHdvcmtzLCBhbmQgdGhlbiBJIGFtIGdvaW5nIHRvIHJlYWQgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTU1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjMwLjcwODI2NTQyNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBEcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tL1xcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gIDEwOlxcdFxcbiAgMTE6XFx0I2RlZmluZSBUSV9EUDgzODQ4Q19QSFlfSURcXHRcXHQweDIwMDA1Y2EwXFxuICAxMjpcXHQjZGVmaW5lIFRJX0RQODM2MjBfUEhZX0lEXFx0XFx0MHgyMDAwNWNlMFxcbiAgMTM6XFx0I2RlZmluZSBOU19EUDgzODQ4Q19QSFlfSURcXHRcXHQweDIwMDA1YzkwXFxuICAxNDpcXHQjZGVmaW5lIFRMSzEwWF9QSFlfSURcXHRcXHRcXHQweDIwMDBhMjEwXFxuICAxNTpcXHRcXG4gIDE2OlxcdC8qIFJlZ2lzdGVycyAqL1xcbiAgMTc6XFx0I2RlZmluZSBEUDgzODQ4X01JQ1JcXHRcXHRcXHQweDExIC8qIE1JSSBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAqL1xcbiAgMTg6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JcXHRcXHRcXHQweDEyIC8qIE1JSSBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICovXFxuICAxOTpcXHRcXG4gIDIwOlxcdC8qIE1JQ1IgUmVnaXN0ZXIgRmllbGRzICovXFxuICAyMTpcXHQjZGVmaW5lIERQODM4NDhfTUlDUl9JTlRfT0VcXHRcXHRCSVQoMCkgLyogSW50ZXJydXB0IE91dHB1dCBFbmFibGUgKi9cXG4gIDIyOlxcdCNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVEVOXFx0XFx0QklUKDEpIC8qIEludGVycnVwdCBFbmFibGUgKi9cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0LyogTUlTUiBSZWdpc3RlciBGaWVsZHMgKi9cXG4gIDI1OlxcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX1JIRl9JTlRfRU5cXHRcXHRCSVQoMCkgLyogUmVjZWl2ZSBFcnJvciBDb3VudGVyICovXFxuICAyNjpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UX0VOXFx0XFx0QklUKDEpIC8qIEZhbHNlIENhcnJpZXIgQ291bnRlciAqL1xcbiAgMjc6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVF9FTlxcdFxcdEJJVCgyKSAvKiBBdXRvLW5lZ290aWF0aW9uIGNvbXBsZXRlICovXFxuICAyODpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9EVVBfSU5UX0VOXFx0XFx0QklUKDMpIC8qIER1cGxleCBTdGF0dXMgKi9cXG4gIDI5OlxcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRfRU5cXHRcXHRCSVQoNCkgLyogU3BlZWQgc3RhdHVzICovXFxuICAzMDpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTlxcdEJJVCg1KSAvKiBMaW5rIHN0YXR1cyAqL1xcbiAgMzE6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfRURfSU5UX0VOXFx0XFx0QklUKDYpIC8qIEVuZXJneSBkZXRlY3QgKi9cXG4gIDMyOlxcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xRTV9JTlRfRU5cXHRcXHRCSVQoNykgLyogTGluayBRdWFsaXR5IE1vbml0b3IgKi9cXG4gIDMzOlxcdFxcbiAgMzQ6XFx0I2RlZmluZSBEUDgzODQ4X0lOVF9FTl9NQVNLXFx0XFx0XFxcXFxcbiAgMzU6XFx0XFx0KERQODM4NDhfTUlTUl9BTkNfSU5UX0VOIHxcXHRcXFxcXFxuICAzNjpcXHRcXHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU4gfFxcdFxcXFxcXG4gIDM3OlxcdFxcdCBEUDgzODQ4X01JU1JfU1BEX0lOVF9FTiB8XFx0XFxcXFxcbiAgMzg6XFx0XFx0IERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTilcXG4gIDM5OlxcdFxcbiAgNDA6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVFxcdFxcdEJJVCg4KVxcbiAgNDE6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfRkhGX0lOVFxcdFxcdEJJVCg5KVxcbiAgNDI6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVFxcdFxcdEJJVCgxMClcXG4gIDQzOlxcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRcXHRcXHRCSVQoMTEpXFxuICA0NDpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9TUERfSU5UXFx0XFx0QklUKDEyKVxcbiAgNDU6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfTElOS19JTlRcXHRcXHRCSVQoMTMpXFxuICA0NjpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRcXHRcXHRCSVQoMTQpXFxuICA0NzpcXHRcXG4gIDQ4OlxcdCNkZWZpbmUgRFA4Mzg0OF9JTlRfTUFTS1xcdFxcdFxcXFxcXG4gIDQ5OlxcdFxcdChEUDgzODQ4X01JU1JfQU5DX0lOVCB8XFx0XFxcXFxcbiAgNTA6XFx0XFx0IERQODM4NDhfTUlTUl9EVVBfSU5UIHxcXHRcXFxcXFxuICA1MTpcXHRcXHQgRFA4Mzg0OF9NSVNSX1NQRF9JTlQgfFxcdFxcXFxcXG4gIDUyOlxcdFxcdCBEUDgzODQ4X01JU1JfTElOS19JTlQpXFxuICA1MzpcXHRcXG4gIDU0OlxcdHN0YXRpYyBpbnQgZHA4Mzg0OF9hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuICA1NTpcXHR7XFxuICA1NjpcXHRcXHRpbnQgZXJyID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xcbiAgNTc6XFx0XFxuICA1ODpcXHRcXHRyZXR1cm4gZXJyIFxcdTAwM2MgMCA/IGVyciA6IDA7XFxuICA1OTpcXHR9XFxuICA2MDpcXHRcXG4gIDYxOlxcdHN0YXRpYyBpbnQgZHA4Mzg0OF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiAgNjI6XFx0e1xcbiAgNjM6XFx0XFx0aW50IGNvbnRyb2wsIHJldDtcXG4gIDY0OlxcdFxcbiAgNjU6XFx0XFx0Y29udHJvbCA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSUNSKTtcXG4gIDY2OlxcdFxcdGlmIChjb250cm9sIFxcdTAwM2MgMClcXG4gIDY3OlxcdFxcdFxcdHJldHVybiBjb250cm9sO1xcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xcbiAgNzA6XFx0XFx0XFx0cmV0ID0gZHA4Mzg0OF9hY2tfaW50ZXJydXB0KHBoeWRldik7XFxuICA3MTpcXHRcXHRcXHRpZiAocmV0KVxcbiAgNzI6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0XFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5UX09FO1xcbiAgNzU6XFx0XFx0XFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5URU47XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlTUiwgRFA4Mzg0OF9JTlRfRU5fTUFTSyk7XFxuICA3ODpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gIDc5OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XFxuICA4MjpcXHRcXHR9IGVsc2Uge1xcbiAgODM6XFx0XFx0XFx0Y29udHJvbCBcXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xcbiAgODQ6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcXG4gIDg1OlxcdFxcdFxcdGlmIChyZXQpXFxuICA4NjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgODc6XFx0XFxuICA4ODpcXHRcXHRcXHRyZXQgPSBkcDgzODQ4X2Fja19pbnRlcnJ1cHQocGh5ZGV2KTtcXG4gIDg5OlxcdFxcdH1cXG4gIDkwOlxcdFxcbiAgOTE6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDkyOlxcdH1cXG4gIDkzOlxcdFxcbiAgOTQ6XFx0c3RhdGljIGlycXJldHVybl90IGRwODM4NDhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0aW50IGlycV9zdGF0dXM7XFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdGlycV9zdGF0dXMgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlTUik7XFxuICA5OTpcXHRcXHRpZiAoaXJxX3N0YXR1cyBcXHUwMDNjIDApIHtcXG4gMTAwOlxcdFxcdFxcdHBoeV9lcnJvcihwaHlkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTo1OTozMC43MDgzNDI1ODVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTcxMzQ0ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLi4uXG5cbioqRGVsdmluZyBpbnRvIHRoZSBkcDgzODQ4LmMgU291cmNlKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNgLiBJJ3ZlIGFscmVhZHkgZ290IGEgZ29vZCBncmFzcCBvZiB0aGUgYmFzaWMgUEhZIGZ1bmN0aW9ucywgYnV0IHRoZXJlIGFyZSBhbHdheXMgbnVhbmNlcyB0byB1bmNvdmVyIGFuZCBvcHRpbWl6YXRpb25zIHRvIGNvbnNpZGVyLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgbGluayBzcGVlZCBhbmQgZHVwbGV4aXR5IG5lZ290aWF0aW9uLCBlcnJvciBkZXRlY3Rpb24sIGFuZCBhbnkgc3BlY2lmaWMgcXVpcmtzIG9mIHRoaXMgcGFydGljdWxhciBQSFkgaW1wbGVtZW50YXRpb24uIEknbGwgYmUgbG9va2luZyBjbG9zZWx5IGF0IHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgY2xldmVyIHRyaWNrcyB1c2VkIGZvciBlZmZpY2llbmN5IG9yIHNwZWNpZmljIGhhcmR3YXJlIHdvcmthcm91bmRzIGltcGxlbWVudGVkLiBJJ2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBsb2NraW5nIGlzc3VlcyB0aGF0IGNvdWxkIGFyaXNlIGluIGEgbXVsdGl0aHJlYWRlZCBuZXR3b3JrIHN0YWNrLiBGdXJ0aGVybW9yZSwgSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcsIGxvb2tpbmcgZm9yIGFueSBvcHBvcnR1bml0aWVzIHRvIGltcHJvdmUgcmVzcG9uc2l2ZW5lc3Mgb3IgcmVkdWNlIGludGVycnVwdCBsYXRlbmN5LiBVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIGFzc2VzcyB0aGUgY29kZSdzIHF1YWxpdHksIGlkZW50aWZ5IGFueSBhcmVhcyBmb3IgaW1wcm92ZW1lbnQsIGFuZCBlbnN1cmUgaXQgaW50ZWdyYXRlcyBzZWFtbGVzc2x5IGludG8gdGhlIGJyb2FkZXIgbmV0d29ya2luZyBmcmFtZXdvcmsuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiB3aXRoaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4OTEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjMyLjg3OTY5MDg5M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAxOlxcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4gMTAyOlxcdFxcdH1cXG4gMTAzOlxcdFxcbiAxMDQ6XFx0XFx0aWYgKCEoaXJxX3N0YXR1cyBcXHUwMDI2IERQODM4NDhfSU5UX01BU0spKVxcbiAxMDU6XFx0XFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbiAxMDY6XFx0XFxuIDEwNzpcXHRcXHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdHJldHVybiBJUlFfSEFORExFRDtcXG4gMTEwOlxcdH1cXG4gMTExOlxcdFxcbiAxMTI6XFx0c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIDExMzpcXHR7XFxuIDExNDpcXHRcXHRpbnQgdmFsO1xcbiAxMTU6XFx0XFxuIDExNjpcXHRcXHQvKiBEUDgzNjIwIGFsd2F5cyByZXBvcnRzIEF1dG8gTmVnb3RpYXRpb24gQWJpbGl0eSBvbiBCTVNSLiBJbnN0ZWFkLFxcbiAxMTc6XFx0XFx0ICogd2UgY2hlY2sgaW5pdGlhbCB2YWx1ZSBvZiBCTUNSIEF1dG8gbmVnb3RpYXRpb24gZW5hYmxlIGJpdFxcbiAxMTg6XFx0XFx0ICovXFxuIDExOTpcXHRcXHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9CTUNSKTtcXG4gMTIwOlxcdFxcdGlmICh2YWwgXFx1MDAzYyAwKVxcbiAxMjE6XFx0XFx0XFx0cmV0dXJuIHZhbDtcXG4gMTIyOlxcdFxcbiAxMjM6XFx0XFx0aWYgKCEodmFsIFxcdTAwMjYgQk1DUl9BTkVOQUJMRSkpXFxuIDEyNDpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0RJU0FCTEU7XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdHJldHVybiAwO1xcbiAxMjc6XFx0fVxcbiAxMjg6XFx0XFxuIDEyOTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM4NDhfdGJsW10gPSB7XFxuIDEzMDpcXHRcXHR7IFRJX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxcbiAxMzE6XFx0XFx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG4gMTMyOlxcdFxcdHsgVElfRFA4MzYyMF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG4gMTMzOlxcdFxcdHsgVExLMTBYX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxcbiAxMzQ6XFx0XFx0eyB9XFxuIDEzNTpcXHR9O1xcbiAxMzY6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkcDgzODQ4X3RibCk7XFxuIDEzNzpcXHRcXG4gMTM4OlxcdCNkZWZpbmUgRFA4Mzg0OF9QSFlfRFJJVkVSKF9pZCwgX25hbWUsIF9jb25maWdfaW5pdClcXHRcXHRcXFxcXFxuIDEzOTpcXHRcXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAxNDA6XFx0XFx0XFx0LnBoeV9pZFxcdFxcdD0gX2lkLFxcdFxcdFxcdFxcdFxcXFxcXG4gMTQxOlxcdFxcdFxcdC5waHlfaWRfbWFza1xcdD0gMHhmZmZmZmZmMCxcXHRcXHRcXHRcXFxcXFxuIDE0MjpcXHRcXHRcXHQubmFtZVxcdFxcdD0gX25hbWUsXFx0XFx0XFx0XFxcXFxcbiAxNDM6XFx0XFx0XFx0LyogUEhZX0JBU0lDX0ZFQVRVUkVTICovXFx0XFx0XFx0XFxcXFxcbiAxNDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAxNDU6XFx0XFx0XFx0LnNvZnRfcmVzZXRcXHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxcdFxcdFxcXFxcXG4gMTQ2OlxcdFxcdFxcdC5jb25maWdfaW5pdFxcdD0gX2NvbmZpZ19pbml0LFxcdFxcdFxcdFxcXFxcXG4gMTQ3OlxcdFxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXHRcXHRcXFxcXFxuIDE0ODpcXHRcXHRcXHQucmVzdW1lXFx0XFx0PSBnZW5waHlfcmVzdW1lLFxcdFxcdFxcXFxcXG4gMTQ5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMTUwOlxcdFxcdFxcdC8qIElSUSByZWxhdGVkICovXFx0XFx0XFx0XFx0XFxcXFxcbiAxNTE6XFx0XFx0XFx0LmNvbmZpZ19pbnRyXFx0PSBkcDgzODQ4X2NvbmZpZ19pbnRyLFxcdFxcdFxcXFxcXG4gMTUyOlxcdFxcdFxcdC5oYW5kbGVfaW50ZXJydXB0ID0gZHA4Mzg0OF9oYW5kbGVfaW50ZXJydXB0LFxcdFxcXFxcXG4gMTUzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMTU0OlxcdFxcdFxcdC5mbGFnc1xcdFxcdD0gUEhZX1JTVF9BRlRFUl9DTEtfRU4sXFx0XFx0XFxcXFxcbiAxNTU6XFx0XFx0fVxcbiAxNTY6XFx0XFxuIDE1NzpcXHRzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcXG4gMTU4OlxcdFxcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzODQ4Q19QSFlfSUQsIFxcXCJUSSBEUDgzODQ4QyAxMC8xMDAgTWJwcyBQSFlcXFwiLFxcbiAxNTk6XFx0XFx0XFx0XFx0ICAgTlVMTCksXFxuIDE2MDpcXHRcXHREUDgzODQ4X1BIWV9EUklWRVIoTlNfRFA4Mzg0OENfUEhZX0lELCBcXFwiTlMgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG4gMTYxOlxcdFxcdFxcdFxcdCAgIE5VTEwpLFxcbiAxNjI6XFx0XFx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRJX0RQODM2MjBfUEhZX0lELCBcXFwiVEkgRFA4MzYyMCAxMC8xMDAgTWJwcyBQSFlcXFwiLFxcbiAxNjM6XFx0XFx0XFx0XFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXFxuIDE2NDpcXHRcXHREUDgzODQ4X1BIWV9EUklWRVIoVExLMTBYX1BIWV9JRCwgXFxcIlRJIFRMSzEwWCAxMC8xMDAgTWJwcyBQSFlcXFwiLFxcbiAxNjU6XFx0XFx0XFx0XFx0ICAgTlVMTCksXFxuIDE2NjpcXHR9O1xcbiAxNjc6XFx0bW9kdWxlX3BoeV9kcml2ZXIoZHA4Mzg0OF9kcml2ZXIpO1xcbiAxNjg6XFx0XFxuIDE2OTpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZIGRyaXZlclxcXCIpO1xcbiAxNzA6XFx0TU9EVUxFX0FVVEhPUihcXFwiQW5kcmV3IEYuIERhdmlzIFxcdTAwM2NhZmRAdGkuY29tXFx1MDAzZVxcXCIpO1xcbiAxNzE6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTo1OTozMi44Nzk3NzUxNTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTU2MTUxMzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgRFA4Mzg0OCBFbXVsYXRpb24gUG9zc2liaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgZHA4Mzg0OGAgZHJpdmVyLCBzcGVjaWZpY2FsbHksIGl0J3MgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IGFuZCBEUDgzNjIwIFBIWSBjaGlwcywgd2hpY2ggbWFrZXMgc2Vuc2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgYWN0dWFsbHkgKnVzZSogdGhpcyB3aXRoaW4gYSBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudD8gSXMgdGhlcmUgYW55IGtpbmQgb2YgZW11bGF0aW9uIGF2YWlsYWJsZSwgZWl0aGVyIHRocm91Z2ggc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucywgR29vZ2xlIENvbXB1dGUgRW5naW5lIGZlYXR1cmVzLCBhIFVTQi1iYXNlZCBzb2x1dGlvbiwgb3IgZXZlbiBhIHB1cmUgc29mdHdhcmUgZW11bGF0aW9uP1xuXG5UaGUga2V5IGhlcmUgaXMgd2hldGhlciBRRU1VIG9yIEdDRSBldmVuICpwcmVzZW50KiBhIERQODM2MjAgb3IgRFA4Mzg0OCB0byB0aGUgZ3Vlc3QgT1MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGFueSBvZiB0aGUgZXhpc3RpbmcgRXRoZXJuZXQgZHJpdmVycyBvciwgcG90ZW50aWFsbHksIGV2ZW4gYSBVU0IgZHJpdmVyLCBpbmNvcnBvcmF0ZXMgb3IgcmVmZXJlbmNlcyB0aGUgYGRwODM4NDhgLiBNeSBuZXh0IHN0ZXAgaXMgYSB0YXJnZXRlZCBzZWFyY2guIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGZvciBjbHVlcy4gSSdsbCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgdGhlIGBUSV9EUDgzNjIwX1BIWV9JRGAgZGVmaW5pdGlvbiwgdGhlIFBIWSBJRCBgMHgyMDAwNWNlMGAsIG9yIHNpbXBseSB0aGUgc3RyaW5nIGBkcDgzODQ4YCBpdHNlbGYgd2l0aGluIHRoZSBrZXJuZWwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRhdGEgSSBuZWVkIHRvIGtub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDIxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MzcuMDM1OTI5MzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwODA4Nzk2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiKDB4MjAwMDVjZTB8VElfRFA4MzYyMF9QSFlfSUR8ZHA4Mzg0OClcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0cz0zNTc9XFx0cGh5MDogZXRoZXJuZXQtcGh5QDEge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0cy0zNjYtXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzOjM2NzpcXHRcXHRwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNmRwODM4NDhjX3JzdFxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0cy0zNjgtXFx0fTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHM9MzcxPVxcdTAwMjZwaW5jdHJsIHtcXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzOjM3MjpcXHRkcDgzODQ4YyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0czozNzM6XFx0XFx0ZHA4Mzg0OGNfcnN0OiBkcDgzODQ4Yy1yc3Qge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHMtMzc0LVxcdFxcdFxcdHJvY2tjaGlwLHBpbnMgPSBcXHUwMDNjMiBSS19QRDAgUktfRlVOQ19HUElPIFxcdTAwMjZwY2ZnX3B1bGxfbm9uZVxcdTAwM2U7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NTk9b2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVxcdCs9IGRwODM4MjIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpXFx0Kz0gZHA4Mzg0OC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTYxLW9iai0kKENPTkZJR19EUDgzODY3X1BIWSlcXHQrPSBkcDgzODY3Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTEtI2RlZmluZSBUSV9EUDgzODQ4Q19QSFlfSURcXHRcXHQweDIwMDA1Y2EwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMjojZGVmaW5lIFRJX0RQODM2MjBfUEhZX0lEXFx0XFx0MHgyMDAwNWNlMFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTMtI2RlZmluZSBOU19EUDgzODQ4Q19QSFlfSURcXHRcXHQweDIwMDA1YzkwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NTQ6c3RhdGljIGludCBkcDgzODQ4X2Fja19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNjAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo2MTpzdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNjktXFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjcwOlxcdFxcdHJldCA9IGRwODM4NDhfYWNrX2ludGVycnVwdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNzEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo4ODpcXHRcXHRyZXQgPSBkcDgzODQ4X2Fja19pbnRlcnJ1cHQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTg5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo5NDpzdGF0aWMgaXJxcmV0dXJuX3QgZHA4Mzg0OF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05NS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTExMS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjExMjpzdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTExMy17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyOC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEyOTpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM4NDhfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzAtXFx0eyBUSV9EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMS1cXHR7IE5TX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTMyOlxcdHsgVElfRFA4MzYyMF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMy1cXHR7IFRMSzEwWF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM1LX07XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzY6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkcDgzODQ4X3RibCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1MC1cXHRcXHQvKiBJUlEgcmVsYXRlZCAqL1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1MTpcXHRcXHQuY29uZmlnX2ludHJcXHQ9IGRwODM4NDhfY29uZmlnX2ludHIsXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTUyOlxcdFxcdC5oYW5kbGVfaW50ZXJydXB0ID0gZHA4Mzg0OF9oYW5kbGVfaW50ZXJydXB0LFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1My1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1Ni1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1NzpzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1OC1cXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4Mzg0OENfUEhZX0lELCBcXFwiVEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYxLVxcdFxcdFxcdCAgIE5VTEwpLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTYyOlxcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzNjIwX1BIWV9JRCwgXFxcIlRJIERQODM2MjAgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MzpcXHRcXHRcXHQgICBkcDgzODQ4X2NvbmZpZ19pbml0KSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NC1cXHREUDgzODQ4X1BIWV9EUklWRVIoVExLMTBYX1BIWV9JRCwgXFxcIlRJIFRMSzEwWCAxMC8xMDAgTWJwcyBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjYtfTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2Nzptb2R1bGVfcGh5X2RyaXZlcihkcDgzODQ4X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjQwLjExNjgxNzAwOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MzM4NTczMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBEUDgzODQ4IFBIWSBJbnN0YW50aWF0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGUgRFA4Mzg0OCBQSFkgZHJpdmVyIGdldHMgbG9hZGVkIGluIExpbnV4LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhlIHN0YW5kYXJkIE1ESU8gYnVzIHNjYW5uaW5nIHByb2Nlc3MuIEl0IG1hdGNoZXMgYWdhaW5zdCBgZHA4Mzg0OF90YmxgIGJhc2VkIG9uIHRoZSBQSFkgSUQgcmVnaXN0ZXJzLCBzcGVjaWZpY2FsbHkgd2hlbiBgKHBoeV9pZCBcdTAwMjYgMHhmZmZmZmZmMClgIG1hdGNoZXMgYFRJX0RQODM2MjBfUEhZX0lEYC4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgRFA4Mzg0OCBpcyAqZW11bGF0ZWQqIGluIFFFTVUuIEkgbmVlZCB0byBzZWUgd2hhdCBRRU1VIG9mZmVycyBpbiB0ZXJtcyBvZiBlbXVsYXRlZCBldGhlcm5ldCBQSFlzIG9yIE1ESU8gZGV2aWNlcy4gSSBrbm93IGl0IGhhbmRsZXMgdGhlIHVzdWFsIHN1c3BlY3RzIOKAkyBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgcGNuZXQsIG5lMmtfcGNpLCB0ZzMvYmNtNTd4eCDigJMgYnV0IG5vbmUgb2YgdGhvc2UgdHlwaWNhbGx5IHNob3cgdXAgd2l0aCBhIFRJIERQODM4NDggb3IgRFA4MzYyMCBQSFkgSUQgb24gYW4gTURJTyBidXMuIFNvLCB0aGF0J3MgYSBkZWFkIGVuZCwgYXQgbGVhc3QgYXMgZmFyIGFzIGEgZGlyZWN0IFFFTVUgZW11bGF0aW9uLlxuXG5UaGF0IG1ha2VzIG1lIHRoaW5rOiBDYW4gYW4gTURJTyBQSFkgZGV2aWNlIGJlIGJyb3VnaHQgdXAgdmlhIHVzZXJzcGFjZSBvciBzb21lIHNvcnQgb2Ygc29mdHdhcmUgZW11bGF0aW9uIHRlY2huaXF1ZT8gTGlrZSwgcGVyaGFwcywgc29tZSBtb2NrIGRldmljZSwgc2ltaWxhciB0byB0aGUgYXBwcm9hY2ggd2l0aCB1c2ItZ2FkZ2V0IG9yIG5ldGxpbmsgaW50ZXJmYWNlcz8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSB1c2Vyc3BhY2UgaW50ZXJmYWNlcyBvciBrZXJuZWwgaG9va3MgdGhhdCBhbGxvdyBtZSB0byBpbnN0YW50aWF0ZSBhbiBNRElPIFBIWSB3aXRoIGEgc3BlY2lmaWMgUEhZIElELiBJJ2xsIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB1c2luZyBrZXl3b3JkcyBsaWtlIFwibWRpb1wiIGFuZCBcInBoeV9kZXZpY2VfY3JlYXRlXCIgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYW55dGhpbmcgcmVsZXZhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjQ5LjQ1NTM5Mjc1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNzcyMzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9MTE3PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMzQtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMzU6XFx0XFx0cGh5ID0gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsIDAsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMzYtXFx0aWYgKElTX0VSUihwaHkpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYz01NTE9c3RhdGljIHZvaWQgdGphMTEwMl9wMV9yZWdpc3RlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODUtXFx0XFx0LyogUmVhbCBQSFkgSUQgb2YgUG9ydCAxIGlzIDAgKi9cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1ODY6XFx0XFx0cGh5ID0gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBQSFlfSURfVEpBMTEwMiwgZmFsc2UsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4Ny1cXHRcXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5Mi1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1OTM6XFx0XFx0LyogT3ZlcndyaXRlIHBhcmVudCBkZXZpY2UuIHBoeV9kZXZpY2VfY3JlYXRlKCkgc2V0IHBhcmVudCB0b1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5NC1cXHRcXHQgKiB0aGUgbWlpX2J1cy1cXHUwMDNlZGV2LCB3aGljaCBpcyBub3QgY29ycmVjdCBpbiBjYXNlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz03Mjg9c3RhdGljIGludCBwaHlfcmVxdWVzdF9kcml2ZXJfbW9kdWxlKHN0cnVjdCBwaHlfZGV2aWNlICpkZXYsIHUzMiBwaHlfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0Ny1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjc0ODpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDktXFx0XFx0XFx0XFx0ICAgICBib29sIGlzX2M0NSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODM5LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjg0MDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTg0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTA3MT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk2LVxcdFxcdGlmICghcilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwOTc6XFx0XFx0XFx0cmV0dXJuIHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA5OC1cXHRcXHRcXHRcXHRcXHRcXHQgdHJ1ZSwgXFx1MDAyNmM0NV9pZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAwLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwMTpcXHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsIGlzX2M0NSwgXFx1MDAyNmM0NV9pZHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjQ5LjU4ODE3MTgzOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzk3NTc4NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVVNCIEV0aGVybmV0IGFuZCBNRElPIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVycGxheSBiZXR3ZWVuIFVTQiBFdGhlcm5ldCBkZXZpY2VzLCBwb3RlbnRpYWwgTURJTyBpbnRlcmFjdGlvbnMgKHNwZWNpZmljYWxseSB3aXRoIHRoZSBEUDgzODQ4LCBvciBldmVuIGEgc2ltdWxhdGVkIE1ESU8pLCBhbmQgaWYgdGhlc2UgUEhZIGRyaXZlcnMgYXJlIHN0cmljdGx5IHRpZWQgdG8gYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgYXJjaGl0ZWN0dXJlIGFsbG93cyBmb3IgZmxleGliaWxpdHkgaGVyZS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgdGhlbXNlbHZlcywgbG9va2luZyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvdXNiL2AgZGlyZWN0b3J5LiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbWFwcGluZyB0aGlzIGFsbCBvdXQuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgY2x1ZXMgYWJvdXQgTURJTyBidXMgdXRpbGl6YXRpb24sIERQODM4NDggc3VwcG9ydCAob3IgYSBzdGFuZC1pbiksIGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHRoZSBQSFkgbGF5ZXIgaW4gZ2VuZXJhbC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBwb3NzaWJsZSBjb25maWd1cmF0aW9ucyBhbmQgcG90ZW50aWFsIGFic3RyYWN0aW9uIGxldmVscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzNTcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTo1OTo1Mi4zODU3NTIyNThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTcwMTAyMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiKGRwODM4NDh8RFA4Mzg0OClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6NTIuNjQ3NDYyNjg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4NDUwMDY3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIERQODM4NDggRHJpdmVyIEFzc29jaWF0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoLCBpZiBhbnksIFVTQiBkZXZpY2VzIGluIHRoZSBMaW51eCBrZXJuZWwgcmVsYXRlIHRvIHRoZSBEUDgzODQ4IEV0aGVybmV0IFBIWS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBwbGFjZXMg4oCTIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnksIG5hdHVyYWxseSwgYXMgdGhhdCdzIHdoZXJlIHRoZSBuZXR3b3JrLXJlbGF0ZWQgZHJpdmVycyByZXNpZGUuIEJ1dCBJIGNhbid0IGp1c3QgbGltaXQgbXlzZWxmIHRvIHRoYXQuIEV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBkZXBlbmRlbmNpZXMgY2FuIGJlIHRyaWNreSwgYW5kIHRoZSBEUDgzODQ4ICptaWdodCogYmUgdXNlZCBpbiBhIGxlc3MgZGlyZWN0IHdheS4gSSBuZWVkIHRvIGNhc3QgYSB3aWRlciBuZXQgYW5kIGNvbnNpZGVyIHNlYXJjaGluZyB0aGUgZW50aXJlIGtlcm5lbCB0cmVlLiBQZXJoYXBzIGl0J3MgYmVpbmcgaGFuZGxlZCB0aHJvdWdoIGEgZ2VuZXJpYyBVU0IgZnJhbWV3b3JrIG9yIGEgbW9yZSBhYnN0cmFjdGVkIGxheWVyLiBBIGNvbXBsZXRlIHNlYXJjaCBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy4gSSdsbCBuZWVkIHRvIHVzZSBhIHRvb2wgdG8gcmFwaWRseSBzZWFyY2ggdGhlIHNvdXJjZSBjb2RlIGZvciBhbnkgZGlyZWN0IG9yIGluZGlyZWN0IGJpbmRpbmdzIHRvIHRoZSBEUDgzODQ4LiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjQwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6NTUuNDkyNDcyMjU1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkwNTIzNzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRQODM4NDhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MjkxPUNPTkZJR19ST0NLQ0hJUF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnOjI5MjpDT05GSUdfRFA4Mzg0OF9QSFk9bVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTI5My1DT05GSUdfRFA4Mzg2N19QSFk9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTMzMz1DT05GSUdfU01TQ19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzozMzQ6Q09ORklHX0RQODM4NDhfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWctMzM1LUNPTkZJR19EUDgzODY3X1BIWT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM2eF9yZGsuZHRzPTMzMT1cXHRcXHRcXHRcXHRwaHkxOiBldGhlcm5ldC1waHlAMSB7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNnhfcmRrLmR0czozMzI6XFx0XFx0XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJuYXRpb25hbCxEUDgzODQ4VlZcXFwiO1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzZ4X3Jkay5kdHMtMzMzLVxcdFxcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzZ4X3Jkay5kdHM9MzQxPVxcdFxcdFxcdFxcdHBoeTM6IGV0aGVybmV0LXBoeUAzIHtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM2eF9yZGsuZHRzOjM0MjpcXHRcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm5hdGlvbmFsLERQODM4NDhWVlxcXCI7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNnhfcmRrLmR0cy0zNDMtXFx0XFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzNcXHUwMDNlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDQxPWNvbmZpZyBEUDgzVEM4MTFfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NDUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ2OmNvbmZpZyBEUDgzODQ4X1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ0NzpcXHR0cmlzdGF0ZSBcXFwiVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDQ4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NDk6XFx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTU5PW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcXHQrPSBkcDgzODIyLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVxcdCs9IGRwODM4NDgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02MS1vYmotJChDT05GSUdfRFA4Mzg2N19QSFkpXFx0Kz0gZHA4Mzg2Ny5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTItLypcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM6ICogRHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMTojZGVmaW5lIFRJX0RQODM4NDhDX1BIWV9JRFxcdFxcdDB4MjAwMDVjYTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyLSNkZWZpbmUgVElfRFA4MzYyMF9QSFlfSURcXHRcXHQweDIwMDA1Y2UwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzojZGVmaW5lIE5TX0RQODM4NDhDX1BIWV9JRFxcdFxcdDB4MjAwMDVjOTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE0LSNkZWZpbmUgVExLMTBYX1BIWV9JRFxcdFxcdFxcdDB4MjAwMGEyMTBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYtLyogUmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNzojZGVmaW5lIERQODM4NDhfTUlDUlxcdFxcdFxcdDB4MTEgLyogTUlJIEludGVycnVwdCBDb250cm9sIFJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxODojZGVmaW5lIERQODM4NDhfTUlTUlxcdFxcdFxcdDB4MTIgLyogTUlJIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjAtLyogTUlDUiBSZWdpc3RlciBGaWVsZHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjIxOiNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVF9PRVxcdFxcdEJJVCgwKSAvKiBJbnRlcnJ1cHQgT3V0cHV0IEVuYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjI6I2RlZmluZSBEUDgzODQ4X01JQ1JfSU5URU5cXHRcXHRCSVQoMSkgLyogSW50ZXJydXB0IEVuYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0yNC0vKiBNSVNSIFJlZ2lzdGVyIEZpZWxkcyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjU6I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVF9FTlxcdFxcdEJJVCgwKSAvKiBSZWNlaXZlIEVycm9yIENvdW50ZXIgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0ZIRl9JTlRfRU5cXHRcXHRCSVQoMSkgLyogRmFsc2UgQ2FycmllciBDb3VudGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyNzojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UX0VOXFx0XFx0QklUKDIpIC8qIEF1dG8tbmVnb3RpYXRpb24gY29tcGxldGUgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI4OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU5cXHRcXHRCSVQoMykgLyogRHVwbGV4IFN0YXR1cyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mjk6I2RlZmluZSBEUDgzODQ4X01JU1JfU1BEX0lOVF9FTlxcdFxcdEJJVCg0KSAvKiBTcGVlZCBzdGF0dXMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMwOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOXFx0QklUKDUpIC8qIExpbmsgc3RhdHVzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozMTojZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRfRU5cXHRcXHRCSVQoNikgLyogRW5lcmd5IGRldGVjdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzI6I2RlZmluZSBEUDgzODQ4X01JU1JfTFFNX0lOVF9FTlxcdFxcdEJJVCg3KSAvKiBMaW5rIFF1YWxpdHkgTW9uaXRvciAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNDojZGVmaW5lIERQODM4NDhfSU5UX0VOX01BU0tcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNTpcXHQoRFA4Mzg0OF9NSVNSX0FOQ19JTlRfRU4gfFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM2OlxcdCBEUDgzODQ4X01JU1JfRFVQX0lOVF9FTiB8XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mzc6XFx0IERQODM4NDhfTUlTUl9TUERfSU5UX0VOIHxcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozODpcXHQgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzktXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MDojZGVmaW5lIERQODM4NDhfTUlTUl9SSEZfSU5UXFx0XFx0QklUKDgpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MTojZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MjojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UXFx0XFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDM6I2RlZmluZSBEUDgzODQ4X01JU1JfRFVQX0lOVFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ0OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRcXHRcXHRCSVQoMTIpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0NTojZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVFxcdFxcdEJJVCgxMylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0VEX0lOVFxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDg6I2RlZmluZSBEUDgzODQ4X0lOVF9NQVNLXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDk6XFx0KERQODM4NDhfTUlTUl9BTkNfSU5UIHxcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MDpcXHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlQgfFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUxOlxcdCBEUDgzODQ4X01JU1JfU1BEX0lOVCB8XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NTI6XFx0IERQODM4NDhfTUlTUl9MSU5LX0lOVClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9NTQ9c3RhdGljIGludCBkcDgzODQ4X2Fja19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTU1LXtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjU2OlxcdGludCBlcnIgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlTUik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9NjE9c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NjU6XFx0Y29udHJvbCA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSUNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY2LVxcdGlmIChjb250cm9sIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNzMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NDpcXHRcXHRjb250cm9sIHw9IERQODM4NDhfTUlDUl9JTlRfT0U7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NTpcXHRcXHRjb250cm9sIHw9IERQODM4NDhfTUlDUl9JTlRFTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Nzc6XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSVNSLCBEUDgzODQ4X0lOVF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc4LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjgxOlxcdFxcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODM6XFx0XFx0Y29udHJvbCBcXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODQ6XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTg1LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTk0PXN0YXRpYyBpcnFyZXR1cm5fdCBkcDgzODQ4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo5ODpcXHRpcnFfc3RhdHVzID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTktXFx0aWYgKGlycV9zdGF0dXMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEwMy1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEwNDpcXHRpZiAoIShpcnFfc3RhdHVzIFxcdTAwMjYgRFA4Mzg0OF9JTlRfTUFTSykpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMDUtXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkcDgzODQ4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTMwOlxcdHsgVElfRFA4Mzg0OENfUEhZX0lELCAweGZmZmZmZmYwIH0sXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzE6XFx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMi1cXHR7IFRJX0RQODM2MjBfUEhZX0lELCAweGZmZmZmZmYwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTEzNj1NT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRwODM4NDhfdGJsKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNy1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEzODojZGVmaW5lIERQODM4NDhfUEhZX0RSSVZFUihfaWQsIF9uYW1lLCBfY29uZmlnX2luaXQpXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM5LVxcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTE1Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1ODpcXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4Mzg0OENfUEhZX0lELCBcXFwiVEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1OS1cXHRcXHRcXHQgICBOVUxMKSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MDpcXHREUDgzODQ4X1BIWV9EUklWRVIoTlNfRFA4Mzg0OENfUEhZX0lELCBcXFwiTlMgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2MS1cXHRcXHRcXHQgICBOVUxMKSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MjpcXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4MzYyMF9QSFlfSUQsIFxcXCJUSSBEUDgzNjIwIDEwLzEwMCBNYnBzIFBIWVxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjMtXFx0XFx0XFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjQ6XFx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRMSzEwWF9QSFlfSUQsIFxcXCJUSSBUTEsxMFggMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NS1cXHRcXHRcXHQgICBOVUxMKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9MTY3PW1vZHVsZV9waHlfZHJpdmVyKGRwODM4NDhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2OC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2OTpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZIGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTcwLU1PRFVMRV9BVVRIT1IoXFxcIkFuZHJldyBGLiBEYXZpcyBcXHUwMDNjYWZkQHRpLmNvbVxcdTAwM2VcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6NTcuMTgzMDA1NDA4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkxODQ3NzEzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBEUDgzODQ4IERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2gsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgXCJXb3J0aEZ1enppbmcuXCIgTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZHA4Mzg0OF9jb25maWdfaW5pdGAgd2l0aGluIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYC4gVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NDgvRFA4MzYyMCBFdGhlcm5ldCBQSFkuIFJpZ2h0LCBhICpwaHlzaWNhbCogUEhZLiBUaGF0J3MgYSBrZXkgZGV0YWlsLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLiBJIGtub3cgbXkgaGFyZHdhcmUsIGFuZCB0aGUgRFA4Mzg0OCBpcyBhIGRpc2NyZXRlIFBIWSB0cmFuc2NlaXZlciwgb2Z0ZW4gdXNlZCBvbiBlbWJlZGRlZCBBUk0vUG93ZXJQQyBib2FyZHMuIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoaXMgZGlyZWN0bHk7IGl0IHVzZXMgaW50ZWdyYXRlZCBvciBnZW5lcmljIFBIWSBlbXVsYXRpb25zIChlLmcuLCBlMTAwMCwgUlRMODIwMSBmb3IgbGFuOTExOCksIG5vdCB0aGUgVEkgRFA4Mzg0OCB3aXRoIGl0cyBzcGVjaWZpYyBQSFkgSUQuIE1ESU8gUEhZcyBjYW4ndCBiZSBkeW5hbWljYWxseSBjcmVhdGVkIGZyb20gdXNlcnNwYWNlIGluIGEgd2F5IHRoYXQgd291bGQgYWxsb3cgZm9yIGludGVyYWN0aW9uLlxuXG5TbywgSSdtIGNvbmZpZGVudCB0aGF0IHRoZXNlIGNvZGUgcGF0aHMgd2l0aGluIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYCBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBzZXR1cHMuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhlIGluc3RydWN0aW9uIHNldCwgdGhpcyBtb2RpZmljYXRpb24gaXNuJ3Qgd29ydGggZnV6emluZy4gSSdsbCBmbGFnIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBnZXQgcmVhZHkgdG8gc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg2NiwiT3V0cHV0VG9rZW5zIjoxMzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MDA6MDYuMzY3Nzc5NTM4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MDA6MDYuMzY3ODEwNzE4WiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowsvjs4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 19:57:42 +0000 UTC FinishedAt: 2026-09-02 20:00:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ1MTRiNzI4OTQ4YTRmMjI2YjViYjdlMmE2NjAyZWMxNmMwNjg2ZDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDE5OjU5OjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jXG5pbmRleCBkODhiMTk5OWQ1OTYyLi5lNjU2NTFhYzU2N2E3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xuQEAgLTExNyw2ICYjNDM7MTE3LDkgQEAgc3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHQgKiB3ZSBjaGVjayBpbml0aWFsIHZhbHVlIG9mIEJNQ1IgQXV0byBuZWdvdGlhdGlvbiBlbmFibGUgYml0XG4gXHQgKi9cbiBcdHZhbCA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0JNQ1IpO1xuJiM0MztcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gdmFsO1xuJiM0MztcbiBcdGlmICghKHZhbCBcdTAwMjYgQk1DUl9BTkVOQUJMRSkpXG4gXHRcdHBoeWRldi1cdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSByZXR1cm4gdmFsdWUgY2hlY2sgZm9yIHBoeV9yZWFkIGluIGRwODM4NDhfY29uZmlnX2luaXQoKSB3aXRoaW4gZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy4gVGhpcyBkcml2ZXIgaXMgZm9yIGEgc3BlY2lmaWMgcGh5c2ljYWwgRXRoZXJuZXQgUEhZIGNoaXAgKFRJIERQODM4NDgvRFA4MzYyMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NTE0YjcyODk0OGE0ZjIyNmI1YmI3ZTJhNjYwMmVjMTZjMDY4NmQ0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAxOTo1OToxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jCmluZGV4IGQ4OGIxOTk5ZDU5NjIuLmU2NTY1MWFjNTY3YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYwpAQCAtMTE3LDYgJiM0MzsxMTcsOSBAQCBzdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkgKiB3ZSBjaGVjayBpbml0aWFsIHZhbHVlIG9mIEJNQ1IgQXV0byBuZWdvdGlhdGlvbiBlbmFibGUgYml0CiAJICovCiAJdmFsID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfQk1DUik7CiYjNDM7CWlmICh2YWwgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHZhbDsKJiM0MzsKIAlpZiAoISh2YWwgJmFtcDsgQk1DUl9BTkVOQUJMRSkpCiAJCXBoeWRldi0mZ3Q7YXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBIWSBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbW1pdCBjaGFuZ2luZyBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBuYXR1cmUgb2YgdGhpcyBjaGFuZ2UuIEl0IHNlZW1zIHdlJiMzOTtyZSBhZGRpbmcgYSBjaGVjayBmb3IgYSBuZWdhdGl2ZSByZXR1cm4gdmFsdWUgZnJvbSBgcGh5X3JlYWRgIGluIGBkcDgzODQ4X2NvbmZpZ19pbml0YC4gQSBuZWdhdGl2ZSB2YWx1ZSB0aGVyZSBpbmRpY2F0ZXMgYW4gZXJyb3IgcmVhZGluZyB0aGUgUEhZJiMzOTtzIGNvbnRyb2wgcmVnaXN0ZXIuIFNtYXJ0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB3aWRlciBpbXBsaWNhdGlvbnMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgpGaXJzdCwgSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIHRoaXMgaGFyZHdhcmUgZXZlbiBoYXMgYSBwYXRoIHRvIG15IGN1cnJlbnQgYnVpbGQgY29uZmlnLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIFBIWSBkcml2ZXIgaXMgdXNlZCwgYW5kIGluIHdoYXQgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AgZmlsZSBhbmQgdGhlbiBpdHMgc3Vycm91bmRpbmcgS2NvbmZpZyBmaWxlcy4gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXM/IFdoYXQgYXJlIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHM/IENhbiBJIGV2ZW4gKnJlYWNoKiB0aGUgRFA4Mzg0OCBpbiBteSBjdXJyZW50IGVudmlyb25tZW50LCBzYXksIGluIFFFTVU/IEkmIzM5O2xsIHByb2JhYmx5IHJ1biBhIHF1aWNrIHNlYXJjaCBmb3IgYGRwODM4NDhgIGluIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBhY3Jvc3MgdGhlIHJlbGV2YW50IGRyaXZlciB1c2FnZSwgdG8gZW5zdXJlIGl0IGlzIGF2YWlsYWJsZSBpbiBteSBidWlsZC4gSSYjMzk7bSB0aGlua2luZyBvZiByZWFjaGFiaWxpdHkgYW5kIGltcGFjdC4gQW55IHByb2JsZW1zIG9yIHN1cnByaXNlcywgaWYgdGhpcyBQSFkgY2FuIG9yIGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RQODM4NDgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDQxPWNvbmZpZyBEUDgzVEM4MTFfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDQ1LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ2OmNvbmZpZyBEUDgzODQ4X1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ3Olx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ0OC1cdGhlbHBcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ0OTpcdCAgU3VwcG9ydHMgdGhlIERQODM4NDggUEhZLlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01OT1vYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXHQmIzQzOz0gZHA4MzgyMi5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVx0JiM0Mzs9IGRwODM4NDgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTYxLW9iai0kKENPTkZJR19EUDgzODY3X1BIWSlcdCYjNDM7PSBkcDgzODY3Lm9cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTItLypcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzogKiBEcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy00LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTE6I2RlZmluZSBUSV9EUDgzODQ4Q19QSFlfSURcdFx0MHgyMDAwNWNhMFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMi0jZGVmaW5lIFRJX0RQODM2MjBfUEhZX0lEXHRcdDB4MjAwMDVjZTBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTM6I2RlZmluZSBOU19EUDgzODQ4Q19QSFlfSURcdFx0MHgyMDAwNWM5MFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNC0jZGVmaW5lIFRMSzEwWF9QSFlfSURcdFx0XHQweDIwMDBhMjEwXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNi0vKiBSZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTc6I2RlZmluZSBEUDgzODQ4X01JQ1JcdFx0XHQweDExIC8qIE1JSSBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxODojZGVmaW5lIERQODM4NDhfTUlTUlx0XHRcdDB4MTIgLyogTUlJIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTktXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTIwLS8qIE1JQ1IgUmVnaXN0ZXIgRmllbGRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjIxOiNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVF9PRVx0XHRCSVQoMCkgLyogSW50ZXJydXB0IE91dHB1dCBFbmFibGUgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjI6I2RlZmluZSBEUDgzODQ4X01JQ1JfSU5URU5cdFx0QklUKDEpIC8qIEludGVycnVwdCBFbmFibGUgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTI0LS8qIE1JU1IgUmVnaXN0ZXIgRmllbGRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI1OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1JIRl9JTlRfRU5cdFx0QklUKDApIC8qIFJlY2VpdmUgRXJyb3IgQ291bnRlciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyNjojZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UX0VOXHRcdEJJVCgxKSAvKiBGYWxzZSBDYXJyaWVyIENvdW50ZXIgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mjc6I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVF9FTlx0XHRCSVQoMikgLyogQXV0by1uZWdvdGlhdGlvbiBjb21wbGV0ZSAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyODojZGVmaW5lIERQODM4NDhfTUlTUl9EVVBfSU5UX0VOXHRcdEJJVCgzKSAvKiBEdXBsZXggU3RhdHVzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI5OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRfRU5cdFx0QklUKDQpIC8qIFNwZWVkIHN0YXR1cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozMDojZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTlx0QklUKDUpIC8qIExpbmsgc3RhdHVzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMxOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0VEX0lOVF9FTlx0XHRCSVQoNikgLyogRW5lcmd5IGRldGVjdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozMjojZGVmaW5lIERQODM4NDhfTUlTUl9MUU1fSU5UX0VOXHRcdEJJVCg3KSAvKiBMaW5rIFF1YWxpdHkgTW9uaXRvciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0zMy1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzQ6I2RlZmluZSBEUDgzODQ4X0lOVF9FTl9NQVNLXHRcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM1Olx0KERQODM4NDhfTUlTUl9BTkNfSU5UX0VOIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM2Olx0IERQODM4NDhfTUlTUl9EVVBfSU5UX0VOIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM3Olx0IERQODM4NDhfTUlTUl9TUERfSU5UX0VOIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM4Olx0IERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzktXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQwOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1JIRl9JTlRcdFx0QklUKDgpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQxOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0ZIRl9JTlRcdFx0QklUKDkpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQyOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0FOQ19JTlRcdFx0QklUKDEwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MzojZGVmaW5lIERQODM4NDhfTUlTUl9EVVBfSU5UXHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDQ6I2RlZmluZSBEUDgzODQ4X01JU1JfU1BEX0lOVFx0XHRCSVQoMTIpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ1OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UXHRcdEJJVCgxMylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDY6I2RlZmluZSBEUDgzODQ4X01JU1JfRURfSU5UXHRcdEJJVCgxNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNDctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ4OiNkZWZpbmUgRFA4Mzg0OF9JTlRfTUFTS1x0XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0OTpcdChEUDgzODQ4X01JU1JfQU5DX0lOVCB8XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MDpcdCBEUDgzODQ4X01JU1JfRFVQX0lOVCB8XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MTpcdCBEUDgzODQ4X01JU1JfU1BEX0lOVCB8XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MjpcdCBEUDgzODQ4X01JU1JfTElOS19JTlQpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz01ND1zdGF0aWMgaW50IGRwODM4NDhfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01NS17XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjU2Olx0aW50IGVyciA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSVNSKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNTctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz02MT1zdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo2NTpcdGNvbnRyb2wgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlDUik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY2LVx0aWYgKGNvbnRyb2wgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy03My1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NzQ6XHRcdGNvbnRyb2wgfD0gRFA4Mzg0OF9NSUNSX0lOVF9PRTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NzU6XHRcdGNvbnRyb2wgfD0gRFA4Mzg0OF9NSUNSX0lOVEVOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy03Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Nzc6XHRcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlTUiwgRFA4Mzg0OF9JTlRfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc4LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjgxOlx0XHRyZXQgPSBwaHlfd3JpdGUocGh5ZGV2LCBEUDgzODQ4X01JQ1IsIGNvbnRyb2wpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04Mi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjgzOlx0XHRjb250cm9sIFx1MDAyNj0gfkRQODM4NDhfTUlDUl9JTlRFTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODQ6XHRcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTg1LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9OTQ9c3RhdGljIGlycXJldHVybl90IGRwODM4NDhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjk4Olx0aXJxX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSVNSKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTktXHRpZiAoaXJxX3N0YXR1cyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTAzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMDQ6XHRpZiAoIShpcnFfc3RhdHVzIFx1MDAyNiBEUDgzODQ4X0lOVF9NQVNLKSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTA1LVx0XHRyZXR1cm4gSVJRX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkcDgzODQ4X3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzA6XHR7IFRJX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzE6XHR7IE5TX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzItXHR7IFRJX0RQODM2MjBfUEhZX0lELCAweGZmZmZmZmYwIH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xMzY9TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkcDgzODQ4X3RibCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNy1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTM4OiNkZWZpbmUgRFA4Mzg0OF9QSFlfRFJJVkVSKF9pZCwgX25hbWUsIF9jb25maWdfaW5pdClcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM5LVx0e1x0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTE1Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTU4Olx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRJX0RQODM4NDhDX1BIWV9JRCwgXCYjMzQ7VEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNTktXHRcdFx0ICAgTlVMTCksXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MDpcdERQODM4NDhfUEhZX0RSSVZFUihOU19EUDgzODQ4Q19QSFlfSUQsIFwmIzM0O05TIERQODM4NDhDIDEwLzEwMCBNYnBzIFBIWVwmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYxLVx0XHRcdCAgIE5VTEwpLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjI6XHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4MzYyMF9QSFlfSUQsIFwmIzM0O1RJIERQODM2MjAgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjMtXHRcdFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2NDpcdERQODM4NDhfUEhZX0RSSVZFUihUTEsxMFhfUEhZX0lELCBcJiMzNDtUSSBUTEsxMFggMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjUtXHRcdFx0ICAgTlVMTCksXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xNjc9bW9kdWxlX3BoeV9kcml2ZXIoZHA4Mzg0OF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2OTpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFkgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTcwLU1PRFVMRV9BVVRIT1IoXCYjMzQ7QW5kcmV3IEYuIERhdmlzIFx1MDAzY2FmZEB0aS5jb21cdTAwM2VcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNTUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBXb3J0aGluZXNzKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdC4gTGV0JiMzOTtzIGRpdmUgcmlnaHQgaW50byBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AgYW5kIGdldCBhIGhhbmRsZSBvbiBob3cgTURJTyBQSFkgZHJpdmVycyBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGlzIHNwZWNpZmljIGRyaXZlci4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBldmVuIHdpdGggdG9vbHMgbGlrZSBzeXprYWxsZXIuCgpJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYSB3YXkgdG8gY3JlYXRlIGFuZCBpbnRlcmFjdCB3aXRoIE1ESU8gUEhZIGRldmljZXMgd2l0aG91dCAqYWN0dWFsKiBwaHlzaWNhbCBoYXJkd2FyZS4gQ2FuIEkgc2ltdWxhdGUgdGhlbSB1c2luZyBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIGBtZGlvIG5ldGxpbmtgLCBhIG1vY2sgTURJTywgbWF5YmUgZXZlbiBhIFVTQiBFdGhlcm5ldCBkb25nbGU/IE9yIGFtIEkgY29tcGxldGVseSByZWxpYW50IG9uIHRoZSBleGlzdGVuY2Ugb2YgcmVhbCBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBvciBBQ1BJIHNldHVwPyBNb3JlIHNwZWNpZmljYWxseSwgY2FuIEkgcHJvYmUgdGhlIERQODM2MjAgUEhZIElEIGluIFFFTVU/IFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludC4KCkJlZm9yZSBnZXR0aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgUEhZIGRyaXZlcnMgYXJlIHV0aWxpemVkLiBBcmUgdGhleSBnZW5lcmFsbHkgY29uc2lkZXJlZCAmIzM0O25vbi1yZWFjaGFibGUmIzM0OyBoYXJkd2FyZSwgb3IgaXMgdGhlcmUgYSB3YXkgdG8gZXhlcmNpc2UgdGhlbSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGlzIGRyaXZlciBmaXRzIHdpdGhpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuCgpOb3csIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBpbnN0cnVjdGlvbiwgc3BlY2lmaWNhbGx5IHdoYXQgbWFrZXMgdGhpcyBwYXRjaCBub3Qgd29ydGggZnV6emluZy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGlzIHdvcmsgaXNuJiMzOTt0OgoKKiAgIERvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIG9yIGNvbW1lbnRzLgoqICAgRGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50cy4KKiAgIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGFmZmVjdCBleGVjdXRpb24uCiogICBDb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSBvciBzaW1pbGFyIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIChsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gKS4KKiAgIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLgoqICAgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgY2FsbGJhY2tzLgoKU28gSSBuZWVkIHRvIGNoZWNrIGhvdyBgZHA4Mzg0OF9jb25maWdfaW5pdGAgd29ya3MsIGFuZCB0aGVuIEkgYW0gZ29pbmcgdG8gcmVhZCBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBEcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVxuICAgNDpcdCAqXG4gICA1Olx0ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICAxMDpcdFxuICAxMTpcdCNkZWZpbmUgVElfRFA4Mzg0OENfUEhZX0lEXHRcdDB4MjAwMDVjYTBcbiAgMTI6XHQjZGVmaW5lIFRJX0RQODM2MjBfUEhZX0lEXHRcdDB4MjAwMDVjZTBcbiAgMTM6XHQjZGVmaW5lIE5TX0RQODM4NDhDX1BIWV9JRFx0XHQweDIwMDA1YzkwXG4gIDE0Olx0I2RlZmluZSBUTEsxMFhfUEhZX0lEXHRcdFx0MHgyMDAwYTIxMFxuICAxNTpcdFxuICAxNjpcdC8qIFJlZ2lzdGVycyAqL1xuICAxNzpcdCNkZWZpbmUgRFA4Mzg0OF9NSUNSXHRcdFx0MHgxMSAvKiBNSUkgSW50ZXJydXB0IENvbnRyb2wgUmVnaXN0ZXIgKi9cbiAgMTg6XHQjZGVmaW5lIERQODM4NDhfTUlTUlx0XHRcdDB4MTIgLyogTUlJIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi9cbiAgMTk6XHRcbiAgMjA6XHQvKiBNSUNSIFJlZ2lzdGVyIEZpZWxkcyAqL1xuICAyMTpcdCNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVF9PRVx0XHRCSVQoMCkgLyogSW50ZXJydXB0IE91dHB1dCBFbmFibGUgKi9cbiAgMjI6XHQjZGVmaW5lIERQODM4NDhfTUlDUl9JTlRFTlx0XHRCSVQoMSkgLyogSW50ZXJydXB0IEVuYWJsZSAqL1xuICAyMzpcdFxuICAyNDpcdC8qIE1JU1IgUmVnaXN0ZXIgRmllbGRzICovXG4gIDI1Olx0I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVF9FTlx0XHRCSVQoMCkgLyogUmVjZWl2ZSBFcnJvciBDb3VudGVyICovXG4gIDI2Olx0I2RlZmluZSBEUDgzODQ4X01JU1JfRkhGX0lOVF9FTlx0XHRCSVQoMSkgLyogRmFsc2UgQ2FycmllciBDb3VudGVyICovXG4gIDI3Olx0I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVF9FTlx0XHRCSVQoMikgLyogQXV0by1uZWdvdGlhdGlvbiBjb21wbGV0ZSAqL1xuICAyODpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU5cdFx0QklUKDMpIC8qIER1cGxleCBTdGF0dXMgKi9cbiAgMjk6XHQjZGVmaW5lIERQODM4NDhfTUlTUl9TUERfSU5UX0VOXHRcdEJJVCg0KSAvKiBTcGVlZCBzdGF0dXMgKi9cbiAgMzA6XHQjZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTlx0QklUKDUpIC8qIExpbmsgc3RhdHVzICovXG4gIDMxOlx0I2RlZmluZSBEUDgzODQ4X01JU1JfRURfSU5UX0VOXHRcdEJJVCg2KSAvKiBFbmVyZ3kgZGV0ZWN0ICovXG4gIDMyOlx0I2RlZmluZSBEUDgzODQ4X01JU1JfTFFNX0lOVF9FTlx0XHRCSVQoNykgLyogTGluayBRdWFsaXR5IE1vbml0b3IgKi9cbiAgMzM6XHRcbiAgMzQ6XHQjZGVmaW5lIERQODM4NDhfSU5UX0VOX01BU0tcdFx0XFxcbiAgMzU6XHRcdChEUDgzODQ4X01JU1JfQU5DX0lOVF9FTiB8XHRcXFxuICAzNjpcdFx0IERQODM4NDhfTUlTUl9EVVBfSU5UX0VOIHxcdFxcXG4gIDM3Olx0XHQgRFA4Mzg0OF9NSVNSX1NQRF9JTlRfRU4gfFx0XFxcbiAgMzg6XHRcdCBEUDgzODQ4X01JU1JfTElOS19JTlRfRU4pXG4gIDM5Olx0XG4gIDQwOlx0I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVFx0XHRCSVQoOClcbiAgNDE6XHQjZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UXHRcdEJJVCg5KVxuICA0MjpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0FOQ19JTlRcdFx0QklUKDEwKVxuICA0MzpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRcdFx0QklUKDExKVxuICA0NDpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRcdFx0QklUKDEyKVxuICA0NTpcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UXHRcdEJJVCgxMylcbiAgNDY6XHQjZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRcdFx0QklUKDE0KVxuICA0NzpcdFxuICA0ODpcdCNkZWZpbmUgRFA4Mzg0OF9JTlRfTUFTS1x0XHRcXFxuICA0OTpcdFx0KERQODM4NDhfTUlTUl9BTkNfSU5UIHxcdFxcXG4gIDUwOlx0XHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlQgfFx0XFxcbiAgNTE6XHRcdCBEUDgzODQ4X01JU1JfU1BEX0lOVCB8XHRcXFxuICA1MjpcdFx0IERQODM4NDhfTUlTUl9MSU5LX0lOVClcbiAgNTM6XHRcbiAgNTQ6XHRzdGF0aWMgaW50IGRwODM4NDhfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuICA1NTpcdHtcbiAgNTY6XHRcdGludCBlcnIgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlTUik7XG4gIDU3Olx0XG4gIDU4Olx0XHRyZXR1cm4gZXJyIFx1MDAzYyAwID8gZXJyIDogMDtcbiAgNTk6XHR9XG4gIDYwOlx0XG4gIDYxOlx0c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gIDYyOlx0e1xuICA2MzpcdFx0aW50IGNvbnRyb2wsIHJldDtcbiAgNjQ6XHRcbiAgNjU6XHRcdGNvbnRyb2wgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlDUik7XG4gIDY2Olx0XHRpZiAoY29udHJvbCBcdTAwM2MgMClcbiAgNjc6XHRcdFx0cmV0dXJuIGNvbnRyb2w7XG4gIDY4Olx0XG4gIDY5Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWludGVycnVwdHMgPT0gUEhZX0lOVEVSUlVQVF9FTkFCTEVEKSB7XG4gIDcwOlx0XHRcdHJldCA9IGRwODM4NDhfYWNrX2ludGVycnVwdChwaHlkZXYpO1xuICA3MTpcdFx0XHRpZiAocmV0KVxuICA3MjpcdFx0XHRcdHJldHVybiByZXQ7XG4gIDczOlx0XG4gIDc0Olx0XHRcdGNvbnRyb2wgfD0gRFA4Mzg0OF9NSUNSX0lOVF9PRTtcbiAgNzU6XHRcdFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5URU47XG4gIDc2Olx0XG4gIDc3Olx0XHRcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlTUiwgRFA4Mzg0OF9JTlRfRU5fTUFTSyk7XG4gIDc4Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gIDc5Olx0XHRcdFx0cmV0dXJuIHJldDtcbiAgODA6XHRcbiAgODE6XHRcdFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcbiAgODI6XHRcdH0gZWxzZSB7XG4gIDgzOlx0XHRcdGNvbnRyb2wgXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xuICA4NDpcdFx0XHRyZXQgPSBwaHlfd3JpdGUocGh5ZGV2LCBEUDgzODQ4X01JQ1IsIGNvbnRyb2wpO1xuICA4NTpcdFx0XHRpZiAocmV0KVxuICA4NjpcdFx0XHRcdHJldHVybiByZXQ7XG4gIDg3Olx0XG4gIDg4Olx0XHRcdHJldCA9IGRwODM4NDhfYWNrX2ludGVycnVwdChwaHlkZXYpO1xuICA4OTpcdFx0fVxuICA5MDpcdFxuICA5MTpcdFx0cmV0dXJuIHJldDtcbiAgOTI6XHR9XG4gIDkzOlx0XG4gIDk0Olx0c3RhdGljIGlycXJldHVybl90IGRwODM4NDhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuICA5NTpcdHtcbiAgOTY6XHRcdGludCBpcnFfc3RhdHVzO1xuICA5NzpcdFxuICA5ODpcdFx0aXJxX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSVNSKTtcbiAgOTk6XHRcdGlmIChpcnFfc3RhdHVzIFx1MDAzYyAwKSB7XG4gMTAwOlx0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4OTEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSB3ZSBnby4uLgoKKipEZWx2aW5nIGludG8gdGhlIGRwODM4NDguYyBTb3VyY2UqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNgLiBJJiMzOTt2ZSBhbHJlYWR5IGdvdCBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGJhc2ljIFBIWSBmdW5jdGlvbnMsIGJ1dCB0aGVyZSBhcmUgYWx3YXlzIG51YW5jZXMgdG8gdW5jb3ZlciBhbmQgb3B0aW1pemF0aW9ucyB0byBjb25zaWRlci4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBsaW5rIHNwZWVkIGFuZCBkdXBsZXhpdHkgbmVnb3RpYXRpb24sIGVycm9yIGRldGVjdGlvbiwgYW5kIGFueSBzcGVjaWZpYyBxdWlya3Mgb2YgdGhpcyBwYXJ0aWN1bGFyIFBIWSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBjbG9zZWx5IGF0IHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgY2xldmVyIHRyaWNrcyB1c2VkIGZvciBlZmZpY2llbmN5IG9yIHNwZWNpZmljIGhhcmR3YXJlIHdvcmthcm91bmRzIGltcGxlbWVudGVkLiBJJiMzOTtsbCBhbHNvIGJlIHNlYXJjaGluZyBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMgdGhhdCBjb3VsZCBhcmlzZSBpbiBhIG11bHRpdGhyZWFkZWQgbmV0d29yayBzdGFjay4gRnVydGhlcm1vcmUsIEkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGludGVycnVwdCBoYW5kbGluZywgbG9va2luZyBmb3IgYW55IG9wcG9ydHVuaXRpZXMgdG8gaW1wcm92ZSByZXNwb25zaXZlbmVzcyBvciByZWR1Y2UgaW50ZXJydXB0IGxhdGVuY3kuIFVsdGltYXRlbHksIG15IGdvYWwgaXMgdG8gYXNzZXNzIHRoZSBjb2RlJiMzOTtzIHF1YWxpdHksIGlkZW50aWZ5IGFueSBhcmVhcyBmb3IgaW1wcm92ZW1lbnQsIGFuZCBlbnN1cmUgaXQgaW50ZWdyYXRlcyBzZWFtbGVzc2x5IGludG8gdGhlIGJyb2FkZXIgbmV0d29ya2luZyBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gd2l0aGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAxOlx0XHRcdHJldHVybiBJUlFfTk9ORTtcbiAxMDI6XHRcdH1cbiAxMDM6XHRcbiAxMDQ6XHRcdGlmICghKGlycV9zdGF0dXMgXHUwMDI2IERQODM4NDhfSU5UX01BU0spKVxuIDEwNTpcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4gMTA2Olx0XG4gMTA3Olx0XHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XG4gMTA4Olx0XG4gMTA5Olx0XHRyZXR1cm4gSVJRX0hBTkRMRUQ7XG4gMTEwOlx0fVxuIDExMTpcdFxuIDExMjpcdHN0YXRpYyBpbnQgZHA4Mzg0OF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIDExMzpcdHtcbiAxMTQ6XHRcdGludCB2YWw7XG4gMTE1Olx0XG4gMTE2Olx0XHQvKiBEUDgzNjIwIGFsd2F5cyByZXBvcnRzIEF1dG8gTmVnb3RpYXRpb24gQWJpbGl0eSBvbiBCTVNSLiBJbnN0ZWFkLFxuIDExNzpcdFx0ICogd2UgY2hlY2sgaW5pdGlhbCB2YWx1ZSBvZiBCTUNSIEF1dG8gbmVnb3RpYXRpb24gZW5hYmxlIGJpdFxuIDExODpcdFx0ICovXG4gMTE5Olx0XHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9CTUNSKTtcbiAxMjA6XHRcdGlmICh2YWwgXHUwMDNjIDApXG4gMTIxOlx0XHRcdHJldHVybiB2YWw7XG4gMTIyOlx0XG4gMTIzOlx0XHRpZiAoISh2YWwgXHUwMDI2IEJNQ1JfQU5FTkFCTEUpKVxuIDEyNDpcdFx0XHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTtcbiAxMjU6XHRcbiAxMjY6XHRcdHJldHVybiAwO1xuIDEyNzpcdH1cbiAxMjg6XHRcbiAxMjk6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM4NDhfdGJsW10gPSB7XG4gMTMwOlx0XHR7IFRJX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuIDEzMTpcdFx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbiAxMzI6XHRcdHsgVElfRFA4MzYyMF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbiAxMzM6XHRcdHsgVExLMTBYX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuIDEzNDpcdFx0eyB9XG4gMTM1Olx0fTtcbiAxMzY6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRwODM4NDhfdGJsKTtcbiAxMzc6XHRcbiAxMzg6XHQjZGVmaW5lIERQODM4NDhfUEhZX0RSSVZFUihfaWQsIF9uYW1lLCBfY29uZmlnX2luaXQpXHRcdFxcXG4gMTM5Olx0XHR7XHRcdFx0XHRcdFx0XHRcXFxuIDE0MDpcdFx0XHQucGh5X2lkXHRcdD0gX2lkLFx0XHRcdFx0XFxcbiAxNDE6XHRcdFx0LnBoeV9pZF9tYXNrXHQ9IDB4ZmZmZmZmZjAsXHRcdFx0XFxcbiAxNDI6XHRcdFx0Lm5hbWVcdFx0PSBfbmFtZSxcdFx0XHRcXFxuIDE0MzpcdFx0XHQvKiBQSFlfQkFTSUNfRkVBVFVSRVMgKi9cdFx0XHRcXFxuIDE0NDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIDE0NTpcdFx0XHQuc29mdF9yZXNldFx0PSBnZW5waHlfc29mdF9yZXNldCxcdFx0XFxcbiAxNDY6XHRcdFx0LmNvbmZpZ19pbml0XHQ9IF9jb25maWdfaW5pdCxcdFx0XHRcXFxuIDE0NzpcdFx0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcdFx0XFxcbiAxNDg6XHRcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXHRcdFxcXG4gMTQ5Olx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gMTUwOlx0XHRcdC8qIElSUSByZWxhdGVkICovXHRcdFx0XHRcXFxuIDE1MTpcdFx0XHQuY29uZmlnX2ludHJcdD0gZHA4Mzg0OF9jb25maWdfaW50cixcdFx0XFxcbiAxNTI6XHRcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBkcDgzODQ4X2hhbmRsZV9pbnRlcnJ1cHQsXHRcXFxuIDE1MzpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIDE1NDpcdFx0XHQuZmxhZ3NcdFx0PSBQSFlfUlNUX0FGVEVSX0NMS19FTixcdFx0XFxcbiAxNTU6XHRcdH1cbiAxNTY6XHRcbiAxNTc6XHRzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcbiAxNTg6XHRcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzODQ4Q19QSFlfSUQsIFwmIzM0O1RJIERQODM4NDhDIDEwLzEwMCBNYnBzIFBIWVwmIzM0OyxcbiAxNTk6XHRcdFx0XHQgICBOVUxMKSxcbiAxNjA6XHRcdERQODM4NDhfUEhZX0RSSVZFUihOU19EUDgzODQ4Q19QSFlfSUQsIFwmIzM0O05TIERQODM4NDhDIDEwLzEwMCBNYnBzIFBIWVwmIzM0OyxcbiAxNjE6XHRcdFx0XHQgICBOVUxMKSxcbiAxNjI6XHRcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzNjIwX1BIWV9JRCwgXCYjMzQ7VEkgRFA4MzYyMCAxMC8xMDAgTWJwcyBQSFlcJiMzNDssXG4gMTYzOlx0XHRcdFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXG4gMTY0Olx0XHREUDgzODQ4X1BIWV9EUklWRVIoVExLMTBYX1BIWV9JRCwgXCYjMzQ7VEkgVExLMTBYIDEwLzEwMCBNYnBzIFBIWVwmIzM0OyxcbiAxNjU6XHRcdFx0XHQgICBOVUxMKSxcbiAxNjY6XHR9O1xuIDE2NzpcdG1vZHVsZV9waHlfZHJpdmVyKGRwODM4NDhfZHJpdmVyKTtcbiAxNjg6XHRcbiAxNjk6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFkgZHJpdmVyXCYjMzQ7KTtcbiAxNzA6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0FuZHJldyBGLiBEYXZpcyBcdTAwM2NhZmRAdGkuY29tXHUwMDNlXCYjMzQ7KTtcbiAxNzE6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDIxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgRFA4Mzg0OCBFbXVsYXRpb24gUG9zc2liaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBkcDgzODQ4YCBkcml2ZXIsIHNwZWNpZmljYWxseSwgaXQmIzM5O3MgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IGFuZCBEUDgzNjIwIFBIWSBjaGlwcywgd2hpY2ggbWFrZXMgc2Vuc2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgYWN0dWFsbHkgKnVzZSogdGhpcyB3aXRoaW4gYSBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudD8gSXMgdGhlcmUgYW55IGtpbmQgb2YgZW11bGF0aW9uIGF2YWlsYWJsZSwgZWl0aGVyIHRocm91Z2ggc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucywgR29vZ2xlIENvbXB1dGUgRW5naW5lIGZlYXR1cmVzLCBhIFVTQi1iYXNlZCBzb2x1dGlvbiwgb3IgZXZlbiBhIHB1cmUgc29mdHdhcmUgZW11bGF0aW9uPwoKVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgUUVNVSBvciBHQ0UgZXZlbiAqcHJlc2VudCogYSBEUDgzNjIwIG9yIERQODM4NDggdG8gdGhlIGd1ZXN0IE9TLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBhbnkgb2YgdGhlIGV4aXN0aW5nIEV0aGVybmV0IGRyaXZlcnMgb3IsIHBvdGVudGlhbGx5LCBldmVuIGEgVVNCIGRyaXZlciwgaW5jb3Jwb3JhdGVzIG9yIHJlZmVyZW5jZXMgdGhlIGBkcDgzODQ4YC4gTXkgbmV4dCBzdGVwIGlzIGEgdGFyZ2V0ZWQgc2VhcmNoLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGNsdWVzLiBJJiMzOTtsbCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgdGhlIGBUSV9EUDgzNjIwX1BIWV9JRGAgZGVmaW5pdGlvbiwgdGhlIFBIWSBJRCBgMHgyMDAwNWNlMGAsIG9yIHNpbXBseSB0aGUgc3RyaW5nIGBkcDgzODQ4YCBpdHNlbGYgd2l0aGluIHRoZSBrZXJuZWwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRhdGEgSSBuZWVkIHRvIGtub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OygweDIwMDA1Y2UwfFRJX0RQODM2MjBfUEhZX0lEfGRwODM4NDgpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHM9MzU3PVx0cGh5MDogZXRoZXJuZXQtcGh5QDEge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHMtMzY2LVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHM6MzY3Olx0XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZkcDgzODQ4Y19yc3RcdTAwM2U7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzLTM2OC1cdH07XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0cz0zNzE9XHUwMDI2cGluY3RybCB7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzOjM3MjpcdGRwODM4NDhjIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHM6MzczOlx0XHRkcDgzODQ4Y19yc3Q6IGRwODM4NDhjLXJzdCB7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzLTM3NC1cdFx0XHRyb2NrY2hpcCxwaW5zID0gXHUwMDNjMiBSS19QRDAgUktfRlVOQ19HUElPIFx1MDAyNnBjZmdfcHVsbF9ub25lXHUwMDNlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01OT1vYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXHQmIzQzOz0gZHA4MzgyMi5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVx0JiM0Mzs9IGRwODM4NDgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTYxLW9iai0kKENPTkZJR19EUDgzODY3X1BIWSlcdCYjNDM7PSBkcDgzODY3Lm9cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTExLSNkZWZpbmUgVElfRFA4Mzg0OENfUEhZX0lEXHRcdDB4MjAwMDVjYTBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTI6I2RlZmluZSBUSV9EUDgzNjIwX1BIWV9JRFx0XHQweDIwMDA1Y2UwXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzLSNkZWZpbmUgTlNfRFA4Mzg0OENfUEhZX0lEXHRcdDB4MjAwMDVjOTBcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1NDpzdGF0aWMgaW50IGRwODM4NDhfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy02MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NjE6c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTYyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY5LVx0aWYgKHBoeWRldi1cdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3MDpcdFx0cmV0ID0gZHA4Mzg0OF9hY2tfaW50ZXJydXB0KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTcxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjg4Olx0XHRyZXQgPSBkcDgzODQ4X2Fja19pbnRlcnJ1cHQocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODktXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05My1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6OTQ6c3RhdGljIGlycXJldHVybl90IGRwODM4NDhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMTEtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjExMjpzdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTEzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZHA4Mzg0OF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTMwLVx0eyBUSV9EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTMxLVx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTMyOlx0eyBUSV9EUDgzNjIwX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzMtXHR7IFRMSzEwWF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNS19O1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzY6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkcDgzODQ4X3RibCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNy1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1MC1cdFx0LyogSVJRIHJlbGF0ZWQgKi9cdFx0XHRcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1MTpcdFx0LmNvbmZpZ19pbnRyXHQ9IGRwODM4NDhfY29uZmlnX2ludHIsXHRcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1MjpcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBkcDgzODQ4X2hhbmRsZV9pbnRlcnJ1cHQsXHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNTMtXHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNTYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1NzpzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTU4LVx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRJX0RQODM4NDhDX1BIWV9JRCwgXCYjMzQ7VEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYxLVx0XHRcdCAgIE5VTEwpLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjI6XHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4MzYyMF9QSFlfSUQsIFwmIzM0O1RJIERQODM2MjAgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjM6XHRcdFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NC1cdERQODM4NDhfUEhZX0RSSVZFUihUTEsxMFhfUEhZX0lELCBcJiMzNDtUSSBUTEsxMFggMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTY2LX07XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2Nzptb2R1bGVfcGh5X2RyaXZlcihkcDgzODQ4X2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIERQODM4NDggUEhZIEluc3RhbnRpYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhlIERQODM4NDggUEhZIGRyaXZlciBnZXRzIGxvYWRlZCBpbiBMaW51eC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoZSBzdGFuZGFyZCBNRElPIGJ1cyBzY2FubmluZyBwcm9jZXNzLiBJdCBtYXRjaGVzIGFnYWluc3QgYGRwODM4NDhfdGJsYCBiYXNlZCBvbiB0aGUgUEhZIElEIHJlZ2lzdGVycywgc3BlY2lmaWNhbGx5IHdoZW4gYChwaHlfaWQgJmFtcDsgMHhmZmZmZmZmMClgIG1hdGNoZXMgYFRJX0RQODM2MjBfUEhZX0lEYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuCgpOb3csIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBEUDgzODQ4IGlzICplbXVsYXRlZCogaW4gUUVNVS4gSSBuZWVkIHRvIHNlZSB3aGF0IFFFTVUgb2ZmZXJzIGluIHRlcm1zIG9mIGVtdWxhdGVkIGV0aGVybmV0IFBIWXMgb3IgTURJTyBkZXZpY2VzLiBJIGtub3cgaXQgaGFuZGxlcyB0aGUgdXN1YWwgc3VzcGVjdHMg4oCTIGUxMDAwLCBydGw4MTM5LCB2aXJ0aW8tbmV0LCBwY25ldCwgbmUya19wY2ksIHRnMy9iY201N3h4IOKAkyBidXQgbm9uZSBvZiB0aG9zZSB0eXBpY2FsbHkgc2hvdyB1cCB3aXRoIGEgVEkgRFA4Mzg0OCBvciBEUDgzNjIwIFBIWSBJRCBvbiBhbiBNRElPIGJ1cy4gU28sIHRoYXQmIzM5O3MgYSBkZWFkIGVuZCwgYXQgbGVhc3QgYXMgZmFyIGFzIGEgZGlyZWN0IFFFTVUgZW11bGF0aW9uLgoKVGhhdCBtYWtlcyBtZSB0aGluazogQ2FuIGFuIE1ESU8gUEhZIGRldmljZSBiZSBicm91Z2h0IHVwIHZpYSB1c2Vyc3BhY2Ugb3Igc29tZSBzb3J0IG9mIHNvZnR3YXJlIGVtdWxhdGlvbiB0ZWNobmlxdWU/IExpa2UsIHBlcmhhcHMsIHNvbWUgbW9jayBkZXZpY2UsIHNpbWlsYXIgdG8gdGhlIGFwcHJvYWNoIHdpdGggdXNiLWdhZGdldCBvciBuZXRsaW5rIGludGVyZmFjZXM/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgdXNlcnNwYWNlIGludGVyZmFjZXMgb3Iga2VybmVsIGhvb2tzIHRoYXQgYWxsb3cgbWUgdG8gaW5zdGFudGlhdGUgYW4gTURJTyBQSFkgd2l0aCBhIHNwZWNpZmljIFBIWSBJRC4gSSYjMzk7bGwgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHVzaW5nIGtleXdvcmRzIGxpa2UgJiMzNDttZGlvJiMzNDsgYW5kICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OyB0byBzZWUgaWYgSSBjYW4gZmluZCBhbnl0aGluZyByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTExNz1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNC1cdGVsc2VcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMzU6XHRcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCAwLCBOVUxMKTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMzYtXHRpZiAoSVNfRVJSKHBoeSkpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYz01NTE9c3RhdGljIHZvaWQgdGphMTEwMl9wMV9yZWdpc3RlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg1LVx0XHQvKiBSZWFsIFBIWSBJRCBvZiBQb3J0IDEgaXMgMCAqL1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTg2Olx0XHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIFBIWV9JRF9USkExMTAyLCBmYWxzZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODctXHRcdGlmIChJU19FUlIocGh5KSkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5Mi1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5MzpcdFx0LyogT3ZlcndyaXRlIHBhcmVudCBkZXZpY2UuIHBoeV9kZXZpY2VfY3JlYXRlKCkgc2V0IHBhcmVudCB0b1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk0LVx0XHQgKiB0aGUgbWlpX2J1cy1cdTAwM2VkZXYsIHdoaWNoIGlzIG5vdCBjb3JyZWN0IGluIGNhc2UuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz03Mjg9c3RhdGljIGludCBwaHlfcmVxdWVzdF9kcml2ZXJfbW9kdWxlKHN0cnVjdCBwaHlfZGV2aWNlICpkZXYsIHUzMiBwaHlfaWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjc0ODpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0OS1cdFx0XHRcdCAgICAgYm9vbCBpc19jNDUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04MzktfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo4NDA6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTg0MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEwNzE9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTYtXHRcdGlmICghcilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA5NzpcdFx0XHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTgtXHRcdFx0XHRcdFx0IHRydWUsIFx1MDAyNmM0NV9pZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwMTpcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgaXNfYzQ1LCBcdTAwMjZjNDVfaWRzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzU3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVU0IgRXRoZXJuZXQgYW5kIE1ESU8gRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBVU0IgRXRoZXJuZXQgZGV2aWNlcywgcG90ZW50aWFsIE1ESU8gaW50ZXJhY3Rpb25zIChzcGVjaWZpY2FsbHkgd2l0aCB0aGUgRFA4Mzg0OCwgb3IgZXZlbiBhIHNpbXVsYXRlZCBNRElPKSwgYW5kIGlmIHRoZXNlIFBIWSBkcml2ZXJzIGFyZSBzdHJpY3RseSB0aWVkIHRvIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGFyY2hpdGVjdHVyZSBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGhlcmUuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIFVTQiBFdGhlcm5ldCBkcml2ZXJzIHRoZW1zZWx2ZXMsIGxvb2tpbmcgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3VzYi9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IG1hcHBpbmcgdGhpcyBhbGwgb3V0LiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBjbHVlcyBhYm91dCBNRElPIGJ1cyB1dGlsaXphdGlvbiwgRFA4Mzg0OCBzdXBwb3J0IChvciBhIHN0YW5kLWluKSwgYW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgdGhlIFBIWSBsYXllciBpbiBnZW5lcmFsLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlIHBvc3NpYmxlIGNvbmZpZ3VyYXRpb25zIGFuZCBwb3RlbnRpYWwgYWJzdHJhY3Rpb24gbGV2ZWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhkcDgzODQ4fERQODM4NDgpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjQwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgRFA4Mzg0OCBEcml2ZXIgQXNzb2NpYXRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoLCBpZiBhbnksIFVTQiBkZXZpY2VzIGluIHRoZSBMaW51eCBrZXJuZWwgcmVsYXRlIHRvIHRoZSBEUDgzODQ4IEV0aGVybmV0IFBIWS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBwbGFjZXMg4oCTIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnksIG5hdHVyYWxseSwgYXMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgbmV0d29yay1yZWxhdGVkIGRyaXZlcnMgcmVzaWRlLiBCdXQgSSBjYW4mIzM5O3QganVzdCBsaW1pdCBteXNlbGYgdG8gdGhhdC4gRXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGRlcGVuZGVuY2llcyBjYW4gYmUgdHJpY2t5LCBhbmQgdGhlIERQODM4NDggKm1pZ2h0KiBiZSB1c2VkIGluIGEgbGVzcyBkaXJlY3Qgd2F5LiBJIG5lZWQgdG8gY2FzdCBhIHdpZGVyIG5ldCBhbmQgY29uc2lkZXIgc2VhcmNoaW5nIHRoZSBlbnRpcmUga2VybmVsIHRyZWUuIFBlcmhhcHMgaXQmIzM5O3MgYmVpbmcgaGFuZGxlZCB0aHJvdWdoIGEgZ2VuZXJpYyBVU0IgZnJhbWV3b3JrIG9yIGEgbW9yZSBhYnN0cmFjdGVkIGxheWVyLiBBIGNvbXBsZXRlIHNlYXJjaCBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGEgdG9vbCB0byByYXBpZGx5IHNlYXJjaCB0aGUgc291cmNlIGNvZGUgZm9yIGFueSBkaXJlY3Qgb3IgaW5kaXJlY3QgYmluZGluZ3MgdG8gdGhlIERQODM4NDguIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RQODM4NDgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MjkxPUNPTkZJR19ST0NLQ0hJUF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MjkyOkNPTkZJR19EUDgzODQ4X1BIWT1tXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0yOTMtQ09ORklHX0RQODM4NjdfUEhZPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc9MzMzPUNPTkZJR19TTVNDX1BIWT15XG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc6MzM0OkNPTkZJR19EUDgzODQ4X1BIWT15XG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWctMzM1LUNPTkZJR19EUDgzODY3X1BIWT15XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNnhfcmRrLmR0cz0zMzE9XHRcdFx0XHRwaHkxOiBldGhlcm5ldC1waHlAMSB7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM2eF9yZGsuZHRzOjMzMjpcdFx0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O25hdGlvbmFsLERQODM4NDhWVlwmIzM0OztcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzZ4X3Jkay5kdHMtMzMzLVx0XHRcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzZ4X3Jkay5kdHM9MzQxPVx0XHRcdFx0cGh5MzogZXRoZXJuZXQtcGh5QDMge1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNnhfcmRrLmR0czozNDI6XHRcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtuYXRpb25hbCxEUDgzODQ4VlZcJiMzNDs7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM2eF9yZGsuZHRzLTM0My1cdFx0XHRcdFx0cmVnID0gXHUwMDNjM1x1MDAzZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00NDE9Y29uZmlnIERQODNUQzgxMV9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NDUtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NDY6Y29uZmlnIERQODM4NDhfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NDc6XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVwmIzM0O1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDQ4LVx0aGVscFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ5Olx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NTAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTU5PW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcdCYjNDM7PSBkcDgzODIyLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpXHQmIzQzOz0gZHA4Mzg0OC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNjEtb2JqLSQoQ09ORklHX0RQODM4NjdfUEhZKVx0JiM0Mzs9IGRwODM4Njcub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMi0vKlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozOiAqIERyaXZlciBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMTojZGVmaW5lIFRJX0RQODM4NDhDX1BIWV9JRFx0XHQweDIwMDA1Y2EwXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyLSNkZWZpbmUgVElfRFA4MzYyMF9QSFlfSURcdFx0MHgyMDAwNWNlMFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzojZGVmaW5lIE5TX0RQODM4NDhDX1BIWV9JRFx0XHQweDIwMDA1YzkwXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE0LSNkZWZpbmUgVExLMTBYX1BIWV9JRFx0XHRcdDB4MjAwMGEyMTBcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2LS8qIFJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNzojZGVmaW5lIERQODM4NDhfTUlDUlx0XHRcdDB4MTEgLyogTUlJIEludGVycnVwdCBDb250cm9sIFJlZ2lzdGVyICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE4OiNkZWZpbmUgRFA4Mzg0OF9NSVNSXHRcdFx0MHgxMiAvKiBNSUkgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xOS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjAtLyogTUlDUiBSZWdpc3RlciBGaWVsZHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjE6I2RlZmluZSBEUDgzODQ4X01JQ1JfSU5UX09FXHRcdEJJVCgwKSAvKiBJbnRlcnJ1cHQgT3V0cHV0IEVuYWJsZSAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyMjojZGVmaW5lIERQODM4NDhfTUlDUl9JTlRFTlx0XHRCSVQoMSkgLyogSW50ZXJydXB0IEVuYWJsZSAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0yMy1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjQtLyogTUlTUiBSZWdpc3RlciBGaWVsZHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjU6I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVF9FTlx0XHRCSVQoMCkgLyogUmVjZWl2ZSBFcnJvciBDb3VudGVyICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0ZIRl9JTlRfRU5cdFx0QklUKDEpIC8qIEZhbHNlIENhcnJpZXIgQ291bnRlciAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyNzojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UX0VOXHRcdEJJVCgyKSAvKiBBdXRvLW5lZ290aWF0aW9uIGNvbXBsZXRlICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI4OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU5cdFx0QklUKDMpIC8qIER1cGxleCBTdGF0dXMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mjk6I2RlZmluZSBEUDgzODQ4X01JU1JfU1BEX0lOVF9FTlx0XHRCSVQoNCkgLyogU3BlZWQgc3RhdHVzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMwOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOXHRCSVQoNSkgLyogTGluayBzdGF0dXMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzE6I2RlZmluZSBEUDgzODQ4X01JU1JfRURfSU5UX0VOXHRcdEJJVCg2KSAvKiBFbmVyZ3kgZGV0ZWN0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMyOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xRTV9JTlRfRU5cdFx0QklUKDcpIC8qIExpbmsgUXVhbGl0eSBNb25pdG9yICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTMzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNDojZGVmaW5lIERQODM4NDhfSU5UX0VOX01BU0tcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzU6XHQoRFA4Mzg0OF9NSVNSX0FOQ19JTlRfRU4gfFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzY6XHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU4gfFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mzc6XHQgRFA4Mzg0OF9NSVNSX1NQRF9JTlRfRU4gfFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mzg6XHQgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0zOS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDA6I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVFx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDE6I2RlZmluZSBEUDgzODQ4X01JU1JfRkhGX0lOVFx0XHRCSVQoOSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDI6I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVFx0XHRCSVQoMTApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQzOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRcdFx0QklUKDExKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0NDojZGVmaW5lIERQODM4NDhfTUlTUl9TUERfSU5UXHRcdEJJVCgxMilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDU6I2RlZmluZSBEUDgzODQ4X01JU1JfTElOS19JTlRcdFx0QklUKDEzKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0NjojZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRcdFx0QklUKDE0KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy00Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDg6I2RlZmluZSBEUDgzODQ4X0lOVF9NQVNLXHRcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ5Olx0KERQODM4NDhfTUlTUl9BTkNfSU5UIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUwOlx0IERQODM4NDhfTUlTUl9EVVBfSU5UIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUxOlx0IERQODM4NDhfTUlTUl9TUERfSU5UIHxcdFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUyOlx0IERQODM4NDhfTUlTUl9MSU5LX0lOVClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNTMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTU0PXN0YXRpYyBpbnQgZHA4Mzg0OF9hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTU1LXtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NTY6XHRpbnQgZXJyID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTYxPXN0YXRpYyBpbnQgZHA4Mzg0OF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNjQtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjY1Olx0Y29udHJvbCA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSUNSKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNjYtXHRpZiAoY29udHJvbCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTczLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NDpcdFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5UX09FO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NTpcdFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5URU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NzpcdFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSVNSLCBEUDgzODQ4X0lOVF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNzgtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODE6XHRcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTgyLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODM6XHRcdGNvbnRyb2wgXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo4NDpcdFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODUtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz05ND1zdGF0aWMgaXJxcmV0dXJuX3QgZHA4Mzg0OF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6OTg6XHRpcnFfc3RhdHVzID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05OS1cdGlmIChpcnFfc3RhdHVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMDMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEwNDpcdGlmICghKGlycV9zdGF0dXMgXHUwMDI2IERQODM4NDhfSU5UX01BU0spKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMDUtXHRcdHJldHVybiBJUlFfTk9ORTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTEyOT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM4NDhfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEzMDpcdHsgVElfRFA4Mzg0OENfUEhZX0lELCAweGZmZmZmZmYwIH0sXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEzMTpcdHsgTlNfRFA4Mzg0OENfUEhZX0lELCAweGZmZmZmZmYwIH0sXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMi1cdHsgVElfRFA4MzYyMF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTEzNj1NT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRwODM4NDhfdGJsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM3LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzg6I2RlZmluZSBEUDgzODQ4X1BIWV9EUklWRVIoX2lkLCBfbmFtZSwgX2NvbmZpZ19pbml0KVx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzktXHR7XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9MTU3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzODQ4X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNTg6XHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4Mzg0OENfUEhZX0lELCBcJiMzNDtUSSBEUDgzODQ4QyAxMC8xMDAgTWJwcyBQSFlcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1OS1cdFx0XHQgICBOVUxMKSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTYwOlx0RFA4Mzg0OF9QSFlfRFJJVkVSKE5TX0RQODM4NDhDX1BIWV9JRCwgXCYjMzQ7TlMgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjEtXHRcdFx0ICAgTlVMTCksXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MjpcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzNjIwX1BIWV9JRCwgXCYjMzQ7VEkgRFA4MzYyMCAxMC8xMDAgTWJwcyBQSFlcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2My1cdFx0XHQgICBkcDgzODQ4X2NvbmZpZ19pbml0KSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTY0Olx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRMSzEwWF9QSFlfSUQsIFwmIzM0O1RJIFRMSzEwWCAxMC8xMDAgTWJwcyBQSFlcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NS1cdFx0XHQgICBOVUxMKSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTE2Nz1tb2R1bGVfcGh5X2RyaXZlcihkcDgzODQ4X2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2OC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTY5Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWSBkcml2ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNzAtTU9EVUxFX0FVVEhPUihcJiMzNDtBbmRyZXcgRi4gRGF2aXMgXHUwMDNjYWZkQHRpLmNvbVx1MDAzZVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODY2CgkJCQkJCQlvdXRwdXQ6IDEzMwoJCQkJCQkJdGhvdWdodHM6IDU4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IERQODM4NDggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyAmIzM0O1dvcnRoRnV6emluZy4mIzM0OyBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZHA4Mzg0OF9jb25maWdfaW5pdGAgd2l0aGluIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYC4gVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NDgvRFA4MzYyMCBFdGhlcm5ldCBQSFkuIFJpZ2h0LCBhICpwaHlzaWNhbCogUEhZLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbC4KCk5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nLiBJIGtub3cgbXkgaGFyZHdhcmUsIGFuZCB0aGUgRFA4Mzg0OCBpcyBhIGRpc2NyZXRlIFBIWSB0cmFuc2NlaXZlciwgb2Z0ZW4gdXNlZCBvbiBlbWJlZGRlZCBBUk0vUG93ZXJQQyBib2FyZHMuIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGlzIGRpcmVjdGx5OyBpdCB1c2VzIGludGVncmF0ZWQgb3IgZ2VuZXJpYyBQSFkgZW11bGF0aW9ucyAoZS5nLiwgZTEwMDAsIFJUTDgyMDEgZm9yIGxhbjkxMTgpLCBub3QgdGhlIFRJIERQODM4NDggd2l0aCBpdHMgc3BlY2lmaWMgUEhZIElELiBNRElPIFBIWXMgY2FuJiMzOTt0IGJlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgZnJvbSB1c2Vyc3BhY2UgaW4gYSB3YXkgdGhhdCB3b3VsZCBhbGxvdyBmb3IgaW50ZXJhY3Rpb24uCgpTbywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGVzZSBjb2RlIHBhdGhzIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY2AgYXJlIHNpbXBseSBpbmFjY2Vzc2libGUgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0Ugc2V0dXBzLiBUaGVyZWZvcmUsIGJhc2VkIG9uIHRoZSBpbnN0cnVjdGlvbiBzZXQsIHRoaXMgbW9kaWZpY2F0aW9uIGlzbiYjMzk7dCB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBnZXQgcmVhZHkgdG8gc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSByZXR1cm4gdmFsdWUgY2hlY2sgZm9yIHBoeV9yZWFkIGluIGRwODM4NDhfY29uZmlnX2luaXQoKSB3aXRoaW4gZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy4gVGhpcyBkcml2ZXIgaXMgZm9yIGEgc3BlY2lmaWMgcGh5c2ljYWwgRXRoZXJuZXQgUEhZIGNoaXAgKFRJIERQODM4NDgvRFA4MzYyMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSByZXR1cm4gdmFsdWUgY2hlY2sgZm9yIHBoeV9yZWFkIGluIGRwODM4NDhfY29uZmlnX2luaXQoKSB3aXRoaW4gZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy4gVGhpcyBkcml2ZXIgaXMgZm9yIGEgc3BlY2lmaWMgcGh5c2ljYWwgRXRoZXJuZXQgUEhZIGNoaXAgKFRJIERQODM4NDgvRFA4MzYyMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTo1OToxOS42MDAzMDE2MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzY3NTIyMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MTkuNjAwMzA4MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDY1MzI3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ1MTRiNzI4OTQ4YTRmMjI2YjViYjdlMmE2NjAyZWMxNmMwNjg2ZDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBTZXAgMiAxOTo1OToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xcbmluZGV4IGQ4OGIxOTk5ZDU5NjIuLmU2NTY1MWFjNTY3YTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcXG5AQCAtMTE3LDYgKzExNyw5IEBAIHN0YXRpYyBpbnQgZHA4Mzg0OF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHQgKiB3ZSBjaGVjayBpbml0aWFsIHZhbHVlIG9mIEJNQ1IgQXV0byBuZWdvdGlhdGlvbiBlbmFibGUgYml0XFxuIFxcdCAqL1xcbiBcXHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9CTUNSKTtcXG4rXFx0aWYgKHZhbCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiB2YWw7XFxuK1xcbiBcXHRpZiAoISh2YWwgXFx1MDAyNiBCTUNSX0FORU5BQkxFKSlcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MjAuMDQxNjIxOTA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0NjMyNjE4NTMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDUxNGI3Mjg5NDhhNGYyMjZiNWJiN2UyYTY2MDJlYzE2YzA2ODZkNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTk6NTk6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NDguY1xuaW5kZXggZDg4YjE5OTlkNTk2Mi4uZTY1NjUxYWM1NjdhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcbkBAIC0xMTcsNiArMTE3LDkgQEAgc3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHQgKiB3ZSBjaGVjayBpbml0aWFsIHZhbHVlIG9mIEJNQ1IgQXV0byBuZWdvdGlhdGlvbiBlbmFibGUgYml0XG4gXHQgKi9cbiBcdHZhbCA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0JNQ1IpO1xuK1x0aWYgKHZhbCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHZhbDtcbitcbiBcdGlmICghKHZhbCBcdTAwMjYgQk1DUl9BTkVOQUJMRSkpXG4gXHRcdHBoeWRldi1cdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MjAuMDQxNjIzMzU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ3NDk2NjQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQSFkgRHJpdmVyIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29tbWl0IGNoYW5naW5nIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG5hdHVyZSBvZiB0aGlzIGNoYW5nZS4gSXQgc2VlbXMgd2UncmUgYWRkaW5nIGEgY2hlY2sgZm9yIGEgbmVnYXRpdmUgcmV0dXJuIHZhbHVlIGZyb20gYHBoeV9yZWFkYCBpbiBgZHA4Mzg0OF9jb25maWdfaW5pdGAuIEEgbmVnYXRpdmUgdmFsdWUgdGhlcmUgaW5kaWNhdGVzIGFuIGVycm9yIHJlYWRpbmcgdGhlIFBIWSdzIGNvbnRyb2wgcmVnaXN0ZXIuIFNtYXJ0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB3aWRlciBpbXBsaWNhdGlvbnMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cbkZpcnN0LCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhpcyBoYXJkd2FyZSBldmVuIGhhcyBhIHBhdGggdG8gbXkgY3VycmVudCBidWlsZCBjb25maWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgUEhZIGRyaXZlciBpcyB1c2VkLCBhbmQgaW4gd2hhdCBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNgIGZpbGUgYW5kIHRoZW4gaXRzIHN1cnJvdW5kaW5nIEtjb25maWcgZmlsZXMuIEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzPyBXaGF0IGFyZSB0aGUgaGFyZHdhcmUgcmVxdWlyZW1lbnRzPyBDYW4gSSBldmVuICpyZWFjaCogdGhlIERQODM4NDggaW4gbXkgY3VycmVudCBlbnZpcm9ubWVudCwgc2F5LCBpbiBRRU1VPyBJJ2xsIHByb2JhYmx5IHJ1biBhIHF1aWNrIHNlYXJjaCBmb3IgYGRwODM4NDhgIGluIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBhY3Jvc3MgdGhlIHJlbGV2YW50IGRyaXZlciB1c2FnZSwgdG8gZW5zdXJlIGl0IGlzIGF2YWlsYWJsZSBpbiBteSBidWlsZC4gSSdtIHRoaW5raW5nIG9mIHJlYWNoYWJpbGl0eSBhbmQgaW1wYWN0LiBBbnkgcHJvYmxlbXMgb3Igc3VycHJpc2VzLCBpZiB0aGlzIFBIWSBjYW4gb3IgY2FuJ3QgYmUgcmVhY2hlZCBpbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZT9cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5OSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjI1LjUxNjU5NTI1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI0Nzk3ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFA4Mzg0OFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDQxPWNvbmZpZyBEUDgzVEM4MTFfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NDUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ2OmNvbmZpZyBEUDgzODQ4X1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ0NzpcXHR0cmlzdGF0ZSBcXFwiVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDQ4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NDk6XFx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTU5PW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcXHQrPSBkcDgzODIyLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVxcdCs9IGRwODM4NDgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02MS1vYmotJChDT05GSUdfRFA4Mzg2N19QSFkpXFx0Kz0gZHA4Mzg2Ny5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTItLypcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM6ICogRHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMTojZGVmaW5lIFRJX0RQODM4NDhDX1BIWV9JRFxcdFxcdDB4MjAwMDVjYTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyLSNkZWZpbmUgVElfRFA4MzYyMF9QSFlfSURcXHRcXHQweDIwMDA1Y2UwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzojZGVmaW5lIE5TX0RQODM4NDhDX1BIWV9JRFxcdFxcdDB4MjAwMDVjOTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE0LSNkZWZpbmUgVExLMTBYX1BIWV9JRFxcdFxcdFxcdDB4MjAwMGEyMTBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYtLyogUmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNzojZGVmaW5lIERQODM4NDhfTUlDUlxcdFxcdFxcdDB4MTEgLyogTUlJIEludGVycnVwdCBDb250cm9sIFJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxODojZGVmaW5lIERQODM4NDhfTUlTUlxcdFxcdFxcdDB4MTIgLyogTUlJIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjAtLyogTUlDUiBSZWdpc3RlciBGaWVsZHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjIxOiNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVF9PRVxcdFxcdEJJVCgwKSAvKiBJbnRlcnJ1cHQgT3V0cHV0IEVuYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjI6I2RlZmluZSBEUDgzODQ4X01JQ1JfSU5URU5cXHRcXHRCSVQoMSkgLyogSW50ZXJydXB0IEVuYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0yNC0vKiBNSVNSIFJlZ2lzdGVyIEZpZWxkcyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjU6I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVF9FTlxcdFxcdEJJVCgwKSAvKiBSZWNlaXZlIEVycm9yIENvdW50ZXIgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0ZIRl9JTlRfRU5cXHRcXHRCSVQoMSkgLyogRmFsc2UgQ2FycmllciBDb3VudGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyNzojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UX0VOXFx0XFx0QklUKDIpIC8qIEF1dG8tbmVnb3RpYXRpb24gY29tcGxldGUgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI4OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU5cXHRcXHRCSVQoMykgLyogRHVwbGV4IFN0YXR1cyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mjk6I2RlZmluZSBEUDgzODQ4X01JU1JfU1BEX0lOVF9FTlxcdFxcdEJJVCg0KSAvKiBTcGVlZCBzdGF0dXMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMwOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOXFx0QklUKDUpIC8qIExpbmsgc3RhdHVzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozMTojZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRfRU5cXHRcXHRCSVQoNikgLyogRW5lcmd5IGRldGVjdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzI6I2RlZmluZSBEUDgzODQ4X01JU1JfTFFNX0lOVF9FTlxcdFxcdEJJVCg3KSAvKiBMaW5rIFF1YWxpdHkgTW9uaXRvciAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNDojZGVmaW5lIERQODM4NDhfSU5UX0VOX01BU0tcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNTpcXHQoRFA4Mzg0OF9NSVNSX0FOQ19JTlRfRU4gfFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM2OlxcdCBEUDgzODQ4X01JU1JfRFVQX0lOVF9FTiB8XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mzc6XFx0IERQODM4NDhfTUlTUl9TUERfSU5UX0VOIHxcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozODpcXHQgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzktXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MDojZGVmaW5lIERQODM4NDhfTUlTUl9SSEZfSU5UXFx0XFx0QklUKDgpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MTojZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MjojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UXFx0XFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDM6I2RlZmluZSBEUDgzODQ4X01JU1JfRFVQX0lOVFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ0OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRcXHRcXHRCSVQoMTIpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0NTojZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVFxcdFxcdEJJVCgxMylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0VEX0lOVFxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDg6I2RlZmluZSBEUDgzODQ4X0lOVF9NQVNLXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDk6XFx0KERQODM4NDhfTUlTUl9BTkNfSU5UIHxcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MDpcXHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlQgfFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUxOlxcdCBEUDgzODQ4X01JU1JfU1BEX0lOVCB8XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NTI6XFx0IERQODM4NDhfTUlTUl9MSU5LX0lOVClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9NTQ9c3RhdGljIGludCBkcDgzODQ4X2Fja19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTU1LXtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjU2OlxcdGludCBlcnIgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlTUik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9NjE9c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NjU6XFx0Y29udHJvbCA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSUNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY2LVxcdGlmIChjb250cm9sIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNzMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NDpcXHRcXHRjb250cm9sIHw9IERQODM4NDhfTUlDUl9JTlRfT0U7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NTpcXHRcXHRjb250cm9sIHw9IERQODM4NDhfTUlDUl9JTlRFTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Nzc6XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSVNSLCBEUDgzODQ4X0lOVF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc4LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjgxOlxcdFxcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODM6XFx0XFx0Y29udHJvbCBcXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODQ6XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTg1LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTk0PXN0YXRpYyBpcnFyZXR1cm5fdCBkcDgzODQ4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo5ODpcXHRpcnFfc3RhdHVzID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTktXFx0aWYgKGlycV9zdGF0dXMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEwMy1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEwNDpcXHRpZiAoIShpcnFfc3RhdHVzIFxcdTAwMjYgRFA4Mzg0OF9JTlRfTUFTSykpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMDUtXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkcDgzODQ4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTMwOlxcdHsgVElfRFA4Mzg0OENfUEhZX0lELCAweGZmZmZmZmYwIH0sXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzE6XFx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMi1cXHR7IFRJX0RQODM2MjBfUEhZX0lELCAweGZmZmZmZmYwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTEzNj1NT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRwODM4NDhfdGJsKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNy1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEzODojZGVmaW5lIERQODM4NDhfUEhZX0RSSVZFUihfaWQsIF9uYW1lLCBfY29uZmlnX2luaXQpXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM5LVxcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTE1Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1ODpcXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4Mzg0OENfUEhZX0lELCBcXFwiVEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1OS1cXHRcXHRcXHQgICBOVUxMKSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MDpcXHREUDgzODQ4X1BIWV9EUklWRVIoTlNfRFA4Mzg0OENfUEhZX0lELCBcXFwiTlMgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2MS1cXHRcXHRcXHQgICBOVUxMKSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MjpcXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4MzYyMF9QSFlfSUQsIFxcXCJUSSBEUDgzNjIwIDEwLzEwMCBNYnBzIFBIWVxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjMtXFx0XFx0XFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjQ6XFx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRMSzEwWF9QSFlfSUQsIFxcXCJUSSBUTEsxMFggMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NS1cXHRcXHRcXHQgICBOVUxMKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9MTY3PW1vZHVsZV9waHlfZHJpdmVyKGRwODM4NDhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2OC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2OTpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZIGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTcwLU1PRFVMRV9BVVRIT1IoXFxcIkFuZHJldyBGLiBEYXZpcyBcXHUwMDNjYWZkQHRpLmNvbVxcdTAwM2VcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MjUuNjc5MDgyNzgzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTAyOTE4MDU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgV29ydGhpbmVzcyoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdC4gTGV0J3MgZGl2ZSByaWdodCBpbnRvIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYCBhbmQgZ2V0IGEgaGFuZGxlIG9uIGhvdyBNRElPIFBIWSBkcml2ZXJzIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIGV2ZW4gd2l0aCB0b29scyBsaWtlIHN5emthbGxlci5cblxuSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYSB3YXkgdG8gY3JlYXRlIGFuZCBpbnRlcmFjdCB3aXRoIE1ESU8gUEhZIGRldmljZXMgd2l0aG91dCAqYWN0dWFsKiBwaHlzaWNhbCBoYXJkd2FyZS4gQ2FuIEkgc2ltdWxhdGUgdGhlbSB1c2luZyBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIGBtZGlvIG5ldGxpbmtgLCBhIG1vY2sgTURJTywgbWF5YmUgZXZlbiBhIFVTQiBFdGhlcm5ldCBkb25nbGU/IE9yIGFtIEkgY29tcGxldGVseSByZWxpYW50IG9uIHRoZSBleGlzdGVuY2Ugb2YgcmVhbCBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBvciBBQ1BJIHNldHVwPyBNb3JlIHNwZWNpZmljYWxseSwgY2FuIEkgcHJvYmUgdGhlIERQODM2MjAgUEhZIElEIGluIFFFTVU/IFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludC5cblxuQmVmb3JlIGdldHRpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQSFkgZHJpdmVycyBhcmUgdXRpbGl6ZWQuIEFyZSB0aGV5IGdlbmVyYWxseSBjb25zaWRlcmVkIFwibm9uLXJlYWNoYWJsZVwiIGhhcmR3YXJlLCBvciBpcyB0aGVyZSBhIHdheSB0byBleGVyY2lzZSB0aGVtIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgZHJpdmVyIGZpdHMgd2l0aGluIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuTm93LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBpbnN0cnVjdGlvbiwgc3BlY2lmaWNhbGx5IHdoYXQgbWFrZXMgdGhpcyBwYXRjaCBub3Qgd29ydGggZnV6emluZy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGlzIHdvcmsgaXNuJ3Q6XG5cbiogICBEb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBvciBjb21tZW50cy5cbiogICBEZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nIG9yIHRyYWNlcG9pbnRzLlxuKiAgIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJ3QgYWZmZWN0IGV4ZWN1dGlvbi5cbiogICBDb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSBvciBzaW1pbGFyIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIChsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gKS5cbiogICBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy5cbiogICBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCBjYWxsYmFja3MuXG5cblNvIEkgbmVlZCB0byBjaGVjayBob3cgYGRwODM4NDhfY29uZmlnX2luaXRgIHdvcmtzLCBhbmQgdGhlbiBJIGFtIGdvaW5nIHRvIHJlYWQgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTU1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjMwLjcwODI2NTQyNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBEcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tL1xcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gIDEwOlxcdFxcbiAgMTE6XFx0I2RlZmluZSBUSV9EUDgzODQ4Q19QSFlfSURcXHRcXHQweDIwMDA1Y2EwXFxuICAxMjpcXHQjZGVmaW5lIFRJX0RQODM2MjBfUEhZX0lEXFx0XFx0MHgyMDAwNWNlMFxcbiAgMTM6XFx0I2RlZmluZSBOU19EUDgzODQ4Q19QSFlfSURcXHRcXHQweDIwMDA1YzkwXFxuICAxNDpcXHQjZGVmaW5lIFRMSzEwWF9QSFlfSURcXHRcXHRcXHQweDIwMDBhMjEwXFxuICAxNTpcXHRcXG4gIDE2OlxcdC8qIFJlZ2lzdGVycyAqL1xcbiAgMTc6XFx0I2RlZmluZSBEUDgzODQ4X01JQ1JcXHRcXHRcXHQweDExIC8qIE1JSSBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAqL1xcbiAgMTg6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JcXHRcXHRcXHQweDEyIC8qIE1JSSBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICovXFxuICAxOTpcXHRcXG4gIDIwOlxcdC8qIE1JQ1IgUmVnaXN0ZXIgRmllbGRzICovXFxuICAyMTpcXHQjZGVmaW5lIERQODM4NDhfTUlDUl9JTlRfT0VcXHRcXHRCSVQoMCkgLyogSW50ZXJydXB0IE91dHB1dCBFbmFibGUgKi9cXG4gIDIyOlxcdCNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVEVOXFx0XFx0QklUKDEpIC8qIEludGVycnVwdCBFbmFibGUgKi9cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0LyogTUlTUiBSZWdpc3RlciBGaWVsZHMgKi9cXG4gIDI1OlxcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX1JIRl9JTlRfRU5cXHRcXHRCSVQoMCkgLyogUmVjZWl2ZSBFcnJvciBDb3VudGVyICovXFxuICAyNjpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UX0VOXFx0XFx0QklUKDEpIC8qIEZhbHNlIENhcnJpZXIgQ291bnRlciAqL1xcbiAgMjc6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVF9FTlxcdFxcdEJJVCgyKSAvKiBBdXRvLW5lZ290aWF0aW9uIGNvbXBsZXRlICovXFxuICAyODpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9EVVBfSU5UX0VOXFx0XFx0QklUKDMpIC8qIER1cGxleCBTdGF0dXMgKi9cXG4gIDI5OlxcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRfRU5cXHRcXHRCSVQoNCkgLyogU3BlZWQgc3RhdHVzICovXFxuICAzMDpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTlxcdEJJVCg1KSAvKiBMaW5rIHN0YXR1cyAqL1xcbiAgMzE6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfRURfSU5UX0VOXFx0XFx0QklUKDYpIC8qIEVuZXJneSBkZXRlY3QgKi9cXG4gIDMyOlxcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xRTV9JTlRfRU5cXHRcXHRCSVQoNykgLyogTGluayBRdWFsaXR5IE1vbml0b3IgKi9cXG4gIDMzOlxcdFxcbiAgMzQ6XFx0I2RlZmluZSBEUDgzODQ4X0lOVF9FTl9NQVNLXFx0XFx0XFxcXFxcbiAgMzU6XFx0XFx0KERQODM4NDhfTUlTUl9BTkNfSU5UX0VOIHxcXHRcXFxcXFxuICAzNjpcXHRcXHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU4gfFxcdFxcXFxcXG4gIDM3OlxcdFxcdCBEUDgzODQ4X01JU1JfU1BEX0lOVF9FTiB8XFx0XFxcXFxcbiAgMzg6XFx0XFx0IERQODM4NDhfTUlTUl9MSU5LX0lOVF9FTilcXG4gIDM5OlxcdFxcbiAgNDA6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVFxcdFxcdEJJVCg4KVxcbiAgNDE6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfRkhGX0lOVFxcdFxcdEJJVCg5KVxcbiAgNDI6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfQU5DX0lOVFxcdFxcdEJJVCgxMClcXG4gIDQzOlxcdCNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRcXHRcXHRCSVQoMTEpXFxuICA0NDpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9TUERfSU5UXFx0XFx0QklUKDEyKVxcbiAgNDU6XFx0I2RlZmluZSBEUDgzODQ4X01JU1JfTElOS19JTlRcXHRcXHRCSVQoMTMpXFxuICA0NjpcXHQjZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRcXHRcXHRCSVQoMTQpXFxuICA0NzpcXHRcXG4gIDQ4OlxcdCNkZWZpbmUgRFA4Mzg0OF9JTlRfTUFTS1xcdFxcdFxcXFxcXG4gIDQ5OlxcdFxcdChEUDgzODQ4X01JU1JfQU5DX0lOVCB8XFx0XFxcXFxcbiAgNTA6XFx0XFx0IERQODM4NDhfTUlTUl9EVVBfSU5UIHxcXHRcXFxcXFxuICA1MTpcXHRcXHQgRFA4Mzg0OF9NSVNSX1NQRF9JTlQgfFxcdFxcXFxcXG4gIDUyOlxcdFxcdCBEUDgzODQ4X01JU1JfTElOS19JTlQpXFxuICA1MzpcXHRcXG4gIDU0OlxcdHN0YXRpYyBpbnQgZHA4Mzg0OF9hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuICA1NTpcXHR7XFxuICA1NjpcXHRcXHRpbnQgZXJyID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xcbiAgNTc6XFx0XFxuICA1ODpcXHRcXHRyZXR1cm4gZXJyIFxcdTAwM2MgMCA/IGVyciA6IDA7XFxuICA1OTpcXHR9XFxuICA2MDpcXHRcXG4gIDYxOlxcdHN0YXRpYyBpbnQgZHA4Mzg0OF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiAgNjI6XFx0e1xcbiAgNjM6XFx0XFx0aW50IGNvbnRyb2wsIHJldDtcXG4gIDY0OlxcdFxcbiAgNjU6XFx0XFx0Y29udHJvbCA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSUNSKTtcXG4gIDY2OlxcdFxcdGlmIChjb250cm9sIFxcdTAwM2MgMClcXG4gIDY3OlxcdFxcdFxcdHJldHVybiBjb250cm9sO1xcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xcbiAgNzA6XFx0XFx0XFx0cmV0ID0gZHA4Mzg0OF9hY2tfaW50ZXJydXB0KHBoeWRldik7XFxuICA3MTpcXHRcXHRcXHRpZiAocmV0KVxcbiAgNzI6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0XFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5UX09FO1xcbiAgNzU6XFx0XFx0XFx0Y29udHJvbCB8PSBEUDgzODQ4X01JQ1JfSU5URU47XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlTUiwgRFA4Mzg0OF9JTlRfRU5fTUFTSyk7XFxuICA3ODpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gIDc5OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XFxuICA4MjpcXHRcXHR9IGVsc2Uge1xcbiAgODM6XFx0XFx0XFx0Y29udHJvbCBcXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xcbiAgODQ6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcXG4gIDg1OlxcdFxcdFxcdGlmIChyZXQpXFxuICA4NjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgODc6XFx0XFxuICA4ODpcXHRcXHRcXHRyZXQgPSBkcDgzODQ4X2Fja19pbnRlcnJ1cHQocGh5ZGV2KTtcXG4gIDg5OlxcdFxcdH1cXG4gIDkwOlxcdFxcbiAgOTE6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDkyOlxcdH1cXG4gIDkzOlxcdFxcbiAgOTQ6XFx0c3RhdGljIGlycXJldHVybl90IGRwODM4NDhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0aW50IGlycV9zdGF0dXM7XFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdGlycV9zdGF0dXMgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlTUik7XFxuICA5OTpcXHRcXHRpZiAoaXJxX3N0YXR1cyBcXHUwMDNjIDApIHtcXG4gMTAwOlxcdFxcdFxcdHBoeV9lcnJvcihwaHlkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTo1OTozMC43MDgzNDI1ODVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTcxMzQ0ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLi4uXG5cbioqRGVsdmluZyBpbnRvIHRoZSBkcDgzODQ4LmMgU291cmNlKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNgLiBJJ3ZlIGFscmVhZHkgZ290IGEgZ29vZCBncmFzcCBvZiB0aGUgYmFzaWMgUEhZIGZ1bmN0aW9ucywgYnV0IHRoZXJlIGFyZSBhbHdheXMgbnVhbmNlcyB0byB1bmNvdmVyIGFuZCBvcHRpbWl6YXRpb25zIHRvIGNvbnNpZGVyLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgbGluayBzcGVlZCBhbmQgZHVwbGV4aXR5IG5lZ290aWF0aW9uLCBlcnJvciBkZXRlY3Rpb24sIGFuZCBhbnkgc3BlY2lmaWMgcXVpcmtzIG9mIHRoaXMgcGFydGljdWxhciBQSFkgaW1wbGVtZW50YXRpb24uIEknbGwgYmUgbG9va2luZyBjbG9zZWx5IGF0IHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgY2xldmVyIHRyaWNrcyB1c2VkIGZvciBlZmZpY2llbmN5IG9yIHNwZWNpZmljIGhhcmR3YXJlIHdvcmthcm91bmRzIGltcGxlbWVudGVkLiBJJ2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBsb2NraW5nIGlzc3VlcyB0aGF0IGNvdWxkIGFyaXNlIGluIGEgbXVsdGl0aHJlYWRlZCBuZXR3b3JrIHN0YWNrLiBGdXJ0aGVybW9yZSwgSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcsIGxvb2tpbmcgZm9yIGFueSBvcHBvcnR1bml0aWVzIHRvIGltcHJvdmUgcmVzcG9uc2l2ZW5lc3Mgb3IgcmVkdWNlIGludGVycnVwdCBsYXRlbmN5LiBVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIGFzc2VzcyB0aGUgY29kZSdzIHF1YWxpdHksIGlkZW50aWZ5IGFueSBhcmVhcyBmb3IgaW1wcm92ZW1lbnQsIGFuZCBlbnN1cmUgaXQgaW50ZWdyYXRlcyBzZWFtbGVzc2x5IGludG8gdGhlIGJyb2FkZXIgbmV0d29ya2luZyBmcmFtZXdvcmsuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiB3aXRoaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4OTEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjMyLjg3OTY5MDg5M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAxOlxcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4gMTAyOlxcdFxcdH1cXG4gMTAzOlxcdFxcbiAxMDQ6XFx0XFx0aWYgKCEoaXJxX3N0YXR1cyBcXHUwMDI2IERQODM4NDhfSU5UX01BU0spKVxcbiAxMDU6XFx0XFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbiAxMDY6XFx0XFxuIDEwNzpcXHRcXHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdHJldHVybiBJUlFfSEFORExFRDtcXG4gMTEwOlxcdH1cXG4gMTExOlxcdFxcbiAxMTI6XFx0c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIDExMzpcXHR7XFxuIDExNDpcXHRcXHRpbnQgdmFsO1xcbiAxMTU6XFx0XFxuIDExNjpcXHRcXHQvKiBEUDgzNjIwIGFsd2F5cyByZXBvcnRzIEF1dG8gTmVnb3RpYXRpb24gQWJpbGl0eSBvbiBCTVNSLiBJbnN0ZWFkLFxcbiAxMTc6XFx0XFx0ICogd2UgY2hlY2sgaW5pdGlhbCB2YWx1ZSBvZiBCTUNSIEF1dG8gbmVnb3RpYXRpb24gZW5hYmxlIGJpdFxcbiAxMTg6XFx0XFx0ICovXFxuIDExOTpcXHRcXHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9CTUNSKTtcXG4gMTIwOlxcdFxcdGlmICh2YWwgXFx1MDAzYyAwKVxcbiAxMjE6XFx0XFx0XFx0cmV0dXJuIHZhbDtcXG4gMTIyOlxcdFxcbiAxMjM6XFx0XFx0aWYgKCEodmFsIFxcdTAwMjYgQk1DUl9BTkVOQUJMRSkpXFxuIDEyNDpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0RJU0FCTEU7XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdHJldHVybiAwO1xcbiAxMjc6XFx0fVxcbiAxMjg6XFx0XFxuIDEyOTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM4NDhfdGJsW10gPSB7XFxuIDEzMDpcXHRcXHR7IFRJX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxcbiAxMzE6XFx0XFx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG4gMTMyOlxcdFxcdHsgVElfRFA4MzYyMF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG4gMTMzOlxcdFxcdHsgVExLMTBYX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxcbiAxMzQ6XFx0XFx0eyB9XFxuIDEzNTpcXHR9O1xcbiAxMzY6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkcDgzODQ4X3RibCk7XFxuIDEzNzpcXHRcXG4gMTM4OlxcdCNkZWZpbmUgRFA4Mzg0OF9QSFlfRFJJVkVSKF9pZCwgX25hbWUsIF9jb25maWdfaW5pdClcXHRcXHRcXFxcXFxuIDEzOTpcXHRcXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAxNDA6XFx0XFx0XFx0LnBoeV9pZFxcdFxcdD0gX2lkLFxcdFxcdFxcdFxcdFxcXFxcXG4gMTQxOlxcdFxcdFxcdC5waHlfaWRfbWFza1xcdD0gMHhmZmZmZmZmMCxcXHRcXHRcXHRcXFxcXFxuIDE0MjpcXHRcXHRcXHQubmFtZVxcdFxcdD0gX25hbWUsXFx0XFx0XFx0XFxcXFxcbiAxNDM6XFx0XFx0XFx0LyogUEhZX0JBU0lDX0ZFQVRVUkVTICovXFx0XFx0XFx0XFxcXFxcbiAxNDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAxNDU6XFx0XFx0XFx0LnNvZnRfcmVzZXRcXHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxcdFxcdFxcXFxcXG4gMTQ2OlxcdFxcdFxcdC5jb25maWdfaW5pdFxcdD0gX2NvbmZpZ19pbml0LFxcdFxcdFxcdFxcXFxcXG4gMTQ3OlxcdFxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXHRcXHRcXFxcXFxuIDE0ODpcXHRcXHRcXHQucmVzdW1lXFx0XFx0PSBnZW5waHlfcmVzdW1lLFxcdFxcdFxcXFxcXG4gMTQ5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMTUwOlxcdFxcdFxcdC8qIElSUSByZWxhdGVkICovXFx0XFx0XFx0XFx0XFxcXFxcbiAxNTE6XFx0XFx0XFx0LmNvbmZpZ19pbnRyXFx0PSBkcDgzODQ4X2NvbmZpZ19pbnRyLFxcdFxcdFxcXFxcXG4gMTUyOlxcdFxcdFxcdC5oYW5kbGVfaW50ZXJydXB0ID0gZHA4Mzg0OF9oYW5kbGVfaW50ZXJydXB0LFxcdFxcXFxcXG4gMTUzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMTU0OlxcdFxcdFxcdC5mbGFnc1xcdFxcdD0gUEhZX1JTVF9BRlRFUl9DTEtfRU4sXFx0XFx0XFxcXFxcbiAxNTU6XFx0XFx0fVxcbiAxNTY6XFx0XFxuIDE1NzpcXHRzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcXG4gMTU4OlxcdFxcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzODQ4Q19QSFlfSUQsIFxcXCJUSSBEUDgzODQ4QyAxMC8xMDAgTWJwcyBQSFlcXFwiLFxcbiAxNTk6XFx0XFx0XFx0XFx0ICAgTlVMTCksXFxuIDE2MDpcXHRcXHREUDgzODQ4X1BIWV9EUklWRVIoTlNfRFA4Mzg0OENfUEhZX0lELCBcXFwiTlMgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG4gMTYxOlxcdFxcdFxcdFxcdCAgIE5VTEwpLFxcbiAxNjI6XFx0XFx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRJX0RQODM2MjBfUEhZX0lELCBcXFwiVEkgRFA4MzYyMCAxMC8xMDAgTWJwcyBQSFlcXFwiLFxcbiAxNjM6XFx0XFx0XFx0XFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXFxuIDE2NDpcXHRcXHREUDgzODQ4X1BIWV9EUklWRVIoVExLMTBYX1BIWV9JRCwgXFxcIlRJIFRMSzEwWCAxMC8xMDAgTWJwcyBQSFlcXFwiLFxcbiAxNjU6XFx0XFx0XFx0XFx0ICAgTlVMTCksXFxuIDE2NjpcXHR9O1xcbiAxNjc6XFx0bW9kdWxlX3BoeV9kcml2ZXIoZHA4Mzg0OF9kcml2ZXIpO1xcbiAxNjg6XFx0XFxuIDE2OTpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZIGRyaXZlclxcXCIpO1xcbiAxNzA6XFx0TU9EVUxFX0FVVEhPUihcXFwiQW5kcmV3IEYuIERhdmlzIFxcdTAwM2NhZmRAdGkuY29tXFx1MDAzZVxcXCIpO1xcbiAxNzE6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTo1OTozMi44Nzk3NzUxNTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTU2MTUxMzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgRFA4Mzg0OCBFbXVsYXRpb24gUG9zc2liaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgZHA4Mzg0OGAgZHJpdmVyLCBzcGVjaWZpY2FsbHksIGl0J3MgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IGFuZCBEUDgzNjIwIFBIWSBjaGlwcywgd2hpY2ggbWFrZXMgc2Vuc2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgYWN0dWFsbHkgKnVzZSogdGhpcyB3aXRoaW4gYSBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudD8gSXMgdGhlcmUgYW55IGtpbmQgb2YgZW11bGF0aW9uIGF2YWlsYWJsZSwgZWl0aGVyIHRocm91Z2ggc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucywgR29vZ2xlIENvbXB1dGUgRW5naW5lIGZlYXR1cmVzLCBhIFVTQi1iYXNlZCBzb2x1dGlvbiwgb3IgZXZlbiBhIHB1cmUgc29mdHdhcmUgZW11bGF0aW9uP1xuXG5UaGUga2V5IGhlcmUgaXMgd2hldGhlciBRRU1VIG9yIEdDRSBldmVuICpwcmVzZW50KiBhIERQODM2MjAgb3IgRFA4Mzg0OCB0byB0aGUgZ3Vlc3QgT1MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGFueSBvZiB0aGUgZXhpc3RpbmcgRXRoZXJuZXQgZHJpdmVycyBvciwgcG90ZW50aWFsbHksIGV2ZW4gYSBVU0IgZHJpdmVyLCBpbmNvcnBvcmF0ZXMgb3IgcmVmZXJlbmNlcyB0aGUgYGRwODM4NDhgLiBNeSBuZXh0IHN0ZXAgaXMgYSB0YXJnZXRlZCBzZWFyY2guIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGZvciBjbHVlcy4gSSdsbCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgdGhlIGBUSV9EUDgzNjIwX1BIWV9JRGAgZGVmaW5pdGlvbiwgdGhlIFBIWSBJRCBgMHgyMDAwNWNlMGAsIG9yIHNpbXBseSB0aGUgc3RyaW5nIGBkcDgzODQ4YCBpdHNlbGYgd2l0aGluIHRoZSBrZXJuZWwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRhdGEgSSBuZWVkIHRvIGtub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDIxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6MzcuMDM1OTI5MzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwODA4Nzk2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiKDB4MjAwMDVjZTB8VElfRFA4MzYyMF9QSFlfSUR8ZHA4Mzg0OClcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0cz0zNTc9XFx0cGh5MDogZXRoZXJuZXQtcGh5QDEge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0cy0zNjYtXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzOjM2NzpcXHRcXHRwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNmRwODM4NDhjX3JzdFxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0cy0zNjgtXFx0fTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHM9MzcxPVxcdTAwMjZwaW5jdHJsIHtcXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMxMjgteHBpLTMxMjguZHRzOjM3MjpcXHRkcDgzODQ4YyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMTI4LXhwaS0zMTI4LmR0czozNzM6XFx0XFx0ZHA4Mzg0OGNfcnN0OiBkcDgzODQ4Yy1yc3Qge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzEyOC14cGktMzEyOC5kdHMtMzc0LVxcdFxcdFxcdHJvY2tjaGlwLHBpbnMgPSBcXHUwMDNjMiBSS19QRDAgUktfRlVOQ19HUElPIFxcdTAwMjZwY2ZnX3B1bGxfbm9uZVxcdTAwM2U7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NTk9b2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVxcdCs9IGRwODM4MjIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpXFx0Kz0gZHA4Mzg0OC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTYxLW9iai0kKENPTkZJR19EUDgzODY3X1BIWSlcXHQrPSBkcDgzODY3Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTEtI2RlZmluZSBUSV9EUDgzODQ4Q19QSFlfSURcXHRcXHQweDIwMDA1Y2EwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMjojZGVmaW5lIFRJX0RQODM2MjBfUEhZX0lEXFx0XFx0MHgyMDAwNWNlMFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTMtI2RlZmluZSBOU19EUDgzODQ4Q19QSFlfSURcXHRcXHQweDIwMDA1YzkwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NTQ6c3RhdGljIGludCBkcDgzODQ4X2Fja19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNjAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo2MTpzdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNjktXFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjcwOlxcdFxcdHJldCA9IGRwODM4NDhfYWNrX2ludGVycnVwdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNzEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtODctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo4ODpcXHRcXHRyZXQgPSBkcDgzODQ4X2Fja19pbnRlcnJ1cHQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTg5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo5NDpzdGF0aWMgaXJxcmV0dXJuX3QgZHA4Mzg0OF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy05NS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTExMS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjExMjpzdGF0aWMgaW50IGRwODM4NDhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTExMy17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyOC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEyOTpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM4NDhfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzAtXFx0eyBUSV9EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMS1cXHR7IE5TX0RQODM4NDhDX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTMyOlxcdHsgVElfRFA4MzYyMF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMy1cXHR7IFRMSzEwWF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM1LX07XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzY6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkcDgzODQ4X3RibCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMzctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1MC1cXHRcXHQvKiBJUlEgcmVsYXRlZCAqL1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1MTpcXHRcXHQuY29uZmlnX2ludHJcXHQ9IGRwODM4NDhfY29uZmlnX2ludHIsXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTUyOlxcdFxcdC5oYW5kbGVfaW50ZXJydXB0ID0gZHA4Mzg0OF9oYW5kbGVfaW50ZXJydXB0LFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1My1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1Ni1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1NzpzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1OC1cXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4Mzg0OENfUEhZX0lELCBcXFwiVEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYxLVxcdFxcdFxcdCAgIE5VTEwpLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTYyOlxcdERQODM4NDhfUEhZX0RSSVZFUihUSV9EUDgzNjIwX1BIWV9JRCwgXFxcIlRJIERQODM2MjAgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MzpcXHRcXHRcXHQgICBkcDgzODQ4X2NvbmZpZ19pbml0KSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NC1cXHREUDgzODQ4X1BIWV9EUklWRVIoVExLMTBYX1BIWV9JRCwgXFxcIlRJIFRMSzEwWCAxMC8xMDAgTWJwcyBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjYtfTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2Nzptb2R1bGVfcGh5X2RyaXZlcihkcDgzODQ4X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjQwLjExNjgxNzAwOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MzM4NTczMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBEUDgzODQ4IFBIWSBJbnN0YW50aWF0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGUgRFA4Mzg0OCBQSFkgZHJpdmVyIGdldHMgbG9hZGVkIGluIExpbnV4LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhlIHN0YW5kYXJkIE1ESU8gYnVzIHNjYW5uaW5nIHByb2Nlc3MuIEl0IG1hdGNoZXMgYWdhaW5zdCBgZHA4Mzg0OF90YmxgIGJhc2VkIG9uIHRoZSBQSFkgSUQgcmVnaXN0ZXJzLCBzcGVjaWZpY2FsbHkgd2hlbiBgKHBoeV9pZCBcdTAwMjYgMHhmZmZmZmZmMClgIG1hdGNoZXMgYFRJX0RQODM2MjBfUEhZX0lEYC4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgRFA4Mzg0OCBpcyAqZW11bGF0ZWQqIGluIFFFTVUuIEkgbmVlZCB0byBzZWUgd2hhdCBRRU1VIG9mZmVycyBpbiB0ZXJtcyBvZiBlbXVsYXRlZCBldGhlcm5ldCBQSFlzIG9yIE1ESU8gZGV2aWNlcy4gSSBrbm93IGl0IGhhbmRsZXMgdGhlIHVzdWFsIHN1c3BlY3RzIOKAkyBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgcGNuZXQsIG5lMmtfcGNpLCB0ZzMvYmNtNTd4eCDigJMgYnV0IG5vbmUgb2YgdGhvc2UgdHlwaWNhbGx5IHNob3cgdXAgd2l0aCBhIFRJIERQODM4NDggb3IgRFA4MzYyMCBQSFkgSUQgb24gYW4gTURJTyBidXMuIFNvLCB0aGF0J3MgYSBkZWFkIGVuZCwgYXQgbGVhc3QgYXMgZmFyIGFzIGEgZGlyZWN0IFFFTVUgZW11bGF0aW9uLlxuXG5UaGF0IG1ha2VzIG1lIHRoaW5rOiBDYW4gYW4gTURJTyBQSFkgZGV2aWNlIGJlIGJyb3VnaHQgdXAgdmlhIHVzZXJzcGFjZSBvciBzb21lIHNvcnQgb2Ygc29mdHdhcmUgZW11bGF0aW9uIHRlY2huaXF1ZT8gTGlrZSwgcGVyaGFwcywgc29tZSBtb2NrIGRldmljZSwgc2ltaWxhciB0byB0aGUgYXBwcm9hY2ggd2l0aCB1c2ItZ2FkZ2V0IG9yIG5ldGxpbmsgaW50ZXJmYWNlcz8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSB1c2Vyc3BhY2UgaW50ZXJmYWNlcyBvciBrZXJuZWwgaG9va3MgdGhhdCBhbGxvdyBtZSB0byBpbnN0YW50aWF0ZSBhbiBNRElPIFBIWSB3aXRoIGEgc3BlY2lmaWMgUEhZIElELiBJJ2xsIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB1c2luZyBrZXl3b3JkcyBsaWtlIFwibWRpb1wiIGFuZCBcInBoeV9kZXZpY2VfY3JlYXRlXCIgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYW55dGhpbmcgcmVsZXZhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjQ5LjQ1NTM5Mjc1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNzcyMzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9MTE3PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMzQtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMzU6XFx0XFx0cGh5ID0gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsIDAsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMzYtXFx0aWYgKElTX0VSUihwaHkpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYz01NTE9c3RhdGljIHZvaWQgdGphMTEwMl9wMV9yZWdpc3RlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODUtXFx0XFx0LyogUmVhbCBQSFkgSUQgb2YgUG9ydCAxIGlzIDAgKi9cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1ODY6XFx0XFx0cGh5ID0gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBQSFlfSURfVEpBMTEwMiwgZmFsc2UsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4Ny1cXHRcXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5Mi1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1OTM6XFx0XFx0LyogT3ZlcndyaXRlIHBhcmVudCBkZXZpY2UuIHBoeV9kZXZpY2VfY3JlYXRlKCkgc2V0IHBhcmVudCB0b1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5NC1cXHRcXHQgKiB0aGUgbWlpX2J1cy1cXHUwMDNlZGV2LCB3aGljaCBpcyBub3QgY29ycmVjdCBpbiBjYXNlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz03Mjg9c3RhdGljIGludCBwaHlfcmVxdWVzdF9kcml2ZXJfbW9kdWxlKHN0cnVjdCBwaHlfZGV2aWNlICpkZXYsIHUzMiBwaHlfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0Ny1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjc0ODpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDktXFx0XFx0XFx0XFx0ICAgICBib29sIGlzX2M0NSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODM5LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjg0MDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTg0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTA3MT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk2LVxcdFxcdGlmICghcilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwOTc6XFx0XFx0XFx0cmV0dXJuIHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA5OC1cXHRcXHRcXHRcXHRcXHRcXHQgdHJ1ZSwgXFx1MDAyNmM0NV9pZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAwLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwMTpcXHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsIGlzX2M0NSwgXFx1MDAyNmM0NV9pZHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjU5OjQ5LjU4ODE3MTgzOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzk3NTc4NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVVNCIEV0aGVybmV0IGFuZCBNRElPIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVycGxheSBiZXR3ZWVuIFVTQiBFdGhlcm5ldCBkZXZpY2VzLCBwb3RlbnRpYWwgTURJTyBpbnRlcmFjdGlvbnMgKHNwZWNpZmljYWxseSB3aXRoIHRoZSBEUDgzODQ4LCBvciBldmVuIGEgc2ltdWxhdGVkIE1ESU8pLCBhbmQgaWYgdGhlc2UgUEhZIGRyaXZlcnMgYXJlIHN0cmljdGx5IHRpZWQgdG8gYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgYXJjaGl0ZWN0dXJlIGFsbG93cyBmb3IgZmxleGliaWxpdHkgaGVyZS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgdGhlbXNlbHZlcywgbG9va2luZyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvdXNiL2AgZGlyZWN0b3J5LiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbWFwcGluZyB0aGlzIGFsbCBvdXQuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgY2x1ZXMgYWJvdXQgTURJTyBidXMgdXRpbGl6YXRpb24sIERQODM4NDggc3VwcG9ydCAob3IgYSBzdGFuZC1pbiksIGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHRoZSBQSFkgbGF5ZXIgaW4gZ2VuZXJhbC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBwb3NzaWJsZSBjb25maWd1cmF0aW9ucyBhbmQgcG90ZW50aWFsIGFic3RyYWN0aW9uIGxldmVscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzNTcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTo1OTo1Mi4zODU3NTIyNThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTcwMTAyMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiKGRwODM4NDh8RFA4Mzg0OClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6NTIuNjQ3NDYyNjg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4NDUwMDY3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIERQODM4NDggRHJpdmVyIEFzc29jaWF0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoLCBpZiBhbnksIFVTQiBkZXZpY2VzIGluIHRoZSBMaW51eCBrZXJuZWwgcmVsYXRlIHRvIHRoZSBEUDgzODQ4IEV0aGVybmV0IFBIWS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBwbGFjZXMg4oCTIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnksIG5hdHVyYWxseSwgYXMgdGhhdCdzIHdoZXJlIHRoZSBuZXR3b3JrLXJlbGF0ZWQgZHJpdmVycyByZXNpZGUuIEJ1dCBJIGNhbid0IGp1c3QgbGltaXQgbXlzZWxmIHRvIHRoYXQuIEV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBkZXBlbmRlbmNpZXMgY2FuIGJlIHRyaWNreSwgYW5kIHRoZSBEUDgzODQ4ICptaWdodCogYmUgdXNlZCBpbiBhIGxlc3MgZGlyZWN0IHdheS4gSSBuZWVkIHRvIGNhc3QgYSB3aWRlciBuZXQgYW5kIGNvbnNpZGVyIHNlYXJjaGluZyB0aGUgZW50aXJlIGtlcm5lbCB0cmVlLiBQZXJoYXBzIGl0J3MgYmVpbmcgaGFuZGxlZCB0aHJvdWdoIGEgZ2VuZXJpYyBVU0IgZnJhbWV3b3JrIG9yIGEgbW9yZSBhYnN0cmFjdGVkIGxheWVyLiBBIGNvbXBsZXRlIHNlYXJjaCBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy4gSSdsbCBuZWVkIHRvIHVzZSBhIHRvb2wgdG8gcmFwaWRseSBzZWFyY2ggdGhlIHNvdXJjZSBjb2RlIGZvciBhbnkgZGlyZWN0IG9yIGluZGlyZWN0IGJpbmRpbmdzIHRvIHRoZSBEUDgzODQ4LiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjQwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6NTUuNDkyNDcyMjU1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkwNTIzNzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRQODM4NDhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MjkxPUNPTkZJR19ST0NLQ0hJUF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnOjI5MjpDT05GSUdfRFA4Mzg0OF9QSFk9bVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTI5My1DT05GSUdfRFA4Mzg2N19QSFk9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTMzMz1DT05GSUdfU01TQ19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzozMzQ6Q09ORklHX0RQODM4NDhfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWctMzM1LUNPTkZJR19EUDgzODY3X1BIWT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM2eF9yZGsuZHRzPTMzMT1cXHRcXHRcXHRcXHRwaHkxOiBldGhlcm5ldC1waHlAMSB7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNnhfcmRrLmR0czozMzI6XFx0XFx0XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJuYXRpb25hbCxEUDgzODQ4VlZcXFwiO1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzZ4X3Jkay5kdHMtMzMzLVxcdFxcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzZ4X3Jkay5kdHM9MzQxPVxcdFxcdFxcdFxcdHBoeTM6IGV0aGVybmV0LXBoeUAzIHtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM2eF9yZGsuZHRzOjM0MjpcXHRcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm5hdGlvbmFsLERQODM4NDhWVlxcXCI7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNnhfcmRrLmR0cy0zNDMtXFx0XFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzNcXHUwMDNlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDQxPWNvbmZpZyBEUDgzVEM4MTFfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NDUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDQ2OmNvbmZpZyBEUDgzODQ4X1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ0NzpcXHR0cmlzdGF0ZSBcXFwiVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDQ4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NDk6XFx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTU5PW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcXHQrPSBkcDgzODIyLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVxcdCs9IGRwODM4NDgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02MS1vYmotJChDT05GSUdfRFA4Mzg2N19QSFkpXFx0Kz0gZHA4Mzg2Ny5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTItLypcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM6ICogRHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg0OCBQSFlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMTojZGVmaW5lIFRJX0RQODM4NDhDX1BIWV9JRFxcdFxcdDB4MjAwMDVjYTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEyLSNkZWZpbmUgVElfRFA4MzYyMF9QSFlfSURcXHRcXHQweDIwMDA1Y2UwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzojZGVmaW5lIE5TX0RQODM4NDhDX1BIWV9JRFxcdFxcdDB4MjAwMDVjOTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE0LSNkZWZpbmUgVExLMTBYX1BIWV9JRFxcdFxcdFxcdDB4MjAwMGEyMTBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTYtLyogUmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNzojZGVmaW5lIERQODM4NDhfTUlDUlxcdFxcdFxcdDB4MTEgLyogTUlJIEludGVycnVwdCBDb250cm9sIFJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxODojZGVmaW5lIERQODM4NDhfTUlTUlxcdFxcdFxcdDB4MTIgLyogTUlJIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjAtLyogTUlDUiBSZWdpc3RlciBGaWVsZHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjIxOiNkZWZpbmUgRFA4Mzg0OF9NSUNSX0lOVF9PRVxcdFxcdEJJVCgwKSAvKiBJbnRlcnJ1cHQgT3V0cHV0IEVuYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjI6I2RlZmluZSBEUDgzODQ4X01JQ1JfSU5URU5cXHRcXHRCSVQoMSkgLyogSW50ZXJydXB0IEVuYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMjMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0yNC0vKiBNSVNSIFJlZ2lzdGVyIEZpZWxkcyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MjU6I2RlZmluZSBEUDgzODQ4X01JU1JfUkhGX0lOVF9FTlxcdFxcdEJJVCgwKSAvKiBSZWNlaXZlIEVycm9yIENvdW50ZXIgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0ZIRl9JTlRfRU5cXHRcXHRCSVQoMSkgLyogRmFsc2UgQ2FycmllciBDb3VudGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoyNzojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UX0VOXFx0XFx0QklUKDIpIC8qIEF1dG8tbmVnb3RpYXRpb24gY29tcGxldGUgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjI4OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0RVUF9JTlRfRU5cXHRcXHRCSVQoMykgLyogRHVwbGV4IFN0YXR1cyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mjk6I2RlZmluZSBEUDgzODQ4X01JU1JfU1BEX0lOVF9FTlxcdFxcdEJJVCg0KSAvKiBTcGVlZCBzdGF0dXMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjMwOiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOXFx0QklUKDUpIC8qIExpbmsgc3RhdHVzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozMTojZGVmaW5lIERQODM4NDhfTUlTUl9FRF9JTlRfRU5cXHRcXHRCSVQoNikgLyogRW5lcmd5IGRldGVjdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MzI6I2RlZmluZSBEUDgzODQ4X01JU1JfTFFNX0lOVF9FTlxcdFxcdEJJVCg3KSAvKiBMaW5rIFF1YWxpdHkgTW9uaXRvciAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNDojZGVmaW5lIERQODM4NDhfSU5UX0VOX01BU0tcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozNTpcXHQoRFA4Mzg0OF9NSVNSX0FOQ19JTlRfRU4gfFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjM2OlxcdCBEUDgzODQ4X01JU1JfRFVQX0lOVF9FTiB8XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Mzc6XFx0IERQODM4NDhfTUlTUl9TUERfSU5UX0VOIHxcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzozODpcXHQgRFA4Mzg0OF9NSVNSX0xJTktfSU5UX0VOKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMzktXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MDojZGVmaW5lIERQODM4NDhfTUlTUl9SSEZfSU5UXFx0XFx0QklUKDgpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MTojZGVmaW5lIERQODM4NDhfTUlTUl9GSEZfSU5UXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0MjojZGVmaW5lIERQODM4NDhfTUlTUl9BTkNfSU5UXFx0XFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDM6I2RlZmluZSBEUDgzODQ4X01JU1JfRFVQX0lOVFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ0OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX1NQRF9JTlRcXHRcXHRCSVQoMTIpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo0NTojZGVmaW5lIERQODM4NDhfTUlTUl9MSU5LX0lOVFxcdFxcdEJJVCgxMylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjQ2OiNkZWZpbmUgRFA4Mzg0OF9NSVNSX0VEX0lOVFxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDg6I2RlZmluZSBEUDgzODQ4X0lOVF9NQVNLXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NDk6XFx0KERQODM4NDhfTUlTUl9BTkNfSU5UIHxcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo1MDpcXHQgRFA4Mzg0OF9NSVNSX0RVUF9JTlQgfFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjUxOlxcdCBEUDgzODQ4X01JU1JfU1BEX0lOVCB8XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NTI6XFx0IERQODM4NDhfTUlTUl9MSU5LX0lOVClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9NTQ9c3RhdGljIGludCBkcDgzODQ4X2Fja19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTU1LXtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjU2OlxcdGludCBlcnIgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NDhfTUlTUik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9NjE9c3RhdGljIGludCBkcDgzODQ4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6NjU6XFx0Y29udHJvbCA9IHBoeV9yZWFkKHBoeWRldiwgRFA4Mzg0OF9NSUNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTY2LVxcdGlmIChjb250cm9sIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtNzMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NDpcXHRcXHRjb250cm9sIHw9IERQODM4NDhfTUlDUl9JTlRfT0U7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo3NTpcXHRcXHRjb250cm9sIHw9IERQODM4NDhfTUlDUl9JTlRFTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6Nzc6XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSVNSLCBEUDgzODQ4X0lOVF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTc4LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjgxOlxcdFxcdHJldCA9IHBoeV93cml0ZShwaHlkZXYsIERQODM4NDhfTUlDUiwgY29udHJvbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy04Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODM6XFx0XFx0Y29udHJvbCBcXHUwMDI2PSB+RFA4Mzg0OF9NSUNSX0lOVEVOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6ODQ6XFx0XFx0cmV0ID0gcGh5X3dyaXRlKHBoeWRldiwgRFA4Mzg0OF9NSUNSLCBjb250cm9sKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTg1LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTk0PXN0YXRpYyBpcnFyZXR1cm5fdCBkcDgzODQ4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzo5ODpcXHRpcnFfc3RhdHVzID0gcGh5X3JlYWQocGh5ZGV2LCBEUDgzODQ4X01JU1IpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtOTktXFx0aWYgKGlycV9zdGF0dXMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEwMy1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEwNDpcXHRpZiAoIShpcnFfc3RhdHVzIFxcdTAwMjYgRFA4Mzg0OF9JTlRfTUFTSykpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xMDUtXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYz0xMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkcDgzODQ4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM6MTMwOlxcdHsgVElfRFA4Mzg0OENfUEhZX0lELCAweGZmZmZmZmYwIH0sXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxMzE6XFx0eyBOU19EUDgzODQ4Q19QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzMi1cXHR7IFRJX0RQODM2MjBfUEhZX0lELCAweGZmZmZmZmYwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTEzNj1NT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRwODM4NDhfdGJsKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTEzNy1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjEzODojZGVmaW5lIERQODM4NDhfUEhZX0RSSVZFUihfaWQsIF9uYW1lLCBfY29uZmlnX2luaXQpXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTM5LVxcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jPTE1Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg0OF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE1ODpcXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4Mzg0OENfUEhZX0lELCBcXFwiVEkgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE1OS1cXHRcXHRcXHQgICBOVUxMKSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MDpcXHREUDgzODQ4X1BIWV9EUklWRVIoTlNfRFA4Mzg0OENfUEhZX0lELCBcXFwiTlMgRFA4Mzg0OEMgMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2MS1cXHRcXHRcXHQgICBOVUxMKSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2MjpcXHREUDgzODQ4X1BIWV9EUklWRVIoVElfRFA4MzYyMF9QSFlfSUQsIFxcXCJUSSBEUDgzNjIwIDEwLzEwMCBNYnBzIFBIWVxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYy0xNjMtXFx0XFx0XFx0ICAgZHA4Mzg0OF9jb25maWdfaW5pdCksXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NDguYzoxNjQ6XFx0RFA4Mzg0OF9QSFlfRFJJVkVSKFRMSzEwWF9QSFlfSUQsIFxcXCJUSSBUTEsxMFggMTAvMTAwIE1icHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2NS1cXHRcXHRcXHQgICBOVUxMKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmM9MTY3PW1vZHVsZV9waHlfZHJpdmVyKGRwODM4NDhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLTE2OC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jOjE2OTpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZIGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODQ4LmMtMTcwLU1PRFVMRV9BVVRIT1IoXFxcIkFuZHJldyBGLiBEYXZpcyBcXHUwMDNjYWZkQHRpLmNvbVxcdTAwM2VcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6NTk6NTcuMTgzMDA1NDA4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkxODQ3NzEzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBEUDgzODQ4IERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2gsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgXCJXb3J0aEZ1enppbmcuXCIgTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZHA4Mzg0OF9jb25maWdfaW5pdGAgd2l0aGluIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYC4gVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NDgvRFA4MzYyMCBFdGhlcm5ldCBQSFkuIFJpZ2h0LCBhICpwaHlzaWNhbCogUEhZLiBUaGF0J3MgYSBrZXkgZGV0YWlsLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLiBJIGtub3cgbXkgaGFyZHdhcmUsIGFuZCB0aGUgRFA4Mzg0OCBpcyBhIGRpc2NyZXRlIFBIWSB0cmFuc2NlaXZlciwgb2Z0ZW4gdXNlZCBvbiBlbWJlZGRlZCBBUk0vUG93ZXJQQyBib2FyZHMuIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoaXMgZGlyZWN0bHk7IGl0IHVzZXMgaW50ZWdyYXRlZCBvciBnZW5lcmljIFBIWSBlbXVsYXRpb25zIChlLmcuLCBlMTAwMCwgUlRMODIwMSBmb3IgbGFuOTExOCksIG5vdCB0aGUgVEkgRFA4Mzg0OCB3aXRoIGl0cyBzcGVjaWZpYyBQSFkgSUQuIE1ESU8gUEhZcyBjYW4ndCBiZSBkeW5hbWljYWxseSBjcmVhdGVkIGZyb20gdXNlcnNwYWNlIGluIGEgd2F5IHRoYXQgd291bGQgYWxsb3cgZm9yIGludGVyYWN0aW9uLlxuXG5TbywgSSdtIGNvbmZpZGVudCB0aGF0IHRoZXNlIGNvZGUgcGF0aHMgd2l0aGluIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jYCBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBzZXR1cHMuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhlIGluc3RydWN0aW9uIHNldCwgdGhpcyBtb2RpZmljYXRpb24gaXNuJ3Qgd29ydGggZnV6emluZy4gSSdsbCBmbGFnIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBnZXQgcmVhZHkgdG8gc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg2NiwiT3V0cHV0VG9rZW5zIjoxMzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MDA6MDYuMzY3Nzc5NTM4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHJldHVybiB2YWx1ZSBjaGVjayBmb3IgcGh5X3JlYWQgaW4gZHA4Mzg0OF9jb25maWdfaW5pdCgpIHdpdGhpbiBkcml2ZXJzL25ldC9waHkvZHA4Mzg0OC5jLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgY2hpcCAoVEkgRFA4Mzg0OC9EUDgzNjIwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MDA6MDYuMzY3ODEwNzE4WiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowsvjs4[1] Phase: Running StartedAt: 2026-09-02 20:00:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsvjs4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 20:00:18 +0000 UTC FinishedAt: 2026-09-02 20:00:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}