Name: series-workflow67c69 Phase: Failed StartedAt: 2026-07-20 19:44:12 +0000 UTC FinishedAt: 2026-07-20 20:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow67c69[0] Phase: Succeeded StartedAt: 2026-07-20 19:44:12 +0000 UTC FinishedAt: 2026-07-20 20:07:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow67c69[0].run-triage Phase: Succeeded StartedAt: 2026-07-20 19:44:12 +0000 UTC FinishedAt: 2026-07-20 20:07:17 +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+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gKElEUEYpIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgYW5kIGl0IHJlcXVpcmVzIGNvbXBsZXggbWFpbGJveCBjb21tdW5pY2F0aW9uIHdpdGggYSBDb250cm9sIFBsYW5lIHRvIGluaXRpYWxpemUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGludGVycnVwdCBhbGxvY2F0aW9uIGFuZCBkZWluaXRpYWxpemF0aW9uKSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjY2QzZjRiZjgyN2I5ZGYzZjI0MzFiYzk4N2Q2NWY4NWM5MWZhOTIyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMjA6MDM6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcbmluZGV4IDdmOTA1NjQwNGY2NGZjLi5jZDk4Njc0ZmI2NDg2MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcbkBAIC00MTQ4LDYgJiM0Mzs0MTQ4LDI2IEBAIHN0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9lbmFfaXJxX2FsbChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4gXHR3cml0ZWwocnNyYy1cdTAwM2Vub2lycV9keW5fY3RsX2VuYSwgcnNyYy1cdTAwM2Vub2lycV9keW5fY3RsKTtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGwgLSBEaXNhYmxlIERJTSB3b3JrIGZvciBhbGwgcV92ZWN0b3JzXG4mIzQzOyAqIEByc3JjOiBwb2ludGVyIHRvIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBESU0gd29ya3MgYXJlIGVtYmVkZGVkIGluIHRoZSBxX3ZlY3RvciBhcnJheSB0aGF0XG4mIzQzOyAqIGlkcGZfdnBvcnRfaW50cl9yZWwoKSBmcmVlcywgYW5kIHRoZSBwb2xsIGFybXMgdGhlbSBhZnRlclxuJiM0MzsgKiBuYXBpX2NvbXBsZXRlX2RvbmUoKSBoYXMgYWxyZWFkeSBjbGVhcmVkIE5BUElfU1RBVEVfU0NIRUQuICBEaXNhYmxlXG4mIzQzOyAqIHJhdGhlciB0aGFuIGp1c3QgY2FuY2VsLCBzbyB0aGF0IGEgcG9sbCB0YWlsIHN0aWxsIHJ1bm5pbmcgcGFzdFxuJiM0MzsgKiBuYXBpX2Rpc2FibGUoKSBjYW5ub3QgcXVldWUgdGhlbSBhZ2FpbiBiZWhpbmQgdGhlIGRyYWluLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpXG4mIzQzO3tcbiYjNDM7XHRmb3IgKHUxNiB2X2lkeCA9IDA7IHZfaWR4IFx1MDAzYyByc3JjLVx1MDAzZW51bV9xX3ZlY3RvcnM7IHZfaWR4JiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gXHUwMDI2cnNyYy1cdTAwM2VxX3ZlY3RvcnNbdl9pZHhdO1xuJiM0MztcbiYjNDM7XHRcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNnFfdmVjdG9yLVx1MDAzZXR4X2RpbS53b3JrKTtcbiYjNDM7XHRcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNnFfdmVjdG9yLVx1MDAzZXJ4X2RpbS53b3JrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaWRwZl92cG9ydF9pbnRyX2RlaW5pdCAtIFJlbGVhc2UgYWxsIHZlY3RvciBhc3NvY2lhdGlvbnMgZm9yIHRoZSB2cG9ydFxuICAqIEB2cG9ydDogbWFpbiB2cG9ydCBzdHJ1Y3R1cmVcbkBAIC00MTU4LDYgJiM0Mzs0MTc4LDcgQEAgdm9pZCBpZHBmX3Zwb3J0X2ludHJfZGVpbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiB7XG4gXHRpZHBmX3Zwb3J0X2ludHJfZGlzX2lycV9hbGwocnNyYyk7XG4gXHRpZHBmX3Zwb3J0X2ludHJfbmFwaV9kaXNfYWxsKHJzcmMpO1xuJiM0MztcdGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbChyc3JjKTtcbiBcdGlkcGZfdnBvcnRfaW50cl9uYXBpX2RlbF9hbGwocnNyYyk7XG4gXHRpZHBmX3Zwb3J0X2ludHJfcmVsX2lycSh2cG9ydCwgcnNyYyk7XG4gfVxuQEAgLTQyMzgsNyAmIzQzOzQyNTksNiBAQCBzdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfbmFwaV9lbmFfYWxsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpXG4gXHRmb3IgKHUxNiBxX2lkeCA9IDA7IHFfaWR4IFx1MDAzYyByc3JjLVx1MDAzZW51bV9xX3ZlY3RvcnM7IHFfaWR4JiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgaWRwZl9xX3ZlY3RvciAqcV92ZWN0b3IgPSBcdTAwMjZyc3JjLVx1MDAzZXFfdmVjdG9yc1txX2lkeF07XG4gXG4tXHRcdGlkcGZfaW5pdF9kaW0ocV92ZWN0b3IpO1xuIFx0XHRuYXBpX2VuYWJsZShcdTAwMjZxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbiBcdH1cbiB9XG5AQCAtNDU4MSw2ICYjNDM7NDYwMSw4IEBAIGludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0XHRxX2NvYWwgPSBcdTAwMjZ1c2VyX2NvbmZpZy1cdTAwM2VxX2NvYWxlc2NlW3ZfaWR4XTtcbiBcdFx0cV92ZWN0b3ItXHUwMDNldnBvcnQgPSB2cG9ydDtcbiBcbiYjNDM7XHRcdGlkcGZfaW5pdF9kaW0ocV92ZWN0b3IpO1xuJiM0MztcbiBcdFx0cV92ZWN0b3ItXHUwMDNldHhfaXRyX3ZhbHVlID0gcV9jb2FsLVx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzO1xuIFx0XHRxX3ZlY3Rvci1cdTAwM2V0eF9pbnRyX21vZGUgPSBxX2NvYWwtXHUwMDNldHhfaW50cl9tb2RlO1xuIFx0XHRxX3ZlY3Rvci1cdTAwM2V0eF9pdHJfaWR4ID0gVklSVENITkwyX0lUUl9JRFhfMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiAoSURQRikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBhbmQgaXQgcmVxdWlyZXMgY29tcGxleCBtYWlsYm94IGNvbW11bmljYXRpb24gd2l0aCBhIENvbnRyb2wgUGxhbmUgdG8gaW5pdGlhbGl6ZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW50ZXJydXB0IGFsbG9jYXRpb24gYW5kIGRlaW5pdGlhbGl6YXRpb24pIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2NkM2Y0YmY4MjdiOWRmM2YyNDMxYmM5ODdkNjVmODVjOTFmYTkyMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDIwIDIwOjAzOjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMKaW5kZXggN2Y5MDU2NDA0ZjY0ZmMuLmNkOTg2NzRmYjY0ODYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMKQEAgLTQxNDgsNiAmIzQzOzQxNDgsMjYgQEAgc3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX2VuYV9pcnFfYWxsKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCwKIAl3cml0ZWwocnNyYy0mZ3Q7bm9pcnFfZHluX2N0bF9lbmEsIHJzcmMtJmd0O25vaXJxX2R5bl9jdGwpOwogfQogCiYjNDM7LyoqCiYjNDM7ICogaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsIC0gRGlzYWJsZSBESU0gd29yayBmb3IgYWxsIHFfdmVjdG9ycwomIzQzOyAqIEByc3JjOiBwb2ludGVyIHRvIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzCiYjNDM7ICoKJiM0MzsgKiBUaGUgRElNIHdvcmtzIGFyZSBlbWJlZGRlZCBpbiB0aGUgcV92ZWN0b3IgYXJyYXkgdGhhdAomIzQzOyAqIGlkcGZfdnBvcnRfaW50cl9yZWwoKSBmcmVlcywgYW5kIHRoZSBwb2xsIGFybXMgdGhlbSBhZnRlcgomIzQzOyAqIG5hcGlfY29tcGxldGVfZG9uZSgpIGhhcyBhbHJlYWR5IGNsZWFyZWQgTkFQSV9TVEFURV9TQ0hFRC4gIERpc2FibGUKJiM0MzsgKiByYXRoZXIgdGhhbiBqdXN0IGNhbmNlbCwgc28gdGhhdCBhIHBvbGwgdGFpbCBzdGlsbCBydW5uaW5nIHBhc3QKJiM0MzsgKiBuYXBpX2Rpc2FibGUoKSBjYW5ub3QgcXVldWUgdGhlbSBhZ2FpbiBiZWhpbmQgdGhlIGRyYWluLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbChzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjICpyc3JjKQomIzQzO3sKJiM0MzsJZm9yICh1MTYgdl9pZHggPSAwOyB2X2lkeCAmbHQ7IHJzcmMtJmd0O251bV9xX3ZlY3RvcnM7IHZfaWR4JiM0MzsmIzQzOykgewomIzQzOwkJc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gJmFtcDtyc3JjLSZndDtxX3ZlY3RvcnNbdl9pZHhdOwomIzQzOwomIzQzOwkJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtxX3ZlY3Rvci0mZ3Q7dHhfZGltLndvcmspOwomIzQzOwkJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtxX3ZlY3Rvci0mZ3Q7cnhfZGltLndvcmspOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyoqCiAgKiBpZHBmX3Zwb3J0X2ludHJfZGVpbml0IC0gUmVsZWFzZSBhbGwgdmVjdG9yIGFzc29jaWF0aW9ucyBmb3IgdGhlIHZwb3J0CiAgKiBAdnBvcnQ6IG1haW4gdnBvcnQgc3RydWN0dXJlCkBAIC00MTU4LDYgJiM0Mzs0MTc4LDcgQEAgdm9pZCBpZHBmX3Zwb3J0X2ludHJfZGVpbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCwKIHsKIAlpZHBmX3Zwb3J0X2ludHJfZGlzX2lycV9hbGwocnNyYyk7CiAJaWRwZl92cG9ydF9pbnRyX25hcGlfZGlzX2FsbChyc3JjKTsKJiM0MzsJaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsKHJzcmMpOwogCWlkcGZfdnBvcnRfaW50cl9uYXBpX2RlbF9hbGwocnNyYyk7CiAJaWRwZl92cG9ydF9pbnRyX3JlbF9pcnEodnBvcnQsIHJzcmMpOwogfQpAQCAtNDIzOCw3ICYjNDM7NDI1OSw2IEBAIHN0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9uYXBpX2VuYV9hbGwoc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYykKIAlmb3IgKHUxNiBxX2lkeCA9IDA7IHFfaWR4ICZsdDsgcnNyYy0mZ3Q7bnVtX3FfdmVjdG9yczsgcV9pZHgmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBpZHBmX3FfdmVjdG9yICpxX3ZlY3RvciA9ICZhbXA7cnNyYy0mZ3Q7cV92ZWN0b3JzW3FfaWR4XTsKIAotCQlpZHBmX2luaXRfZGltKHFfdmVjdG9yKTsKIAkJbmFwaV9lbmFibGUoJmFtcDtxX3ZlY3Rvci0mZ3Q7bmFwaSk7CiAJfQogfQpAQCAtNDU4MSw2ICYjNDM7NDYwMSw4IEBAIGludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LAogCQlxX2NvYWwgPSAmYW1wO3VzZXJfY29uZmlnLSZndDtxX2NvYWxlc2NlW3ZfaWR4XTsKIAkJcV92ZWN0b3ItJmd0O3Zwb3J0ID0gdnBvcnQ7CiAKJiM0MzsJCWlkcGZfaW5pdF9kaW0ocV92ZWN0b3IpOwomIzQzOwogCQlxX3ZlY3Rvci0mZ3Q7dHhfaXRyX3ZhbHVlID0gcV9jb2FsLSZndDt0eF9jb2FsZXNjZV91c2VjczsKIAkJcV92ZWN0b3ItJmd0O3R4X2ludHJfbW9kZSA9IHFfY29hbC0mZ3Q7dHhfaW50cl9tb2RlOwogCQlxX3ZlY3Rvci0mZ3Q7dHhfaXRyX2lkeCA9IFZJUlRDSE5MMl9JVFJfSURYXzE7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jYC4gVGhlIG1haW4gdGFrZWF3YXkgaXMgdGhhdCB0aGV5JiMzOTt2ZSBhZGRlZCBhIGZ1bmN0aW9uIGNhbGxlZCBgaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsYC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGl0IGRpc2FibGVzIHNvbWUgd29yayBxdWV1ZXMsIGB0eF9kaW0ud29ya2AgYW5kIGByeF9kaW0ud29ya2AsIGJ5IGNhbGxpbmcgYGRpc2FibGVfd29ya19zeW5jYC4gVGhleSYjMzk7dmUgYWxzbyBtb3ZlZCBgaWRwZl9pbml0X2RpbWAgYXJvdW5kLCBzaGlmdGluZyBpdCBmcm9tIGBpZHBmX3Zwb3J0X2ludHJfbmFwaV9lbmFfYWxsYCB0byBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYC4gQWRkaXRpb25hbGx5LCB0aGlzIG5ldyBgaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsYCBmdW5jdGlvbiBpcyBub3cgYmVpbmcgY2FsbGVkIGZyb20gYGlkcGZfdnBvcnRfaW50cl9kZWluaXRgLgoKVGhpcyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBJbnRlbCBJUERGIGRyaXZlci4gQnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIHNwZWNpZmljYWxseSBpZiB0aGlzIGRyaXZlciBpcyBldmVuIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTttIHJlY2FsbGluZyB0aGF0IHRoZSBJbnRlbCBJUERGIGlzIHRoZSAmIzM0O0ludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiYjMzQ7IGRyaXZlci4gSXQgKnNvdW5kcyogbGlrZSBhIHZpcnR1YWwgZnVuY3Rpb24gZHJpdmVyIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLgoKVGhlIG5leHQgdGhpbmcgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGlzIGZ1enphYmxlLiBFdGhlcm5ldCBkcml2ZXJzIHRoYXQgYXJlIGhhcmR3YXJlIHNwZWNpZmljIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZnV6eiwgdW5sZXNzIHRoZXkmIzM5O3JlIHJ1bm5pbmcgb24gYW4gZW11bGF0ZWQgc3lzdGVtIG9yIGhhdmUgc29tZSBzb3J0IG9mIHZpcnR1YWwgYnVzIGF2YWlsYWJsZS4gV2FpdCBhIG1pbnV0ZSwgSSB0aGluayBJIHJlbWVtYmVyIHRoYXQgSVBERiBpcyBhIFBDSSBkcml2ZXIhCgpPa2F5LCB0aGF0IGNoYW5nZXMgdGhpbmdzLiBOb3cgSSBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jYCBvciBzb21ldGhpbmcgc2ltaWxhciB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIE9uY2UgSSBjb25maXJtIHRoYXQsIEkgY2FuIGV2YWx1YXRlIHRoZSBmdXp6aW5nIHBvdGVudGlhbCBtb3JlIHJlYWxpc3RpY2FsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTM4ND1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWRwZl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zOTEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MzkyOm1vZHVsZV9wY2lfZHJpdmVyKGlkcGZfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDY5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUENJIERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIGxvb2tzIGxpa2UgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7Y2FuIHdlIGZ1enogdGhpcz8mIzM0OyBBbmQgdGhlIGFuc3dlciwgb2YgY291cnNlLCBpcyAmIzM0O21heWJlLiYjMzQ7IElmIHdlIGhhdmUgUENJIGZ1enppbmcgZW5hYmxlZCwgdGhlbiBzeXprYWxsZXIgKm1pZ2h0KiBiZSBhYmxlIHRvIGRvIHNvbWV0aGluZy4gSSByZW1lbWJlciBzeXprYWxsZXIgZG9lcyBoYXZlIGEgUENJIGZ1enplciwgc3BlY2lmaWNhbGx5IGBzeXpfcGNpXy4uLmAuCgpIb3dldmVyLCB0aGUgcHJvbXB0IGlzIHRocm93aW5nIGEgd3JlbmNoIGluIHRoaW5ncywgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEkmIzM5O20gdHJ5aW5nIHRvIHRoaW5rIGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBJRFBGIGRldmljZSwgYW5kIEkgY2FuJiMzOTt0IHRoaW5rIG9mIG9uZSBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLiBIbW0uCgpTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSByZWFjaCBpdCB2aWEgUENJIGZ1enppbmc/IFN5emthbGxlcuKAmXMgUENJIGZ1enplciBkb2VzIHByb2JlIFBDSSBkZXZpY2VzLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzaWduLiBCdXQgaXMgdGhpcyBldmVuICp3b3J0aCogZnV6emluZz8gVHlwaWNhbGx5LCBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSwgZXNwZWNpYWxseSB3aXRob3V0IGFueSByZWFkaWx5IGF2YWlsYWJsZSBlbXVsYXRpb24sIGFyZSBjb25zaWRlcmVkIGRpZmZpY3VsdCBvciBvdXRyaWdodCBpbXBvc3NpYmxlIHRvIHJlYWNoLgoKV2FpdCBhIHNlY29uZCwgd2FzbiYjMzk7dCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgc3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX2RldmljZWA/IFRoYXQgY2FuICplbXVsYXRlKiBQQ0kgZGV2aWNlcyB0byBzb21lIGV4dGVudCwgYnV0IEkgaGlnaGx5IGRvdWJ0IGl0JiMzOTtzIGEgZnVsbCBlbXVsYXRpb24gb2YgSW50ZWwmIzM5O3MgSURQRiBoYXJkd2FyZS4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gSURQRiBpbiB0aGUgY3VycmVudCBzZXR1cC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IGRldGFpbHMgdGhhdCBjb3VsZCBtYWtlIGZ1enppbmcgdGhpcyBkcml2ZXIgZmVhc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSURQRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6CgoqKkV4YW1pbmluZyBJbnRlbCBpRFBGIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHNvbWUgc3BlY2lmaWNzIHJlZ2FyZGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHJpZ2h0PyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoZXkmIzM5O3JlIHRoZSBnby10byBmb3Igc2V0dGluZyBidWlsZC10aW1lIHZhcmlhYmxlcyBhbmQgZGVwZW5kZW5jaWVzLiBUaGUgaURQRiBkcml2ZXIgaXMgbGlrZWx5IHVuZGVyIHRoZSBJbnRlbCBldGhlcm5ldCB1bWJyZWxsYSwgc28gSSYjMzk7bGwgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZ2AuIE9yLCBpZiB0aGF0IGV4YWN0IHBhdGggaXMgc2xpZ2h0bHkgb2ZmLCBJJiMzOTtsbCBzdGFydCB0aGVyZSBhbmQgbG9vayBmb3IgYSBzaW1pbGFyIGZpbGVuYW1lIGFuZCBwYXRoIHdpdGhpbiB0aGF0IGRyaXZlciBzdHJ1Y3R1cmUuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3MgSSBuZWVkLiBIb3BlZnVsbHksIEkmIzM5O2xsIGZpbmQgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIHF1aWNrbHksIGJ1dCBpZiBub3QsIEkgY2FuIG1vdmUgb250byBhIG1vcmUgZ2VuZXJhbCBJbnRlbCBFdGhlcm5ldCBLY29uZmlnIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElEUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6NDpjb25maWcgSURQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz0xNz1pZiBJRFBGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTk6Y29uZmlnIElEUEZfU0lOR0xFUVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTIwLVx0Ym9vbCBcJiMzNDtpZHBmIHNpbmdsZXEgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0ODQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBJRFBGOiBBIEZlYXNpYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBpcywgaWYgd2UgZW5hYmxlIHRoZSBgSURQRmAgZHJpdmVyLCBjYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICpyZWFjaCogaXQ/IEkga25vdyBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgYnV0IHR5cGljYWxseSBpdCBuZWVkcyBzb21lIGtpbmQgb2YgUENJIGRldmljZSBkZXNjcmlwdGlvbiBvciBpdCYjMzk7cyBqdXN0IGdvaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEFoLCB3YWl0IGEgbWludXRlLCBzeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBoYXZlIGZ1bGwgZW11bGF0aW9uIGZvciBJRFBGLCBkb2VzIGl0PyBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBwb2ludC4KClNvLCBpcyBpdCBldmVuICp3b3J0aCogdHJ5aW5nIHRvIGZ1enogaXQ/IEkmIzM5O20gcmVtZW1iZXJpbmcgdGhhdCBxdW90ZSwgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmXigKYmIzM0OyBUaGlzIHNtZWxscyBsaWtlIGEgZGVhZCBlbmQgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIFBDSSBkcml2ZXIgd2l0aCBubyBRRU1VIGVtdWxhdGlvbi4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aG9zZSBjcml0aWNhbCBmdW5jdGlvbnMgbGlrZSBgaWRwZl92cG9ydF9pbnRyX2RlaW5pdGAsIGBpZHBmX3Zwb3J0X2ludHJfYWxsb2NgLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmVzLiBXaXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUsIG9yIGEgZGVjZW50IGVtdWxhdG9yLCB0aGUgZGV2aWNlIHByb2JhYmx5IHdvbiYjMzk7dCBpbml0aWFsaXplIGNvcnJlY3RseSwgYW5kIHRob3NlIGRhdGEgcGF0aHMgd2lsbCBiZSB1bnJlYWNoYWJsZS4KCkFscmlnaHQsIGxldCYjMzk7cyBrZWVwIGl0IHNpbXBsZSBmb3Igbm93LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBzZWUgaWYgYGlkcGZfcHJvYmVgIGNhbiBldmVuIHN1Y2NlZWQgd2l0aCBqdXN0IFBDSSBmdXp6aW5nLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgcmlnaHQ/IElmIHRoZSBwcm9iZSBmYWlscywgd2UmIzM5O3JlIGRvbmUuIE5vIHBvaW50IGdvaW5nIGZ1cnRoZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZHBmX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0xODk9c3RhdGljIGludCBpZHBmX2NmZ19odyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjI4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzoyMjk6ICogaWRwZl9wcm9iZSAtIERldmljZSBpbml0aWFsaXphdGlvbiByb3V0aW5lXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMC0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzNC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjM1OnN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjM2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTM4ND1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWRwZl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zODYtXHQuaWRfdGFibGVcdFx0PSBpZHBmX3BjaV90YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM4NzpcdC5wcm9iZVx0XHRcdD0gaWRwZl9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg4LVx0LnNyaW92X2NvbmZpZ3VyZVx0PSBpZHBmX3NyaW92X2NvbmZpZ3VyZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQzNgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBvZiBgaWRwZl9wcm9iZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBpZHBmX3Byb2JlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHJlY2FsbCB3aGF0IEkga25vdyBhYm91dCBJbnRlbCBEYXRhIFBsYW5lIEZpbHRlcmluZyAoSURQRikgYW5kIGl0cyBwdXJwb3NlLiBJdCYjMzk7cyBsaWtlbHkgYSBwcm9iZSwgbWVhbmluZyBpdCYjMzk7cyBpbnZvbHZlZCBpbiBzb21lIHNvcnQgb2YgaW50cm9zcGVjdGlvbiBvciBkaXNjb3ZlcnkgcHJvY2VzcyByZWxhdGVkIHRvIHRoZSBkYXRhIHBsYW5lLiBQZXJoYXBzIGl0JiMzOTtzIGlkZW50aWZ5aW5nIGF2YWlsYWJsZSByZXNvdXJjZXMsIHZhbGlkYXRpbmcgY29uZmlndXJhdGlvbnMsIGNoZWNraW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgcmVsYXRlZCB0byBJRFBGIGFjY2VsZXJhdGlvbiwgb3IgZXZlbiBwcm9iaW5nIHRoZSBuZXR3b3JrIHRvIHZlcmlmeSBmbG93IHJ1bGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHdoZXJlIHRoaXMgYGlkcGZfcHJvYmVgIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdGhlIGRhdGEgaXQgb3BlcmF0ZXMgb24gaXMga2V5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHdoYXQgaW5mb3JtYXRpb24gdGhlIGZ1bmN0aW9uIHJldHVybnMgYW5kIHdoYXQgdGhhdCByZXR1cm4gdmFsdWUgc2lnbmFscyB3aXRoaW4gdGhlIGJyb2FkZXIgZmxvdy4gQmFzZWQgb24gdGhlIG5hbWUsIGBpZHBmX3Byb2JlYCwgSSYjMzk7ZCBleHBlY3QgaXQgaXMgcmVsYXRlZCB0byBpZGVudGlmeWluZyBjYXBhYmlsaXRpZXMuIEkmIzM5O2xsIGdvIHRocm91Z2ggdGhlIGNvZGUgYW5kIHF1aWNrbHkgY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzNTpcdHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiAyMzY6XHR7XG4gMjM3Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiAyMzg6XHRcdHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXI7XG4gMjM5Olx0XHRpbnQgZXJyO1xuIDI0MDpcdFxuIDI0MTpcdFx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyKTtcbiAyNDI6XHRcdGlmICghYWRhcHRlcilcbiAyNDM6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjQ0Olx0XG4gMjQ1Olx0XHRhZGFwdGVyLVx1MDAzZXJlcV90eF9zcGxpdHEgPSB0cnVlO1xuIDI0NjpcdFx0YWRhcHRlci1cdTAwM2VyZXFfcnhfc3BsaXRxID0gdHJ1ZTtcbiAyNDc6XHRcbiAyNDg6XHRcdGFkYXB0ZXItXHUwMDNlcGRldiA9IHBkZXY7XG4gMjQ5Olx0XHRlcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XG4gMjUwOlx0XHRpZiAoZXJyKVxuIDI1MTpcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI1MjpcdFxuIDI1MzpcdFx0ZXJyID0gcGNpbV9yZXF1ZXN0X3JlZ2lvbihwZGV2LCAwLCBwY2lfbmFtZShwZGV2KSk7XG4gMjU0Olx0XHRpZiAoZXJyKSB7XG4gMjU1Olx0XHRcdHBjaV9lcnIocGRldiwgXCYjMzQ7cGNpbV9yZXF1ZXN0X3JlZ2lvbiBmYWlsZWQgJXBlXFxuXCYjMzQ7LCBFUlJfUFRSKGVycikpO1xuIDI1NjpcdFxuIDI1NzpcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI1ODpcdFx0fVxuIDI1OTpcdFxuIDI2MDpcdFx0ZXJyID0gcGNpX2VuYWJsZV9wdG0ocGRldik7XG4gMjYxOlx0XHRpZiAoZXJyKVxuIDI2MjpcdFx0XHRwY2lfZGJnKHBkZXYsIFwmIzM0O1BDSWUgUFRNIGlzIG5vdCBzdXBwb3J0ZWQgYnkgUENJZSBidXMvY29udHJvbGxlclxcblwmIzM0Oyk7XG4gMjYzOlx0XG4gMjY0Olx0XHQvKiBzZXQgdXAgZm9yIGhpZ2ggb3IgbG93IGRtYSAqL1xuIDI2NTpcdFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChkZXYsIERNQV9CSVRfTUFTSyg2NCkpO1xuIDI2NjpcdFx0aWYgKGVycikge1xuIDI2NzpcdFx0XHRwY2lfZXJyKHBkZXYsIFwmIzM0O0RNQSBjb25maWd1cmF0aW9uIGZhaWxlZDogJXBlXFxuXCYjMzQ7LCBFUlJfUFRSKGVycikpO1xuIDI2ODpcdFxuIDI2OTpcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI3MDpcdFx0fVxuIDI3MTpcdFxuIDI3MjpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMjczOlx0XHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWRhcHRlcik7XG4gMjc0Olx0XG4gMjc1Olx0XHRhZGFwdGVyLVx1MDAzZWluaXRfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtaW5pdFwmIzM0OyxcbiAyNzY6XHRcdFx0XHRcdFx0ICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxuIDI3NzpcdFx0XHRcdFx0XHQgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDI3ODpcdFx0XHRcdFx0XHQgICBkZXZfbmFtZShkZXYpKTtcbiAyNzk6XHRcdGlmICghYWRhcHRlci1cdTAwM2Vpbml0X3dxKSB7XG4gMjgwOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgaW5pdCB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDI4MTpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDI4MjpcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI4MzpcdFx0fVxuIDI4NDpcdFxuIDI4NTpcdFx0YWRhcHRlci1cdTAwM2VzZXJ2X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzLSVzLXNlcnZpY2VcJiMzNDssXG4gMjg2Olx0XHRcdFx0XHRcdCAgIFdRX1VOQk9VTkQgfCBXUV9NRU1fUkVDTEFJTSwgMCxcbiAyODc6XHRcdFx0XHRcdFx0ICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcbiAyODg6XHRcdFx0XHRcdFx0ICAgZGV2X25hbWUoZGV2KSk7XG4gMjg5Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNlc2Vydl93cSkge1xuIDI5MDpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIHNlcnZpY2Ugd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbiAyOTE6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiAyOTI6XHRcdFx0Z290byBlcnJfc2Vydl93cV9hbGxvYztcbiAyOTM6XHRcdH1cbiAyOTQ6XHRcbiAyOTU6XHRcdGFkYXB0ZXItXHUwMDNlbWJ4X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzLSVzLW1ieFwmIzM0OywgV1FfVU5CT1VORCB8IFdRX0hJR0hQUkksXG4gMjk2Olx0XHRcdFx0XHRcdCAgMCwgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcbiAyOTc6XHRcdFx0XHRcdFx0ICBkZXZfbmFtZShkZXYpKTtcbiAyOTg6XHRcdGlmICghYWRhcHRlci1cdTAwM2VtYnhfd3EpIHtcbiAyOTk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBtYWlsYm94IHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4gMzAwOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gMzAxOlx0XHRcdGdvdG8gZXJyX21ieF93cV9hbGxvYztcbiAzMDI6XHRcdH1cbiAzMDM6XHRcbiAzMDQ6XHRcdGFkYXB0ZXItXHUwMDNlc3RhdHNfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtc3RhdHNcJiMzNDssXG4gMzA1Olx0XHRcdFx0XHRcdCAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMzA2Olx0XHRcdFx0XHRcdCAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDMwNzpcdFx0XHRcdFx0XHQgICAgZGV2X25hbWUoZGV2KSk7XG4gMzA4Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNlc3RhdHNfd3EpIHtcbiAzMDk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDMxMDpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDMxMTpcdFx0XHRnb3RvIGVycl9zdGF0c193cV9hbGxvYztcbiAzMTI6XHRcdH1cbiAzMTM6XHRcbiAzMTQ6XHRcdGFkYXB0ZXItXHUwMDNldmNfZXZlbnRfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtdmNfZXZlbnRcJiMzNDssXG4gMzE1Olx0XHRcdFx0XHRcdCAgICAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMzE2Olx0XHRcdFx0XHRcdCAgICAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDMxNzpcdFx0XHRcdFx0XHQgICAgICAgZGV2X25hbWUoZGV2KSk7XG4gMzE4Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNldmNfZXZlbnRfd3EpIHtcbiAzMTk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB2aXJ0Y2hubCBldmVudCB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDMyMDpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDMyMTpcdFx0XHRnb3RvIGVycl92Y19ldmVudF93cV9hbGxvYztcbiAzMjI6XHRcdH1cbiAzMjM6XHRcbiAzMjQ6XHRcdC8qIHNldHVwIG1zZ2x2bCAqL1xuIDMyNTpcdFx0YWRhcHRlci1cdTAwM2Vtc2dfZW5hYmxlID0gbmV0aWZfbXNnX2luaXQoLTEsIElEUEZfQVZBSUxfTkVUSUZfTSk7XG4gMzI2Olx0XG4gMzI3Olx0XHRlcnIgPSBpZHBmX2Rldl9pbml0KGFkYXB0ZXIsIGVudCk7XG4gMzI4Olx0XHRpZiAoZXJyKSB7XG4gMzI5Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1VuZXhwZWN0ZWQgZGV2IElEIDB4JXggaW4gaWRwZiBwcm9iZVxcblwmIzM0OyxcbiAzMzA6XHRcdFx0XHRlbnQtXHUwMDNlZGV2aWNlKTtcbiAzMzE6XHRcdFx0Z290byBkZXN0cm95X3ZjX2V2ZW50X3dxO1xuIDMzMjpcdFx0fVxuIDMzMzpcdFxuIDMzNDpcdFx0ZXJyID0gaWRwZl9jZmdfaHcoYWRhcHRlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJRFBGIERyaXZlciBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIGBpZHBmX3Byb2JlYCBjYWxscyBgaWRwZl9jZmdfaHdgLCB3aGljaCBpbW1lZGlhdGVseSBpbmRpY2F0ZXMgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiB0aGlzIGRyaXZlciBpcyBhIHZpYWJsZSB0YXJnZXQgZm9yIHN5emthbGxlci4gU2luY2Ugc3l6a2FsbGVyIGhhcyB0aGUgYWJpbGl0eSB0byBmdXp6IFBDSSBkZXZpY2VzIGJ5IGluamVjdGluZyBQQ0kgY29uZmlnIGFuZCBNTUlPIG9wZXJhdGlvbnMsIEkgdGhpbmsgdGhlcmUgaXMgYSBjaGFuY2UuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGxgIGFuZCBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYCB3aGljaCBhcmUgcHJvYmFibHkgcGFydCBvZiB2cG9ydCBpbml0aWFsaXphdGlvbi4KCkFoYSEgSWYgdGhpcyAqaXMqIGEgUENJIGRyaXZlciwgbWF5YmUgc3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX2RldmljZWAgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBgaWRwZl9wcm9iZWAgYW5kIGFsbG93IGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSB0aHJvdWdoIE1NSU8sIGxlYWRpbmcgdG8gdGhlIGFjdGl2YXRpb24gb2YgaW50ZXJydXB0cyBhbmQgb3RoZXIgZnVuY3Rpb25hbGl0eS4gTXkgbWFpbiBjb25jZXJuIGlzLCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0PyBUaGVuIEkgc2VlIHRoaXM6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFRoYXQmIzM5O3MgaW1wb3J0YW50LgoKQnV0IHdhaXQgYSBtaW51dGUsIGlzIElEUEYgcmVhY2hhYmxlIGluIEdDRSBvciBRRU1VPyBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIuIElmIGl0IGlzIHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cywgdGhlbiBmdXp6aW5nIGl0IGlzIHBvaW50bGVzcy4KCkFoISBJIHNlZSB0aGF0IElEUEYgaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uIGRyaXZlciBmb3IgSW50ZWwmIzM5O3MgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uLiBJZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIsIHN5emthbGxlciBjb3VsZCBpbmplY3QgYSBmYWtlIFBDSSBkZXZpY2UgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCBhbmQgdGhlbiBmdXp6IGl0LiBIb3dldmVyLCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBpcyBrbm93biB0byBiZSBzb21ld2hhdCBsaW1pdGVkOyBpdCB1c3VhbGx5IGhhbmRsZXMgdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCBiYXNpYyBNTUlPIGFjY2VzcywgcmFyZWx5IGdldHRpbmcgZGVlcGx5IGludG8gdGhlIG5ldHdvcmsgc3RhY2sgb3IgaW50ZXJydXB0IGhhbmRsaW5nIHVubGVzcyB0aGUgZHJpdmVyIGlzIHNpbXBsZSBvciBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQuIEkgbmVlZCB0byBiZSByZWFsaXN0aWMgYWJvdXQgdGhpcy4KCkRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiBJRFBGPyBJIGNhbiYjMzk7dCBhc3N1bWUgYW55dGhpbmcuIEkgbmVlZCB0byBnbyBhbmQgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBleGlzdGluZyBzeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciBJRFBGLiBUaGF0IGlzIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWRwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTMwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklEUEYgYW5kIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byByZW1lbWJlciB0aGUgcmVzdHJpY3Rpb25zLiBJIGNhbiYjMzk7dCB1c2UgZ3JlcHBlciBvbiBgc3lzLypgLCBzbyB0aGF0JiMzOTtzIG91dC4gSSBhbHNvIG5lZWQgdG8gdXNlIGByZWFkLWZpbGVgIGFuZCBjYW4mIzM5O3QgdXNlIHRoZSBkZXNjcmlwdGlvbiBzZWFyY2ggdG9vbC4gUmlnaHQsIHRoYXQgd2FzIGEgdHlwby4KCk5vdywgY29uc2lkZXJpbmcgSURQRiwgaXQgYXBwZWFycyB0byBiZSBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFuIEludGVsIEV0aGVybmV0IGRyaXZlci4gR2l2ZW4gdGhpcywgaXQmIzM5O3MgZ2VuZXJhbGx5IGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdW5sZXNzIGl0JiMzOTtzIGEgdmlydGlvIG9yIHNpbWlsYXIgZW11bGF0ZWQgZGV2aWNlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyByZWFjaGFibGUgaW4gR0NFIG9yIFFFTVUuCgpHQ0UgcHJpbWFyaWx5IHVzZXMgdmlydGlvLW5ldCBvciBnVk5JQy4gUUVNVSBzdXBwb3J0cyBhIHJhbmdlIG9mIGVtdWxhdGVkIE5JQ3MsIGJ1dCBub3QgSURQRi4gU28sIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IElEUEYgaXNuJiMzOTt0IGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgbWVhbnMsIGFzIGFuIEludGVsIElQVSBoYXJkd2FyZSBkcml2ZXIsIHRoYXQgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCB0aGUgY29kZSBwYXRocyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGxpa2UgR0NFIG9yIFFFTVUuCgpMZXQgbWUgZG91YmxlLWNoZWNrIHRob3VnaC4gR29vZ2xlIENsb3VkIHVzZXMgZ1ZOSUMgYW5kIHZpcnRpby1uZXQuIEFXUyB1dGlsaXplcyBFTkEuIEF6dXJlIGVtcGxveXMgbWFuYS4gSURQRiBzcGVjaWZpY2FsbHkgdGFyZ2V0cyB0aGUgSW50ZWwgSVBVLiBEZWZpbml0ZWx5IG5vdCBlbXVsYXRlZC4gSXQmIzM5O3Mgbm90IHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkxldCBtZSByZS1leGFtaW5lIHRoZSBwcm9tcHQmIzM5O3MgY3JpdGVyaWEuIEl0IHNheXMgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFNpbmNlIElEUEYgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gUUVNVSwgYW5kIHRoZXJlIGlzIG5vIHBvc3NpYmxlIHdheSBmb3IgaXQgdG8gYmUgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFNvLCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgcmlnaHQgYW5zd2VyLgoKT2theSwgbGV0IG1lIGNvbmZpcm0gaWYgdGhlcmUmIzM5O3MgKmFueSogc2xpZ2h0IGNoYW5jZSBpdCYjMzk7cyBhIHZpcnR1YWwgZHJpdmVyLiBMZXQgbWUgbG9vayBhdCBgaWRwZl9wcm9iZWAgYWdhaW4uIFRoZSBjb2RlIHVzZXMgYHBjaW1fZW5hYmxlX2RldmljZWAsIGBwY2ltX3JlcXVlc3RfcmVnaW9uYCwgZXRjLiBJdCByZXF1aXJlcyBhIHJlYWwgUENJIGRldmljZS4gV2l0aG91dCBRRU1VIGVtdWxhdGlvbiBvciBhIHJlYWwgcGh5c2ljYWwgZGV2aWNlLCBgaWRwZl9wcm9iZWAgZWl0aGVyIHdvbiYjMzk7dCBiZSBjYWxsZWQsIG9yIGlmIGl0IGlzIHJlYWNoZWQsIGl0IGNhbiBvbmx5IHRyaWdnZXIgYmFzaWMgTU1JTyBmdXp6aW5nLCB3aGljaCB3b3VsZG4mIzM5O3QgZ2V0IHRvIHRob3NlIGtleSBmdW5jdGlvbnMgSSB3YW50IHRvIHRlc3QuIEFjdHVhbGx5LCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBjYW4gdHJpZ2dlciBpdCwgYnV0IHRoZW4gaXQmIzM5O2xsIGZhaWwgbGF0ZXIgb24uIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYCBpcyByZWFjaGFibGUgZnJvbSBgaWRwZl9wcm9iZWAuIEJ1dCBiYXNlZCBvbiB0aGUgY29kZSwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgaW1wb3NzaWJsZS4gR2l2ZW4gYWxsIHRoaXMsIEkmIzM5O20gc3RpbGwgZmlybWx5IGluIHRoZSBgV29ydGhGdXp6aW5nPWZhbHNlYCBjYW1wLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZHBmX3Zwb3J0X2ludHJfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTQ5Mj1zdGF0aWMgaW50IGlkcGZfdnBvcnRfb3BlbihzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsIGJvb2wgcnRubClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTUxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxNTEyOlx0ZXJyID0gaWRwZl92cG9ydF9pbnRyX2FsbG9jKHZwb3J0LCByc3JjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xNTEzLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM9NDUzOT1zdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfbmFwaV9hZGRfYWxsKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ1NjMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjQ1NjQ6ICogaWRwZl92cG9ydF9pbnRyX2FsbG9jIC0gQWxsb2NhdGUgbWVtb3J5IGZvciBpbnRlcnJ1cHQgdmVjdG9yc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NTY1LSAqIEB2cG9ydDogdmlydHVhbCBwb3J0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NTcxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzo0NTcyOmludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NTczLVx0XHRcdCAgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTEwOTE9dm9pZCBpZHBmX3Zwb3J0X2ludHJfcmVsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDoxMDkyOmludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC0xMDkzLVx0XHRcdCAgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTAzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgSURQRiYjMzk7cyBBdHRhY2sgU3VyZmFjZSoqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYGlkcGZgIGRyaXZlci4gVGhlIGNvcmUgb2YgdGhpcyBwb3RlbnRpYWxseSB2dWxuZXJhYmxlIGZ1bmN0aW9uYWxpdHkgaXMgdGhlIGBpZHBmX3Zwb3J0X2ludHJfYWxsb2NgIGZ1bmN0aW9uLiBJIGtub3cgdGhpcyBpcyB0cmlnZ2VyZWQgYnkgYGlkcGZfdnBvcnRfb3BlbmAsIHdoaWNoIGl0c2VsZiBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZSBuZXR3b3JrIGRldmljZSBiZWluZyBvcGVuZWQgdmlhIGBuZG9fb3BlbmAuIFRoZSBwYXRoIHRvIGdldCB0aGVyZSBpcyBwcmV0dHkgc3RhbmRhcmQ6IHRoZSBuZXRkZXYgbmVlZHMgdG8gYmUgcmVnaXN0ZXJlZC4gUmVnaXN0cmF0aW9uIHJlcXVpcmVzIGEgc3VjY2Vzc2Z1bCBgaWRwZl9wcm9iZWAuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpczogY2FuIGEgdG9vbCBsaWtlIFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGJlIHRyaWNrZWQgaW50byBtYWtpbmcgYGlkcGZfcHJvYmVgIHRoaW5rIGV2ZXJ5dGhpbmcgaXMgb2theSBhbmQgcmVnaXN0ZXIgYSBuZXRkZXYsIGV2ZW4gaWYgaXQmIzM5O3Mgbm90IGEgcmVhbCBwaHlzaWNhbCBkZXZpY2U/CgpNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCB0cmlja3kuIE5ldHdvcmsgZHJpdmVycyBhcmUgb2Z0ZW4gdGlnaHRseSBjb3VwbGVkIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMuIFRoZXkgcmVseSBvbiB0aGluZ3MgbGlrZSBETUEgcmluZyBzZXR1cCwgcG90ZW50aWFsbHkgZmlybXdhcmUgbG9hZGluZywgYW5kIGRlZmluaXRlbHkgbWFpbGJveCBpbnRlcmFjdGlvbnMgdG8gY29tbXVuaWNhdGUuIEl0JiMzOTtzIHJhcmUgdG8gZmluZCBhIHRydWx5ICYjMzk7c2ltcGxlJiMzOTsgbmV0d29yayBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBpZHBmYCBoYXMgYW55IGRlcGVuZGVuY2llcyBsaWtlIGZpcm13YXJlIG9yIGEgbWFpbGJveCBwcm90b2NvbC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBwb3RlbnRpYWwgZm9yIHZ1bG5lcmFiaWxpdHkgaXMgZ29pbmcgdG8gbGllLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlc2UgcHJlcmVxdWlzaXRlcyBhcmUgZXNzZW50aWFsIGZvciBgaWRwZl9wcm9iZWAgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJZiB0aGVzZSBhcmUgc2tpcHBlZCwgb3IgbW9ja2VkLCB0aGVuIGBpZHBmX3Byb2JlYCB3aWxsIGhhdmUgYSBjaGFuY2Ugb2Ygc3VjY2VlZGluZyB3aGVuIGl0IHNob3VsZG4mIzM5O3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWRwZl9zZW5kX21zZ190b19jcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmUsIHVzaW5nIGEgZmlyc3QtcGVyc29uIG5hcnJhdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgUm9vdCBDYXVzZSoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBpc3N1ZSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGFrZSBhIG1ldGhvZGljYWwgYXBwcm9hY2guICpMZXQmIzM5O3MgY2hlY2sgZm9yIG1haWxib3ggb3IgZmlybXdhcmUuKiBJIG5lZWQgdG8gc3RhcnQgd2l0aCB0aGUgbW9zdCBjb21tb24sIGVhc2lseS12ZXJpZmllZCBzdXNwZWN0cy4gSXMgdGhlcmUgYSBzaW1wbGUgZW1haWwgbWlzY29uZmlndXJhdGlvbiB0aGF0JiMzOTtzIHRoZSBjdWxwcml0PyBPciBjb3VsZCB0aGlzIGJlIGEga25vd24gYnVnIGluIGEgc3BlY2lmaWMgZmlybXdhcmUgdmVyc2lvbiB0aGF0JiMzOTtzIGNhdXNpbmcgdGhpcyBiZWhhdmlvcj8gVGhpcyBpbml0aWFsIGNoZWNrIGlzIGNydWNpYWwuIEl0JiMzOTtzIHRoZSBlcXVpdmFsZW50IG9mIGNoZWNraW5nIHRoZSBvYnZpb3VzIGJlZm9yZSBnZXR0aW5nIGludG8gZGVlcCBhbmFseXNpcy4gSXQmIzM5O3MgdW5saWtlbHksIGJ1dCBhIGhpZ2gtbGV2ZWwgdmlldyBpcyBuZWVkZWQgYmVmb3JlIGdldHRpbmcgaW50byB0aGUgbml0dHkgZ3JpdHR5LiBJIHdhbnQgdG8gcnVsZSBvdXQgdGhlIGJhc2ljIHN0dWZmIGZpcnN0IGFuZCBlc3RhYmxpc2ggYSBiYXNlbGluZSBiZWZvcmUgY29uc2lkZXJpbmcgbW9yZSBjb21wbGV4IHNjZW5hcmlvcy4gSXQmIzM5O3MgYWJvdXQgZWZmaWNpZW50bHkgaWRlbnRpZnlpbmcgdGhlIGlzc3VlIGFuZCBhdm9pZGluZyB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWlsYm94JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9MTI9c3RydWN0IGlkcGZfcnNzX2RhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzktI2RlZmluZSBJRFBGX0RGTFRfTUJYX0lEXHRcdC0xXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MDovKiBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0byB0cnkgYmVmb3JlIHJlc2V0dGluZyBtYWlsYm94ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MS0jZGVmaW5lIElEUEZfTUJfTUFYX0VSUlx0XHRcdDIwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9MjAzPXN0cnVjdCBpZHBmX3JlZ19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIyNC0gKiBAaWRjX2luaXQ6IElEQyBpbml0aWFsaXphdGlvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjI1OiAqIEBzdGF0aWNfcmVnX2luZm86IGFycmF5IG9mIG1haWxib3ggYW5kIHJzdGF0IHJlZ2lzdGVyIGluZm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIyNi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTIyNz1zdHJ1Y3QgaWRwZl9kZXZfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMzI6XHQvKiBzdGF0aWNfcmVnX2luZm9bMF0gaXMgbWFpbGJveCByZWdpb24sIHN0YXRpY19yZWdfaW5mb1sxXSBpcyByc3RhdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjMzLVx0c3RydWN0IHJlc291cmNlIHN0YXRpY19yZWdfaW5mb1tJRFBGX01NSU9fUkVHX05VTV9TVEFUSUNdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTU3MT1zdHJ1Y3QgaWRwZl9xdWV1ZV9pZF9yZWdfY2h1bmsge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4MC0gKiBzdHJ1Y3QgaWRwZl9xdWV1ZV9pZF9yZWdfaW5mbyAtIHF1ZXVlIElEIGFuZCByZWdpc3RlciBjaHVuayBpbmZvIHJlY2VpdmVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1ODE6ICpcdFx0XHRcdCAgIG92ZXIgdGhlIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4Mi0gKiBAbnVtX2NodW5rczogbnVtYmVyIG9mIGNodW5rc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTYwOD1zdHJ1Y3QgaWRwZl92Y194bl9tYW5hZ2VyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyMi0gKiBAbXNnX2VuYWJsZTogRGVidWcgbWVzc2FnZSBsZXZlbCBlbmFibGVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MjM6ICogQG1iX3dhaXRfY291bnQ6IE51bWJlciBvZiB0aW1lcyBtYWlsYm94IHdhcyBhdHRlbXB0ZWQgaW5pdGlhbGl6YXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyNC0gKiBAc3RhdGU6IEluaXQgc3RhdGUgbWFjaGluZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYzNS0gKiBAdmVjdG9yX3N0YWNrOiBTdGFjayB0byBzdG9yZSB0aGUgbXNpeCB2ZWN0b3IgaW5kZXhlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjM2OiAqIEBpcnFfbWJfaGFuZGxlcjogSGFuZGxlciBmb3IgaGFyZCBpbnRlcnJ1cHQgZm9yIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYzNy0gKiBAdHhfdGltZW91dF9jb3VudDogTnVtYmVyIG9mIFRYIHRpbWVvdXRzIHRoYXQgaGF2ZSBvY2N1cnJlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY1My0gKiBAc2Vydl93cTogV29ya3F1ZXVlIGZvciBzZXJ2aWNlIHRhc2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY1NDogKiBAbWJ4X3Rhc2s6IFRhc2sgdG8gaGFuZGxlIG1haWxib3ggaW50ZXJydXB0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjU1OiAqIEBtYnhfd3E6IFdvcmtxdWV1ZSBmb3IgbWFpbGJveCByZXNwb25zZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY1Ni0gKiBAdmNfZXZlbnRfdGFzazogVGFzayB0byBoYW5kbGUgb3V0IG9mIGJhbmQgdmlydGNobmwgZXZlbnQgbm90aWZpY2F0aW9uc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTg2OD1zdGF0aWMgaW5saW5lIHU4IGlkcGZfZ2V0X21pbl90eF9wa3RfbGVuKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODc2OiAqIGlkcGZfZ2V0X21ieF9yZWdfYWRkciAtIEdldCBCQVIwIG1haWxib3ggcmVnaXN0ZXIgYWRkcmVzc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc3LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc5LSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4ODA6ICogUmV0dXJuOiBCQVIwIG1haWxib3ggcmVnaXN0ZXIgYWRkcmVzcyBiYXNlZCBvbiByZWdpc3RlciBvZmZzZXQuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04ODEtICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxLmg9OTA9c3RydWN0IGlkcGZfbWJ4cV9kZXNjIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHEuaC05Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scS5oOjk3Oi8qIE1heCBudW1iZXIgb2YgTU1JTyByZWdpb25zIG5vdCBpbmNsdWRpbmcgdGhlIG1haWxib3ggYW5kIHJzdGF0IHJlZ2lvbnMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scS5oLTk4LSAqIHRoZSBmYWxsYmFjayBjYXNlIHdoZW4gdGhlIHdob2xlIGJhciBpcyBtYXBwZWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oPTgyPXN0cnVjdCBpZHBmX2N0bHFfY3JlYXRlX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaC04NC1cdGludCBpZDsgLyogYWJzb2x1dGUgcXVldWUgb2Zmc2V0IHBhc3NlZCBhcyBpbnB1dFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oOjg1Olx0XHQgKiAtMSBmb3IgZGVmYXVsdCBtYWlsYm94IGlmIHByZXNlbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaC04Ni1cdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oPTk3PXN0cnVjdCBpZHBmX2N0bHFfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oLTEyMy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaDoxMjQ6ICogZW51bSBpZHBmX21ieF9vcGMgLSBQRi9WRiBtYWlsYm94IGNvbW1hbmRzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHFfYXBpLmgtMTI1LSAqIEBpZHBmX21icV9vcGNfc2VuZF9tc2dfdG9fY3A6IHVzZWQgYnkgUEYgb3IgVkYgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gaXRzIENQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jLTExLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jOjEyOiAqIGlkcGZfY3RscV9yZWdfaW5pdCAtIGluaXRpYWxpemUgZGVmYXVsdCBtYWlsYm94IHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jLTEzLSAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYz0xNj1zdGF0aWMgdm9pZCBpZHBmX2N0bHFfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMtNTQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmM6NTU6ICogaWRwZl9tYl9pbnRyX3JlZ19pbml0IC0gSW5pdGlhbGl6ZSBtYWlsYm94IGludGVycnVwdCByZWdpc3RlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jLTU2LSAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYz01OD1zdGF0aWMgdm9pZCBpZHBmX21iX2ludHJfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMtNjAtXHRzdHJ1Y3QgaWRwZl9pbnRyX3JlZyAqaW50ciA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlbWJfdmVjdG9yLmludHJfcmVnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jOjYxOlx0dTMyIGR5bl9jdGwgPSBsZTMyX3RvX2NwdShhZGFwdGVyLVx1MDAzZWNhcHMubWFpbGJveF9keW5fY3RsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy02Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9NTM9c3RhdGljIHZvaWQgaWRwZl9kZWluaXRfdmVjdG9yX3N0YWNrKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTY3LSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6Njg6ICogVGhpcyB3aWxsIGFsc28gZGlzYWJsZSBpbnRlcnJ1cHQgbW9kZSBhbmQgcXVldWUgdXAgbWFpbGJveCB0YXNrLiBNYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtNjktICogdGFzayB3aWxsIHJlc2NoZWR1bGUgaXRzZWxmIGlmIG5vdCBpbiBpbnRlcnJ1cHQgbW9kZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9ODI9dm9pZCBpZHBmX2ludHJfcmVsKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTk3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjk4OiAqIGlkcGZfbWJfaW50cl9jbGVhbiAtIEludGVycnVwdCBoYW5kbGVyIGZvciB0aGUgbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTk5LSAqIEBpcnE6IGludGVycnVwdCBudW1iZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTAyPXN0YXRpYyBpcnFyZXR1cm5fdCBpZHBmX21iX2ludHJfY2xlYW4oaW50IF9fYWx3YXlzX3VudXNlZCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTExMS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMTI6ICogaWRwZl9tYl9pcnFfZW5hYmxlIC0gRW5hYmxlIE1TSVggaW50ZXJydXB0IGZvciB0aGUgbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTExMy0gKiBAYWRhcHRlcjogYWRhcHRlciB0byBnZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3MgZm9yIHJlZ2lzdGVyIHdyaXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTExNT1zdGF0aWMgdm9pZCBpZHBmX21iX2lycV9lbmFibGUoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTI1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjEyNjogKiBpZHBmX21iX2ludHJfcmVxX2lycSAtIFJlcXVlc3QgaXJxIGZvciB0aGUgbWFpbGJveCBpbnRlcnJ1cHRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMjc6ICogQGFkYXB0ZXI6IGFkYXB0ZXIgc3RydWN0dXJlIHRvIHBhc3MgdG8gdGhlIG1haWxib3ggaXJxIGhhbmRsZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xMjgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTI5PXN0YXRpYyBpbnQgaWRwZl9tYl9pbnRyX3JlcV9pcnEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTQwLVx0XHRkZXZfZXJyKFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTQxOlx0XHRcdFwmIzM0O0lSUSByZXF1ZXN0IGZvciBtYWlsYm94IGZhaWxlZCwgZXJyb3I6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE0Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTUxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE1MjogKiBpZHBmX21iX2ludHJfaW5pdCAtIEluaXRpYWxpemUgdGhlIG1haWxib3ggaW50ZXJydXB0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTUzOiAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZSB0byBzdG9yZSB0aGUgbWFpbGJveCB2ZWN0b3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xNTQtICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTMwND1pbnQgaWRwZl9pbnRyX3JlcShzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0zNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6Mzc3Olx0YWRhcHRlci1cdTAwM2VtYl92ZWN0b3Iudl9pZHggPSBsZTE2X3RvX2NwdShhZGFwdGVyLVx1MDAzZWNhcHMubWFpbGJveF92ZWN0b3JfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTM3OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTMzNz1zdGF0aWMgdm9pZCBpZHBmX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEzNDctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTM0ODogKiBpZHBmX3N0YXRpc3RpY3NfdGFzayAtIERlbGF5ZWQgdGFzayB0byBnZXQgc3RhdGlzdGljcyBvdmVyIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xMzQ5LSAqIEB3b3JrOiB3b3JrX3N0cnVjdCBoYW5kbGUgdG8gb3VyIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTM1MT12b2lkIGlkcGZfc3RhdGlzdGljc190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM3MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMzcxOiAqIGlkcGZfbWJ4X3Rhc2sgLSBEZWxheWVkIHRhc2sgdG8gaGFuZGxlIG1haWxib3ggcmVzcG9uc2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM3Mi0gKiBAd29yazogd29ya19zdHJ1Y3QgaGFuZGxlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTEzNzQ9dm9pZCBpZHBmX21ieF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM4OS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMzkwOiAqIGlkcGZfc2VydmljZV90YXNrIC0gRGVsYXllZCB0YXNrIGZvciBoYW5kbGluZyBtYWlsYm94IHJlc3BvbnNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEzOTEtICogQHdvcms6IHdvcmtfc3RydWN0IGhhbmRsZSB0byBvdXIgZGF0YVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xODU3PXN0YXRpYyBpbnQgaWRwZl9jaGVja19yZXNldF9jb21wbGV0ZShzdHJ1Y3QgaWRwZl9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE4ODktICogRGVhbGxvY2F0ZSB0aGUgdnBvcnRzIGFuZCBhbGwgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSBhbmRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxODkwOiAqIHJlYWxsb2NhdGUuIEFsc28gcmVpbml0aWFsaXplIHRoZSBtYWlsYm94LiBSZXR1cm4gMCBvbiBzdWNjZXNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE4OTEtICogbmVnYXRpdmUgb24gZmFpbHVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTg5Mz1zdGF0aWMgdm9pZCBpZHBmX2luaXRfaGFyZF9yZXNldChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xOTMyLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE5MzM6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkZWZhdWx0IG1haWxib3g6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE5MzQtXHRcdGdvdG8gdW5sb2NrX211dGV4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9MTg5PXN0YXRpYyBpbnQgaWRwZl9jZmdfaHcoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTE5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MTk5Olx0LyogTWFwIG1haWxib3ggc3BhY2UgZm9yIHZpcnRjaG5sIGNvbW11bmljYXRpb24gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjAwLVx0bWJ4X3N0YXJ0ID0gcmVzX3N0YXJ0ICYjNDM7IGFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0uc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0yMzU9c3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjk4LVx0aWYgKCFhZGFwdGVyLVx1MDAzZW1ieF93cSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzoyOTk6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgbWFpbGJveCB3b3JrcXVldWVcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zMDAtXHRcdGVyciA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTEwLSAqIEBkaXJlY3Q6IENhcGFiaWxpdHkgdGhhdCBpbmRpY2F0ZXMgdGhlIGRpcmVjdCBhY2Nlc3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxMTogKiBAbWFpbGJveDogQ2FwYWJpbGl0eSB0aGF0IGluZGljYXRlcyB0aGUgbWFpbGJveCBhY2Nlc3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xMi0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYz0xNT1zdGF0aWMgZW51bSBpZHBmX3B0cF9hY2Nlc3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxNjppZHBmX3B0cF9nZXRfYWNjZXNzKGNvbnN0IHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBkaXJlY3QsIHUzMiBtYWlsYm94KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTE3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTktXHRcdHJldHVybiBJRFBGX1BUUF9ESVJFQ1Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MjA6XHRlbHNlIGlmIChhZGFwdGVyLVx1MDAzZXB0cC1cdTAwM2VjYXBzIFx1MDAyNiBtYWlsYm94KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTIxLVx0XHRyZXR1cm4gSURQRl9QVFBfTUFJTEJPWDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MzM9dm9pZCBpZHBmX3B0cF9nZXRfZmVhdHVyZXNfYWNjZXNzKGNvbnN0IHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTM1LVx0c3RydWN0IGlkcGZfcHRwICpwdHAgPSBhZGFwdGVyLVx1MDAzZXB0cDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzozNjpcdHUzMiBkaXJlY3QsIG1haWxib3g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTM5LVx0ZGlyZWN0ID0gVklSVENITkwyX0NBUF9QVFBfR0VUX0RFVklDRV9DTEtfVElNRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo0MDpcdG1haWxib3ggPSBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfREVWSUNFX0NMS19USU1FX01CO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTQxLVx0cHRwLVx1MDAzZWdldF9kZXZfY2xrX3RpbWVfYWNjZXNzID0gaWRwZl9wdHBfZ2V0X2FjY2VzcyhhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTQyLVx0XHRcdFx0XHRcdFx0ICAgZGlyZWN0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjQzOlx0XHRcdFx0XHRcdFx0ICAgbWFpbGJveCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTQ2LVx0ZGlyZWN0ID0gVklSVENITkwyX0NBUF9QVFBfR0VUX0NST1NTX1RJTUU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NDc6XHRtYWlsYm94ID0gVklSVENITkwyX0NBUF9QVFBfR0VUX0NST1NTX1RJTUVfTUI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNDgtXHRwdHAtXHUwMDNlZ2V0X2Nyb3NzX3RzdGFtcF9hY2Nlc3MgPSBpZHBmX3B0cF9nZXRfYWNjZXNzKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNDktXHRcdFx0XHRcdFx0XHQgICBkaXJlY3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NTA6XHRcdFx0XHRcdFx0XHQgICBtYWlsYm94KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy01MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTMtXHRkaXJlY3QgPSBWSVJUQ0hOTDJfQ0FQX1BUUF9TRVRfREVWSUNFX0NMS19USU1FO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjU0Olx0bWFpbGJveCA9IFZJUlRDSE5MMl9DQVBfUFRQX1NFVF9ERVZJQ0VfQ0xLX1RJTUVfTUI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTUtXHRwdHAtXHUwMDNlc2V0X2Rldl9jbGtfdGltZV9hY2Nlc3MgPSBpZHBmX3B0cF9nZXRfYWNjZXNzKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTYtXHRcdFx0XHRcdFx0XHQgICBkaXJlY3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NTc6XHRcdFx0XHRcdFx0XHQgICBtYWlsYm94KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy01OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjAtXHRkaXJlY3QgPSBWSVJUQ0hOTDJfQ0FQX1BUUF9BREpfREVWSUNFX0NMSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo2MTpcdG1haWxib3ggPSBWSVJUQ0hOTDJfQ0FQX1BUUF9BREpfREVWSUNFX0NMS19NQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy02Mi1cdHB0cC1cdTAwM2VhZGpfZGV2X2Nsa190aW1lX2FjY2VzcyA9IGlkcGZfcHRwX2dldF9hY2Nlc3MoYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy02My1cdFx0XHRcdFx0XHRcdCAgIGRpcmVjdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo2NDpcdFx0XHRcdFx0XHRcdCAgIG1haWxib3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy02Ny1cdGRpcmVjdCA9IFZJUlRDSE5MMl9DQVBfUFRQX1RYX1RTVEFNUFM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6Njg6XHRtYWlsYm94ID0gVklSVENITkwyX0NBUF9QVFBfVFhfVFNUQU1QU19NQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy02OS1cdHB0cC1cdTAwM2V0eF90c3RhbXBfYWNjZXNzID0gaWRwZl9wdHBfZ2V0X2FjY2VzcyhhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTcwLVx0XHRcdFx0XHRcdCAgICBkaXJlY3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NzE6XHRcdFx0XHRcdFx0ICAgIG1haWxib3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTcyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9OTk9c3RhdGljIHU2NCBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX2RpcmVjdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xMjMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MTI0OiAqIGlkcGZfcHRwX3JlYWRfc3JjX2Nsa19yZWdfbWFpbGJveCAtIFJlYWQgdGhlIG1haW4gdGltZXIgdmFsdWUgdGhyb3VnaCBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTI1LSAqIEBhZGFwdGVyOiBEcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTMxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjEzMjpzdGF0aWMgaW50IGlkcGZfcHRwX3JlYWRfc3JjX2Nsa19yZWdfbWFpbGJveChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTEzMy1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgcHRwX3N5c3RlbV90aW1lc3RhbXAgKnN0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MTYzPXN0YXRpYyBpbnQgaWRwZl9wdHBfcmVhZF9zcmNfY2xrX3JlZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKnNyY19jbGssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTE2OS1cdGNhc2UgSURQRl9QVFBfTUFJTEJPWDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxNzA6XHRcdHJldHVybiBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX21haWxib3goYWRhcHRlciwgc3RzLCBzcmNfY2xrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xNzEtXHRjYXNlIElEUEZfUFRQX0RJUkVDVDpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MTg5PXN0YXRpYyB2b2lkIGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lX2RpcmVjdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yMTEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MjEyOiAqIGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lX21haWxib3ggLSBHZXQgdGhlIGNyb3NzIHRpbWUgc3RhbXAgdmFsdWVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MjEzOiAqXHRcdFx0XHRcdCAgIHRocm91Z2ggbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTIxNC0gKiBAYWRhcHRlcjogRHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTIxOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoyMjA6c3RhdGljIGludCBpZHBmX3B0cF9nZXRfc3luY19kZXZpY2VfdGltZV9tYWlsYm94KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMjIxLVx0XHRcdFx0XHRcdCB1NjQgKmRldl90aW1lLCB1NjQgKnN5c190aW1lKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYz0yNDY9c3RhdGljIGludCBpZHBmX3B0cF9nZXRfc3luY19kZXZpY2VfdGltZShrdGltZV90ICpkZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTI2MS1cdGNhc2UgSURQRl9QVFBfTUFJTEJPWDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoyNjI6XHRcdGVyciA9IGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lX21haWxib3goYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yNjMtXHRcdFx0XHRcdFx0XHQgICAgXHUwMDI2bnNfdGltZV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oPTM4PXN0cnVjdCBpZHBmX3B0cF9kZXZfY2xrX3JlZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC03Mi0gKiBASURQRl9QVFBfRElSRUNUOiBkaXJlY3QgYWNjZXNzIHRocm91Z2ggQkFSIHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oOjczOiAqIEBJRFBGX1BUUF9NQUlMQk9YOiBhY2Nlc3MgdGhyb3VnaCBtYWlsYm94IG1lc3NhZ2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmgtNzQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmg9NzU9ZW51bSBpZHBmX3B0cF9hY2Nlc3Mge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC04MS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDo4MjogKiBzdHJ1Y3QgaWRwZl9wdHBfc2Vjb25kYXJ5X21ieCAtIFBUUCBzZWNvbmRhcnkgbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oOjgzOiAqIEBwZWVyX21ieF9xX2lkOiBQVFAgbWFpbGJveCBxdWV1ZSBJRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oLTg0LSAqIEBwZWVyX2lkOiBQZWVyIElEIGZvciBQVFAgRGV2aWNlIENvbnRyb2wgZGFlbW9uXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oPTE0Nj1zdHJ1Y3QgaWRwZl9wdHBfdnBvcnRfdHhfdHN0YW1wX2NhcHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC0xNzUtICogQHJzdjogcmVzZXJ2ZWQgYml0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oOjE3NjogKiBAc2Vjb25kYXJ5X21ieDogcGFyYW1ldGVycyBmb3IgdXNpbmcgZGVkaWNhdGVkIFBUUCBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmgtMTc3LSAqIEByZWFkX2Rldl9jbGtfbG9jazogc3BpbmxvY2sgcHJvdGVjdGluZyBhY2Nlc3MgdG8gdGhlIGRldmljZSBjbG9jayByZWFkXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz00MzkzPXN0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9tYXBfdmVjdG9yX3RvX3FzKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ0OTQtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6NDQ5NTogKiBJbml0aWFsaXplIHZlY3RvciBpbmRleGVzIHdpdGggdmFsdWVzIHJldHVybmVkIG92ZXIgbWFpbGJveC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtNDQ5Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy0xMC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYzoxMTogKiBpZHBmX3ZmX2N0bHFfcmVnX2luaXQgLSBpbml0aWFsaXplIGRlZmF1bHQgbWFpbGJveCByZWdpc3RlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy0xMi0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmM9MTU9c3RhdGljIHZvaWQgaWRwZl92Zl9jdGxxX3JlZ19pbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jLTUzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jOjU0OiAqIGlkcGZfdmZfbWJfaW50cl9yZWdfaW5pdCAtIEluaXRpYWxpemUgdGhlIG1haWxib3ggcmVnaXN0ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy01NS0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmM9NTc9c3RhdGljIHZvaWQgaWRwZl92Zl9tYl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jLTU5LVx0c3RydWN0IGlkcGZfaW50cl9yZWcgKmludHIgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZW1iX3ZlY3Rvci5pbnRyX3JlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYzo2MDpcdHUzMiBkeW5fY3RsID0gbGUzMl90b19jcHUoYWRhcHRlci1cdTAwM2VjYXBzLm1haWxib3hfZHluX2N0bCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMtNjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9OTA9c3RhdGljIHZvaWQgaWRwZl9yZWN2X2V2ZW50X21zZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTExOC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjExOTogKiBpZHBmX21iX2NsZWFuIC0gUmVjbGFpbSB0aGUgc2VuZCBtYWlsYm94IHF1ZXVlIGVudHJpZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEyMC0gKiBAYWRhcHRlcjogZHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTIyLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzoxMjM6ICogUmVjbGFpbSB0aGUgc2VuZCBtYWlsYm94IHF1ZXVlIGVudHJpZXMgdG8gYmUgdXNlZCB0byBzZW5kIGZ1cnRoZXIgbWVzc2FnZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEyNC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTE5MD1zdGF0aWMgdm9pZCBpZHBmX3ByZXBhcmVfcHRwX21iX21zZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1MzIgb3AsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTkyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjE5MzpcdC8qIElmIHRoZSBtZXNzYWdlIGlzIFBUUC1yZWxhdGVkIGFuZCB0aGUgc2Vjb25kYXJ5IG1haWxib3ggaXMgYXZhaWxhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTk0Olx0ICogc2VuZCB0aGUgbWVzc2FnZSB0aHJvdWdoIHRoZSBzZWNvbmRhcnkgbWFpbGJveC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTE5NS1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTIwND1zdGF0aWMgdm9pZCBpZHBmX3ByZXBhcmVfcHRwX21iX21zZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1MzIgb3AsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMjA5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MjEwOiAqIGlkcGZfc2VuZF9tYl9tc2cgLSBTZW5kIG1lc3NhZ2Ugb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0yMTEtICogQGFkYXB0ZXI6IGRyaXZlciBzcGVjaWZpYyBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTU3MT1pZHBmX3ZjX3huX2ZvcndhcmRfcmVwbHkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy02NjgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzo2Njk6ICogaWRwZl9yZWN2X21iX21zZyAtIFJlY2VpdmUgbWVzc2FnZSBvdmVyIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTY3MC0gKiBAYWRhcHRlcjogZHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTAyOD1zdGF0aWMgaW50IGlkcGZfc2VuZF9nZXRfbGFuX21lbW9yeV9yZWdpb25zKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTA4NC0gKiBjYWxjdWxhdGUgdGhlIG9mZnNldHMgYW5kIHNpemVzIGZvciB0aGUgcmVnaW9ucyBiZWZvcmUsIGluIGJldHdlZW4sIGFuZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTA4NTogKiBhZnRlciB0aGUgbWFpbGJveCBhbmQgcnN0YXQgTU1JTyBtYXBwaW5ncy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEwODYtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0xMDg5PXN0YXRpYyBpbnQgaWRwZl9jYWxjX3JlbWFpbmluZ19tbWlvX3JlZ3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMDk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTEwMDpcdC8qIFJlZ2lvbiBwcmVjZWRpbmcgbWFpbGJveCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTEwMS1cdGh3LVx1MDAzZWxhbl9yZWdzWzBdLmFkZHJfc3RhcnQgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTEwMi1cdGh3LVx1MDAzZWxhbl9yZWdzWzBdLmFkZHJfbGVuID0gbWJ4X3JlZy1cdTAwM2VzdGFydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjExMDM6XHQvKiBSZWdpb24gYmV0d2VlbiBtYWlsYm94IGFuZCByc3RhdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTEwNC1cdGh3LVx1MDAzZWxhbl9yZWdzWzFdLmFkZHJfc3RhcnQgPSBtYnhfcmVnLVx1MDAzZWVuZCAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTEzMjQ9aW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMzY4LSAqIEBxX3R5cGU6IHF1ZXVlIG1vZGVsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzoxMzY5OiAqIEBjaHVua3M6IHF1ZXVlIHJlZ3MgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMzcwLSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTQxMj1zdGF0aWMgaW50IF9faWRwZl9xdWV1ZV9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTQ2Ny0gKiBAcnNyYzogcG9pbnRlciB0byBxdWV1ZSBhbmQgdmVjdG9yIHJlc291cmNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTQ2ODogKiBAY2h1bmtzOiBxdWV1ZSByZWdpc3RlcnMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xNDY5LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MjU0OT1zdGF0aWMgdm9pZCBpZHBmX2NvbnZlcnRfcmVnX3RvX3F1ZXVlX2NodW5rcyhzdHJ1Y3QgdmlydGNobmwyX3F1ZXVlX2NodW5rICpkY2h1bmtzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTI1NjQtICogQGFkYXB0ZXI6IGFkYXB0ZXIgcG9pbnRlciB1c2VkIHRvIHNlbmQgdmlydGNobmwgbWVzc2FnZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MjU2NTogKiBAY2h1bmtzOiBxdWV1ZSBpZHMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0yNTY2LSAqIEB2cG9ydF9pZDogdnBvcnQgaWRlbnRpZmllciB1c2VkIHdoaWxlIHByZXBhcmluZyB0aGUgdmlydGNobmwgbWVzc2FnZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTMzMzg9c3RhdGljIHN0cnVjdCBpZHBmX2N0bHFfaW5mbyAqaWRwZl9maW5kX2N0bHEoc3RydWN0IGlkcGZfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTMzNTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozMzUxOiAqIGlkcGZfaW5pdF9kZmx0X21ieCAtIFNldHVwIGRlZmF1bHQgbWFpbGJveCBwYXJhbWV0ZXJzIGFuZCBtYWtlIHJlcXVlc3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTMzNTItICogQGFkYXB0ZXI6IGFkYXB0ZXIgaW5mbyBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zNDgwPWludCBpZHBmX3ZjX2NvcmVfaW5pdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM1NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozNTc5Olx0LyogU3RhcnQgdGhlIG1haWxib3ggdGFzayBiZWZvcmUgcmVxdWVzdGluZyB2ZWN0b3JzLiBUaGlzIHdpbGwgZW5zdXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozNTgwOlx0ICogdmVjdG9yIGluZm9ybWF0aW9uIHJlc3BvbnNlIGZyb20gbWFpbGJveCBpcyBoYW5kbGVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNTgxLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzYzNC1cdGlmICgmIzQzOyYjNDM7YWRhcHRlci1cdTAwM2VtYl93YWl0X2NvdW50IFx1MDAzZSBJRFBGX01CX01BWF9FUlIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM2MzU6XHRcdGRldl9lcnIoXHUwMDI2YWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGVzdGFibGlzaCBtYWlsYm94IGNvbW11bmljYXRpb25zIHdpdGggaGFyZHdhcmVcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzYzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNjM4LVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzYzOTpcdC8qIElmIGl0IHJlYWNoZWQgaGVyZSwgaXQgaXMgcG9zc2libGUgdGhhdCBtYWlsYm94IHF1ZXVlIGluaXRpYWxpemF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNjQwLVx0ICogcmVnaXN0ZXIgd3JpdGVzIG1pZ2h0IG5vdCBoYXZlIHRha2VuIGVmZmVjdC4gUmV0cnkgdG8gaW5pdGlhbGl6ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzY0MTpcdCAqIHRoZSBtYWlsYm94IGFnYWluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNjQyLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9Mzc0Nz1pbnQgaWRwZl92cG9ydF9pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGlkcGZfdnBvcnRfbWF4X3EgKm1heF9xKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4MTUtICogaWRwZl9nZXRfdmVjX2lkcyAtIEluaXRpYWxpemUgdmVjdG9yIGlkIGZyb20gTWFpbGJveCBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODE2OiAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZSB0byBnZXQgdGhlIG1haWxib3ggdmVjdG9yIGlkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODE3LSAqIEB2ZWNpZHM6IEFycmF5IG9mIHZlY3RvciBpZHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4MTgtICogQG51bV92ZWNpZHM6IG51bWJlciBvZiB2ZWN0b3IgaWRzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODE5OiAqIEBjaHVua3M6IHZlY3RvciBpZHMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODIwLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODIxOiAqIFdpbGwgaW5pdGlhbGl6ZSB0aGUgbWFpbGJveCB2ZWN0b3IgaWQgd2hpY2ggaXMgcmVjZWl2ZWQgZnJvbSB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4MjItICogZ2V0IGNhcGFiaWxpdGllcyBhbmQgZGF0YSBxdWV1ZSB2ZWN0b3IgaWRzIHdpdGggaWRzIHJlY2VpdmVkIGFzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODIzOiAqIG1haWxib3ggcGFyYW1ldGVycy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4MjQtICogUmV0dXJucyBudW1iZXIgb2YgaWRzIGZpbGxlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTM4MjY9aW50IGlkcGZfZ2V0X3ZlY19pZHMoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODYzLSAqIEBxX3R5cGU6IHF1ZXVlIG1vZGVsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODY0OiAqIEBjaHVua3M6IHF1ZXVlIGlkcyByZWNlaXZlZCBvdmVyIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4NjUtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM4NjY6ICogV2lsbCBpbml0aWFsaXplIGFsbCBxdWV1ZSBpZHMgd2l0aCBpZHMgcmVjZWl2ZWQgYXMgbWFpbGJveCBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODY3LSAqIFJldHVybnMgbnVtYmVyIG9mIGlkcyBmaWxsZWRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zODY5PXN0YXRpYyBpbnQgaWRwZl92cG9ydF9nZXRfcXVldWVfaWRzKHUzMiAqcWlkcywgaW50IG51bV9xaWRzLCB1MTYgcV90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM5MDctICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM5MDg6ICogV2lsbCBpbml0aWFsaXplIGFsbCBxdWV1ZSBpZHMgd2l0aCBpZHMgcmVjZWl2ZWQgYXMgbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzkwOS0gKiBwYXJhbWV0ZXJzLiBSZXR1cm5zIG51bWJlciBvZiBxdWV1ZSBpZHMgaW5pdGlhbGl6ZWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MzkxMT1zdGF0aWMgaW50IF9faWRwZl92cG9ydF9xdWV1ZV9pZHNfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzk3OS0gKiBAcnNyYzogcG9pbnRlciB0byBxdWV1ZSBhbmQgdmVjdG9yIHJlc291cmNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6Mzk4MDogKiBAY2h1bmtzOiBxdWV1ZSBpZHMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zOTgxLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozOTgyOiAqIFdpbGwgaW5pdGlhbGl6ZSBhbGwgcXVldWUgaWRzIHdpdGggaWRzIHJlY2VpdmVkIGFzIG1haWxib3ggcGFyYW1ldGVycy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM5ODMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz00Mjk1PWludCBpZHBmX2FkZF9kZWxfbWFjX2ZpbHRlcnMoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy00NDAxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6NDQwMjogKiBpZHBmX3NldF9wcm9taXNjdW91cyAtIHNldCBwcm9taXNjdW91cyBhbmQgc2VuZCBtZXNzYWdlIHRvIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTQ0MDMtICogQGFkYXB0ZXI6IERyaXZlciBzcGVjaWZpYyBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubF9wdHAuYz0xNj1pbnQgaWRwZl9wdHBfZ2V0X2NhcHMoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmxfcHRwLmMtNjItXHQvKiBpZiB0aGUgcHRwX21iX3FfaWQgaG9sZHMgaW52YWxpZCB2YWx1ZSAoMHhmZmZmKSwgdGhlIHNlY29uZGFyeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sX3B0cC5jOjYzOlx0ICogbWFpbGJveCBpcyBub3Qgc3VwcG9ydGVkLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sX3B0cC5jLTY0LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD00ODE9VklSVENITkwyX0NIRUNLX1NUUlVDVF9MRU4oOCwgdmlydGNobmwyX3ZlcnNpb25faW5mbyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC00OTAtICogQG90aGVyX2NhcHM6IFNlZSBlbnVtIHZpcnRjaG5sMl9jYXBfb3RoZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjQ5MTogKiBAbWFpbGJveF9keW5fY3RsOiBEWU5fQ1RMIHJlZ2lzdGVyIG9mZnNldCBhbmQgdmVjdG9yIGlkIGZvciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTQ5Mi0gKlx0XHQgICAgIHByb3ZpZGVkIGJ5IENQLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo0OTM6ICogQG1haWxib3hfdmVjdG9yX2lkOiBNYWlsYm94IHZlY3RvciBpZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNDk0LSAqIEBudW1fYWxsb2NhdGVkX3ZlY3RvcnM6IE1heGltdW0gbnVtYmVyIG9mIGFsbG9jYXRlZCB2ZWN0b3JzIGZvciB0aGUgZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNTI3LSAqIElmIGRhdGFwbGFuZSBkcml2ZXIgc2V0cyBudW1fYWxsb2NhdGVkX3ZlY3RvcnMgYXMgMCwgQ1Agd2lsbCByZXNwb25kIHdpdGggMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1Mjg6ICogd2hpY2ggaXMgZGVmYXVsdCB2ZWN0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZWZhdWx0IG1haWxib3guIEZvciBhbnkgb3RoZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNTI5LSAqIHZhbHVlICYjMzk7biYjMzk7LCBDUCByZXNwb25kcyB3aXRoIGEgdmFsdWUgXHUwMDNjPSBuIGJhc2VkIG9uIHRoZSBDUCYjMzk7cyBwb2xpY3kgb2ZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNTMwLSAqIG1heCBudW1iZXIgb2YgdmVjdG9ycyBmb3IgYSBQRi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6NTMxOiAqIENQIHdpbGwgcmVzcG9uZCB3aXRoIHRoZSB2ZWN0b3IgSUQgb2YgbWFpbGJveCBhbGxvY2F0ZWQgdG8gdGhlIFBGIGluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjUzMjogKiBtYWlsYm94X3ZlY3Rvcl9pZCBhbmQgdGhlIG51bWJlciBvZiBpdHIgaW5kZXggcmVnaXN0ZXJzIGluIGl0cl9pZHhfbWFwLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01MzMtICogSXQgYWxzbyByZXNwb25kcyB3aXRoIGRlZmF1bHQgbnVtYmVyIG9mIHZwb3J0cyB0aGF0IHRoZSBkYXRhcGxhbmUgZHJpdmVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD01Mzk9c3RydWN0IHZpcnRjaG5sMl9nZXRfY2FwYWJpbGl0aWVzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTU0NS1cdF9fbGU2NCBvdGhlcl9jYXBzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1NDY6XHRfX2xlMzIgbWFpbGJveF9keW5fY3RsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1NDc6XHRfX2xlMTYgbWFpbGJveF92ZWN0b3JfaWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTU0OC1cdF9fbGUxNiBudW1fYWxsb2NhdGVkX3ZlY3RvcnM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xMDUyPVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDYsIHZpcnRjaG5sMl9wdHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMDcwLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEwNzE6ICogSWYgYWxsIHRoZSBwdHlwZXMgZG9uJiMzOTt0IGZpdCBpbnRvIG9uZSBtYWlsYm94IGJ1ZmZlciwgQ1Agc3BsaXRzIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMDcyLSAqIHB0eXBlIGluZm8gaW50byBtdWx0aXBsZSBtZXNzYWdlcywgd2hlcmUgZWFjaCBtZXNzYWdlIHdpbGwgaGF2ZSBpdHMgb3duXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xMzQxPVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDgsIHZpcnRjaG5sMl9wcm9taXNjX2luZm8pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM0Ni0gKlx0XHRcdFx0XHQgICBkZXZpY2UgY2xvY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM0NzogKiBAVklSVENITkwyX0NBUF9QVFBfR0VUX0RFVklDRV9DTEtfVElNRV9NQjogbWFpbGJveCBhY2Nlc3MgdG8gZ2V0IHRoZSB0aW1lIG9mXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNDgtICpcdFx0XHRcdFx0ICAgICAgZGV2aWNlIGNsb2NrXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNDktICogQFZJUlRDSE5MMl9DQVBfUFRQX0dFVF9DUk9TU19USU1FOiBkaXJlY3QgYWNjZXNzIHRvIGNyb3NzIHRpbWVzdGFtcFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDoxMzUwOiAqIEBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfQ1JPU1NfVElNRV9NQjogbWFpbGJveCBhY2Nlc3MgdG8gY3Jvc3MgdGltZXN0YW1wXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNTEtICogQFZJUlRDSE5MMl9DQVBfUFRQX1NFVF9ERVZJQ0VfQ0xLX1RJTUU6IGRpcmVjdCBhY2Nlc3MgdG8gc2V0IHRoZSB0aW1lIG9mXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNTItICpcdFx0XHRcdFx0ICAgZGV2aWNlIGNsb2NrXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNTM6ICogQFZJUlRDSE5MMl9DQVBfUFRQX1NFVF9ERVZJQ0VfQ0xLX1RJTUVfTUI6IG1haWxib3ggYWNjZXNzIHRvIHNldCB0aGUgdGltZSBvZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzU0LSAqXHRcdFx0XHRcdCAgICAgIGRldmljZSBjbG9ja1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM1Ni0gKlx0XHRcdFx0ICAgICAgY2xvY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM1NzogKiBAVklSVENITkwyX0NBUF9QVFBfQURKX0RFVklDRV9DTEtfTUI6IG1haWxib3ggYWNjZXNzIHRvIGFkanVzdCB0aGUgdGltZSBvZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzU4LSAqXHRcdFx0XHRcdCBkZXZpY2UgY2xvY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM1OS0gKiBAVklSVENITkwyX0NBUF9QVFBfVFhfVFNUQU1QUzogZGlyZWN0IGFjY2VzcyB0byB0aGUgVHggdGltZXN0YW1waW5nXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNjA6ICogQFZJUlRDSE5MMl9DQVBfUFRQX1RYX1RTVEFNUFNfTUI6IG1haWxib3ggYWNjZXNzIHRvIHRoZSBUeCB0aW1lc3RhbXBpbmdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM2MS0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzYyLSAqIFBGL1ZGIG5lZ290aWF0ZXMgYSBzZXQgb2Ygc3VwcG9ydGVkIFBUUCBjYXBhYmlsaXRpZXMgd2l0aCB0aGUgQ29udHJvbCBQbGFuZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM2MzogKiBUaGVyZSBhcmUgdHdvIGFjY2VzcyBtZXRob2RzIC0gbWFpbGJveCAoX01CKSBhbmQgZGlyZWN0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzY0LSAqIFBUUCBjYXBhYmlsaXRpZXMgZW5hYmxlcyBNYWluIFRpbWVyIG9wZXJhdGlvbnM6IGdldC9zZXQvYWRqdXN0IE1haW4gVGltZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xNDg1PVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDE2LCB2aXJ0Y2hubDJfcHRwX2dldF92cG9ydF90eF90c3RhbXBfY2Fwcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xNDk0LSAqIEBzZWNvbmRhcnlfbWJ4OiBJbmRpY2F0ZXMgdG8gdGhlIGRyaXZlciB0aGF0IGl0IHNob3VsZCBjcmVhdGUgYSBzZWNvbmRhcnlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTQ5NTogKlx0XHQgICBtYWlsYm94IHRvIGluZXRyYWN0IHdpdGggY29udHJvbCBwbGFuZSBmb3IgUFRQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTE0OTYtICogQHBhZDogUGFkZGluZyBmb3IgZnV0dXJlIGV4dGVuc2lvbnNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwOTAKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMzQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQW5hbHl6aW5nIHRoZSBJRFBGIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBpZHBmYCBkcml2ZXIgcmVsaWVzIG9uIGEgbWFpbGJveCBzeXN0ZW0gZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgQ29udHJvbCBQbGFuZSAoQ1ApLiBUaGlzIG1haWxib3ggaGFzIHRvIGJlIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCB2aWEgYGlkcGZfaW5pdF9kZmx0X21ieGAgYmVmb3JlIGFueXRoaW5nIGVsc2UgY2FuIGhhcHBlbi4gSWYgdGhhdCBpbml0aWFsIHNldHVwIGZhaWxzLCB0aGUgZHJpdmVyJiMzOTtzIGBpZHBmX3Byb2JlYCB3aWxsIGFsc28gZmFpbCwgYW5kIHdlJiMzOTtyZSBkZWFkIGluIHRoZSB3YXRlci4KClRoZSBpc3N1ZSBpcyB0aGF0IFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbiYjMzk7dCByZWFsaXN0aWNhbGx5IHJlcGxpY2F0ZSB0aGUgY29tcGxleGl0aWVzIG9mIHRoaXMgbWFpbGJveCBwcm90b2NvbCwgd2hpY2ggYXBwYXJlbnRseSBpbnZvbHZlcyBETUEgcmluZ3MgYW5kIGludGVycnVwdHMuIFRoZXJlZm9yZSwgdGhlIGRyaXZlciBpcyBnb2luZyB0byBmYWlsIHByb2JlICp2ZXJ5KiBlYXJseSBpbiB0aGUgcHJvY2Vzcywgb3IgYXQgbGVhc3QgaW5pdGlhbGl6YXRpb24uIEJlY2F1c2Ugb2YgdGhpcywgdGhlIG5ldGRldiB3b24mIzM5O3QgZ2V0IHJlZ2lzdGVyZWQuIElmIHRoYXQgZG9lc24mIzM5O3QgaGFwcGVuLCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9uIGBpZHBmX3Zwb3J0X29wZW5gIGlzbiYjMzk7dCBnb2luZyB0byBiZSBjYWxsZWQuIEFuZCBpZiB0aGF0IGRvZXNuJiMzOTt0IG9jY3VyLCB0aGVuIG5laXRoZXIgd2lsbCB0aGUgYGlkcGZfdnBvcnRfaW50cl9hbGxvY2Agbm9yIGBpZHBmX3Zwb3J0X2ludHJfZGVpbml0YCBmdW5jdGlvbnMuIFRoaXMgbWVhbnMgdGhlc2UgcGF0aHMgYXJlIHNpbXBseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggdGhlIGZ1enplci4KCkkgbmVlZCB0byBjb25maXJtIHRoaXM6IGxldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgd2F5IHRvIHJlYWNoIHRoaXMgY29kZS4gSXMgaXQgcG9zc2libGUgdGhhdCBgaWRwZmAgaXMgYWN0dWFsbHkgYSB2aXJ0dWFsIGRyaXZlciB0aGF0IGNhbiBiZSBjcmVhdGVkIHZpYSBuZXRsaW5rPyBOb3BlLCBpdCYjMzk7cyBleHBsaWNpdGx5IGEgUENJIGRyaXZlci4gT2ssIGFueSBjaGFuY2UgaXQmIzM5O3MgdXNlZCBpbiBzb21lIHNwZWNpZmljIGVudmlyb25tZW50PwoKVGhlIHByb21wdCBzcGVjaWZpZXMgdGhhdCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IFNpbmNlIHRoZSBJRFBGIGlzIGEgcGh5c2ljYWwgUENJIGRldmljZSwgaXQgY29tcGxldGVseSBmYWxscyBpbnRvIHRoaXMgY2F0ZWdvcnksIG1lYW5pbmcgaXQgY2Fubm90IGJlIHJlYWNoZWQgYXQgYWxsLCBhbmQgdGh1cyBpdCBjYW5ub3QgYmUgZnV6emVkLgoKVGhlcmVmb3JlLCBjb25zaWRlcmluZyB0aGUgaW5oZXJlbnQgZGVwZW5kZW5jeSBvbiBhIGZ1bmN0aW9uYWwgbWFpbGJveCBwcm90b2NvbCBhbmQgdGhlIGxpbWl0YXRpb25zIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcsIEkmIzM5O20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQmIzM5O3Mgc2ltcGx5IG5vdCByZWFjaGFibGUgaW4gdGhpcyBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIChJRFBGKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUsIGFuZCBpdCByZXF1aXJlcyBjb21wbGV4IG1haWxib3ggY29tbXVuaWNhdGlvbiB3aXRoIGEgQ29udHJvbCBQbGFuZSB0byBpbml0aWFsaXplLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbnRlcnJ1cHQgYWxsb2NhdGlvbiBhbmQgZGVpbml0aWFsaXphdGlvbikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIChJRFBGKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUsIGFuZCBpdCByZXF1aXJlcyBjb21wbGV4IG1haWxib3ggY29tbXVuaWNhdGlvbiB3aXRoIGEgQ29udHJvbCBQbGFuZSB0byBpbml0aWFsaXplLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbnRlcnJ1cHQgYWxsb2NhdGlvbiBhbmQgZGVpbml0aWFsaXphdGlvbikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6MTcuNDYwNDk5MzQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NjA3NjAyNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIChJRFBGKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUsIGFuZCBpdCByZXF1aXJlcyBjb21wbGV4IG1haWxib3ggY29tbXVuaWNhdGlvbiB3aXRoIGEgQ29udHJvbCBQbGFuZSB0byBpbml0aWFsaXplLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbnRlcnJ1cHQgYWxsb2NhdGlvbiBhbmQgZGVpbml0aWFsaXphdGlvbikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzoxNy40NjA1MDUzNjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODI5MzI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNjZDNmNGJmODI3YjlkZjNmMjQzMWJjOTg3ZDY1Zjg1YzkxZmE5MjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjAgMjA6MDM6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcXG5pbmRleCA3ZjkwNTY0MDRmNjRmYy4uY2Q5ODY3NGZiNjQ4NjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcXG5AQCAtNDE0OCw2ICs0MTQ4LDI2IEBAIHN0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9lbmFfaXJxX2FsbChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuIFxcdHdyaXRlbChyc3JjLVxcdTAwM2Vub2lycV9keW5fY3RsX2VuYSwgcnNyYy1cXHUwMDNlbm9pcnFfZHluX2N0bCk7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGwgLSBEaXNhYmxlIERJTSB3b3JrIGZvciBhbGwgcV92ZWN0b3JzXFxuKyAqIEByc3JjOiBwb2ludGVyIHRvIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXFxuKyAqXFxuKyAqIFRoZSBESU0gd29ya3MgYXJlIGVtYmVkZGVkIGluIHRoZSBxX3ZlY3RvciBhcnJheSB0aGF0XFxuKyAqIGlkcGZfdnBvcnRfaW50cl9yZWwoKSBmcmVlcywgYW5kIHRoZSBwb2xsIGFybXMgdGhlbSBhZnRlclxcbisgKiBuYXBpX2NvbXBsZXRlX2RvbmUoKSBoYXMgYWxyZWFkeSBjbGVhcmVkIE5BUElfU1RBVEVfU0NIRUQuICBEaXNhYmxlXFxuKyAqIHJhdGhlciB0aGFuIGp1c3QgY2FuY2VsLCBzbyB0aGF0IGEgcG9sbCB0YWlsIHN0aWxsIHJ1bm5pbmcgcGFzdFxcbisgKiBuYXBpX2Rpc2FibGUoKSBjYW5ub3QgcXVldWUgdGhlbSBhZ2FpbiBiZWhpbmQgdGhlIGRyYWluLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpXFxuK3tcXG4rXFx0Zm9yICh1MTYgdl9pZHggPSAwOyB2X2lkeCBcXHUwMDNjIHJzcmMtXFx1MDAzZW51bV9xX3ZlY3RvcnM7IHZfaWR4KyspIHtcXG4rXFx0XFx0c3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gXFx1MDAyNnJzcmMtXFx1MDAzZXFfdmVjdG9yc1t2X2lkeF07XFxuK1xcbitcXHRcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2cV92ZWN0b3ItXFx1MDAzZXR4X2RpbS53b3JrKTtcXG4rXFx0XFx0ZGlzYWJsZV93b3JrX3N5bmMoXFx1MDAyNnFfdmVjdG9yLVxcdTAwM2VyeF9kaW0ud29yayk7XFxuK1xcdH1cXG4rfVxcbitcXG4gLyoqXFxuICAqIGlkcGZfdnBvcnRfaW50cl9kZWluaXQgLSBSZWxlYXNlIGFsbCB2ZWN0b3IgYXNzb2NpYXRpb25zIGZvciB0aGUgdnBvcnRcXG4gICogQHZwb3J0OiBtYWluIHZwb3J0IHN0cnVjdHVyZVxcbkBAIC00MTU4LDYgKzQxNzgsNyBAQCB2b2lkIGlkcGZfdnBvcnRfaW50cl9kZWluaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxcbiB7XFxuIFxcdGlkcGZfdnBvcnRfaW50cl9kaXNfaXJxX2FsbChyc3JjKTtcXG4gXFx0aWRwZl92cG9ydF9pbnRyX25hcGlfZGlzX2FsbChyc3JjKTtcXG4rXFx0aWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsKHJzcmMpO1xcbiBcXHRpZHBmX3Zwb3J0X2ludHJfbmFwaV9kZWxfYWxsKHJzcmMpO1xcbiBcXHRpZHBmX3Zwb3J0X2ludHJfcmVsX2lycSh2cG9ydCwgcnNyYyk7XFxuIH1cXG5AQCAtNDIzOCw3ICs0MjU5LDYgQEAgc3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX25hcGlfZW5hX2FsbChzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjICpyc3JjKVxcbiBcXHRmb3IgKHUxNiBxX2lkeCA9IDA7IHFfaWR4IFxcdTAwM2MgcnNyYy1cXHUwMDNlbnVtX3FfdmVjdG9yczsgcV9pZHgrKykge1xcbiBcXHRcXHRzdHJ1Y3QgaWRwZl9xX3ZlY3RvciAqcV92ZWN0b3IgPSBcXHUwMDI2cnNyYy1cXHUwMDNlcV92ZWN0b3JzW3FfaWR4XTtcXG4gXFxuLVxcdFxcdGlkcGZfaW5pdF9kaW0ocV92ZWN0b3IpO1xcbiBcXHRcXHRuYXBpX2VuYWJsZShcXHUwMDI2cV92ZWN0b3ItXFx1MDAzZW5hcGkpO1xcbiBcXHR9XFxuIH1cXG5AQCAtNDU4MSw2ICs0NjAxLDggQEAgaW50IGlkcGZfdnBvcnRfaW50cl9hbGxvYyhzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuIFxcdFxcdHFfY29hbCA9IFxcdTAwMjZ1c2VyX2NvbmZpZy1cXHUwMDNlcV9jb2FsZXNjZVt2X2lkeF07XFxuIFxcdFxcdHFfdmVjdG9yLVxcdTAwM2V2cG9ydCA9IHZwb3J0O1xcbiBcXG4rXFx0XFx0aWRwZl9pbml0X2RpbShxX3ZlY3Rvcik7XFxuK1xcbiBcXHRcXHRxX3ZlY3Rvci1cXHUwMDNldHhfaXRyX3ZhbHVlID0gcV9jb2FsLVxcdTAwM2V0eF9jb2FsZXNjZV91c2VjcztcXG4gXFx0XFx0cV92ZWN0b3ItXFx1MDAzZXR4X2ludHJfbW9kZSA9IHFfY29hbC1cXHUwMDNldHhfaW50cl9tb2RlO1xcbiBcXHRcXHRxX3ZlY3Rvci1cXHUwMDNldHhfaXRyX2lkeCA9IFZJUlRDSE5MMl9JVFJfSURYXzE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjAzOjE4LjAwOTU2NjkyOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyNjA1ODUyODQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiAoSURQRikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBhbmQgaXQgcmVxdWlyZXMgY29tcGxleCBtYWlsYm94IGNvbW11bmljYXRpb24gd2l0aCBhIENvbnRyb2wgUGxhbmUgdG8gaW5pdGlhbGl6ZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW50ZXJydXB0IGFsbG9jYXRpb24gYW5kIGRlaW5pdGlhbGl6YXRpb24pIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjY2QzZjRiZjgyN2I5ZGYzZjI0MzFiYzk4N2Q2NWY4NWM5MWZhOTIyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMjA6MDM6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuaW5kZXggN2Y5MDU2NDA0ZjY0ZmMuLmNkOTg2NzRmYjY0ODYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuQEAgLTQxNDgsNiArNDE0OCwyNiBAQCBzdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfZW5hX2lycV9hbGwoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0d3JpdGVsKHJzcmMtXHUwMDNlbm9pcnFfZHluX2N0bF9lbmEsIHJzcmMtXHUwMDNlbm9pcnFfZHluX2N0bCk7XG4gfVxuIFxuKy8qKlxuKyAqIGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbCAtIERpc2FibGUgRElNIHdvcmsgZm9yIGFsbCBxX3ZlY3RvcnNcbisgKiBAcnNyYzogcG9pbnRlciB0byBxdWV1ZSBhbmQgdmVjdG9yIHJlc291cmNlc1xuKyAqXG4rICogVGhlIERJTSB3b3JrcyBhcmUgZW1iZWRkZWQgaW4gdGhlIHFfdmVjdG9yIGFycmF5IHRoYXRcbisgKiBpZHBmX3Zwb3J0X2ludHJfcmVsKCkgZnJlZXMsIGFuZCB0aGUgcG9sbCBhcm1zIHRoZW0gYWZ0ZXJcbisgKiBuYXBpX2NvbXBsZXRlX2RvbmUoKSBoYXMgYWxyZWFkeSBjbGVhcmVkIE5BUElfU1RBVEVfU0NIRUQuICBEaXNhYmxlXG4rICogcmF0aGVyIHRoYW4ganVzdCBjYW5jZWwsIHNvIHRoYXQgYSBwb2xsIHRhaWwgc3RpbGwgcnVubmluZyBwYXN0XG4rICogbmFwaV9kaXNhYmxlKCkgY2Fubm90IHF1ZXVlIHRoZW0gYWdhaW4gYmVoaW5kIHRoZSBkcmFpbi5cbisgKi9cbitzdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGwoc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYylcbit7XG4rXHRmb3IgKHUxNiB2X2lkeCA9IDA7IHZfaWR4IFx1MDAzYyByc3JjLVx1MDAzZW51bV9xX3ZlY3RvcnM7IHZfaWR4KyspIHtcbitcdFx0c3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gXHUwMDI2cnNyYy1cdTAwM2VxX3ZlY3RvcnNbdl9pZHhdO1xuK1xuK1x0XHRkaXNhYmxlX3dvcmtfc3luYyhcdTAwMjZxX3ZlY3Rvci1cdTAwM2V0eF9kaW0ud29yayk7XG4rXHRcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNnFfdmVjdG9yLVx1MDAzZXJ4X2RpbS53b3JrKTtcbitcdH1cbit9XG4rXG4gLyoqXG4gICogaWRwZl92cG9ydF9pbnRyX2RlaW5pdCAtIFJlbGVhc2UgYWxsIHZlY3RvciBhc3NvY2lhdGlvbnMgZm9yIHRoZSB2cG9ydFxuICAqIEB2cG9ydDogbWFpbiB2cG9ydCBzdHJ1Y3R1cmVcbkBAIC00MTU4LDYgKzQxNzgsNyBAQCB2b2lkIGlkcGZfdnBvcnRfaW50cl9kZWluaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIHtcbiBcdGlkcGZfdnBvcnRfaW50cl9kaXNfaXJxX2FsbChyc3JjKTtcbiBcdGlkcGZfdnBvcnRfaW50cl9uYXBpX2Rpc19hbGwocnNyYyk7XG4rXHRpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGwocnNyYyk7XG4gXHRpZHBmX3Zwb3J0X2ludHJfbmFwaV9kZWxfYWxsKHJzcmMpO1xuIFx0aWRwZl92cG9ydF9pbnRyX3JlbF9pcnEodnBvcnQsIHJzcmMpO1xuIH1cbkBAIC00MjM4LDcgKzQyNTksNiBAQCBzdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfbmFwaV9lbmFfYWxsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpXG4gXHRmb3IgKHUxNiBxX2lkeCA9IDA7IHFfaWR4IFx1MDAzYyByc3JjLVx1MDAzZW51bV9xX3ZlY3RvcnM7IHFfaWR4KyspIHtcbiBcdFx0c3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gXHUwMDI2cnNyYy1cdTAwM2VxX3ZlY3RvcnNbcV9pZHhdO1xuIFxuLVx0XHRpZHBmX2luaXRfZGltKHFfdmVjdG9yKTtcbiBcdFx0bmFwaV9lbmFibGUoXHUwMDI2cV92ZWN0b3ItXHUwMDNlbmFwaSk7XG4gXHR9XG4gfVxuQEAgLTQ1ODEsNiArNDYwMSw4IEBAIGludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0XHRxX2NvYWwgPSBcdTAwMjZ1c2VyX2NvbmZpZy1cdTAwM2VxX2NvYWxlc2NlW3ZfaWR4XTtcbiBcdFx0cV92ZWN0b3ItXHUwMDNldnBvcnQgPSB2cG9ydDtcbiBcbitcdFx0aWRwZl9pbml0X2RpbShxX3ZlY3Rvcik7XG4rXG4gXHRcdHFfdmVjdG9yLVx1MDAzZXR4X2l0cl92YWx1ZSA9IHFfY29hbC1cdTAwM2V0eF9jb2FsZXNjZV91c2VjcztcbiBcdFx0cV92ZWN0b3ItXHUwMDNldHhfaW50cl9tb2RlID0gcV9jb2FsLVx1MDAzZXR4X2ludHJfbW9kZTtcbiBcdFx0cV92ZWN0b3ItXHUwMDNldHhfaXRyX2lkeCA9IFZJUlRDSE5MMl9JVFJfSURYXzE7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzoxOC4wMDk1Nzg1OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY2NTk1NjgwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jYC4gVGhlIG1haW4gdGFrZWF3YXkgaXMgdGhhdCB0aGV5J3ZlIGFkZGVkIGEgZnVuY3Rpb24gY2FsbGVkIGBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGxgLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQgZGlzYWJsZXMgc29tZSB3b3JrIHF1ZXVlcywgYHR4X2RpbS53b3JrYCBhbmQgYHJ4X2RpbS53b3JrYCwgYnkgY2FsbGluZyBgZGlzYWJsZV93b3JrX3N5bmNgLiBUaGV5J3ZlIGFsc28gbW92ZWQgYGlkcGZfaW5pdF9kaW1gIGFyb3VuZCwgc2hpZnRpbmcgaXQgZnJvbSBgaWRwZl92cG9ydF9pbnRyX25hcGlfZW5hX2FsbGAgdG8gYGlkcGZfdnBvcnRfaW50cl9hbGxvY2AuIEFkZGl0aW9uYWxseSwgdGhpcyBuZXcgYGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbGAgZnVuY3Rpb24gaXMgbm93IGJlaW5nIGNhbGxlZCBmcm9tIGBpZHBmX3Zwb3J0X2ludHJfZGVpbml0YC5cblxuVGhpcyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBJbnRlbCBJUERGIGRyaXZlci4gQnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIHNwZWNpZmljYWxseSBpZiB0aGlzIGRyaXZlciBpcyBldmVuIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gcmVjYWxsaW5nIHRoYXQgdGhlIEludGVsIElQREYgaXMgdGhlIFwiSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uXCIgZHJpdmVyLiBJdCAqc291bmRzKiBsaWtlIGEgdmlydHVhbCBmdW5jdGlvbiBkcml2ZXIgb3Igc29tZXRoaW5nIHNpbWlsYXIuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuXG5cblRoZSBuZXh0IHRoaW5nIEknbSB0aGlua2luZyBhYm91dCBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGlzIGZ1enphYmxlLiBFdGhlcm5ldCBkcml2ZXJzIHRoYXQgYXJlIGhhcmR3YXJlIHNwZWNpZmljIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZnV6eiwgdW5sZXNzIHRoZXkncmUgcnVubmluZyBvbiBhbiBlbXVsYXRlZCBzeXN0ZW0gb3IgaGF2ZSBzb21lIHNvcnQgb2YgdmlydHVhbCBidXMgYXZhaWxhYmxlLiBXYWl0IGEgbWludXRlLCBJIHRoaW5rIEkgcmVtZW1iZXIgdGhhdCBJUERGIGlzIGEgUENJIGRyaXZlciFcblxuT2theSwgdGhhdCBjaGFuZ2VzIHRoaW5ncy4gTm93IEkgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgaXQncyBhIFBDSSBkcml2ZXIuIE9uY2UgSSBjb25maXJtIHRoYXQsIEkgY2FuIGV2YWx1YXRlIHRoZSBmdXp6aW5nIHBvdGVudGlhbCBtb3JlIHJlYWxpc3RpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzoyOC42NzU1MzgzNDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3MDgwODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9Mzg0PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpZHBmX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzkxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozOTI6bW9kdWxlX3BjaV9kcml2ZXIoaWRwZl9kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzoyOC44ODI2Mjg1MTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjIzMTE0NjcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIGxvb2tzIGxpa2UgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiY2FuIHdlIGZ1enogdGhpcz9cIiBBbmQgdGhlIGFuc3dlciwgb2YgY291cnNlLCBpcyBcIm1heWJlLlwiIElmIHdlIGhhdmUgUENJIGZ1enppbmcgZW5hYmxlZCwgdGhlbiBzeXprYWxsZXIgKm1pZ2h0KiBiZSBhYmxlIHRvIGRvIHNvbWV0aGluZy4gSSByZW1lbWJlciBzeXprYWxsZXIgZG9lcyBoYXZlIGEgUENJIGZ1enplciwgc3BlY2lmaWNhbGx5IGBzeXpfcGNpXy4uLmAuXG5cbkhvd2V2ZXIsIHRoZSBwcm9tcHQgaXMgdGhyb3dpbmcgYSB3cmVuY2ggaW4gdGhpbmdzLCBzcGVjaWZpY2FsbHkgbWVudGlvbmluZyBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSSdtIHRyeWluZyB0byB0aGluayBpZiB0aGVyZSdzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBJRFBGIGRldmljZSwgYW5kIEkgY2FuJ3QgdGhpbmsgb2Ygb25lIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQuIEhtbS5cblxuU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gd2UgcmVhY2ggaXQgdmlhIFBDSSBmdXp6aW5nPyBTeXprYWxsZXLigJlzIFBDSSBmdXp6ZXIgZG9lcyBwcm9iZSBQQ0kgZGV2aWNlcywgc28gdGhhdCdzIGEgZ29vZCBzaWduLiBCdXQgaXMgdGhpcyBldmVuICp3b3J0aCogZnV6emluZz8gVHlwaWNhbGx5LCBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSwgZXNwZWNpYWxseSB3aXRob3V0IGFueSByZWFkaWx5IGF2YWlsYWJsZSBlbXVsYXRpb24sIGFyZSBjb25zaWRlcmVkIGRpZmZpY3VsdCBvciBvdXRyaWdodCBpbXBvc3NpYmxlIHRvIHJlYWNoLlxuXG5XYWl0IGEgc2Vjb25kLCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZWA/IFRoYXQgY2FuICplbXVsYXRlKiBQQ0kgZGV2aWNlcyB0byBzb21lIGV4dGVudCwgYnV0IEkgaGlnaGx5IGRvdWJ0IGl0J3MgYSBmdWxsIGVtdWxhdGlvbiBvZiBJbnRlbCdzIElEUEYgaGFyZHdhcmUuIExldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIElEUEYgaW4gdGhlIGN1cnJlbnQgc2V0dXAuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG92ZXJsb29rZWQgYW55IGRldGFpbHMgdGhhdCBjb3VsZCBtYWtlIGZ1enppbmcgdGhpcyBkcml2ZXIgZmVhc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6NDEuMTEzNzc3NTc5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTA4Mzg5MDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJRFBGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjAzOjQyLjk2NDYyMjkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNDg1MzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudDpcblxuKipFeGFtaW5pbmcgSW50ZWwgaURQRiBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHNvbWUgc3BlY2lmaWNzIHJlZ2FyZGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHJpZ2h0PyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoZXkncmUgdGhlIGdvLXRvIGZvciBzZXR0aW5nIGJ1aWxkLXRpbWUgdmFyaWFibGVzIGFuZCBkZXBlbmRlbmNpZXMuIFRoZSBpRFBGIGRyaXZlciBpcyBsaWtlbHkgdW5kZXIgdGhlIEludGVsIGV0aGVybmV0IHVtYnJlbGxhLCBzbyBJJ2xsIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWdgLiBPciwgaWYgdGhhdCBleGFjdCBwYXRoIGlzIHNsaWdodGx5IG9mZiwgSSdsbCBzdGFydCB0aGVyZSBhbmQgbG9vayBmb3IgYSBzaW1pbGFyIGZpbGVuYW1lIGFuZCBwYXRoIHdpdGhpbiB0aGF0IGRyaXZlciBzdHJ1Y3R1cmUuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3MgSSBuZWVkLiBIb3BlZnVsbHksIEknbGwgZmluZCB3aGF0IEknbSBsb29raW5nIGZvciBxdWlja2x5LCBidXQgaWYgbm90LCBJIGNhbiBtb3ZlIG9udG8gYSBtb3JlIGdlbmVyYWwgSW50ZWwgRXRoZXJuZXQgS2NvbmZpZyBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDc4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6NDUuOTY5NDc3NTE2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTQ3NjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSURQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjQ6Y29uZmlnIElEUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTc9aWYgSURQRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTk6Y29uZmlnIElEUEZfU0lOR0xFUVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJpZHBmIHNpbmdsZXEgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6NDYuMDc4OTU4ODc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyOTUyNTgyMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBJRFBGOiBBIEZlYXNpYmlsaXR5IEFuYWx5c2lzKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGlzLCBpZiB3ZSBlbmFibGUgdGhlIGBJRFBGYCBkcml2ZXIsIGNhbiBzeXprYWxsZXIgYWN0dWFsbHkgKnJlYWNoKiBpdD8gSSBrbm93IHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBidXQgdHlwaWNhbGx5IGl0IG5lZWRzIHNvbWUga2luZCBvZiBQQ0kgZGV2aWNlIGRlc2NyaXB0aW9uIG9yIGl0J3MganVzdCBnb2luZyB0byBtZXNzIGFyb3VuZCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlLiBBaCwgd2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyICpkb2Vzbid0KiBoYXZlIGZ1bGwgZW11bGF0aW9uIGZvciBJRFBGLCBkb2VzIGl0PyBUaGF0J3MgYSBjcnVjaWFsIHBvaW50LlxuXG5TbywgaXMgaXQgZXZlbiAqd29ydGgqIHRyeWluZyB0byBmdXp6IGl0PyBJJ20gcmVtZW1iZXJpbmcgdGhhdCBxdW90ZSwgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmXigKZcIiBUaGlzIHNtZWxscyBsaWtlIGEgZGVhZCBlbmQgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgUENJIGRyaXZlciB3aXRoIG5vIFFFTVUgZW11bGF0aW9uLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhvc2UgY3JpdGljYWwgZnVuY3Rpb25zIGxpa2UgYGlkcGZfdnBvcnRfaW50cl9kZWluaXRgLCBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYCwgdGhlIGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lcy4gV2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCBvciBhIGRlY2VudCBlbXVsYXRvciwgdGhlIGRldmljZSBwcm9iYWJseSB3b24ndCBpbml0aWFsaXplIGNvcnJlY3RseSwgYW5kIHRob3NlIGRhdGEgcGF0aHMgd2lsbCBiZSB1bnJlYWNoYWJsZS5cblxuQWxyaWdodCwgbGV0J3Mga2VlcCBpdCBzaW1wbGUgZm9yIG5vdy4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBzZWUgaWYgYGlkcGZfcHJvYmVgIGNhbiBldmVuIHN1Y2NlZWQgd2l0aCBqdXN0IFBDSSBmdXp6aW5nLiBUaGF0J3MgdGhlIGJhc2VsaW5lLCByaWdodD8gSWYgdGhlIHByb2JlIGZhaWxzLCB3ZSdyZSBkb25lLiBObyBwb2ludCBnb2luZyBmdXJ0aGVyIGRvd24gdGhhdCByYWJiaXQgaG9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ4NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzo1Ni4zNzQyMTk2MTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDQwODAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZHBmX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9MTg5PXN0YXRpYyBpbnQgaWRwZl9jZmdfaHcoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjI4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjI5OiAqIGlkcGZfcHJvYmUgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjMwLSAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yMzQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzoyMzU6c3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9Mzg0PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpZHBmX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg2LVxcdC5pZF90YWJsZVxcdFxcdD0gaWRwZl9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6Mzg3OlxcdC5wcm9iZVxcdFxcdFxcdD0gaWRwZl9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM4OC1cXHQuc3Jpb3ZfY29uZmlndXJlXFx0PSBpZHBmX3NyaW92X2NvbmZpZ3VyZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6NTYuOTA4NjMzOTc0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMzU3MDYxNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gb2YgYGlkcGZfcHJvYmVgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGlkcGZfcHJvYmVgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcmVjYWxsIHdoYXQgSSBrbm93IGFib3V0IEludGVsIERhdGEgUGxhbmUgRmlsdGVyaW5nIChJRFBGKSBhbmQgaXRzIHB1cnBvc2UuIEl0J3MgbGlrZWx5IGEgcHJvYmUsIG1lYW5pbmcgaXQncyBpbnZvbHZlZCBpbiBzb21lIHNvcnQgb2YgaW50cm9zcGVjdGlvbiBvciBkaXNjb3ZlcnkgcHJvY2VzcyByZWxhdGVkIHRvIHRoZSBkYXRhIHBsYW5lLiBQZXJoYXBzIGl0J3MgaWRlbnRpZnlpbmcgYXZhaWxhYmxlIHJlc291cmNlcywgdmFsaWRhdGluZyBjb25maWd1cmF0aW9ucywgY2hlY2tpbmcgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGNhcGFiaWxpdGllcyByZWxhdGVkIHRvIElEUEYgYWNjZWxlcmF0aW9uLCBvciBldmVuIHByb2JpbmcgdGhlIG5ldHdvcmsgdG8gdmVyaWZ5IGZsb3cgcnVsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2Ygd2hlcmUgdGhpcyBgaWRwZl9wcm9iZWAgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB0aGUgZGF0YSBpdCBvcGVyYXRlcyBvbiBpcyBrZXkuIEknbGwgbmVlZCB0byBjb25zaWRlciB3aGF0IGluZm9ybWF0aW9uIHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuZCB3aGF0IHRoYXQgcmV0dXJuIHZhbHVlIHNpZ25hbHMgd2l0aGluIHRoZSBicm9hZGVyIGZsb3cuIEJhc2VkIG9uIHRoZSBuYW1lLCBgaWRwZl9wcm9iZWAsIEknZCBleHBlY3QgaXQgaXMgcmVsYXRlZCB0byBpZGVudGlmeWluZyBjYXBhYmlsaXRpZXMuIEknbGwgZ28gdGhyb3VnaCB0aGUgY29kZSBhbmQgcXVpY2tseSBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQzNiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjA0OjEwLjI2NTY5ODcyMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjM1OlxcdHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuIDIzODpcXHRcXHRzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyO1xcbiAyMzk6XFx0XFx0aW50IGVycjtcXG4gMjQwOlxcdFxcbiAyNDE6XFx0XFx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyKTtcXG4gMjQyOlxcdFxcdGlmICghYWRhcHRlcilcXG4gMjQzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyNDQ6XFx0XFxuIDI0NTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VyZXFfdHhfc3BsaXRxID0gdHJ1ZTtcXG4gMjQ2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXJlcV9yeF9zcGxpdHEgPSB0cnVlO1xcbiAyNDc6XFx0XFxuIDI0ODpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwZGV2ID0gcGRldjtcXG4gMjQ5OlxcdFxcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4gMjUwOlxcdFxcdGlmIChlcnIpXFxuIDI1MTpcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiAyNTI6XFx0XFxuIDI1MzpcXHRcXHRlcnIgPSBwY2ltX3JlcXVlc3RfcmVnaW9uKHBkZXYsIDAsIHBjaV9uYW1lKHBkZXYpKTtcXG4gMjU0OlxcdFxcdGlmIChlcnIpIHtcXG4gMjU1OlxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcInBjaW1fcmVxdWVzdF9yZWdpb24gZmFpbGVkICVwZVxcXFxuXFxcIiwgRVJSX1BUUihlcnIpKTtcXG4gMjU2OlxcdFxcbiAyNTc6XFx0XFx0XFx0Z290byBlcnJfZnJlZTtcXG4gMjU4OlxcdFxcdH1cXG4gMjU5OlxcdFxcbiAyNjA6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9wdG0ocGRldik7XFxuIDI2MTpcXHRcXHRpZiAoZXJyKVxcbiAyNjI6XFx0XFx0XFx0cGNpX2RiZyhwZGV2LCBcXFwiUENJZSBQVE0gaXMgbm90IHN1cHBvcnRlZCBieSBQQ0llIGJ1cy9jb250cm9sbGVyXFxcXG5cXFwiKTtcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0Lyogc2V0IHVwIGZvciBoaWdoIG9yIGxvdyBkbWEgKi9cXG4gMjY1OlxcdFxcdGVyciA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoZGV2LCBETUFfQklUX01BU0soNjQpKTtcXG4gMjY2OlxcdFxcdGlmIChlcnIpIHtcXG4gMjY3OlxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcIkRNQSBjb25maWd1cmF0aW9uIGZhaWxlZDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKGVycikpO1xcbiAyNjg6XFx0XFxuIDI2OTpcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiAyNzA6XFx0XFx0fVxcbiAyNzE6XFx0XFxuIDI3MjpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMjczOlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBhZGFwdGVyKTtcXG4gMjc0OlxcdFxcbiAyNzU6XFx0XFx0YWRhcHRlci1cXHUwMDNlaW5pdF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXMtJXMtaW5pdFxcXCIsXFxuIDI3NjpcXHRcXHRcXHRcXHRcXHRcXHQgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXFxuIDI3NzpcXHRcXHRcXHRcXHRcXHRcXHQgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxcbiAyNzg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2X25hbWUoZGV2KSk7XFxuIDI3OTpcXHRcXHRpZiAoIWFkYXB0ZXItXFx1MDAzZWluaXRfd3EpIHtcXG4gMjgwOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIGluaXQgd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG4gMjgxOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDI4MjpcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiAyODM6XFx0XFx0fVxcbiAyODQ6XFx0XFxuIDI4NTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VzZXJ2X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCIlcy0lcy1zZXJ2aWNlXFxcIixcXG4gMjg2OlxcdFxcdFxcdFxcdFxcdFxcdCAgIFdRX1VOQk9VTkQgfCBXUV9NRU1fUkVDTEFJTSwgMCxcXG4gMjg3OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXFxuIDI4ODpcXHRcXHRcXHRcXHRcXHRcXHQgICBkZXZfbmFtZShkZXYpKTtcXG4gMjg5OlxcdFxcdGlmICghYWRhcHRlci1cXHUwMDNlc2Vydl93cSkge1xcbiAyOTA6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgc2VydmljZSB3b3JrcXVldWVcXFxcblxcXCIpO1xcbiAyOTE6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMjkyOlxcdFxcdFxcdGdvdG8gZXJyX3NlcnZfd3FfYWxsb2M7XFxuIDI5MzpcXHRcXHR9XFxuIDI5NDpcXHRcXG4gMjk1OlxcdFxcdGFkYXB0ZXItXFx1MDAzZW1ieF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXMtJXMtbWJ4XFxcIiwgV1FfVU5CT1VORCB8IFdRX0hJR0hQUkksXFxuIDI5NjpcXHRcXHRcXHRcXHRcXHRcXHQgIDAsIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXFxuIDI5NzpcXHRcXHRcXHRcXHRcXHRcXHQgIGRldl9uYW1lKGRldikpO1xcbiAyOTg6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2VtYnhfd3EpIHtcXG4gMjk5OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIG1haWxib3ggd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG4gMzAwOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDMwMTpcXHRcXHRcXHRnb3RvIGVycl9tYnhfd3FfYWxsb2M7XFxuIDMwMjpcXHRcXHR9XFxuIDMwMzpcXHRcXG4gMzA0OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXN0YXRzX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCIlcy0lcy1zdGF0c1xcXCIsXFxuIDMwNTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxcbiAzMDY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXFxuIDMwNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgZGV2X25hbWUoZGV2KSk7XFxuIDMwODpcXHRcXHRpZiAoIWFkYXB0ZXItXFx1MDAzZXN0YXRzX3dxKSB7XFxuIDMwOTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXFxcblxcXCIpO1xcbiAzMTA6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzExOlxcdFxcdFxcdGdvdG8gZXJyX3N0YXRzX3dxX2FsbG9jO1xcbiAzMTI6XFx0XFx0fVxcbiAzMTM6XFx0XFxuIDMxNDpcXHRcXHRhZGFwdGVyLVxcdTAwM2V2Y19ldmVudF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXMtJXMtdmNfZXZlbnRcXFwiLFxcbiAzMTU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFdRX1VOQk9VTkQgfCBXUV9NRU1fUkVDTEFJTSwgMCxcXG4gMzE2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxcbiAzMTc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGRldl9uYW1lKGRldikpO1xcbiAzMTg6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V2Y19ldmVudF93cSkge1xcbiAzMTk6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgdmlydGNobmwgZXZlbnQgd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG4gMzIwOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDMyMTpcXHRcXHRcXHRnb3RvIGVycl92Y19ldmVudF93cV9hbGxvYztcXG4gMzIyOlxcdFxcdH1cXG4gMzIzOlxcdFxcbiAzMjQ6XFx0XFx0Lyogc2V0dXAgbXNnbHZsICovXFxuIDMyNTpcXHRcXHRhZGFwdGVyLVxcdTAwM2Vtc2dfZW5hYmxlID0gbmV0aWZfbXNnX2luaXQoLTEsIElEUEZfQVZBSUxfTkVUSUZfTSk7XFxuIDMyNjpcXHRcXG4gMzI3OlxcdFxcdGVyciA9IGlkcGZfZGV2X2luaXQoYWRhcHRlciwgZW50KTtcXG4gMzI4OlxcdFxcdGlmIChlcnIpIHtcXG4gMzI5OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIlVuZXhwZWN0ZWQgZGV2IElEIDB4JXggaW4gaWRwZiBwcm9iZVxcXFxuXFxcIixcXG4gMzMwOlxcdFxcdFxcdFxcdGVudC1cXHUwMDNlZGV2aWNlKTtcXG4gMzMxOlxcdFxcdFxcdGdvdG8gZGVzdHJveV92Y19ldmVudF93cTtcXG4gMzMyOlxcdFxcdH1cXG4gMzMzOlxcdFxcbiAzMzQ6XFx0XFx0ZXJyID0gaWRwZl9jZmdfaHcoYWRhcHRlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjA0OjEwLjI2NTgyMjI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyMTc5MDExNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJRFBGIERyaXZlciBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gYGlkcGZfcHJvYmVgIGNhbGxzIGBpZHBmX2NmZ19od2AsIHdoaWNoIGltbWVkaWF0ZWx5IGluZGljYXRlcyBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIGlmIHRoaXMgZHJpdmVyIGlzIGEgdmlhYmxlIHRhcmdldCBmb3Igc3l6a2FsbGVyLiBTaW5jZSBzeXprYWxsZXIgaGFzIHRoZSBhYmlsaXR5IHRvIGZ1enogUENJIGRldmljZXMgYnkgaW5qZWN0aW5nIFBDSSBjb25maWcgYW5kIE1NSU8gb3BlcmF0aW9ucywgSSB0aGluayB0aGVyZSBpcyBhIGNoYW5jZS4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbGAgYW5kIGBpZHBmX3Zwb3J0X2ludHJfYWxsb2NgIHdoaWNoIGFyZSBwcm9iYWJseSBwYXJ0IG9mIHZwb3J0IGluaXRpYWxpemF0aW9uLlxuXG5BaGEhIElmIHRoaXMgKmlzKiBhIFBDSSBkcml2ZXIsIG1heWJlIHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZWAgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBgaWRwZl9wcm9iZWAgYW5kIGFsbG93IGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSB0aHJvdWdoIE1NSU8sIGxlYWRpbmcgdG8gdGhlIGFjdGl2YXRpb24gb2YgaW50ZXJydXB0cyBhbmQgb3RoZXIgZnVuY3Rpb25hbGl0eS4gTXkgbWFpbiBjb25jZXJuIGlzLCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0PyBUaGVuIEkgc2VlIHRoaXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIFRoYXQncyBpbXBvcnRhbnQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBpcyBJRFBGIHJlYWNoYWJsZSBpbiBHQ0Ugb3IgUUVNVT8gVGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgbWF0dGVyLiBJZiBpdCBpcyB1bnJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMsIHRoZW4gZnV6emluZyBpdCBpcyBwb2ludGxlc3MuXG5cbkFoISBJIHNlZSB0aGF0IElEUEYgaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uIGRyaXZlciBmb3IgSW50ZWwncyBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24uIElmIGl0J3MgYSBQQ0kgZHJpdmVyLCBzeXprYWxsZXIgY291bGQgaW5qZWN0IGEgZmFrZSBQQ0kgZGV2aWNlIHVzaW5nIGBzeXpfcGNpX2RldmljZWAgYW5kIHRoZW4gZnV6eiBpdC4gSG93ZXZlciwgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBpcyBrbm93biB0byBiZSBzb21ld2hhdCBsaW1pdGVkOyBpdCB1c3VhbGx5IGhhbmRsZXMgdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCBiYXNpYyBNTUlPIGFjY2VzcywgcmFyZWx5IGdldHRpbmcgZGVlcGx5IGludG8gdGhlIG5ldHdvcmsgc3RhY2sgb3IgaW50ZXJydXB0IGhhbmRsaW5nIHVubGVzcyB0aGUgZHJpdmVyIGlzIHNpbXBsZSBvciBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQuIEkgbmVlZCB0byBiZSByZWFsaXN0aWMgYWJvdXQgdGhpcy5cblxuRG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgKmZ1enoqIElEUEY/IEkgY2FuJ3QgYXNzdW1lIGFueXRoaW5nLiBJIG5lZWQgdG8gZ28gYW5kIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgZXhpc3Rpbmcgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgSURQRi4gVGhhdCBpcyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzEyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDQ6MTcuNDgzNzI2NTU3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc4OTE2NDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlkcGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDQ6MTcuOTUxNjIzNDE3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MzU4MjU1MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklEUEYgYW5kIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSByZXN0cmljdGlvbnMuIEkgY2FuJ3QgdXNlIGdyZXBwZXIgb24gYHN5cy8qYCwgc28gdGhhdCdzIG91dC4gSSBhbHNvIG5lZWQgdG8gdXNlIGByZWFkLWZpbGVgIGFuZCBjYW4ndCB1c2UgdGhlIGRlc2NyaXB0aW9uIHNlYXJjaCB0b29sLiBSaWdodCwgdGhhdCB3YXMgYSB0eXBvLlxuXG5Ob3csIGNvbnNpZGVyaW5nIElEUEYsIGl0IGFwcGVhcnMgdG8gYmUgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHNwZWNpZmljYWxseSBhbiBJbnRlbCBFdGhlcm5ldCBkcml2ZXIuIEdpdmVuIHRoaXMsIGl0J3MgZ2VuZXJhbGx5IGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdW5sZXNzIGl0J3MgYSB2aXJ0aW8gb3Igc2ltaWxhciBlbXVsYXRlZCBkZXZpY2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgcmVhY2hhYmxlIGluIEdDRSBvciBRRU1VLlxuXG5HQ0UgcHJpbWFyaWx5IHVzZXMgdmlydGlvLW5ldCBvciBnVk5JQy4gUUVNVSBzdXBwb3J0cyBhIHJhbmdlIG9mIGVtdWxhdGVkIE5JQ3MsIGJ1dCBub3QgSURQRi4gU28sIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgSURQRiBpc24ndCBlbXVsYXRlZCBpbiBRRU1VLiBUaGlzIG1lYW5zLCBhcyBhbiBJbnRlbCBJUFUgaGFyZHdhcmUgZHJpdmVyLCB0aGF0IGl0J3MgaW1wb3NzaWJsZSB0byByZWFjaCB0aGUgY29kZSBwYXRocyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGxpa2UgR0NFIG9yIFFFTVUuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgdGhvdWdoLiBHb29nbGUgQ2xvdWQgdXNlcyBnVk5JQyBhbmQgdmlydGlvLW5ldC4gQVdTIHV0aWxpemVzIEVOQS4gQXp1cmUgZW1wbG95cyBtYW5hLiBJRFBGIHNwZWNpZmljYWxseSB0YXJnZXRzIHRoZSBJbnRlbCBJUFUuIERlZmluaXRlbHkgbm90IGVtdWxhdGVkLiBJdCdzIG5vdCByZWFjaGFibGUuIFRoZXJlZm9yZSwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTGV0IG1lIHJlLWV4YW1pbmUgdGhlIHByb21wdCdzIGNyaXRlcmlhLiBJdCBzYXlzIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBTaW5jZSBJRFBGIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gUUVNVSwgYW5kIHRoZXJlIGlzIG5vIHBvc3NpYmxlIHdheSBmb3IgaXQgdG8gYmUgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFNvLCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgcmlnaHQgYW5zd2VyLlxuXG5Pa2F5LCBsZXQgbWUgY29uZmlybSBpZiB0aGVyZSdzICphbnkqIHNsaWdodCBjaGFuY2UgaXQncyBhIHZpcnR1YWwgZHJpdmVyLiBMZXQgbWUgbG9vayBhdCBgaWRwZl9wcm9iZWAgYWdhaW4uIFRoZSBjb2RlIHVzZXMgYHBjaW1fZW5hYmxlX2RldmljZWAsIGBwY2ltX3JlcXVlc3RfcmVnaW9uYCwgZXRjLiBJdCByZXF1aXJlcyBhIHJlYWwgUENJIGRldmljZS4gV2l0aG91dCBRRU1VIGVtdWxhdGlvbiBvciBhIHJlYWwgcGh5c2ljYWwgZGV2aWNlLCBgaWRwZl9wcm9iZWAgZWl0aGVyIHdvbid0IGJlIGNhbGxlZCwgb3IgaWYgaXQgaXMgcmVhY2hlZCwgaXQgY2FuIG9ubHkgdHJpZ2dlciBiYXNpYyBNTUlPIGZ1enppbmcsIHdoaWNoIHdvdWxkbid0IGdldCB0byB0aG9zZSBrZXkgZnVuY3Rpb25zIEkgd2FudCB0byB0ZXN0LiBBY3R1YWxseSwgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBjYW4gdHJpZ2dlciBpdCwgYnV0IHRoZW4gaXQnbGwgZmFpbCBsYXRlciBvbi4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgYGlkcGZfdnBvcnRfaW50cl9hbGxvY2AgaXMgcmVhY2hhYmxlIGZyb20gYGlkcGZfcHJvYmVgLiBCdXQgYmFzZWQgb24gdGhlIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgaW1wb3NzaWJsZS4gR2l2ZW4gYWxsIHRoaXMsIEknbSBzdGlsbCBmaXJtbHkgaW4gdGhlIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGNhbXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDQ6MzIuMzA5ODgxMDIyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDkwNjg1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWRwZl92cG9ydF9pbnRyX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xNDkyPXN0YXRpYyBpbnQgaWRwZl92cG9ydF9vcGVuKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCwgYm9vbCBydG5sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE1MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE1MTI6XFx0ZXJyID0gaWRwZl92cG9ydF9pbnRyX2FsbG9jKHZwb3J0LCByc3JjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTUxMy1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jPTQ1Mzk9c3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX25hcGlfYWRkX2FsbChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ1NjMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzo0NTY0OiAqIGlkcGZfdnBvcnRfaW50cl9hbGxvYyAtIEFsbG9jYXRlIG1lbW9yeSBmb3IgaW50ZXJydXB0IHZlY3RvcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ1NjUtICogQHZwb3J0OiB2aXJ0dWFsIHBvcnRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtNDU3MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjQ1NzI6aW50IGlkcGZfdnBvcnRfaW50cl9hbGxvYyhzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NTczLVxcdFxcdFxcdCAgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9MTA5MT12b2lkIGlkcGZfdnBvcnRfaW50cl9yZWwoc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDoxMDkyOmludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtMTA5My1cXHRcXHRcXHQgIHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowNDozMi41MTg5NTUxODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY3MTgxNzM0NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBJRFBGJ3MgQXR0YWNrIFN1cmZhY2UqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiB3aGF0IEknbSB0aGlua2luZyBhYm91dCB0aGlzIGBpZHBmYCBkcml2ZXIuIFRoZSBjb3JlIG9mIHRoaXMgcG90ZW50aWFsbHkgdnVsbmVyYWJsZSBmdW5jdGlvbmFsaXR5IGlzIHRoZSBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYCBmdW5jdGlvbi4gSSBrbm93IHRoaXMgaXMgdHJpZ2dlcmVkIGJ5IGBpZHBmX3Zwb3J0X29wZW5gLCB3aGljaCBpdHNlbGYgaXMgYSBjb25zZXF1ZW5jZSBvZiB0aGUgbmV0d29yayBkZXZpY2UgYmVpbmcgb3BlbmVkIHZpYSBgbmRvX29wZW5gLiBUaGUgcGF0aCB0byBnZXQgdGhlcmUgaXMgcHJldHR5IHN0YW5kYXJkOiB0aGUgbmV0ZGV2IG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQuIFJlZ2lzdHJhdGlvbiByZXF1aXJlcyBhIHN1Y2Nlc3NmdWwgYGlkcGZfcHJvYmVgLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXM6IGNhbiBhIHRvb2wgbGlrZSBTeXprYWxsZXIncyBQQ0kgZnV6emVyIGJlIHRyaWNrZWQgaW50byBtYWtpbmcgYGlkcGZfcHJvYmVgIHRoaW5rIGV2ZXJ5dGhpbmcgaXMgb2theSBhbmQgcmVnaXN0ZXIgYSBuZXRkZXYsIGV2ZW4gaWYgaXQncyBub3QgYSByZWFsIHBoeXNpY2FsIGRldmljZT9cblxuTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LiBOZXR3b3JrIGRyaXZlcnMgYXJlIG9mdGVuIHRpZ2h0bHkgY291cGxlZCB3aXRoIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzLiBUaGV5IHJlbHkgb24gdGhpbmdzIGxpa2UgRE1BIHJpbmcgc2V0dXAsIHBvdGVudGlhbGx5IGZpcm13YXJlIGxvYWRpbmcsIGFuZCBkZWZpbml0ZWx5IG1haWxib3ggaW50ZXJhY3Rpb25zIHRvIGNvbW11bmljYXRlLiBJdCdzIHJhcmUgdG8gZmluZCBhIHRydWx5ICdzaW1wbGUnIG5ldHdvcmsgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgaWRwZmAgaGFzIGFueSBkZXBlbmRlbmNpZXMgbGlrZSBmaXJtd2FyZSBvciBhIG1haWxib3ggcHJvdG9jb2wuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgcG90ZW50aWFsIGZvciB2dWxuZXJhYmlsaXR5IGlzIGdvaW5nIHRvIGxpZS4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXNlIHByZXJlcXVpc2l0ZXMgYXJlIGVzc2VudGlhbCBmb3IgYGlkcGZfcHJvYmVgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSWYgdGhlc2UgYXJlIHNraXBwZWQsIG9yIG1vY2tlZCwgdGhlbiBgaWRwZl9wcm9iZWAgd2lsbCBoYXZlIGEgY2hhbmNlIG9mIHN1Y2NlZWRpbmcgd2hlbiBpdCBzaG91bGRuJ3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTAzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjA0OjU5LjIzNzEzMTkwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0ODgyODA5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZHBmX3NlbmRfbXNnX3RvX2NwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowNDo1OS43NTIwMjQ5NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjgwMTE2Nzg1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZSwgdXNpbmcgYSBmaXJzdC1wZXJzb24gbmFycmF0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFJvb3QgQ2F1c2UqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBpc3N1ZSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGFrZSBhIG1ldGhvZGljYWwgYXBwcm9hY2guICpMZXQncyBjaGVjayBmb3IgbWFpbGJveCBvciBmaXJtd2FyZS4qIEkgbmVlZCB0byBzdGFydCB3aXRoIHRoZSBtb3N0IGNvbW1vbiwgZWFzaWx5LXZlcmlmaWVkIHN1c3BlY3RzLiBJcyB0aGVyZSBhIHNpbXBsZSBlbWFpbCBtaXNjb25maWd1cmF0aW9uIHRoYXQncyB0aGUgY3VscHJpdD8gT3IgY291bGQgdGhpcyBiZSBhIGtub3duIGJ1ZyBpbiBhIHNwZWNpZmljIGZpcm13YXJlIHZlcnNpb24gdGhhdCdzIGNhdXNpbmcgdGhpcyBiZWhhdmlvcj8gVGhpcyBpbml0aWFsIGNoZWNrIGlzIGNydWNpYWwuIEl0J3MgdGhlIGVxdWl2YWxlbnQgb2YgY2hlY2tpbmcgdGhlIG9idmlvdXMgYmVmb3JlIGdldHRpbmcgaW50byBkZWVwIGFuYWx5c2lzLiBJdCdzIHVubGlrZWx5LCBidXQgYSBoaWdoLWxldmVsIHZpZXcgaXMgbmVlZGVkIGJlZm9yZSBnZXR0aW5nIGludG8gdGhlIG5pdHR5IGdyaXR0eS4gSSB3YW50IHRvIHJ1bGUgb3V0IHRoZSBiYXNpYyBzdHVmZiBmaXJzdCBhbmQgZXN0YWJsaXNoIGEgYmFzZWxpbmUgYmVmb3JlIGNvbnNpZGVyaW5nIG1vcmUgY29tcGxleCBzY2VuYXJpb3MuIEl0J3MgYWJvdXQgZWZmaWNpZW50bHkgaWRlbnRpZnlpbmcgdGhlIGlzc3VlIGFuZCBhdm9pZGluZyB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYyNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDU6MTYuNTUzMTk1NzU0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODk4MDU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWlsYm94XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTEyPXN0cnVjdCBpZHBmX3Jzc19kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzktI2RlZmluZSBJRFBGX0RGTFRfTUJYX0lEXFx0XFx0LTFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MDovKiBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0byB0cnkgYmVmb3JlIHJlc2V0dGluZyBtYWlsYm94ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDEtI2RlZmluZSBJRFBGX01CX01BWF9FUlJcXHRcXHRcXHQyMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9MjAzPXN0cnVjdCBpZHBmX3JlZ19vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjI0LSAqIEBpZGNfaW5pdDogSURDIGluaXRpYWxpemF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjI1OiAqIEBzdGF0aWNfcmVnX2luZm86IGFycmF5IG9mIG1haWxib3ggYW5kIHJzdGF0IHJlZ2lzdGVyIGluZm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9MjI3PXN0cnVjdCBpZHBmX2Rldl9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIzMjpcXHQvKiBzdGF0aWNfcmVnX2luZm9bMF0gaXMgbWFpbGJveCByZWdpb24sIHN0YXRpY19yZWdfaW5mb1sxXSBpcyByc3RhdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIzMy1cXHRzdHJ1Y3QgcmVzb3VyY2Ugc3RhdGljX3JlZ19pbmZvW0lEUEZfTU1JT19SRUdfTlVNX1NUQVRJQ107XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaD01NzE9c3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2NodW5rIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4MC0gKiBzdHJ1Y3QgaWRwZl9xdWV1ZV9pZF9yZWdfaW5mbyAtIHF1ZXVlIElEIGFuZCByZWdpc3RlciBjaHVuayBpbmZvIHJlY2VpdmVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTgxOiAqXFx0XFx0XFx0XFx0ICAgb3ZlciB0aGUgbWFpbGJveFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4Mi0gKiBAbnVtX2NodW5rczogbnVtYmVyIG9mIGNodW5rc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9NjA4PXN0cnVjdCBpZHBmX3ZjX3huX21hbmFnZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MjItICogQG1zZ19lbmFibGU6IERlYnVnIG1lc3NhZ2UgbGV2ZWwgZW5hYmxlZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYyMzogKiBAbWJfd2FpdF9jb3VudDogTnVtYmVyIG9mIHRpbWVzIG1haWxib3ggd2FzIGF0dGVtcHRlZCBpbml0aWFsaXphdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyNC0gKiBAc3RhdGU6IEluaXQgc3RhdGUgbWFjaGluZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjM1LSAqIEB2ZWN0b3Jfc3RhY2s6IFN0YWNrIHRvIHN0b3JlIHRoZSBtc2l4IHZlY3RvciBpbmRleGVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjM2OiAqIEBpcnFfbWJfaGFuZGxlcjogSGFuZGxlciBmb3IgaGFyZCBpbnRlcnJ1cHQgZm9yIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MzctICogQHR4X3RpbWVvdXRfY291bnQ6IE51bWJlciBvZiBUWCB0aW1lb3V0cyB0aGF0IGhhdmUgb2NjdXJyZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY1My0gKiBAc2Vydl93cTogV29ya3F1ZXVlIGZvciBzZXJ2aWNlIHRhc2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2NTQ6ICogQG1ieF90YXNrOiBUYXNrIHRvIGhhbmRsZSBtYWlsYm94IGludGVycnVwdHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2NTU6ICogQG1ieF93cTogV29ya3F1ZXVlIGZvciBtYWlsYm94IHJlc3BvbnNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY1Ni0gKiBAdmNfZXZlbnRfdGFzazogVGFzayB0byBoYW5kbGUgb3V0IG9mIGJhbmQgdmlydGNobmwgZXZlbnQgbm90aWZpY2F0aW9uc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9ODY4PXN0YXRpYyBpbmxpbmUgdTggaWRwZl9nZXRfbWluX3R4X3BrdF9sZW4oc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg3NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NzY6ICogaWRwZl9nZXRfbWJ4X3JlZ19hZGRyIC0gR2V0IEJBUjAgbWFpbGJveCByZWdpc3RlciBhZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc3LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NzktICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4ODA6ICogUmV0dXJuOiBCQVIwIG1haWxib3ggcmVnaXN0ZXIgYWRkcmVzcyBiYXNlZCBvbiByZWdpc3RlciBvZmZzZXQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODgxLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxLmg9OTA9c3RydWN0IGlkcGZfbWJ4cV9kZXNjIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scS5oLTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scS5oOjk3Oi8qIE1heCBudW1iZXIgb2YgTU1JTyByZWdpb25zIG5vdCBpbmNsdWRpbmcgdGhlIG1haWxib3ggYW5kIHJzdGF0IHJlZ2lvbnMgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHEuaC05OC0gKiB0aGUgZmFsbGJhY2sgY2FzZSB3aGVuIHRoZSB3aG9sZSBiYXIgaXMgbWFwcGVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oPTgyPXN0cnVjdCBpZHBmX2N0bHFfY3JlYXRlX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oLTg0LVxcdGludCBpZDsgLyogYWJzb2x1dGUgcXVldWUgb2Zmc2V0IHBhc3NlZCBhcyBpbnB1dFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaDo4NTpcXHRcXHQgKiAtMSBmb3IgZGVmYXVsdCBtYWlsYm94IGlmIHByZXNlbnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHFfYXBpLmgtODYtXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHFfYXBpLmg9OTc9c3RydWN0IGlkcGZfY3RscV9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaC0xMjMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oOjEyNDogKiBlbnVtIGlkcGZfbWJ4X29wYyAtIFBGL1ZGIG1haWxib3ggY29tbWFuZHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHFfYXBpLmgtMTI1LSAqIEBpZHBmX21icV9vcGNfc2VuZF9tc2dfdG9fY3A6IHVzZWQgYnkgUEYgb3IgVkYgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gaXRzIENQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMtMTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jOjEyOiAqIGlkcGZfY3RscV9yZWdfaW5pdCAtIGluaXRpYWxpemUgZGVmYXVsdCBtYWlsYm94IHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy0xMy0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYz0xNj1zdGF0aWMgdm9pZCBpZHBmX2N0bHFfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy01NC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmM6NTU6ICogaWRwZl9tYl9pbnRyX3JlZ19pbml0IC0gSW5pdGlhbGl6ZSBtYWlsYm94IGludGVycnVwdCByZWdpc3RlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy01Ni0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYz01OD1zdGF0aWMgdm9pZCBpZHBmX21iX2ludHJfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy02MC1cXHRzdHJ1Y3QgaWRwZl9pbnRyX3JlZyAqaW50ciA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VtYl92ZWN0b3IuaW50cl9yZWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jOjYxOlxcdHUzMiBkeW5fY3RsID0gbGUzMl90b19jcHUoYWRhcHRlci1cXHUwMDNlY2Fwcy5tYWlsYm94X2R5bl9jdGwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy02Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz01Mz1zdGF0aWMgdm9pZCBpZHBmX2RlaW5pdF92ZWN0b3Jfc3RhY2soc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy02Ny0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzo2ODogKiBUaGlzIHdpbGwgYWxzbyBkaXNhYmxlIGludGVycnVwdCBtb2RlIGFuZCBxdWV1ZSB1cCBtYWlsYm94IHRhc2suIE1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtNjktICogdGFzayB3aWxsIHJlc2NoZWR1bGUgaXRzZWxmIGlmIG5vdCBpbiBpbnRlcnJ1cHQgbW9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz04Mj12b2lkIGlkcGZfaW50cl9yZWwoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy05Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6OTg6ICogaWRwZl9tYl9pbnRyX2NsZWFuIC0gSW50ZXJydXB0IGhhbmRsZXIgZm9yIHRoZSBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTk5LSAqIEBpcnE6IGludGVycnVwdCBudW1iZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xMDI9c3RhdGljIGlycXJldHVybl90IGlkcGZfbWJfaW50cl9jbGVhbihpbnQgX19hbHdheXNfdW51c2VkIGlycSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xMTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjExMjogKiBpZHBmX21iX2lycV9lbmFibGUgLSBFbmFibGUgTVNJWCBpbnRlcnJ1cHQgZm9yIHRoZSBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTExMy0gKiBAYWRhcHRlcjogYWRhcHRlciB0byBnZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3MgZm9yIHJlZ2lzdGVyIHdyaXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTE1PXN0YXRpYyB2b2lkIGlkcGZfbWJfaXJxX2VuYWJsZShzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEyNS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTI2OiAqIGlkcGZfbWJfaW50cl9yZXFfaXJxIC0gUmVxdWVzdCBpcnEgZm9yIHRoZSBtYWlsYm94IGludGVycnVwdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMjc6ICogQGFkYXB0ZXI6IGFkYXB0ZXIgc3RydWN0dXJlIHRvIHBhc3MgdG8gdGhlIG1haWxib3ggaXJxIGhhbmRsZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTI4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xMjk9c3RhdGljIGludCBpZHBmX21iX2ludHJfcmVxX2lycShzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE0MC1cXHRcXHRkZXZfZXJyKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE0MTpcXHRcXHRcXHRcXFwiSVJRIHJlcXVlc3QgZm9yIG1haWxib3ggZmFpbGVkLCBlcnJvcjogJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xNTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE1MjogKiBpZHBmX21iX2ludHJfaW5pdCAtIEluaXRpYWxpemUgdGhlIG1haWxib3ggaW50ZXJydXB0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE1MzogKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmUgdG8gc3RvcmUgdGhlIG1haWxib3ggdmVjdG9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE1NC0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0zMDQ9aW50IGlkcGZfaW50cl9yZXEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0zNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjM3NzpcXHRhZGFwdGVyLVxcdTAwM2VtYl92ZWN0b3Iudl9pZHggPSBsZTE2X3RvX2NwdShhZGFwdGVyLVxcdTAwM2VjYXBzLm1haWxib3hfdmVjdG9yX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMzc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTEzMzc9c3RhdGljIHZvaWQgaWRwZl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEzNDctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjEzNDg6ICogaWRwZl9zdGF0aXN0aWNzX3Rhc2sgLSBEZWxheWVkIHRhc2sgdG8gZ2V0IHN0YXRpc3RpY3Mgb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEzNDktICogQHdvcms6IHdvcmtfc3RydWN0IGhhbmRsZSB0byBvdXIgZGF0YVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTEzNTE9dm9pZCBpZHBmX3N0YXRpc3RpY3NfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM3MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTM3MTogKiBpZHBmX21ieF90YXNrIC0gRGVsYXllZCB0YXNrIHRvIGhhbmRsZSBtYWlsYm94IHJlc3BvbnNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xMzcyLSAqIEB3b3JrOiB3b3JrX3N0cnVjdCBoYW5kbGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xMzc0PXZvaWQgaWRwZl9tYnhfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM4OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTM5MDogKiBpZHBmX3NlcnZpY2VfdGFzayAtIERlbGF5ZWQgdGFzayBmb3IgaGFuZGxpbmcgbWFpbGJveCByZXNwb25zZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM5MS0gKiBAd29yazogd29ya19zdHJ1Y3QgaGFuZGxlIHRvIG91ciBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTg1Nz1zdGF0aWMgaW50IGlkcGZfY2hlY2tfcmVzZXRfY29tcGxldGUoc3RydWN0IGlkcGZfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE4ODktICogRGVhbGxvY2F0ZSB0aGUgdnBvcnRzIGFuZCBhbGwgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSBhbmRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTg5MDogKiByZWFsbG9jYXRlLiBBbHNvIHJlaW5pdGlhbGl6ZSB0aGUgbWFpbGJveC4gUmV0dXJuIDAgb24gc3VjY2VzcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTg5MS0gKiBuZWdhdGl2ZSBvbiBmYWlsdXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTE4OTM9c3RhdGljIHZvaWQgaWRwZl9pbml0X2hhcmRfcmVzZXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xOTMyLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTkzMzpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIGRlZmF1bHQgbWFpbGJveDogJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE5MzQtXFx0XFx0Z290byB1bmxvY2tfbXV0ZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTE4OT1zdGF0aWMgaW50IGlkcGZfY2ZnX2h3KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTE5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjE5OTpcXHQvKiBNYXAgbWFpbGJveCBzcGFjZSBmb3IgdmlydGNobmwgY29tbXVuaWNhdGlvbiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjAwLVxcdG1ieF9zdGFydCA9IHJlc19zdGFydCArIGFkYXB0ZXItXFx1MDAzZWRldl9vcHMuc3RhdGljX3JlZ19pbmZvWzBdLnN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0yMzU9c3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yOTgtXFx0aWYgKCFhZGFwdGVyLVxcdTAwM2VtYnhfd3EpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjI5OTpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBtYWlsYm94IHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zMDAtXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xMC0gKiBAZGlyZWN0OiBDYXBhYmlsaXR5IHRoYXQgaW5kaWNhdGVzIHRoZSBkaXJlY3QgYWNjZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjExOiAqIEBtYWlsYm94OiBDYXBhYmlsaXR5IHRoYXQgaW5kaWNhdGVzIHRoZSBtYWlsYm94IGFjY2Vzc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xMi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jPTE1PXN0YXRpYyBlbnVtIGlkcGZfcHRwX2FjY2Vzc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxNjppZHBmX3B0cF9nZXRfYWNjZXNzKGNvbnN0IHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBkaXJlY3QsIHUzMiBtYWlsYm94KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTktXFx0XFx0cmV0dXJuIElEUEZfUFRQX0RJUkVDVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MjA6XFx0ZWxzZSBpZiAoYWRhcHRlci1cXHUwMDNlcHRwLVxcdTAwM2VjYXBzIFxcdTAwMjYgbWFpbGJveClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMjEtXFx0XFx0cmV0dXJuIElEUEZfUFRQX01BSUxCT1g7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MzM9dm9pZCBpZHBmX3B0cF9nZXRfZmVhdHVyZXNfYWNjZXNzKGNvbnN0IHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMzUtXFx0c3RydWN0IGlkcGZfcHRwICpwdHAgPSBhZGFwdGVyLVxcdTAwM2VwdHA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjM2OlxcdHUzMiBkaXJlY3QsIG1haWxib3g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTM5LVxcdGRpcmVjdCA9IFZJUlRDSE5MMl9DQVBfUFRQX0dFVF9ERVZJQ0VfQ0xLX1RJTUU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjQwOlxcdG1haWxib3ggPSBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfREVWSUNFX0NMS19USU1FX01CO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00MS1cXHRwdHAtXFx1MDAzZWdldF9kZXZfY2xrX3RpbWVfYWNjZXNzID0gaWRwZl9wdHBfZ2V0X2FjY2VzcyhhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00Mi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBkaXJlY3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjQzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIG1haWxib3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00Ni1cXHRkaXJlY3QgPSBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfQ1JPU1NfVElNRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NDc6XFx0bWFpbGJveCA9IFZJUlRDSE5MMl9DQVBfUFRQX0dFVF9DUk9TU19USU1FX01CO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00OC1cXHRwdHAtXFx1MDAzZWdldF9jcm9zc190c3RhbXBfYWNjZXNzID0gaWRwZl9wdHBfZ2V0X2FjY2VzcyhhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBkaXJlY3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjUwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIG1haWxib3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy01MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy01My1cXHRkaXJlY3QgPSBWSVJUQ0hOTDJfQ0FQX1BUUF9TRVRfREVWSUNFX0NMS19USU1FO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo1NDpcXHRtYWlsYm94ID0gVklSVENITkwyX0NBUF9QVFBfU0VUX0RFVklDRV9DTEtfVElNRV9NQjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTUtXFx0cHRwLVxcdTAwM2VzZXRfZGV2X2Nsa190aW1lX2FjY2VzcyA9IGlkcGZfcHRwX2dldF9hY2Nlc3MoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTYtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGlyZWN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo1NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBtYWlsYm94KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjAtXFx0ZGlyZWN0ID0gVklSVENITkwyX0NBUF9QVFBfQURKX0RFVklDRV9DTEs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjYxOlxcdG1haWxib3ggPSBWSVJUQ0hOTDJfQ0FQX1BUUF9BREpfREVWSUNFX0NMS19NQjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjItXFx0cHRwLVxcdTAwM2VhZGpfZGV2X2Nsa190aW1lX2FjY2VzcyA9IGlkcGZfcHRwX2dldF9hY2Nlc3MoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGlyZWN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo2NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBtYWlsYm94KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjctXFx0ZGlyZWN0ID0gVklSVENITkwyX0NBUF9QVFBfVFhfVFNUQU1QUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6Njg6XFx0bWFpbGJveCA9IFZJUlRDSE5MMl9DQVBfUFRQX1RYX1RTVEFNUFNfTUI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTY5LVxcdHB0cC1cXHUwMDNldHhfdHN0YW1wX2FjY2VzcyA9IGlkcGZfcHRwX2dldF9hY2Nlc3MoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNzAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpcmVjdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NzE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIG1haWxib3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy03Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9OTk9c3RhdGljIHU2NCBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX2RpcmVjdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTEyMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MTI0OiAqIGlkcGZfcHRwX3JlYWRfc3JjX2Nsa19yZWdfbWFpbGJveCAtIFJlYWQgdGhlIG1haW4gdGltZXIgdmFsdWUgdGhyb3VnaCBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTEyNS0gKiBAYWRhcHRlcjogRHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTMxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxMzI6c3RhdGljIGludCBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX21haWxib3goc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTMzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHB0cF9zeXN0ZW1fdGltZXN0YW1wICpzdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MTYzPXN0YXRpYyBpbnQgaWRwZl9wdHBfcmVhZF9zcmNfY2xrX3JlZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKnNyY19jbGssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTY5LVxcdGNhc2UgSURQRl9QVFBfTUFJTEJPWDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MTcwOlxcdFxcdHJldHVybiBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX21haWxib3goYWRhcHRlciwgc3RzLCBzcmNfY2xrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTcxLVxcdGNhc2UgSURQRl9QVFBfRElSRUNUOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jPTE4OT1zdGF0aWMgdm9pZCBpZHBmX3B0cF9nZXRfc3luY19kZXZpY2VfdGltZV9kaXJlY3Qoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yMTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjIxMjogKiBpZHBmX3B0cF9nZXRfc3luY19kZXZpY2VfdGltZV9tYWlsYm94IC0gR2V0IHRoZSBjcm9zcyB0aW1lIHN0YW1wIHZhbHVlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoyMTM6ICpcXHRcXHRcXHRcXHRcXHQgICB0aHJvdWdoIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMjE0LSAqIEBhZGFwdGVyOiBEcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yMTktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjIyMDpzdGF0aWMgaW50IGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lX21haWxib3goc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMjIxLVxcdFxcdFxcdFxcdFxcdFxcdCB1NjQgKmRldl90aW1lLCB1NjQgKnN5c190aW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jPTI0Nj1zdGF0aWMgaW50IGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lKGt0aW1lX3QgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yNjEtXFx0Y2FzZSBJRFBGX1BUUF9NQUlMQk9YOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoyNjI6XFx0XFx0ZXJyID0gaWRwZl9wdHBfZ2V0X3N5bmNfZGV2aWNlX3RpbWVfbWFpbGJveChhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yNjMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZuc190aW1lX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaD0zOD1zdHJ1Y3QgaWRwZl9wdHBfZGV2X2Nsa19yZWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC03Mi0gKiBASURQRl9QVFBfRElSRUNUOiBkaXJlY3QgYWNjZXNzIHRocm91Z2ggQkFSIHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDo3MzogKiBASURQRl9QVFBfTUFJTEJPWDogYWNjZXNzIHRocm91Z2ggbWFpbGJveCBtZXNzYWdlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC03NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmg9NzU9ZW51bSBpZHBmX3B0cF9hY2Nlc3Mge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oLTgxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDo4MjogKiBzdHJ1Y3QgaWRwZl9wdHBfc2Vjb25kYXJ5X21ieCAtIFBUUCBzZWNvbmRhcnkgbWFpbGJveFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDo4MzogKiBAcGVlcl9tYnhfcV9pZDogUFRQIG1haWxib3ggcXVldWUgSURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmgtODQtICogQHBlZXJfaWQ6IFBlZXIgSUQgZm9yIFBUUCBEZXZpY2UgQ29udHJvbCBkYWVtb25cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaD0xNDY9c3RydWN0IGlkcGZfcHRwX3Zwb3J0X3R4X3RzdGFtcF9jYXBzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC0xNzUtICogQHJzdjogcmVzZXJ2ZWQgYml0c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDoxNzY6ICogQHNlY29uZGFyeV9tYng6IHBhcmFtZXRlcnMgZm9yIHVzaW5nIGRlZGljYXRlZCBQVFAgbWFpbGJveFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC0xNzctICogQHJlYWRfZGV2X2Nsa19sb2NrOiBzcGlubG9jayBwcm90ZWN0aW5nIGFjY2VzcyB0byB0aGUgZGV2aWNlIGNsb2NrIHJlYWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM9NDM5Mz1zdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfbWFwX3ZlY3Rvcl90b19xcyhzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ0OTQtICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjQ0OTU6ICogSW5pdGlhbGl6ZSB2ZWN0b3IgaW5kZXhlcyB3aXRoIHZhbHVlcyByZXR1cm5lZCBvdmVyIG1haWxib3guXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NDk2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMtMTAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jOjExOiAqIGlkcGZfdmZfY3RscV9yZWdfaW5pdCAtIGluaXRpYWxpemUgZGVmYXVsdCBtYWlsYm94IHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy0xMi0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYz0xNT1zdGF0aWMgdm9pZCBpZHBmX3ZmX2N0bHFfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy01My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmM6NTQ6ICogaWRwZl92Zl9tYl9pbnRyX3JlZ19pbml0IC0gSW5pdGlhbGl6ZSB0aGUgbWFpbGJveCByZWdpc3RlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy01NS0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYz01Nz1zdGF0aWMgdm9pZCBpZHBmX3ZmX21iX2ludHJfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy01OS1cXHRzdHJ1Y3QgaWRwZl9pbnRyX3JlZyAqaW50ciA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VtYl92ZWN0b3IuaW50cl9yZWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jOjYwOlxcdHUzMiBkeW5fY3RsID0gbGUzMl90b19jcHUoYWRhcHRlci1cXHUwMDNlY2Fwcy5tYWlsYm94X2R5bl9jdGwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy02MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTkwPXN0YXRpYyB2b2lkIGlkcGZfcmVjdl9ldmVudF9tc2coc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTExOC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzoxMTk6ICogaWRwZl9tYl9jbGVhbiAtIFJlY2xhaW0gdGhlIHNlbmQgbWFpbGJveCBxdWV1ZSBlbnRyaWVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTIwLSAqIEBhZGFwdGVyOiBkcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEyMi0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjEyMzogKiBSZWNsYWltIHRoZSBzZW5kIG1haWxib3ggcXVldWUgZW50cmllcyB0byBiZSB1c2VkIHRvIHNlbmQgZnVydGhlciBtZXNzYWdlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEyNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTkwPXN0YXRpYyB2b2lkIGlkcGZfcHJlcGFyZV9wdHBfbWJfbXNnKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTE5Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTkzOlxcdC8qIElmIHRoZSBtZXNzYWdlIGlzIFBUUC1yZWxhdGVkIGFuZCB0aGUgc2Vjb25kYXJ5IG1haWxib3ggaXMgYXZhaWxhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjE5NDpcXHQgKiBzZW5kIHRoZSBtZXNzYWdlIHRocm91Z2ggdGhlIHNlY29uZGFyeSBtYWlsYm94LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTE5NS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTIwND1zdGF0aWMgdm9pZCBpZHBmX3ByZXBhcmVfcHRwX21iX21zZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1MzIgb3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0yMDktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MjEwOiAqIGlkcGZfc2VuZF9tYl9tc2cgLSBTZW5kIG1lc3NhZ2Ugb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMjExLSAqIEBhZGFwdGVyOiBkcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTU3MT1pZHBmX3ZjX3huX2ZvcndhcmRfcmVwbHkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTY2OC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzo2Njk6ICogaWRwZl9yZWN2X21iX21zZyAtIFJlY2VpdmUgbWVzc2FnZSBvdmVyIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy02NzAtICogQGFkYXB0ZXI6IGRyaXZlciBzcGVjaWZpYyBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTAyOD1zdGF0aWMgaW50IGlkcGZfc2VuZF9nZXRfbGFuX21lbW9yeV9yZWdpb25zKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMDg0LSAqIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0cyBhbmQgc2l6ZXMgZm9yIHRoZSByZWdpb25zIGJlZm9yZSwgaW4gYmV0d2VlbiwgYW5kXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTA4NTogKiBhZnRlciB0aGUgbWFpbGJveCBhbmQgcnN0YXQgTU1JTyBtYXBwaW5ncy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMDg2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0xMDg5PXN0YXRpYyBpbnQgaWRwZl9jYWxjX3JlbWFpbmluZ19tbWlvX3JlZ3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEwOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTEwMDpcXHQvKiBSZWdpb24gcHJlY2VkaW5nIG1haWxib3ggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMTAxLVxcdGh3LVxcdTAwM2VsYW5fcmVnc1swXS5hZGRyX3N0YXJ0ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMTAyLVxcdGh3LVxcdTAwM2VsYW5fcmVnc1swXS5hZGRyX2xlbiA9IG1ieF9yZWctXFx1MDAzZXN0YXJ0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjExMDM6XFx0LyogUmVnaW9uIGJldHdlZW4gbWFpbGJveCBhbmQgcnN0YXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMTA0LVxcdGh3LVxcdTAwM2VsYW5fcmVnc1sxXS5hZGRyX3N0YXJ0ID0gbWJ4X3JlZy1cXHUwMDNlZW5kICsgMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTEzMjQ9aW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEzNjgtICogQHFfdHlwZTogcXVldWUgbW9kZWxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzoxMzY5OiAqIEBjaHVua3M6IHF1ZXVlIHJlZ3MgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTM3MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTQxMj1zdGF0aWMgaW50IF9faWRwZl9xdWV1ZV9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xNDY3LSAqIEByc3JjOiBwb2ludGVyIHRvIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTQ2ODogKiBAY2h1bmtzOiBxdWV1ZSByZWdpc3RlcnMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTQ2OS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MjU0OT1zdGF0aWMgdm9pZCBpZHBmX2NvbnZlcnRfcmVnX3RvX3F1ZXVlX2NodW5rcyhzdHJ1Y3QgdmlydGNobmwyX3F1ZXVlX2NodW5rICpkY2h1bmtzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMjU2NC0gKiBAYWRhcHRlcjogYWRhcHRlciBwb2ludGVyIHVzZWQgdG8gc2VuZCB2aXJ0Y2hubCBtZXNzYWdlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MjU2NTogKiBAY2h1bmtzOiBxdWV1ZSBpZHMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMjU2Ni0gKiBAdnBvcnRfaWQ6IHZwb3J0IGlkZW50aWZpZXIgdXNlZCB3aGlsZSBwcmVwYXJpbmcgdGhlIHZpcnRjaG5sIG1lc3NhZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTMzMzg9c3RhdGljIHN0cnVjdCBpZHBmX2N0bHFfaW5mbyAqaWRwZl9maW5kX2N0bHEoc3RydWN0IGlkcGZfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzM1MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozMzUxOiAqIGlkcGZfaW5pdF9kZmx0X21ieCAtIFNldHVwIGRlZmF1bHQgbWFpbGJveCBwYXJhbWV0ZXJzIGFuZCBtYWtlIHJlcXVlc3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zMzUyLSAqIEBhZGFwdGVyOiBhZGFwdGVyIGluZm8gc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zNDgwPWludCBpZHBmX3ZjX2NvcmVfaW5pdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozNTc5OlxcdC8qIFN0YXJ0IHRoZSBtYWlsYm94IHRhc2sgYmVmb3JlIHJlcXVlc3RpbmcgdmVjdG9ycy4gVGhpcyB3aWxsIGVuc3VyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM1ODA6XFx0ICogdmVjdG9yIGluZm9ybWF0aW9uIHJlc3BvbnNlIGZyb20gbWFpbGJveCBpcyBoYW5kbGVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzU4MS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM2MzQtXFx0aWYgKCsrYWRhcHRlci1cXHUwMDNlbWJfd2FpdF9jb3VudCBcXHUwMDNlIElEUEZfTUJfTUFYX0VSUikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM2MzU6XFx0XFx0ZGV2X2VycihcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGVzdGFibGlzaCBtYWlsYm94IGNvbW11bmljYXRpb25zIHdpdGggaGFyZHdhcmVcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM2MzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNjM4LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozNjM5OlxcdC8qIElmIGl0IHJlYWNoZWQgaGVyZSwgaXQgaXMgcG9zc2libGUgdGhhdCBtYWlsYm94IHF1ZXVlIGluaXRpYWxpemF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzY0MC1cXHQgKiByZWdpc3RlciB3cml0ZXMgbWlnaHQgbm90IGhhdmUgdGFrZW4gZWZmZWN0LiBSZXRyeSB0byBpbml0aWFsaXplXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzY0MTpcXHQgKiB0aGUgbWFpbGJveCBhZ2FpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM2NDItXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zNzQ3PWludCBpZHBmX3Zwb3J0X2luaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgaWRwZl92cG9ydF9tYXhfcSAqbWF4X3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODE1LSAqIGlkcGZfZ2V0X3ZlY19pZHMgLSBJbml0aWFsaXplIHZlY3RvciBpZCBmcm9tIE1haWxib3ggcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM4MTY6ICogQGFkYXB0ZXI6IGFkYXB0ZXIgc3RydWN0dXJlIHRvIGdldCB0aGUgbWFpbGJveCB2ZWN0b3IgaWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODE3LSAqIEB2ZWNpZHM6IEFycmF5IG9mIHZlY3RvciBpZHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODE4LSAqIEBudW1fdmVjaWRzOiBudW1iZXIgb2YgdmVjdG9yIGlkc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM4MTk6ICogQGNodW5rczogdmVjdG9yIGlkcyByZWNlaXZlZCBvdmVyIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODIwLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzgyMTogKiBXaWxsIGluaXRpYWxpemUgdGhlIG1haWxib3ggdmVjdG9yIGlkIHdoaWNoIGlzIHJlY2VpdmVkIGZyb20gdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzgyMi0gKiBnZXQgY2FwYWJpbGl0aWVzIGFuZCBkYXRhIHF1ZXVlIHZlY3RvciBpZHMgd2l0aCBpZHMgcmVjZWl2ZWQgYXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODIzOiAqIG1haWxib3ggcGFyYW1ldGVycy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODI0LSAqIFJldHVybnMgbnVtYmVyIG9mIGlkcyBmaWxsZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTM4MjY9aW50IGlkcGZfZ2V0X3ZlY19pZHMoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4NjMtICogQHFfdHlwZTogcXVldWUgbW9kZWxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODY0OiAqIEBjaHVua3M6IHF1ZXVlIGlkcyByZWNlaXZlZCBvdmVyIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODY1LSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6Mzg2NjogKiBXaWxsIGluaXRpYWxpemUgYWxsIHF1ZXVlIGlkcyB3aXRoIGlkcyByZWNlaXZlZCBhcyBtYWlsYm94IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODY3LSAqIFJldHVybnMgbnVtYmVyIG9mIGlkcyBmaWxsZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTM4Njk9c3RhdGljIGludCBpZHBmX3Zwb3J0X2dldF9xdWV1ZV9pZHModTMyICpxaWRzLCBpbnQgbnVtX3FpZHMsIHUxNiBxX3R5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zOTA3LSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzkwODogKiBXaWxsIGluaXRpYWxpemUgYWxsIHF1ZXVlIGlkcyB3aXRoIGlkcyByZWNlaXZlZCBhcyBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzkwOS0gKiBwYXJhbWV0ZXJzLiBSZXR1cm5zIG51bWJlciBvZiBxdWV1ZSBpZHMgaW5pdGlhbGl6ZWQuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zOTExPXN0YXRpYyBpbnQgX19pZHBmX3Zwb3J0X3F1ZXVlX2lkc19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM5NzktICogQHJzcmM6IHBvaW50ZXIgdG8gcXVldWUgYW5kIHZlY3RvciByZXNvdXJjZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozOTgwOiAqIEBjaHVua3M6IHF1ZXVlIGlkcyByZWNlaXZlZCBvdmVyIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zOTgxLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6Mzk4MjogKiBXaWxsIGluaXRpYWxpemUgYWxsIHF1ZXVlIGlkcyB3aXRoIGlkcyByZWNlaXZlZCBhcyBtYWlsYm94IHBhcmFtZXRlcnMuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzk4My0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9NDI5NT1pbnQgaWRwZl9hZGRfZGVsX21hY19maWx0ZXJzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy00NDAxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjQ0MDI6ICogaWRwZl9zZXRfcHJvbWlzY3VvdXMgLSBzZXQgcHJvbWlzY3VvdXMgYW5kIHNlbmQgbWVzc2FnZSB0byBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtNDQwMy0gKiBAYWRhcHRlcjogRHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmxfcHRwLmM9MTY9aW50IGlkcGZfcHRwX2dldF9jYXBzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmxfcHRwLmMtNjItXFx0LyogaWYgdGhlIHB0cF9tYl9xX2lkIGhvbGRzIGludmFsaWQgdmFsdWUgKDB4ZmZmZiksIHRoZSBzZWNvbmRhcnlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmxfcHRwLmM6NjM6XFx0ICogbWFpbGJveCBpcyBub3Qgc3VwcG9ydGVkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubF9wdHAuYy02NC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg9NDgxPVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDgsIHZpcnRjaG5sMl92ZXJzaW9uX2luZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC00OTAtICogQG90aGVyX2NhcHM6IFNlZSBlbnVtIHZpcnRjaG5sMl9jYXBfb3RoZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo0OTE6ICogQG1haWxib3hfZHluX2N0bDogRFlOX0NUTCByZWdpc3RlciBvZmZzZXQgYW5kIHZlY3RvciBpZCBmb3IgbWFpbGJveFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNDkyLSAqXFx0XFx0ICAgICBwcm92aWRlZCBieSBDUC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjQ5MzogKiBAbWFpbGJveF92ZWN0b3JfaWQ6IE1haWxib3ggdmVjdG9yIGlkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNDk0LSAqIEBudW1fYWxsb2NhdGVkX3ZlY3RvcnM6IE1heGltdW0gbnVtYmVyIG9mIGFsbG9jYXRlZCB2ZWN0b3JzIGZvciB0aGUgZGV2aWNlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01MjctICogSWYgZGF0YXBsYW5lIGRyaXZlciBzZXRzIG51bV9hbGxvY2F0ZWRfdmVjdG9ycyBhcyAwLCBDUCB3aWxsIHJlc3BvbmQgd2l0aCAxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1Mjg6ICogd2hpY2ggaXMgZGVmYXVsdCB2ZWN0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZWZhdWx0IG1haWxib3guIEZvciBhbnkgb3RoZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTUyOS0gKiB2YWx1ZSAnbicsIENQIHJlc3BvbmRzIHdpdGggYSB2YWx1ZSBcXHUwMDNjPSBuIGJhc2VkIG9uIHRoZSBDUCdzIHBvbGljeSBvZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNTMwLSAqIG1heCBudW1iZXIgb2YgdmVjdG9ycyBmb3IgYSBQRi5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjUzMTogKiBDUCB3aWxsIHJlc3BvbmQgd2l0aCB0aGUgdmVjdG9yIElEIG9mIG1haWxib3ggYWxsb2NhdGVkIHRvIHRoZSBQRiBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6NTMyOiAqIG1haWxib3hfdmVjdG9yX2lkIGFuZCB0aGUgbnVtYmVyIG9mIGl0ciBpbmRleCByZWdpc3RlcnMgaW4gaXRyX2lkeF9tYXAuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01MzMtICogSXQgYWxzbyByZXNwb25kcyB3aXRoIGRlZmF1bHQgbnVtYmVyIG9mIHZwb3J0cyB0aGF0IHRoZSBkYXRhcGxhbmUgZHJpdmVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oPTUzOT1zdHJ1Y3QgdmlydGNobmwyX2dldF9jYXBhYmlsaXRpZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01NDUtXFx0X19sZTY0IG90aGVyX2NhcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1NDY6XFx0X19sZTMyIG1haWxib3hfZHluX2N0bDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjU0NzpcXHRfX2xlMTYgbWFpbGJveF92ZWN0b3JfaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01NDgtXFx0X19sZTE2IG51bV9hbGxvY2F0ZWRfdmVjdG9ycztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg9MTA1Mj1WSVJUQ0hOTDJfQ0hFQ0tfU1RSVUNUX0xFTig2LCB2aXJ0Y2hubDJfcHR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMDcwLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDoxMDcxOiAqIElmIGFsbCB0aGUgcHR5cGVzIGRvbid0IGZpdCBpbnRvIG9uZSBtYWlsYm94IGJ1ZmZlciwgQ1Agc3BsaXRzIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTA3Mi0gKiBwdHlwZSBpbmZvIGludG8gbXVsdGlwbGUgbWVzc2FnZXMsIHdoZXJlIGVhY2ggbWVzc2FnZSB3aWxsIGhhdmUgaXRzIG93blxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xMzQxPVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDgsIHZpcnRjaG5sMl9wcm9taXNjX2luZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzQ2LSAqXFx0XFx0XFx0XFx0XFx0ICAgZGV2aWNlIGNsb2NrXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDoxMzQ3OiAqIEBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfREVWSUNFX0NMS19USU1FX01COiBtYWlsYm94IGFjY2VzcyB0byBnZXQgdGhlIHRpbWUgb2ZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNDgtICpcXHRcXHRcXHRcXHRcXHQgICAgICBkZXZpY2UgY2xvY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNDktICogQFZJUlRDSE5MMl9DQVBfUFRQX0dFVF9DUk9TU19USU1FOiBkaXJlY3QgYWNjZXNzIHRvIGNyb3NzIHRpbWVzdGFtcFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM1MDogKiBAVklSVENITkwyX0NBUF9QVFBfR0VUX0NST1NTX1RJTUVfTUI6IG1haWxib3ggYWNjZXNzIHRvIGNyb3NzIHRpbWVzdGFtcFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM1MS0gKiBAVklSVENITkwyX0NBUF9QVFBfU0VUX0RFVklDRV9DTEtfVElNRTogZGlyZWN0IGFjY2VzcyB0byBzZXQgdGhlIHRpbWUgb2ZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNTItICpcXHRcXHRcXHRcXHRcXHQgICBkZXZpY2UgY2xvY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNTM6ICogQFZJUlRDSE5MMl9DQVBfUFRQX1NFVF9ERVZJQ0VfQ0xLX1RJTUVfTUI6IG1haWxib3ggYWNjZXNzIHRvIHNldCB0aGUgdGltZSBvZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM1NC0gKlxcdFxcdFxcdFxcdFxcdCAgICAgIGRldmljZSBjbG9ja1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzU2LSAqXFx0XFx0XFx0XFx0ICAgICAgY2xvY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNTc6ICogQFZJUlRDSE5MMl9DQVBfUFRQX0FESl9ERVZJQ0VfQ0xLX01COiBtYWlsYm94IGFjY2VzcyB0byBhZGp1c3QgdGhlIHRpbWUgb2ZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNTgtICpcXHRcXHRcXHRcXHRcXHQgZGV2aWNlIGNsb2NrXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzU5LSAqIEBWSVJUQ0hOTDJfQ0FQX1BUUF9UWF9UU1RBTVBTOiBkaXJlY3QgYWNjZXNzIHRvIHRoZSBUeCB0aW1lc3RhbXBpbmdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNjA6ICogQFZJUlRDSE5MMl9DQVBfUFRQX1RYX1RTVEFNUFNfTUI6IG1haWxib3ggYWNjZXNzIHRvIHRoZSBUeCB0aW1lc3RhbXBpbmdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNjEtICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNjItICogUEYvVkYgbmVnb3RpYXRlcyBhIHNldCBvZiBzdXBwb3J0ZWQgUFRQIGNhcGFiaWxpdGllcyB3aXRoIHRoZSBDb250cm9sIFBsYW5lLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM2MzogKiBUaGVyZSBhcmUgdHdvIGFjY2VzcyBtZXRob2RzIC0gbWFpbGJveCAoX01CKSBhbmQgZGlyZWN0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM2NC0gKiBQVFAgY2FwYWJpbGl0aWVzIGVuYWJsZXMgTWFpbiBUaW1lciBvcGVyYXRpb25zOiBnZXQvc2V0L2FkanVzdCBNYWluIFRpbWVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xNDg1PVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDE2LCB2aXJ0Y2hubDJfcHRwX2dldF92cG9ydF90eF90c3RhbXBfY2Fwcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTE0OTQtICogQHNlY29uZGFyeV9tYng6IEluZGljYXRlcyB0byB0aGUgZHJpdmVyIHRoYXQgaXQgc2hvdWxkIGNyZWF0ZSBhIHNlY29uZGFyeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTQ5NTogKlxcdFxcdCAgIG1haWxib3ggdG8gaW5ldHJhY3Qgd2l0aCBjb250cm9sIHBsYW5lIGZvciBQVFBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTE0OTYtICogQHBhZDogUGFkZGluZyBmb3IgZnV0dXJlIGV4dGVuc2lvbnNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDU6MTYuNjUyMTgyMDEyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MTU4ODQ2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBBbmFseXppbmcgdGhlIElEUEYgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBpZHBmYCBkcml2ZXIgcmVsaWVzIG9uIGEgbWFpbGJveCBzeXN0ZW0gZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgQ29udHJvbCBQbGFuZSAoQ1ApLiBUaGlzIG1haWxib3ggaGFzIHRvIGJlIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCB2aWEgYGlkcGZfaW5pdF9kZmx0X21ieGAgYmVmb3JlIGFueXRoaW5nIGVsc2UgY2FuIGhhcHBlbi4gSWYgdGhhdCBpbml0aWFsIHNldHVwIGZhaWxzLCB0aGUgZHJpdmVyJ3MgYGlkcGZfcHJvYmVgIHdpbGwgYWxzbyBmYWlsLCBhbmQgd2UncmUgZGVhZCBpbiB0aGUgd2F0ZXIuXG5cblRoZSBpc3N1ZSBpcyB0aGF0IFN5emthbGxlcidzIFBDSSBmdXp6ZXIgY2FuJ3QgcmVhbGlzdGljYWxseSByZXBsaWNhdGUgdGhlIGNvbXBsZXhpdGllcyBvZiB0aGlzIG1haWxib3ggcHJvdG9jb2wsIHdoaWNoIGFwcGFyZW50bHkgaW52b2x2ZXMgRE1BIHJpbmdzIGFuZCBpbnRlcnJ1cHRzLiBUaGVyZWZvcmUsIHRoZSBkcml2ZXIgaXMgZ29pbmcgdG8gZmFpbCBwcm9iZSAqdmVyeSogZWFybHkgaW4gdGhlIHByb2Nlc3MsIG9yIGF0IGxlYXN0IGluaXRpYWxpemF0aW9uLiBCZWNhdXNlIG9mIHRoaXMsIHRoZSBuZXRkZXYgd29uJ3QgZ2V0IHJlZ2lzdGVyZWQuIElmIHRoYXQgZG9lc24ndCBoYXBwZW4sIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb24gYGlkcGZfdnBvcnRfb3BlbmAgaXNuJ3QgZ29pbmcgdG8gYmUgY2FsbGVkLiBBbmQgaWYgdGhhdCBkb2Vzbid0IG9jY3VyLCB0aGVuIG5laXRoZXIgd2lsbCB0aGUgYGlkcGZfdnBvcnRfaW50cl9hbGxvY2Agbm9yIGBpZHBmX3Zwb3J0X2ludHJfZGVpbml0YCBmdW5jdGlvbnMuIFRoaXMgbWVhbnMgdGhlc2UgcGF0aHMgYXJlIHNpbXBseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggdGhlIGZ1enplci5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpczogbGV0IG1lIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBvdGhlciB3YXkgdG8gcmVhY2ggdGhpcyBjb2RlLiBJcyBpdCBwb3NzaWJsZSB0aGF0IGBpZHBmYCBpcyBhY3R1YWxseSBhIHZpcnR1YWwgZHJpdmVyIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdmlhIG5ldGxpbms/IE5vcGUsIGl0J3MgZXhwbGljaXRseSBhIFBDSSBkcml2ZXIuIE9rLCBhbnkgY2hhbmNlIGl0J3MgdXNlZCBpbiBzb21lIHNwZWNpZmljIGVudmlyb25tZW50P1xuXG5UaGUgcHJvbXB0IHNwZWNpZmllcyB0aGF0IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgU2luY2UgdGhlIElEUEYgaXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLCBpdCBjb21wbGV0ZWx5IGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeSwgbWVhbmluZyBpdCBjYW5ub3QgYmUgcmVhY2hlZCBhdCBhbGwsIGFuZCB0aHVzIGl0IGNhbm5vdCBiZSBmdXp6ZWQuXG5cblRoZXJlZm9yZSwgY29uc2lkZXJpbmcgdGhlIGluaGVyZW50IGRlcGVuZGVuY3kgb24gYSBmdW5jdGlvbmFsIG1haWxib3ggcHJvdG9jb2wgYW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCBJJ20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aGlzIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA5MCwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDU6MjQuMDY4MDY4ODE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiAoSURQRikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBhbmQgaXQgcmVxdWlyZXMgY29tcGxleCBtYWlsYm94IGNvbW11bmljYXRpb24gd2l0aCBhIENvbnRyb2wgUGxhbmUgdG8gaW5pdGlhbGl6ZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW50ZXJydXB0IGFsbG9jYXRpb24gYW5kIGRlaW5pdGlhbGl6YXRpb24pIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiAoSURQRikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBhbmQgaXQgcmVxdWlyZXMgY29tcGxleCBtYWlsYm94IGNvbW11bmljYXRpb24gd2l0aCBhIENvbnRyb2wgUGxhbmUgdG8gaW5pdGlhbGl6ZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW50ZXJydXB0IGFsbG9jYXRpb24gYW5kIGRlaW5pdGlhbGl6YXRpb24pIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow67c69[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-20 19:44:12 +0000 UTC FinishedAt: 2026-07-20 20:05:24 +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+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gKElEUEYpIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgYW5kIGl0IHJlcXVpcmVzIGNvbXBsZXggbWFpbGJveCBjb21tdW5pY2F0aW9uIHdpdGggYSBDb250cm9sIFBsYW5lIHRvIGluaXRpYWxpemUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGludGVycnVwdCBhbGxvY2F0aW9uIGFuZCBkZWluaXRpYWxpemF0aW9uKSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjY2QzZjRiZjgyN2I5ZGYzZjI0MzFiYzk4N2Q2NWY4NWM5MWZhOTIyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMjA6MDM6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcbmluZGV4IDdmOTA1NjQwNGY2NGZjLi5jZDk4Njc0ZmI2NDg2MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcbkBAIC00MTQ4LDYgJiM0Mzs0MTQ4LDI2IEBAIHN0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9lbmFfaXJxX2FsbChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4gXHR3cml0ZWwocnNyYy1cdTAwM2Vub2lycV9keW5fY3RsX2VuYSwgcnNyYy1cdTAwM2Vub2lycV9keW5fY3RsKTtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGwgLSBEaXNhYmxlIERJTSB3b3JrIGZvciBhbGwgcV92ZWN0b3JzXG4mIzQzOyAqIEByc3JjOiBwb2ludGVyIHRvIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBESU0gd29ya3MgYXJlIGVtYmVkZGVkIGluIHRoZSBxX3ZlY3RvciBhcnJheSB0aGF0XG4mIzQzOyAqIGlkcGZfdnBvcnRfaW50cl9yZWwoKSBmcmVlcywgYW5kIHRoZSBwb2xsIGFybXMgdGhlbSBhZnRlclxuJiM0MzsgKiBuYXBpX2NvbXBsZXRlX2RvbmUoKSBoYXMgYWxyZWFkeSBjbGVhcmVkIE5BUElfU1RBVEVfU0NIRUQuICBEaXNhYmxlXG4mIzQzOyAqIHJhdGhlciB0aGFuIGp1c3QgY2FuY2VsLCBzbyB0aGF0IGEgcG9sbCB0YWlsIHN0aWxsIHJ1bm5pbmcgcGFzdFxuJiM0MzsgKiBuYXBpX2Rpc2FibGUoKSBjYW5ub3QgcXVldWUgdGhlbSBhZ2FpbiBiZWhpbmQgdGhlIGRyYWluLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpXG4mIzQzO3tcbiYjNDM7XHRmb3IgKHUxNiB2X2lkeCA9IDA7IHZfaWR4IFx1MDAzYyByc3JjLVx1MDAzZW51bV9xX3ZlY3RvcnM7IHZfaWR4JiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gXHUwMDI2cnNyYy1cdTAwM2VxX3ZlY3RvcnNbdl9pZHhdO1xuJiM0MztcbiYjNDM7XHRcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNnFfdmVjdG9yLVx1MDAzZXR4X2RpbS53b3JrKTtcbiYjNDM7XHRcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNnFfdmVjdG9yLVx1MDAzZXJ4X2RpbS53b3JrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaWRwZl92cG9ydF9pbnRyX2RlaW5pdCAtIFJlbGVhc2UgYWxsIHZlY3RvciBhc3NvY2lhdGlvbnMgZm9yIHRoZSB2cG9ydFxuICAqIEB2cG9ydDogbWFpbiB2cG9ydCBzdHJ1Y3R1cmVcbkBAIC00MTU4LDYgJiM0Mzs0MTc4LDcgQEAgdm9pZCBpZHBmX3Zwb3J0X2ludHJfZGVpbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiB7XG4gXHRpZHBmX3Zwb3J0X2ludHJfZGlzX2lycV9hbGwocnNyYyk7XG4gXHRpZHBmX3Zwb3J0X2ludHJfbmFwaV9kaXNfYWxsKHJzcmMpO1xuJiM0MztcdGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbChyc3JjKTtcbiBcdGlkcGZfdnBvcnRfaW50cl9uYXBpX2RlbF9hbGwocnNyYyk7XG4gXHRpZHBmX3Zwb3J0X2ludHJfcmVsX2lycSh2cG9ydCwgcnNyYyk7XG4gfVxuQEAgLTQyMzgsNyAmIzQzOzQyNTksNiBAQCBzdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfbmFwaV9lbmFfYWxsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpXG4gXHRmb3IgKHUxNiBxX2lkeCA9IDA7IHFfaWR4IFx1MDAzYyByc3JjLVx1MDAzZW51bV9xX3ZlY3RvcnM7IHFfaWR4JiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgaWRwZl9xX3ZlY3RvciAqcV92ZWN0b3IgPSBcdTAwMjZyc3JjLVx1MDAzZXFfdmVjdG9yc1txX2lkeF07XG4gXG4tXHRcdGlkcGZfaW5pdF9kaW0ocV92ZWN0b3IpO1xuIFx0XHRuYXBpX2VuYWJsZShcdTAwMjZxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbiBcdH1cbiB9XG5AQCAtNDU4MSw2ICYjNDM7NDYwMSw4IEBAIGludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0XHRxX2NvYWwgPSBcdTAwMjZ1c2VyX2NvbmZpZy1cdTAwM2VxX2NvYWxlc2NlW3ZfaWR4XTtcbiBcdFx0cV92ZWN0b3ItXHUwMDNldnBvcnQgPSB2cG9ydDtcbiBcbiYjNDM7XHRcdGlkcGZfaW5pdF9kaW0ocV92ZWN0b3IpO1xuJiM0MztcbiBcdFx0cV92ZWN0b3ItXHUwMDNldHhfaXRyX3ZhbHVlID0gcV9jb2FsLVx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzO1xuIFx0XHRxX3ZlY3Rvci1cdTAwM2V0eF9pbnRyX21vZGUgPSBxX2NvYWwtXHUwMDNldHhfaW50cl9tb2RlO1xuIFx0XHRxX3ZlY3Rvci1cdTAwM2V0eF9pdHJfaWR4ID0gVklSVENITkwyX0lUUl9JRFhfMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiAoSURQRikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBhbmQgaXQgcmVxdWlyZXMgY29tcGxleCBtYWlsYm94IGNvbW11bmljYXRpb24gd2l0aCBhIENvbnRyb2wgUGxhbmUgdG8gaW5pdGlhbGl6ZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW50ZXJydXB0IGFsbG9jYXRpb24gYW5kIGRlaW5pdGlhbGl6YXRpb24pIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2NkM2Y0YmY4MjdiOWRmM2YyNDMxYmM5ODdkNjVmODVjOTFmYTkyMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDIwIDIwOjAzOjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMKaW5kZXggN2Y5MDU2NDA0ZjY0ZmMuLmNkOTg2NzRmYjY0ODYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMKQEAgLTQxNDgsNiAmIzQzOzQxNDgsMjYgQEAgc3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX2VuYV9pcnFfYWxsKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCwKIAl3cml0ZWwocnNyYy0mZ3Q7bm9pcnFfZHluX2N0bF9lbmEsIHJzcmMtJmd0O25vaXJxX2R5bl9jdGwpOwogfQogCiYjNDM7LyoqCiYjNDM7ICogaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsIC0gRGlzYWJsZSBESU0gd29yayBmb3IgYWxsIHFfdmVjdG9ycwomIzQzOyAqIEByc3JjOiBwb2ludGVyIHRvIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzCiYjNDM7ICoKJiM0MzsgKiBUaGUgRElNIHdvcmtzIGFyZSBlbWJlZGRlZCBpbiB0aGUgcV92ZWN0b3IgYXJyYXkgdGhhdAomIzQzOyAqIGlkcGZfdnBvcnRfaW50cl9yZWwoKSBmcmVlcywgYW5kIHRoZSBwb2xsIGFybXMgdGhlbSBhZnRlcgomIzQzOyAqIG5hcGlfY29tcGxldGVfZG9uZSgpIGhhcyBhbHJlYWR5IGNsZWFyZWQgTkFQSV9TVEFURV9TQ0hFRC4gIERpc2FibGUKJiM0MzsgKiByYXRoZXIgdGhhbiBqdXN0IGNhbmNlbCwgc28gdGhhdCBhIHBvbGwgdGFpbCBzdGlsbCBydW5uaW5nIHBhc3QKJiM0MzsgKiBuYXBpX2Rpc2FibGUoKSBjYW5ub3QgcXVldWUgdGhlbSBhZ2FpbiBiZWhpbmQgdGhlIGRyYWluLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbChzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjICpyc3JjKQomIzQzO3sKJiM0MzsJZm9yICh1MTYgdl9pZHggPSAwOyB2X2lkeCAmbHQ7IHJzcmMtJmd0O251bV9xX3ZlY3RvcnM7IHZfaWR4JiM0MzsmIzQzOykgewomIzQzOwkJc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gJmFtcDtyc3JjLSZndDtxX3ZlY3RvcnNbdl9pZHhdOwomIzQzOwomIzQzOwkJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtxX3ZlY3Rvci0mZ3Q7dHhfZGltLndvcmspOwomIzQzOwkJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtxX3ZlY3Rvci0mZ3Q7cnhfZGltLndvcmspOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyoqCiAgKiBpZHBmX3Zwb3J0X2ludHJfZGVpbml0IC0gUmVsZWFzZSBhbGwgdmVjdG9yIGFzc29jaWF0aW9ucyBmb3IgdGhlIHZwb3J0CiAgKiBAdnBvcnQ6IG1haW4gdnBvcnQgc3RydWN0dXJlCkBAIC00MTU4LDYgJiM0Mzs0MTc4LDcgQEAgdm9pZCBpZHBmX3Zwb3J0X2ludHJfZGVpbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCwKIHsKIAlpZHBmX3Zwb3J0X2ludHJfZGlzX2lycV9hbGwocnNyYyk7CiAJaWRwZl92cG9ydF9pbnRyX25hcGlfZGlzX2FsbChyc3JjKTsKJiM0MzsJaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsKHJzcmMpOwogCWlkcGZfdnBvcnRfaW50cl9uYXBpX2RlbF9hbGwocnNyYyk7CiAJaWRwZl92cG9ydF9pbnRyX3JlbF9pcnEodnBvcnQsIHJzcmMpOwogfQpAQCAtNDIzOCw3ICYjNDM7NDI1OSw2IEBAIHN0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9uYXBpX2VuYV9hbGwoc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYykKIAlmb3IgKHUxNiBxX2lkeCA9IDA7IHFfaWR4ICZsdDsgcnNyYy0mZ3Q7bnVtX3FfdmVjdG9yczsgcV9pZHgmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBpZHBmX3FfdmVjdG9yICpxX3ZlY3RvciA9ICZhbXA7cnNyYy0mZ3Q7cV92ZWN0b3JzW3FfaWR4XTsKIAotCQlpZHBmX2luaXRfZGltKHFfdmVjdG9yKTsKIAkJbmFwaV9lbmFibGUoJmFtcDtxX3ZlY3Rvci0mZ3Q7bmFwaSk7CiAJfQogfQpAQCAtNDU4MSw2ICYjNDM7NDYwMSw4IEBAIGludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LAogCQlxX2NvYWwgPSAmYW1wO3VzZXJfY29uZmlnLSZndDtxX2NvYWxlc2NlW3ZfaWR4XTsKIAkJcV92ZWN0b3ItJmd0O3Zwb3J0ID0gdnBvcnQ7CiAKJiM0MzsJCWlkcGZfaW5pdF9kaW0ocV92ZWN0b3IpOwomIzQzOwogCQlxX3ZlY3Rvci0mZ3Q7dHhfaXRyX3ZhbHVlID0gcV9jb2FsLSZndDt0eF9jb2FsZXNjZV91c2VjczsKIAkJcV92ZWN0b3ItJmd0O3R4X2ludHJfbW9kZSA9IHFfY29hbC0mZ3Q7dHhfaW50cl9tb2RlOwogCQlxX3ZlY3Rvci0mZ3Q7dHhfaXRyX2lkeCA9IFZJUlRDSE5MMl9JVFJfSURYXzE7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jYC4gVGhlIG1haW4gdGFrZWF3YXkgaXMgdGhhdCB0aGV5JiMzOTt2ZSBhZGRlZCBhIGZ1bmN0aW9uIGNhbGxlZCBgaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsYC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGl0IGRpc2FibGVzIHNvbWUgd29yayBxdWV1ZXMsIGB0eF9kaW0ud29ya2AgYW5kIGByeF9kaW0ud29ya2AsIGJ5IGNhbGxpbmcgYGRpc2FibGVfd29ya19zeW5jYC4gVGhleSYjMzk7dmUgYWxzbyBtb3ZlZCBgaWRwZl9pbml0X2RpbWAgYXJvdW5kLCBzaGlmdGluZyBpdCBmcm9tIGBpZHBmX3Zwb3J0X2ludHJfbmFwaV9lbmFfYWxsYCB0byBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYC4gQWRkaXRpb25hbGx5LCB0aGlzIG5ldyBgaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsYCBmdW5jdGlvbiBpcyBub3cgYmVpbmcgY2FsbGVkIGZyb20gYGlkcGZfdnBvcnRfaW50cl9kZWluaXRgLgoKVGhpcyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBJbnRlbCBJUERGIGRyaXZlci4gQnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIHNwZWNpZmljYWxseSBpZiB0aGlzIGRyaXZlciBpcyBldmVuIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTttIHJlY2FsbGluZyB0aGF0IHRoZSBJbnRlbCBJUERGIGlzIHRoZSAmIzM0O0ludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiYjMzQ7IGRyaXZlci4gSXQgKnNvdW5kcyogbGlrZSBhIHZpcnR1YWwgZnVuY3Rpb24gZHJpdmVyIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLgoKVGhlIG5leHQgdGhpbmcgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGlzIGZ1enphYmxlLiBFdGhlcm5ldCBkcml2ZXJzIHRoYXQgYXJlIGhhcmR3YXJlIHNwZWNpZmljIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZnV6eiwgdW5sZXNzIHRoZXkmIzM5O3JlIHJ1bm5pbmcgb24gYW4gZW11bGF0ZWQgc3lzdGVtIG9yIGhhdmUgc29tZSBzb3J0IG9mIHZpcnR1YWwgYnVzIGF2YWlsYWJsZS4gV2FpdCBhIG1pbnV0ZSwgSSB0aGluayBJIHJlbWVtYmVyIHRoYXQgSVBERiBpcyBhIFBDSSBkcml2ZXIhCgpPa2F5LCB0aGF0IGNoYW5nZXMgdGhpbmdzLiBOb3cgSSBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jYCBvciBzb21ldGhpbmcgc2ltaWxhciB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIE9uY2UgSSBjb25maXJtIHRoYXQsIEkgY2FuIGV2YWx1YXRlIHRoZSBmdXp6aW5nIHBvdGVudGlhbCBtb3JlIHJlYWxpc3RpY2FsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTM4ND1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWRwZl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zOTEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MzkyOm1vZHVsZV9wY2lfZHJpdmVyKGlkcGZfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDY5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUENJIERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIGxvb2tzIGxpa2UgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7Y2FuIHdlIGZ1enogdGhpcz8mIzM0OyBBbmQgdGhlIGFuc3dlciwgb2YgY291cnNlLCBpcyAmIzM0O21heWJlLiYjMzQ7IElmIHdlIGhhdmUgUENJIGZ1enppbmcgZW5hYmxlZCwgdGhlbiBzeXprYWxsZXIgKm1pZ2h0KiBiZSBhYmxlIHRvIGRvIHNvbWV0aGluZy4gSSByZW1lbWJlciBzeXprYWxsZXIgZG9lcyBoYXZlIGEgUENJIGZ1enplciwgc3BlY2lmaWNhbGx5IGBzeXpfcGNpXy4uLmAuCgpIb3dldmVyLCB0aGUgcHJvbXB0IGlzIHRocm93aW5nIGEgd3JlbmNoIGluIHRoaW5ncywgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEkmIzM5O20gdHJ5aW5nIHRvIHRoaW5rIGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBJRFBGIGRldmljZSwgYW5kIEkgY2FuJiMzOTt0IHRoaW5rIG9mIG9uZSBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLiBIbW0uCgpTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSByZWFjaCBpdCB2aWEgUENJIGZ1enppbmc/IFN5emthbGxlcuKAmXMgUENJIGZ1enplciBkb2VzIHByb2JlIFBDSSBkZXZpY2VzLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzaWduLiBCdXQgaXMgdGhpcyBldmVuICp3b3J0aCogZnV6emluZz8gVHlwaWNhbGx5LCBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSwgZXNwZWNpYWxseSB3aXRob3V0IGFueSByZWFkaWx5IGF2YWlsYWJsZSBlbXVsYXRpb24sIGFyZSBjb25zaWRlcmVkIGRpZmZpY3VsdCBvciBvdXRyaWdodCBpbXBvc3NpYmxlIHRvIHJlYWNoLgoKV2FpdCBhIHNlY29uZCwgd2FzbiYjMzk7dCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgc3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX2RldmljZWA/IFRoYXQgY2FuICplbXVsYXRlKiBQQ0kgZGV2aWNlcyB0byBzb21lIGV4dGVudCwgYnV0IEkgaGlnaGx5IGRvdWJ0IGl0JiMzOTtzIGEgZnVsbCBlbXVsYXRpb24gb2YgSW50ZWwmIzM5O3MgSURQRiBoYXJkd2FyZS4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gSURQRiBpbiB0aGUgY3VycmVudCBzZXR1cC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IGRldGFpbHMgdGhhdCBjb3VsZCBtYWtlIGZ1enppbmcgdGhpcyBkcml2ZXIgZmVhc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSURQRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6CgoqKkV4YW1pbmluZyBJbnRlbCBpRFBGIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHNvbWUgc3BlY2lmaWNzIHJlZ2FyZGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHJpZ2h0PyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoZXkmIzM5O3JlIHRoZSBnby10byBmb3Igc2V0dGluZyBidWlsZC10aW1lIHZhcmlhYmxlcyBhbmQgZGVwZW5kZW5jaWVzLiBUaGUgaURQRiBkcml2ZXIgaXMgbGlrZWx5IHVuZGVyIHRoZSBJbnRlbCBldGhlcm5ldCB1bWJyZWxsYSwgc28gSSYjMzk7bGwgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZ2AuIE9yLCBpZiB0aGF0IGV4YWN0IHBhdGggaXMgc2xpZ2h0bHkgb2ZmLCBJJiMzOTtsbCBzdGFydCB0aGVyZSBhbmQgbG9vayBmb3IgYSBzaW1pbGFyIGZpbGVuYW1lIGFuZCBwYXRoIHdpdGhpbiB0aGF0IGRyaXZlciBzdHJ1Y3R1cmUuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3MgSSBuZWVkLiBIb3BlZnVsbHksIEkmIzM5O2xsIGZpbmQgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIHF1aWNrbHksIGJ1dCBpZiBub3QsIEkgY2FuIG1vdmUgb250byBhIG1vcmUgZ2VuZXJhbCBJbnRlbCBFdGhlcm5ldCBLY29uZmlnIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElEUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6NDpjb25maWcgSURQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz0xNz1pZiBJRFBGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTk6Y29uZmlnIElEUEZfU0lOR0xFUVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTIwLVx0Ym9vbCBcJiMzNDtpZHBmIHNpbmdsZXEgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0ODQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBJRFBGOiBBIEZlYXNpYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBpcywgaWYgd2UgZW5hYmxlIHRoZSBgSURQRmAgZHJpdmVyLCBjYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICpyZWFjaCogaXQ/IEkga25vdyBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgYnV0IHR5cGljYWxseSBpdCBuZWVkcyBzb21lIGtpbmQgb2YgUENJIGRldmljZSBkZXNjcmlwdGlvbiBvciBpdCYjMzk7cyBqdXN0IGdvaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEFoLCB3YWl0IGEgbWludXRlLCBzeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBoYXZlIGZ1bGwgZW11bGF0aW9uIGZvciBJRFBGLCBkb2VzIGl0PyBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBwb2ludC4KClNvLCBpcyBpdCBldmVuICp3b3J0aCogdHJ5aW5nIHRvIGZ1enogaXQ/IEkmIzM5O20gcmVtZW1iZXJpbmcgdGhhdCBxdW90ZSwgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmXigKYmIzM0OyBUaGlzIHNtZWxscyBsaWtlIGEgZGVhZCBlbmQgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIFBDSSBkcml2ZXIgd2l0aCBubyBRRU1VIGVtdWxhdGlvbi4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aG9zZSBjcml0aWNhbCBmdW5jdGlvbnMgbGlrZSBgaWRwZl92cG9ydF9pbnRyX2RlaW5pdGAsIGBpZHBmX3Zwb3J0X2ludHJfYWxsb2NgLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmVzLiBXaXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUsIG9yIGEgZGVjZW50IGVtdWxhdG9yLCB0aGUgZGV2aWNlIHByb2JhYmx5IHdvbiYjMzk7dCBpbml0aWFsaXplIGNvcnJlY3RseSwgYW5kIHRob3NlIGRhdGEgcGF0aHMgd2lsbCBiZSB1bnJlYWNoYWJsZS4KCkFscmlnaHQsIGxldCYjMzk7cyBrZWVwIGl0IHNpbXBsZSBmb3Igbm93LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBzZWUgaWYgYGlkcGZfcHJvYmVgIGNhbiBldmVuIHN1Y2NlZWQgd2l0aCBqdXN0IFBDSSBmdXp6aW5nLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgcmlnaHQ/IElmIHRoZSBwcm9iZSBmYWlscywgd2UmIzM5O3JlIGRvbmUuIE5vIHBvaW50IGdvaW5nIGZ1cnRoZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZHBmX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0xODk9c3RhdGljIGludCBpZHBmX2NmZ19odyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjI4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzoyMjk6ICogaWRwZl9wcm9iZSAtIERldmljZSBpbml0aWFsaXphdGlvbiByb3V0aW5lXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMC0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzNC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjM1OnN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjM2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTM4ND1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWRwZl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zODYtXHQuaWRfdGFibGVcdFx0PSBpZHBmX3BjaV90YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM4NzpcdC5wcm9iZVx0XHRcdD0gaWRwZl9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg4LVx0LnNyaW92X2NvbmZpZ3VyZVx0PSBpZHBmX3NyaW92X2NvbmZpZ3VyZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQzNgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBvZiBgaWRwZl9wcm9iZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBpZHBmX3Byb2JlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHJlY2FsbCB3aGF0IEkga25vdyBhYm91dCBJbnRlbCBEYXRhIFBsYW5lIEZpbHRlcmluZyAoSURQRikgYW5kIGl0cyBwdXJwb3NlLiBJdCYjMzk7cyBsaWtlbHkgYSBwcm9iZSwgbWVhbmluZyBpdCYjMzk7cyBpbnZvbHZlZCBpbiBzb21lIHNvcnQgb2YgaW50cm9zcGVjdGlvbiBvciBkaXNjb3ZlcnkgcHJvY2VzcyByZWxhdGVkIHRvIHRoZSBkYXRhIHBsYW5lLiBQZXJoYXBzIGl0JiMzOTtzIGlkZW50aWZ5aW5nIGF2YWlsYWJsZSByZXNvdXJjZXMsIHZhbGlkYXRpbmcgY29uZmlndXJhdGlvbnMsIGNoZWNraW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgcmVsYXRlZCB0byBJRFBGIGFjY2VsZXJhdGlvbiwgb3IgZXZlbiBwcm9iaW5nIHRoZSBuZXR3b3JrIHRvIHZlcmlmeSBmbG93IHJ1bGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHdoZXJlIHRoaXMgYGlkcGZfcHJvYmVgIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdGhlIGRhdGEgaXQgb3BlcmF0ZXMgb24gaXMga2V5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHdoYXQgaW5mb3JtYXRpb24gdGhlIGZ1bmN0aW9uIHJldHVybnMgYW5kIHdoYXQgdGhhdCByZXR1cm4gdmFsdWUgc2lnbmFscyB3aXRoaW4gdGhlIGJyb2FkZXIgZmxvdy4gQmFzZWQgb24gdGhlIG5hbWUsIGBpZHBmX3Byb2JlYCwgSSYjMzk7ZCBleHBlY3QgaXQgaXMgcmVsYXRlZCB0byBpZGVudGlmeWluZyBjYXBhYmlsaXRpZXMuIEkmIzM5O2xsIGdvIHRocm91Z2ggdGhlIGNvZGUgYW5kIHF1aWNrbHkgY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzNTpcdHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiAyMzY6XHR7XG4gMjM3Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiAyMzg6XHRcdHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXI7XG4gMjM5Olx0XHRpbnQgZXJyO1xuIDI0MDpcdFxuIDI0MTpcdFx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyKTtcbiAyNDI6XHRcdGlmICghYWRhcHRlcilcbiAyNDM6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjQ0Olx0XG4gMjQ1Olx0XHRhZGFwdGVyLVx1MDAzZXJlcV90eF9zcGxpdHEgPSB0cnVlO1xuIDI0NjpcdFx0YWRhcHRlci1cdTAwM2VyZXFfcnhfc3BsaXRxID0gdHJ1ZTtcbiAyNDc6XHRcbiAyNDg6XHRcdGFkYXB0ZXItXHUwMDNlcGRldiA9IHBkZXY7XG4gMjQ5Olx0XHRlcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XG4gMjUwOlx0XHRpZiAoZXJyKVxuIDI1MTpcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI1MjpcdFxuIDI1MzpcdFx0ZXJyID0gcGNpbV9yZXF1ZXN0X3JlZ2lvbihwZGV2LCAwLCBwY2lfbmFtZShwZGV2KSk7XG4gMjU0Olx0XHRpZiAoZXJyKSB7XG4gMjU1Olx0XHRcdHBjaV9lcnIocGRldiwgXCYjMzQ7cGNpbV9yZXF1ZXN0X3JlZ2lvbiBmYWlsZWQgJXBlXFxuXCYjMzQ7LCBFUlJfUFRSKGVycikpO1xuIDI1NjpcdFxuIDI1NzpcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI1ODpcdFx0fVxuIDI1OTpcdFxuIDI2MDpcdFx0ZXJyID0gcGNpX2VuYWJsZV9wdG0ocGRldik7XG4gMjYxOlx0XHRpZiAoZXJyKVxuIDI2MjpcdFx0XHRwY2lfZGJnKHBkZXYsIFwmIzM0O1BDSWUgUFRNIGlzIG5vdCBzdXBwb3J0ZWQgYnkgUENJZSBidXMvY29udHJvbGxlclxcblwmIzM0Oyk7XG4gMjYzOlx0XG4gMjY0Olx0XHQvKiBzZXQgdXAgZm9yIGhpZ2ggb3IgbG93IGRtYSAqL1xuIDI2NTpcdFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChkZXYsIERNQV9CSVRfTUFTSyg2NCkpO1xuIDI2NjpcdFx0aWYgKGVycikge1xuIDI2NzpcdFx0XHRwY2lfZXJyKHBkZXYsIFwmIzM0O0RNQSBjb25maWd1cmF0aW9uIGZhaWxlZDogJXBlXFxuXCYjMzQ7LCBFUlJfUFRSKGVycikpO1xuIDI2ODpcdFxuIDI2OTpcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI3MDpcdFx0fVxuIDI3MTpcdFxuIDI3MjpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMjczOlx0XHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWRhcHRlcik7XG4gMjc0Olx0XG4gMjc1Olx0XHRhZGFwdGVyLVx1MDAzZWluaXRfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtaW5pdFwmIzM0OyxcbiAyNzY6XHRcdFx0XHRcdFx0ICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxuIDI3NzpcdFx0XHRcdFx0XHQgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDI3ODpcdFx0XHRcdFx0XHQgICBkZXZfbmFtZShkZXYpKTtcbiAyNzk6XHRcdGlmICghYWRhcHRlci1cdTAwM2Vpbml0X3dxKSB7XG4gMjgwOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgaW5pdCB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDI4MTpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDI4MjpcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI4MzpcdFx0fVxuIDI4NDpcdFxuIDI4NTpcdFx0YWRhcHRlci1cdTAwM2VzZXJ2X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzLSVzLXNlcnZpY2VcJiMzNDssXG4gMjg2Olx0XHRcdFx0XHRcdCAgIFdRX1VOQk9VTkQgfCBXUV9NRU1fUkVDTEFJTSwgMCxcbiAyODc6XHRcdFx0XHRcdFx0ICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcbiAyODg6XHRcdFx0XHRcdFx0ICAgZGV2X25hbWUoZGV2KSk7XG4gMjg5Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNlc2Vydl93cSkge1xuIDI5MDpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIHNlcnZpY2Ugd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbiAyOTE6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiAyOTI6XHRcdFx0Z290byBlcnJfc2Vydl93cV9hbGxvYztcbiAyOTM6XHRcdH1cbiAyOTQ6XHRcbiAyOTU6XHRcdGFkYXB0ZXItXHUwMDNlbWJ4X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzLSVzLW1ieFwmIzM0OywgV1FfVU5CT1VORCB8IFdRX0hJR0hQUkksXG4gMjk2Olx0XHRcdFx0XHRcdCAgMCwgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcbiAyOTc6XHRcdFx0XHRcdFx0ICBkZXZfbmFtZShkZXYpKTtcbiAyOTg6XHRcdGlmICghYWRhcHRlci1cdTAwM2VtYnhfd3EpIHtcbiAyOTk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBtYWlsYm94IHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4gMzAwOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gMzAxOlx0XHRcdGdvdG8gZXJyX21ieF93cV9hbGxvYztcbiAzMDI6XHRcdH1cbiAzMDM6XHRcbiAzMDQ6XHRcdGFkYXB0ZXItXHUwMDNlc3RhdHNfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtc3RhdHNcJiMzNDssXG4gMzA1Olx0XHRcdFx0XHRcdCAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMzA2Olx0XHRcdFx0XHRcdCAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDMwNzpcdFx0XHRcdFx0XHQgICAgZGV2X25hbWUoZGV2KSk7XG4gMzA4Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNlc3RhdHNfd3EpIHtcbiAzMDk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDMxMDpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDMxMTpcdFx0XHRnb3RvIGVycl9zdGF0c193cV9hbGxvYztcbiAzMTI6XHRcdH1cbiAzMTM6XHRcbiAzMTQ6XHRcdGFkYXB0ZXItXHUwMDNldmNfZXZlbnRfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtdmNfZXZlbnRcJiMzNDssXG4gMzE1Olx0XHRcdFx0XHRcdCAgICAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMzE2Olx0XHRcdFx0XHRcdCAgICAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDMxNzpcdFx0XHRcdFx0XHQgICAgICAgZGV2X25hbWUoZGV2KSk7XG4gMzE4Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNldmNfZXZlbnRfd3EpIHtcbiAzMTk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB2aXJ0Y2hubCBldmVudCB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDMyMDpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDMyMTpcdFx0XHRnb3RvIGVycl92Y19ldmVudF93cV9hbGxvYztcbiAzMjI6XHRcdH1cbiAzMjM6XHRcbiAzMjQ6XHRcdC8qIHNldHVwIG1zZ2x2bCAqL1xuIDMyNTpcdFx0YWRhcHRlci1cdTAwM2Vtc2dfZW5hYmxlID0gbmV0aWZfbXNnX2luaXQoLTEsIElEUEZfQVZBSUxfTkVUSUZfTSk7XG4gMzI2Olx0XG4gMzI3Olx0XHRlcnIgPSBpZHBmX2Rldl9pbml0KGFkYXB0ZXIsIGVudCk7XG4gMzI4Olx0XHRpZiAoZXJyKSB7XG4gMzI5Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1VuZXhwZWN0ZWQgZGV2IElEIDB4JXggaW4gaWRwZiBwcm9iZVxcblwmIzM0OyxcbiAzMzA6XHRcdFx0XHRlbnQtXHUwMDNlZGV2aWNlKTtcbiAzMzE6XHRcdFx0Z290byBkZXN0cm95X3ZjX2V2ZW50X3dxO1xuIDMzMjpcdFx0fVxuIDMzMzpcdFxuIDMzNDpcdFx0ZXJyID0gaWRwZl9jZmdfaHcoYWRhcHRlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJRFBGIERyaXZlciBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIGBpZHBmX3Byb2JlYCBjYWxscyBgaWRwZl9jZmdfaHdgLCB3aGljaCBpbW1lZGlhdGVseSBpbmRpY2F0ZXMgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiB0aGlzIGRyaXZlciBpcyBhIHZpYWJsZSB0YXJnZXQgZm9yIHN5emthbGxlci4gU2luY2Ugc3l6a2FsbGVyIGhhcyB0aGUgYWJpbGl0eSB0byBmdXp6IFBDSSBkZXZpY2VzIGJ5IGluamVjdGluZyBQQ0kgY29uZmlnIGFuZCBNTUlPIG9wZXJhdGlvbnMsIEkgdGhpbmsgdGhlcmUgaXMgYSBjaGFuY2UuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGxgIGFuZCBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYCB3aGljaCBhcmUgcHJvYmFibHkgcGFydCBvZiB2cG9ydCBpbml0aWFsaXphdGlvbi4KCkFoYSEgSWYgdGhpcyAqaXMqIGEgUENJIGRyaXZlciwgbWF5YmUgc3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX2RldmljZWAgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBgaWRwZl9wcm9iZWAgYW5kIGFsbG93IGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSB0aHJvdWdoIE1NSU8sIGxlYWRpbmcgdG8gdGhlIGFjdGl2YXRpb24gb2YgaW50ZXJydXB0cyBhbmQgb3RoZXIgZnVuY3Rpb25hbGl0eS4gTXkgbWFpbiBjb25jZXJuIGlzLCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0PyBUaGVuIEkgc2VlIHRoaXM6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFRoYXQmIzM5O3MgaW1wb3J0YW50LgoKQnV0IHdhaXQgYSBtaW51dGUsIGlzIElEUEYgcmVhY2hhYmxlIGluIEdDRSBvciBRRU1VPyBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIuIElmIGl0IGlzIHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cywgdGhlbiBmdXp6aW5nIGl0IGlzIHBvaW50bGVzcy4KCkFoISBJIHNlZSB0aGF0IElEUEYgaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uIGRyaXZlciBmb3IgSW50ZWwmIzM5O3MgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uLiBJZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIsIHN5emthbGxlciBjb3VsZCBpbmplY3QgYSBmYWtlIFBDSSBkZXZpY2UgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCBhbmQgdGhlbiBmdXp6IGl0LiBIb3dldmVyLCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBpcyBrbm93biB0byBiZSBzb21ld2hhdCBsaW1pdGVkOyBpdCB1c3VhbGx5IGhhbmRsZXMgdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCBiYXNpYyBNTUlPIGFjY2VzcywgcmFyZWx5IGdldHRpbmcgZGVlcGx5IGludG8gdGhlIG5ldHdvcmsgc3RhY2sgb3IgaW50ZXJydXB0IGhhbmRsaW5nIHVubGVzcyB0aGUgZHJpdmVyIGlzIHNpbXBsZSBvciBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQuIEkgbmVlZCB0byBiZSByZWFsaXN0aWMgYWJvdXQgdGhpcy4KCkRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiBJRFBGPyBJIGNhbiYjMzk7dCBhc3N1bWUgYW55dGhpbmcuIEkgbmVlZCB0byBnbyBhbmQgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBleGlzdGluZyBzeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciBJRFBGLiBUaGF0IGlzIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWRwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTMwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklEUEYgYW5kIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byByZW1lbWJlciB0aGUgcmVzdHJpY3Rpb25zLiBJIGNhbiYjMzk7dCB1c2UgZ3JlcHBlciBvbiBgc3lzLypgLCBzbyB0aGF0JiMzOTtzIG91dC4gSSBhbHNvIG5lZWQgdG8gdXNlIGByZWFkLWZpbGVgIGFuZCBjYW4mIzM5O3QgdXNlIHRoZSBkZXNjcmlwdGlvbiBzZWFyY2ggdG9vbC4gUmlnaHQsIHRoYXQgd2FzIGEgdHlwby4KCk5vdywgY29uc2lkZXJpbmcgSURQRiwgaXQgYXBwZWFycyB0byBiZSBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFuIEludGVsIEV0aGVybmV0IGRyaXZlci4gR2l2ZW4gdGhpcywgaXQmIzM5O3MgZ2VuZXJhbGx5IGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdW5sZXNzIGl0JiMzOTtzIGEgdmlydGlvIG9yIHNpbWlsYXIgZW11bGF0ZWQgZGV2aWNlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyByZWFjaGFibGUgaW4gR0NFIG9yIFFFTVUuCgpHQ0UgcHJpbWFyaWx5IHVzZXMgdmlydGlvLW5ldCBvciBnVk5JQy4gUUVNVSBzdXBwb3J0cyBhIHJhbmdlIG9mIGVtdWxhdGVkIE5JQ3MsIGJ1dCBub3QgSURQRi4gU28sIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IElEUEYgaXNuJiMzOTt0IGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgbWVhbnMsIGFzIGFuIEludGVsIElQVSBoYXJkd2FyZSBkcml2ZXIsIHRoYXQgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCB0aGUgY29kZSBwYXRocyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGxpa2UgR0NFIG9yIFFFTVUuCgpMZXQgbWUgZG91YmxlLWNoZWNrIHRob3VnaC4gR29vZ2xlIENsb3VkIHVzZXMgZ1ZOSUMgYW5kIHZpcnRpby1uZXQuIEFXUyB1dGlsaXplcyBFTkEuIEF6dXJlIGVtcGxveXMgbWFuYS4gSURQRiBzcGVjaWZpY2FsbHkgdGFyZ2V0cyB0aGUgSW50ZWwgSVBVLiBEZWZpbml0ZWx5IG5vdCBlbXVsYXRlZC4gSXQmIzM5O3Mgbm90IHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkxldCBtZSByZS1leGFtaW5lIHRoZSBwcm9tcHQmIzM5O3MgY3JpdGVyaWEuIEl0IHNheXMgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFNpbmNlIElEUEYgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gUUVNVSwgYW5kIHRoZXJlIGlzIG5vIHBvc3NpYmxlIHdheSBmb3IgaXQgdG8gYmUgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFNvLCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgcmlnaHQgYW5zd2VyLgoKT2theSwgbGV0IG1lIGNvbmZpcm0gaWYgdGhlcmUmIzM5O3MgKmFueSogc2xpZ2h0IGNoYW5jZSBpdCYjMzk7cyBhIHZpcnR1YWwgZHJpdmVyLiBMZXQgbWUgbG9vayBhdCBgaWRwZl9wcm9iZWAgYWdhaW4uIFRoZSBjb2RlIHVzZXMgYHBjaW1fZW5hYmxlX2RldmljZWAsIGBwY2ltX3JlcXVlc3RfcmVnaW9uYCwgZXRjLiBJdCByZXF1aXJlcyBhIHJlYWwgUENJIGRldmljZS4gV2l0aG91dCBRRU1VIGVtdWxhdGlvbiBvciBhIHJlYWwgcGh5c2ljYWwgZGV2aWNlLCBgaWRwZl9wcm9iZWAgZWl0aGVyIHdvbiYjMzk7dCBiZSBjYWxsZWQsIG9yIGlmIGl0IGlzIHJlYWNoZWQsIGl0IGNhbiBvbmx5IHRyaWdnZXIgYmFzaWMgTU1JTyBmdXp6aW5nLCB3aGljaCB3b3VsZG4mIzM5O3QgZ2V0IHRvIHRob3NlIGtleSBmdW5jdGlvbnMgSSB3YW50IHRvIHRlc3QuIEFjdHVhbGx5LCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBjYW4gdHJpZ2dlciBpdCwgYnV0IHRoZW4gaXQmIzM5O2xsIGZhaWwgbGF0ZXIgb24uIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYCBpcyByZWFjaGFibGUgZnJvbSBgaWRwZl9wcm9iZWAuIEJ1dCBiYXNlZCBvbiB0aGUgY29kZSwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgaW1wb3NzaWJsZS4gR2l2ZW4gYWxsIHRoaXMsIEkmIzM5O20gc3RpbGwgZmlybWx5IGluIHRoZSBgV29ydGhGdXp6aW5nPWZhbHNlYCBjYW1wLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZHBmX3Zwb3J0X2ludHJfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTQ5Mj1zdGF0aWMgaW50IGlkcGZfdnBvcnRfb3BlbihzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsIGJvb2wgcnRubClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTUxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxNTEyOlx0ZXJyID0gaWRwZl92cG9ydF9pbnRyX2FsbG9jKHZwb3J0LCByc3JjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xNTEzLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM9NDUzOT1zdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfbmFwaV9hZGRfYWxsKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ1NjMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjQ1NjQ6ICogaWRwZl92cG9ydF9pbnRyX2FsbG9jIC0gQWxsb2NhdGUgbWVtb3J5IGZvciBpbnRlcnJ1cHQgdmVjdG9yc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NTY1LSAqIEB2cG9ydDogdmlydHVhbCBwb3J0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NTcxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzo0NTcyOmludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NTczLVx0XHRcdCAgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTEwOTE9dm9pZCBpZHBmX3Zwb3J0X2ludHJfcmVsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDoxMDkyOmludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC0xMDkzLVx0XHRcdCAgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTAzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgSURQRiYjMzk7cyBBdHRhY2sgU3VyZmFjZSoqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYGlkcGZgIGRyaXZlci4gVGhlIGNvcmUgb2YgdGhpcyBwb3RlbnRpYWxseSB2dWxuZXJhYmxlIGZ1bmN0aW9uYWxpdHkgaXMgdGhlIGBpZHBmX3Zwb3J0X2ludHJfYWxsb2NgIGZ1bmN0aW9uLiBJIGtub3cgdGhpcyBpcyB0cmlnZ2VyZWQgYnkgYGlkcGZfdnBvcnRfb3BlbmAsIHdoaWNoIGl0c2VsZiBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZSBuZXR3b3JrIGRldmljZSBiZWluZyBvcGVuZWQgdmlhIGBuZG9fb3BlbmAuIFRoZSBwYXRoIHRvIGdldCB0aGVyZSBpcyBwcmV0dHkgc3RhbmRhcmQ6IHRoZSBuZXRkZXYgbmVlZHMgdG8gYmUgcmVnaXN0ZXJlZC4gUmVnaXN0cmF0aW9uIHJlcXVpcmVzIGEgc3VjY2Vzc2Z1bCBgaWRwZl9wcm9iZWAuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpczogY2FuIGEgdG9vbCBsaWtlIFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGJlIHRyaWNrZWQgaW50byBtYWtpbmcgYGlkcGZfcHJvYmVgIHRoaW5rIGV2ZXJ5dGhpbmcgaXMgb2theSBhbmQgcmVnaXN0ZXIgYSBuZXRkZXYsIGV2ZW4gaWYgaXQmIzM5O3Mgbm90IGEgcmVhbCBwaHlzaWNhbCBkZXZpY2U/CgpNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCB0cmlja3kuIE5ldHdvcmsgZHJpdmVycyBhcmUgb2Z0ZW4gdGlnaHRseSBjb3VwbGVkIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMuIFRoZXkgcmVseSBvbiB0aGluZ3MgbGlrZSBETUEgcmluZyBzZXR1cCwgcG90ZW50aWFsbHkgZmlybXdhcmUgbG9hZGluZywgYW5kIGRlZmluaXRlbHkgbWFpbGJveCBpbnRlcmFjdGlvbnMgdG8gY29tbXVuaWNhdGUuIEl0JiMzOTtzIHJhcmUgdG8gZmluZCBhIHRydWx5ICYjMzk7c2ltcGxlJiMzOTsgbmV0d29yayBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBpZHBmYCBoYXMgYW55IGRlcGVuZGVuY2llcyBsaWtlIGZpcm13YXJlIG9yIGEgbWFpbGJveCBwcm90b2NvbC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBwb3RlbnRpYWwgZm9yIHZ1bG5lcmFiaWxpdHkgaXMgZ29pbmcgdG8gbGllLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlc2UgcHJlcmVxdWlzaXRlcyBhcmUgZXNzZW50aWFsIGZvciBgaWRwZl9wcm9iZWAgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJZiB0aGVzZSBhcmUgc2tpcHBlZCwgb3IgbW9ja2VkLCB0aGVuIGBpZHBmX3Byb2JlYCB3aWxsIGhhdmUgYSBjaGFuY2Ugb2Ygc3VjY2VlZGluZyB3aGVuIGl0IHNob3VsZG4mIzM5O3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDIwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWRwZl9zZW5kX21zZ190b19jcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmUsIHVzaW5nIGEgZmlyc3QtcGVyc29uIG5hcnJhdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgUm9vdCBDYXVzZSoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBpc3N1ZSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGFrZSBhIG1ldGhvZGljYWwgYXBwcm9hY2guICpMZXQmIzM5O3MgY2hlY2sgZm9yIG1haWxib3ggb3IgZmlybXdhcmUuKiBJIG5lZWQgdG8gc3RhcnQgd2l0aCB0aGUgbW9zdCBjb21tb24sIGVhc2lseS12ZXJpZmllZCBzdXNwZWN0cy4gSXMgdGhlcmUgYSBzaW1wbGUgZW1haWwgbWlzY29uZmlndXJhdGlvbiB0aGF0JiMzOTtzIHRoZSBjdWxwcml0PyBPciBjb3VsZCB0aGlzIGJlIGEga25vd24gYnVnIGluIGEgc3BlY2lmaWMgZmlybXdhcmUgdmVyc2lvbiB0aGF0JiMzOTtzIGNhdXNpbmcgdGhpcyBiZWhhdmlvcj8gVGhpcyBpbml0aWFsIGNoZWNrIGlzIGNydWNpYWwuIEl0JiMzOTtzIHRoZSBlcXVpdmFsZW50IG9mIGNoZWNraW5nIHRoZSBvYnZpb3VzIGJlZm9yZSBnZXR0aW5nIGludG8gZGVlcCBhbmFseXNpcy4gSXQmIzM5O3MgdW5saWtlbHksIGJ1dCBhIGhpZ2gtbGV2ZWwgdmlldyBpcyBuZWVkZWQgYmVmb3JlIGdldHRpbmcgaW50byB0aGUgbml0dHkgZ3JpdHR5LiBJIHdhbnQgdG8gcnVsZSBvdXQgdGhlIGJhc2ljIHN0dWZmIGZpcnN0IGFuZCBlc3RhYmxpc2ggYSBiYXNlbGluZSBiZWZvcmUgY29uc2lkZXJpbmcgbW9yZSBjb21wbGV4IHNjZW5hcmlvcy4gSXQmIzM5O3MgYWJvdXQgZWZmaWNpZW50bHkgaWRlbnRpZnlpbmcgdGhlIGlzc3VlIGFuZCBhdm9pZGluZyB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAyMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWlsYm94JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9MTI9c3RydWN0IGlkcGZfcnNzX2RhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzktI2RlZmluZSBJRFBGX0RGTFRfTUJYX0lEXHRcdC0xXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MDovKiBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0byB0cnkgYmVmb3JlIHJlc2V0dGluZyBtYWlsYm94ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MS0jZGVmaW5lIElEUEZfTUJfTUFYX0VSUlx0XHRcdDIwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9MjAzPXN0cnVjdCBpZHBmX3JlZ19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIyNC0gKiBAaWRjX2luaXQ6IElEQyBpbml0aWFsaXphdGlvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjI1OiAqIEBzdGF0aWNfcmVnX2luZm86IGFycmF5IG9mIG1haWxib3ggYW5kIHJzdGF0IHJlZ2lzdGVyIGluZm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIyNi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTIyNz1zdHJ1Y3QgaWRwZl9kZXZfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMzI6XHQvKiBzdGF0aWNfcmVnX2luZm9bMF0gaXMgbWFpbGJveCByZWdpb24sIHN0YXRpY19yZWdfaW5mb1sxXSBpcyByc3RhdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjMzLVx0c3RydWN0IHJlc291cmNlIHN0YXRpY19yZWdfaW5mb1tJRFBGX01NSU9fUkVHX05VTV9TVEFUSUNdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTU3MT1zdHJ1Y3QgaWRwZl9xdWV1ZV9pZF9yZWdfY2h1bmsge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4MC0gKiBzdHJ1Y3QgaWRwZl9xdWV1ZV9pZF9yZWdfaW5mbyAtIHF1ZXVlIElEIGFuZCByZWdpc3RlciBjaHVuayBpbmZvIHJlY2VpdmVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1ODE6ICpcdFx0XHRcdCAgIG92ZXIgdGhlIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4Mi0gKiBAbnVtX2NodW5rczogbnVtYmVyIG9mIGNodW5rc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTYwOD1zdHJ1Y3QgaWRwZl92Y194bl9tYW5hZ2VyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyMi0gKiBAbXNnX2VuYWJsZTogRGVidWcgbWVzc2FnZSBsZXZlbCBlbmFibGVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MjM6ICogQG1iX3dhaXRfY291bnQ6IE51bWJlciBvZiB0aW1lcyBtYWlsYm94IHdhcyBhdHRlbXB0ZWQgaW5pdGlhbGl6YXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyNC0gKiBAc3RhdGU6IEluaXQgc3RhdGUgbWFjaGluZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYzNS0gKiBAdmVjdG9yX3N0YWNrOiBTdGFjayB0byBzdG9yZSB0aGUgbXNpeCB2ZWN0b3IgaW5kZXhlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjM2OiAqIEBpcnFfbWJfaGFuZGxlcjogSGFuZGxlciBmb3IgaGFyZCBpbnRlcnJ1cHQgZm9yIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYzNy0gKiBAdHhfdGltZW91dF9jb3VudDogTnVtYmVyIG9mIFRYIHRpbWVvdXRzIHRoYXQgaGF2ZSBvY2N1cnJlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY1My0gKiBAc2Vydl93cTogV29ya3F1ZXVlIGZvciBzZXJ2aWNlIHRhc2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY1NDogKiBAbWJ4X3Rhc2s6IFRhc2sgdG8gaGFuZGxlIG1haWxib3ggaW50ZXJydXB0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjU1OiAqIEBtYnhfd3E6IFdvcmtxdWV1ZSBmb3IgbWFpbGJveCByZXNwb25zZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY1Ni0gKiBAdmNfZXZlbnRfdGFzazogVGFzayB0byBoYW5kbGUgb3V0IG9mIGJhbmQgdmlydGNobmwgZXZlbnQgbm90aWZpY2F0aW9uc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTg2OD1zdGF0aWMgaW5saW5lIHU4IGlkcGZfZ2V0X21pbl90eF9wa3RfbGVuKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODc2OiAqIGlkcGZfZ2V0X21ieF9yZWdfYWRkciAtIEdldCBCQVIwIG1haWxib3ggcmVnaXN0ZXIgYWRkcmVzc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc3LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc5LSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4ODA6ICogUmV0dXJuOiBCQVIwIG1haWxib3ggcmVnaXN0ZXIgYWRkcmVzcyBiYXNlZCBvbiByZWdpc3RlciBvZmZzZXQuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04ODEtICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxLmg9OTA9c3RydWN0IGlkcGZfbWJ4cV9kZXNjIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHEuaC05Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scS5oOjk3Oi8qIE1heCBudW1iZXIgb2YgTU1JTyByZWdpb25zIG5vdCBpbmNsdWRpbmcgdGhlIG1haWxib3ggYW5kIHJzdGF0IHJlZ2lvbnMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scS5oLTk4LSAqIHRoZSBmYWxsYmFjayBjYXNlIHdoZW4gdGhlIHdob2xlIGJhciBpcyBtYXBwZWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oPTgyPXN0cnVjdCBpZHBmX2N0bHFfY3JlYXRlX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaC04NC1cdGludCBpZDsgLyogYWJzb2x1dGUgcXVldWUgb2Zmc2V0IHBhc3NlZCBhcyBpbnB1dFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oOjg1Olx0XHQgKiAtMSBmb3IgZGVmYXVsdCBtYWlsYm94IGlmIHByZXNlbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaC04Ni1cdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oPTk3PXN0cnVjdCBpZHBmX2N0bHFfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oLTEyMy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaDoxMjQ6ICogZW51bSBpZHBmX21ieF9vcGMgLSBQRi9WRiBtYWlsYm94IGNvbW1hbmRzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHFfYXBpLmgtMTI1LSAqIEBpZHBmX21icV9vcGNfc2VuZF9tc2dfdG9fY3A6IHVzZWQgYnkgUEYgb3IgVkYgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gaXRzIENQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jLTExLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jOjEyOiAqIGlkcGZfY3RscV9yZWdfaW5pdCAtIGluaXRpYWxpemUgZGVmYXVsdCBtYWlsYm94IHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jLTEzLSAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYz0xNj1zdGF0aWMgdm9pZCBpZHBmX2N0bHFfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMtNTQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmM6NTU6ICogaWRwZl9tYl9pbnRyX3JlZ19pbml0IC0gSW5pdGlhbGl6ZSBtYWlsYm94IGludGVycnVwdCByZWdpc3RlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jLTU2LSAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYz01OD1zdGF0aWMgdm9pZCBpZHBmX21iX2ludHJfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMtNjAtXHRzdHJ1Y3QgaWRwZl9pbnRyX3JlZyAqaW50ciA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlbWJfdmVjdG9yLmludHJfcmVnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jOjYxOlx0dTMyIGR5bl9jdGwgPSBsZTMyX3RvX2NwdShhZGFwdGVyLVx1MDAzZWNhcHMubWFpbGJveF9keW5fY3RsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy02Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9NTM9c3RhdGljIHZvaWQgaWRwZl9kZWluaXRfdmVjdG9yX3N0YWNrKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTY3LSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6Njg6ICogVGhpcyB3aWxsIGFsc28gZGlzYWJsZSBpbnRlcnJ1cHQgbW9kZSBhbmQgcXVldWUgdXAgbWFpbGJveCB0YXNrLiBNYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtNjktICogdGFzayB3aWxsIHJlc2NoZWR1bGUgaXRzZWxmIGlmIG5vdCBpbiBpbnRlcnJ1cHQgbW9kZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9ODI9dm9pZCBpZHBmX2ludHJfcmVsKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTk3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjk4OiAqIGlkcGZfbWJfaW50cl9jbGVhbiAtIEludGVycnVwdCBoYW5kbGVyIGZvciB0aGUgbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTk5LSAqIEBpcnE6IGludGVycnVwdCBudW1iZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTAyPXN0YXRpYyBpcnFyZXR1cm5fdCBpZHBmX21iX2ludHJfY2xlYW4oaW50IF9fYWx3YXlzX3VudXNlZCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTExMS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMTI6ICogaWRwZl9tYl9pcnFfZW5hYmxlIC0gRW5hYmxlIE1TSVggaW50ZXJydXB0IGZvciB0aGUgbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTExMy0gKiBAYWRhcHRlcjogYWRhcHRlciB0byBnZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3MgZm9yIHJlZ2lzdGVyIHdyaXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTExNT1zdGF0aWMgdm9pZCBpZHBmX21iX2lycV9lbmFibGUoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTI1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjEyNjogKiBpZHBmX21iX2ludHJfcmVxX2lycSAtIFJlcXVlc3QgaXJxIGZvciB0aGUgbWFpbGJveCBpbnRlcnJ1cHRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMjc6ICogQGFkYXB0ZXI6IGFkYXB0ZXIgc3RydWN0dXJlIHRvIHBhc3MgdG8gdGhlIG1haWxib3ggaXJxIGhhbmRsZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xMjgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTI5PXN0YXRpYyBpbnQgaWRwZl9tYl9pbnRyX3JlcV9pcnEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTQwLVx0XHRkZXZfZXJyKFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTQxOlx0XHRcdFwmIzM0O0lSUSByZXF1ZXN0IGZvciBtYWlsYm94IGZhaWxlZCwgZXJyb3I6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE0Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTUxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE1MjogKiBpZHBmX21iX2ludHJfaW5pdCAtIEluaXRpYWxpemUgdGhlIG1haWxib3ggaW50ZXJydXB0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTUzOiAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZSB0byBzdG9yZSB0aGUgbWFpbGJveCB2ZWN0b3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xNTQtICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTMwND1pbnQgaWRwZl9pbnRyX3JlcShzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0zNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6Mzc3Olx0YWRhcHRlci1cdTAwM2VtYl92ZWN0b3Iudl9pZHggPSBsZTE2X3RvX2NwdShhZGFwdGVyLVx1MDAzZWNhcHMubWFpbGJveF92ZWN0b3JfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTM3OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTMzNz1zdGF0aWMgdm9pZCBpZHBmX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEzNDctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTM0ODogKiBpZHBmX3N0YXRpc3RpY3NfdGFzayAtIERlbGF5ZWQgdGFzayB0byBnZXQgc3RhdGlzdGljcyBvdmVyIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xMzQ5LSAqIEB3b3JrOiB3b3JrX3N0cnVjdCBoYW5kbGUgdG8gb3VyIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTM1MT12b2lkIGlkcGZfc3RhdGlzdGljc190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM3MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMzcxOiAqIGlkcGZfbWJ4X3Rhc2sgLSBEZWxheWVkIHRhc2sgdG8gaGFuZGxlIG1haWxib3ggcmVzcG9uc2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM3Mi0gKiBAd29yazogd29ya19zdHJ1Y3QgaGFuZGxlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTEzNzQ9dm9pZCBpZHBmX21ieF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM4OS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMzkwOiAqIGlkcGZfc2VydmljZV90YXNrIC0gRGVsYXllZCB0YXNrIGZvciBoYW5kbGluZyBtYWlsYm94IHJlc3BvbnNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEzOTEtICogQHdvcms6IHdvcmtfc3RydWN0IGhhbmRsZSB0byBvdXIgZGF0YVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xODU3PXN0YXRpYyBpbnQgaWRwZl9jaGVja19yZXNldF9jb21wbGV0ZShzdHJ1Y3QgaWRwZl9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE4ODktICogRGVhbGxvY2F0ZSB0aGUgdnBvcnRzIGFuZCBhbGwgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSBhbmRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxODkwOiAqIHJlYWxsb2NhdGUuIEFsc28gcmVpbml0aWFsaXplIHRoZSBtYWlsYm94LiBSZXR1cm4gMCBvbiBzdWNjZXNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE4OTEtICogbmVnYXRpdmUgb24gZmFpbHVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTg5Mz1zdGF0aWMgdm9pZCBpZHBmX2luaXRfaGFyZF9yZXNldChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xOTMyLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE5MzM6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkZWZhdWx0IG1haWxib3g6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE5MzQtXHRcdGdvdG8gdW5sb2NrX211dGV4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9MTg5PXN0YXRpYyBpbnQgaWRwZl9jZmdfaHcoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTE5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MTk5Olx0LyogTWFwIG1haWxib3ggc3BhY2UgZm9yIHZpcnRjaG5sIGNvbW11bmljYXRpb24gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjAwLVx0bWJ4X3N0YXJ0ID0gcmVzX3N0YXJ0ICYjNDM7IGFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0uc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0yMzU9c3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjk4LVx0aWYgKCFhZGFwdGVyLVx1MDAzZW1ieF93cSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzoyOTk6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgbWFpbGJveCB3b3JrcXVldWVcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zMDAtXHRcdGVyciA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTEwLSAqIEBkaXJlY3Q6IENhcGFiaWxpdHkgdGhhdCBpbmRpY2F0ZXMgdGhlIGRpcmVjdCBhY2Nlc3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxMTogKiBAbWFpbGJveDogQ2FwYWJpbGl0eSB0aGF0IGluZGljYXRlcyB0aGUgbWFpbGJveCBhY2Nlc3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xMi0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYz0xNT1zdGF0aWMgZW51bSBpZHBmX3B0cF9hY2Nlc3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxNjppZHBmX3B0cF9nZXRfYWNjZXNzKGNvbnN0IHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBkaXJlY3QsIHUzMiBtYWlsYm94KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTE3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTktXHRcdHJldHVybiBJRFBGX1BUUF9ESVJFQ1Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MjA6XHRlbHNlIGlmIChhZGFwdGVyLVx1MDAzZXB0cC1cdTAwM2VjYXBzIFx1MDAyNiBtYWlsYm94KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTIxLVx0XHRyZXR1cm4gSURQRl9QVFBfTUFJTEJPWDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MzM9dm9pZCBpZHBmX3B0cF9nZXRfZmVhdHVyZXNfYWNjZXNzKGNvbnN0IHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTM1LVx0c3RydWN0IGlkcGZfcHRwICpwdHAgPSBhZGFwdGVyLVx1MDAzZXB0cDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzozNjpcdHUzMiBkaXJlY3QsIG1haWxib3g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTM5LVx0ZGlyZWN0ID0gVklSVENITkwyX0NBUF9QVFBfR0VUX0RFVklDRV9DTEtfVElNRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo0MDpcdG1haWxib3ggPSBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfREVWSUNFX0NMS19USU1FX01CO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTQxLVx0cHRwLVx1MDAzZWdldF9kZXZfY2xrX3RpbWVfYWNjZXNzID0gaWRwZl9wdHBfZ2V0X2FjY2VzcyhhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTQyLVx0XHRcdFx0XHRcdFx0ICAgZGlyZWN0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjQzOlx0XHRcdFx0XHRcdFx0ICAgbWFpbGJveCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTQ2LVx0ZGlyZWN0ID0gVklSVENITkwyX0NBUF9QVFBfR0VUX0NST1NTX1RJTUU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NDc6XHRtYWlsYm94ID0gVklSVENITkwyX0NBUF9QVFBfR0VUX0NST1NTX1RJTUVfTUI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNDgtXHRwdHAtXHUwMDNlZ2V0X2Nyb3NzX3RzdGFtcF9hY2Nlc3MgPSBpZHBmX3B0cF9nZXRfYWNjZXNzKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNDktXHRcdFx0XHRcdFx0XHQgICBkaXJlY3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NTA6XHRcdFx0XHRcdFx0XHQgICBtYWlsYm94KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy01MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTMtXHRkaXJlY3QgPSBWSVJUQ0hOTDJfQ0FQX1BUUF9TRVRfREVWSUNFX0NMS19USU1FO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjU0Olx0bWFpbGJveCA9IFZJUlRDSE5MMl9DQVBfUFRQX1NFVF9ERVZJQ0VfQ0xLX1RJTUVfTUI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTUtXHRwdHAtXHUwMDNlc2V0X2Rldl9jbGtfdGltZV9hY2Nlc3MgPSBpZHBmX3B0cF9nZXRfYWNjZXNzKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTYtXHRcdFx0XHRcdFx0XHQgICBkaXJlY3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NTc6XHRcdFx0XHRcdFx0XHQgICBtYWlsYm94KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy01OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjAtXHRkaXJlY3QgPSBWSVJUQ0hOTDJfQ0FQX1BUUF9BREpfREVWSUNFX0NMSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo2MTpcdG1haWxib3ggPSBWSVJUQ0hOTDJfQ0FQX1BUUF9BREpfREVWSUNFX0NMS19NQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy02Mi1cdHB0cC1cdTAwM2VhZGpfZGV2X2Nsa190aW1lX2FjY2VzcyA9IGlkcGZfcHRwX2dldF9hY2Nlc3MoYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy02My1cdFx0XHRcdFx0XHRcdCAgIGRpcmVjdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo2NDpcdFx0XHRcdFx0XHRcdCAgIG1haWxib3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy02Ny1cdGRpcmVjdCA9IFZJUlRDSE5MMl9DQVBfUFRQX1RYX1RTVEFNUFM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6Njg6XHRtYWlsYm94ID0gVklSVENITkwyX0NBUF9QVFBfVFhfVFNUQU1QU19NQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy02OS1cdHB0cC1cdTAwM2V0eF90c3RhbXBfYWNjZXNzID0gaWRwZl9wdHBfZ2V0X2FjY2VzcyhhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTcwLVx0XHRcdFx0XHRcdCAgICBkaXJlY3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NzE6XHRcdFx0XHRcdFx0ICAgIG1haWxib3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTcyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9OTk9c3RhdGljIHU2NCBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX2RpcmVjdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xMjMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MTI0OiAqIGlkcGZfcHRwX3JlYWRfc3JjX2Nsa19yZWdfbWFpbGJveCAtIFJlYWQgdGhlIG1haW4gdGltZXIgdmFsdWUgdGhyb3VnaCBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTI1LSAqIEBhZGFwdGVyOiBEcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTMxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjEzMjpzdGF0aWMgaW50IGlkcGZfcHRwX3JlYWRfc3JjX2Nsa19yZWdfbWFpbGJveChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTEzMy1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgcHRwX3N5c3RlbV90aW1lc3RhbXAgKnN0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MTYzPXN0YXRpYyBpbnQgaWRwZl9wdHBfcmVhZF9zcmNfY2xrX3JlZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKnNyY19jbGssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTE2OS1cdGNhc2UgSURQRl9QVFBfTUFJTEJPWDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxNzA6XHRcdHJldHVybiBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX21haWxib3goYWRhcHRlciwgc3RzLCBzcmNfY2xrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xNzEtXHRjYXNlIElEUEZfUFRQX0RJUkVDVDpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MTg5PXN0YXRpYyB2b2lkIGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lX2RpcmVjdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yMTEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MjEyOiAqIGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lX21haWxib3ggLSBHZXQgdGhlIGNyb3NzIHRpbWUgc3RhbXAgdmFsdWVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MjEzOiAqXHRcdFx0XHRcdCAgIHRocm91Z2ggbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTIxNC0gKiBAYWRhcHRlcjogRHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTIxOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoyMjA6c3RhdGljIGludCBpZHBmX3B0cF9nZXRfc3luY19kZXZpY2VfdGltZV9tYWlsYm94KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMjIxLVx0XHRcdFx0XHRcdCB1NjQgKmRldl90aW1lLCB1NjQgKnN5c190aW1lKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYz0yNDY9c3RhdGljIGludCBpZHBmX3B0cF9nZXRfc3luY19kZXZpY2VfdGltZShrdGltZV90ICpkZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTI2MS1cdGNhc2UgSURQRl9QVFBfTUFJTEJPWDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoyNjI6XHRcdGVyciA9IGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lX21haWxib3goYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yNjMtXHRcdFx0XHRcdFx0XHQgICAgXHUwMDI2bnNfdGltZV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oPTM4PXN0cnVjdCBpZHBmX3B0cF9kZXZfY2xrX3JlZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC03Mi0gKiBASURQRl9QVFBfRElSRUNUOiBkaXJlY3QgYWNjZXNzIHRocm91Z2ggQkFSIHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oOjczOiAqIEBJRFBGX1BUUF9NQUlMQk9YOiBhY2Nlc3MgdGhyb3VnaCBtYWlsYm94IG1lc3NhZ2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmgtNzQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmg9NzU9ZW51bSBpZHBmX3B0cF9hY2Nlc3Mge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC04MS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDo4MjogKiBzdHJ1Y3QgaWRwZl9wdHBfc2Vjb25kYXJ5X21ieCAtIFBUUCBzZWNvbmRhcnkgbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oOjgzOiAqIEBwZWVyX21ieF9xX2lkOiBQVFAgbWFpbGJveCBxdWV1ZSBJRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oLTg0LSAqIEBwZWVyX2lkOiBQZWVyIElEIGZvciBQVFAgRGV2aWNlIENvbnRyb2wgZGFlbW9uXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oPTE0Nj1zdHJ1Y3QgaWRwZl9wdHBfdnBvcnRfdHhfdHN0YW1wX2NhcHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC0xNzUtICogQHJzdjogcmVzZXJ2ZWQgYml0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oOjE3NjogKiBAc2Vjb25kYXJ5X21ieDogcGFyYW1ldGVycyBmb3IgdXNpbmcgZGVkaWNhdGVkIFBUUCBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmgtMTc3LSAqIEByZWFkX2Rldl9jbGtfbG9jazogc3BpbmxvY2sgcHJvdGVjdGluZyBhY2Nlc3MgdG8gdGhlIGRldmljZSBjbG9jayByZWFkXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz00MzkzPXN0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9tYXBfdmVjdG9yX3RvX3FzKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ0OTQtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6NDQ5NTogKiBJbml0aWFsaXplIHZlY3RvciBpbmRleGVzIHdpdGggdmFsdWVzIHJldHVybmVkIG92ZXIgbWFpbGJveC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtNDQ5Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy0xMC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYzoxMTogKiBpZHBmX3ZmX2N0bHFfcmVnX2luaXQgLSBpbml0aWFsaXplIGRlZmF1bHQgbWFpbGJveCByZWdpc3RlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy0xMi0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmM9MTU9c3RhdGljIHZvaWQgaWRwZl92Zl9jdGxxX3JlZ19pbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jLTUzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jOjU0OiAqIGlkcGZfdmZfbWJfaW50cl9yZWdfaW5pdCAtIEluaXRpYWxpemUgdGhlIG1haWxib3ggcmVnaXN0ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy01NS0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmM9NTc9c3RhdGljIHZvaWQgaWRwZl92Zl9tYl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jLTU5LVx0c3RydWN0IGlkcGZfaW50cl9yZWcgKmludHIgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZW1iX3ZlY3Rvci5pbnRyX3JlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYzo2MDpcdHUzMiBkeW5fY3RsID0gbGUzMl90b19jcHUoYWRhcHRlci1cdTAwM2VjYXBzLm1haWxib3hfZHluX2N0bCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMtNjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9OTA9c3RhdGljIHZvaWQgaWRwZl9yZWN2X2V2ZW50X21zZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTExOC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjExOTogKiBpZHBmX21iX2NsZWFuIC0gUmVjbGFpbSB0aGUgc2VuZCBtYWlsYm94IHF1ZXVlIGVudHJpZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEyMC0gKiBAYWRhcHRlcjogZHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTIyLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzoxMjM6ICogUmVjbGFpbSB0aGUgc2VuZCBtYWlsYm94IHF1ZXVlIGVudHJpZXMgdG8gYmUgdXNlZCB0byBzZW5kIGZ1cnRoZXIgbWVzc2FnZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEyNC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTE5MD1zdGF0aWMgdm9pZCBpZHBmX3ByZXBhcmVfcHRwX21iX21zZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1MzIgb3AsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTkyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjE5MzpcdC8qIElmIHRoZSBtZXNzYWdlIGlzIFBUUC1yZWxhdGVkIGFuZCB0aGUgc2Vjb25kYXJ5IG1haWxib3ggaXMgYXZhaWxhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTk0Olx0ICogc2VuZCB0aGUgbWVzc2FnZSB0aHJvdWdoIHRoZSBzZWNvbmRhcnkgbWFpbGJveC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTE5NS1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTIwND1zdGF0aWMgdm9pZCBpZHBmX3ByZXBhcmVfcHRwX21iX21zZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1MzIgb3AsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMjA5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MjEwOiAqIGlkcGZfc2VuZF9tYl9tc2cgLSBTZW5kIG1lc3NhZ2Ugb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0yMTEtICogQGFkYXB0ZXI6IGRyaXZlciBzcGVjaWZpYyBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTU3MT1pZHBmX3ZjX3huX2ZvcndhcmRfcmVwbHkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy02NjgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzo2Njk6ICogaWRwZl9yZWN2X21iX21zZyAtIFJlY2VpdmUgbWVzc2FnZSBvdmVyIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTY3MC0gKiBAYWRhcHRlcjogZHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTAyOD1zdGF0aWMgaW50IGlkcGZfc2VuZF9nZXRfbGFuX21lbW9yeV9yZWdpb25zKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTA4NC0gKiBjYWxjdWxhdGUgdGhlIG9mZnNldHMgYW5kIHNpemVzIGZvciB0aGUgcmVnaW9ucyBiZWZvcmUsIGluIGJldHdlZW4sIGFuZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTA4NTogKiBhZnRlciB0aGUgbWFpbGJveCBhbmQgcnN0YXQgTU1JTyBtYXBwaW5ncy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEwODYtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0xMDg5PXN0YXRpYyBpbnQgaWRwZl9jYWxjX3JlbWFpbmluZ19tbWlvX3JlZ3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMDk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTEwMDpcdC8qIFJlZ2lvbiBwcmVjZWRpbmcgbWFpbGJveCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTEwMS1cdGh3LVx1MDAzZWxhbl9yZWdzWzBdLmFkZHJfc3RhcnQgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTEwMi1cdGh3LVx1MDAzZWxhbl9yZWdzWzBdLmFkZHJfbGVuID0gbWJ4X3JlZy1cdTAwM2VzdGFydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjExMDM6XHQvKiBSZWdpb24gYmV0d2VlbiBtYWlsYm94IGFuZCByc3RhdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTEwNC1cdGh3LVx1MDAzZWxhbl9yZWdzWzFdLmFkZHJfc3RhcnQgPSBtYnhfcmVnLVx1MDAzZWVuZCAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTEzMjQ9aW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMzY4LSAqIEBxX3R5cGU6IHF1ZXVlIG1vZGVsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzoxMzY5OiAqIEBjaHVua3M6IHF1ZXVlIHJlZ3MgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMzcwLSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTQxMj1zdGF0aWMgaW50IF9faWRwZl9xdWV1ZV9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTQ2Ny0gKiBAcnNyYzogcG9pbnRlciB0byBxdWV1ZSBhbmQgdmVjdG9yIHJlc291cmNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTQ2ODogKiBAY2h1bmtzOiBxdWV1ZSByZWdpc3RlcnMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xNDY5LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MjU0OT1zdGF0aWMgdm9pZCBpZHBmX2NvbnZlcnRfcmVnX3RvX3F1ZXVlX2NodW5rcyhzdHJ1Y3QgdmlydGNobmwyX3F1ZXVlX2NodW5rICpkY2h1bmtzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTI1NjQtICogQGFkYXB0ZXI6IGFkYXB0ZXIgcG9pbnRlciB1c2VkIHRvIHNlbmQgdmlydGNobmwgbWVzc2FnZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MjU2NTogKiBAY2h1bmtzOiBxdWV1ZSBpZHMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0yNTY2LSAqIEB2cG9ydF9pZDogdnBvcnQgaWRlbnRpZmllciB1c2VkIHdoaWxlIHByZXBhcmluZyB0aGUgdmlydGNobmwgbWVzc2FnZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTMzMzg9c3RhdGljIHN0cnVjdCBpZHBmX2N0bHFfaW5mbyAqaWRwZl9maW5kX2N0bHEoc3RydWN0IGlkcGZfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTMzNTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozMzUxOiAqIGlkcGZfaW5pdF9kZmx0X21ieCAtIFNldHVwIGRlZmF1bHQgbWFpbGJveCBwYXJhbWV0ZXJzIGFuZCBtYWtlIHJlcXVlc3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTMzNTItICogQGFkYXB0ZXI6IGFkYXB0ZXIgaW5mbyBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zNDgwPWludCBpZHBmX3ZjX2NvcmVfaW5pdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM1NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozNTc5Olx0LyogU3RhcnQgdGhlIG1haWxib3ggdGFzayBiZWZvcmUgcmVxdWVzdGluZyB2ZWN0b3JzLiBUaGlzIHdpbGwgZW5zdXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozNTgwOlx0ICogdmVjdG9yIGluZm9ybWF0aW9uIHJlc3BvbnNlIGZyb20gbWFpbGJveCBpcyBoYW5kbGVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNTgxLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzYzNC1cdGlmICgmIzQzOyYjNDM7YWRhcHRlci1cdTAwM2VtYl93YWl0X2NvdW50IFx1MDAzZSBJRFBGX01CX01BWF9FUlIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM2MzU6XHRcdGRldl9lcnIoXHUwMDI2YWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGVzdGFibGlzaCBtYWlsYm94IGNvbW11bmljYXRpb25zIHdpdGggaGFyZHdhcmVcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzYzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNjM4LVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzYzOTpcdC8qIElmIGl0IHJlYWNoZWQgaGVyZSwgaXQgaXMgcG9zc2libGUgdGhhdCBtYWlsYm94IHF1ZXVlIGluaXRpYWxpemF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNjQwLVx0ICogcmVnaXN0ZXIgd3JpdGVzIG1pZ2h0IG5vdCBoYXZlIHRha2VuIGVmZmVjdC4gUmV0cnkgdG8gaW5pdGlhbGl6ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzY0MTpcdCAqIHRoZSBtYWlsYm94IGFnYWluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNjQyLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9Mzc0Nz1pbnQgaWRwZl92cG9ydF9pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGlkcGZfdnBvcnRfbWF4X3EgKm1heF9xKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4MTUtICogaWRwZl9nZXRfdmVjX2lkcyAtIEluaXRpYWxpemUgdmVjdG9yIGlkIGZyb20gTWFpbGJveCBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODE2OiAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZSB0byBnZXQgdGhlIG1haWxib3ggdmVjdG9yIGlkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODE3LSAqIEB2ZWNpZHM6IEFycmF5IG9mIHZlY3RvciBpZHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4MTgtICogQG51bV92ZWNpZHM6IG51bWJlciBvZiB2ZWN0b3IgaWRzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODE5OiAqIEBjaHVua3M6IHZlY3RvciBpZHMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODIwLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODIxOiAqIFdpbGwgaW5pdGlhbGl6ZSB0aGUgbWFpbGJveCB2ZWN0b3IgaWQgd2hpY2ggaXMgcmVjZWl2ZWQgZnJvbSB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4MjItICogZ2V0IGNhcGFiaWxpdGllcyBhbmQgZGF0YSBxdWV1ZSB2ZWN0b3IgaWRzIHdpdGggaWRzIHJlY2VpdmVkIGFzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODIzOiAqIG1haWxib3ggcGFyYW1ldGVycy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4MjQtICogUmV0dXJucyBudW1iZXIgb2YgaWRzIGZpbGxlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTM4MjY9aW50IGlkcGZfZ2V0X3ZlY19pZHMoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODYzLSAqIEBxX3R5cGU6IHF1ZXVlIG1vZGVsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODY0OiAqIEBjaHVua3M6IHF1ZXVlIGlkcyByZWNlaXZlZCBvdmVyIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4NjUtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM4NjY6ICogV2lsbCBpbml0aWFsaXplIGFsbCBxdWV1ZSBpZHMgd2l0aCBpZHMgcmVjZWl2ZWQgYXMgbWFpbGJveCBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODY3LSAqIFJldHVybnMgbnVtYmVyIG9mIGlkcyBmaWxsZWRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zODY5PXN0YXRpYyBpbnQgaWRwZl92cG9ydF9nZXRfcXVldWVfaWRzKHUzMiAqcWlkcywgaW50IG51bV9xaWRzLCB1MTYgcV90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM5MDctICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM5MDg6ICogV2lsbCBpbml0aWFsaXplIGFsbCBxdWV1ZSBpZHMgd2l0aCBpZHMgcmVjZWl2ZWQgYXMgbWFpbGJveFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzkwOS0gKiBwYXJhbWV0ZXJzLiBSZXR1cm5zIG51bWJlciBvZiBxdWV1ZSBpZHMgaW5pdGlhbGl6ZWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MzkxMT1zdGF0aWMgaW50IF9faWRwZl92cG9ydF9xdWV1ZV9pZHNfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzk3OS0gKiBAcnNyYzogcG9pbnRlciB0byBxdWV1ZSBhbmQgdmVjdG9yIHJlc291cmNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6Mzk4MDogKiBAY2h1bmtzOiBxdWV1ZSBpZHMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zOTgxLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozOTgyOiAqIFdpbGwgaW5pdGlhbGl6ZSBhbGwgcXVldWUgaWRzIHdpdGggaWRzIHJlY2VpdmVkIGFzIG1haWxib3ggcGFyYW1ldGVycy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM5ODMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz00Mjk1PWludCBpZHBmX2FkZF9kZWxfbWFjX2ZpbHRlcnMoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy00NDAxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6NDQwMjogKiBpZHBmX3NldF9wcm9taXNjdW91cyAtIHNldCBwcm9taXNjdW91cyBhbmQgc2VuZCBtZXNzYWdlIHRvIG1haWxib3hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTQ0MDMtICogQGFkYXB0ZXI6IERyaXZlciBzcGVjaWZpYyBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubF9wdHAuYz0xNj1pbnQgaWRwZl9wdHBfZ2V0X2NhcHMoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmxfcHRwLmMtNjItXHQvKiBpZiB0aGUgcHRwX21iX3FfaWQgaG9sZHMgaW52YWxpZCB2YWx1ZSAoMHhmZmZmKSwgdGhlIHNlY29uZGFyeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sX3B0cC5jOjYzOlx0ICogbWFpbGJveCBpcyBub3Qgc3VwcG9ydGVkLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sX3B0cC5jLTY0LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD00ODE9VklSVENITkwyX0NIRUNLX1NUUlVDVF9MRU4oOCwgdmlydGNobmwyX3ZlcnNpb25faW5mbyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC00OTAtICogQG90aGVyX2NhcHM6IFNlZSBlbnVtIHZpcnRjaG5sMl9jYXBfb3RoZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjQ5MTogKiBAbWFpbGJveF9keW5fY3RsOiBEWU5fQ1RMIHJlZ2lzdGVyIG9mZnNldCBhbmQgdmVjdG9yIGlkIGZvciBtYWlsYm94XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTQ5Mi0gKlx0XHQgICAgIHByb3ZpZGVkIGJ5IENQLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo0OTM6ICogQG1haWxib3hfdmVjdG9yX2lkOiBNYWlsYm94IHZlY3RvciBpZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNDk0LSAqIEBudW1fYWxsb2NhdGVkX3ZlY3RvcnM6IE1heGltdW0gbnVtYmVyIG9mIGFsbG9jYXRlZCB2ZWN0b3JzIGZvciB0aGUgZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNTI3LSAqIElmIGRhdGFwbGFuZSBkcml2ZXIgc2V0cyBudW1fYWxsb2NhdGVkX3ZlY3RvcnMgYXMgMCwgQ1Agd2lsbCByZXNwb25kIHdpdGggMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1Mjg6ICogd2hpY2ggaXMgZGVmYXVsdCB2ZWN0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZWZhdWx0IG1haWxib3guIEZvciBhbnkgb3RoZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNTI5LSAqIHZhbHVlICYjMzk7biYjMzk7LCBDUCByZXNwb25kcyB3aXRoIGEgdmFsdWUgXHUwMDNjPSBuIGJhc2VkIG9uIHRoZSBDUCYjMzk7cyBwb2xpY3kgb2ZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNTMwLSAqIG1heCBudW1iZXIgb2YgdmVjdG9ycyBmb3IgYSBQRi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6NTMxOiAqIENQIHdpbGwgcmVzcG9uZCB3aXRoIHRoZSB2ZWN0b3IgSUQgb2YgbWFpbGJveCBhbGxvY2F0ZWQgdG8gdGhlIFBGIGluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjUzMjogKiBtYWlsYm94X3ZlY3Rvcl9pZCBhbmQgdGhlIG51bWJlciBvZiBpdHIgaW5kZXggcmVnaXN0ZXJzIGluIGl0cl9pZHhfbWFwLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01MzMtICogSXQgYWxzbyByZXNwb25kcyB3aXRoIGRlZmF1bHQgbnVtYmVyIG9mIHZwb3J0cyB0aGF0IHRoZSBkYXRhcGxhbmUgZHJpdmVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD01Mzk9c3RydWN0IHZpcnRjaG5sMl9nZXRfY2FwYWJpbGl0aWVzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTU0NS1cdF9fbGU2NCBvdGhlcl9jYXBzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1NDY6XHRfX2xlMzIgbWFpbGJveF9keW5fY3RsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1NDc6XHRfX2xlMTYgbWFpbGJveF92ZWN0b3JfaWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTU0OC1cdF9fbGUxNiBudW1fYWxsb2NhdGVkX3ZlY3RvcnM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xMDUyPVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDYsIHZpcnRjaG5sMl9wdHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMDcwLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEwNzE6ICogSWYgYWxsIHRoZSBwdHlwZXMgZG9uJiMzOTt0IGZpdCBpbnRvIG9uZSBtYWlsYm94IGJ1ZmZlciwgQ1Agc3BsaXRzIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMDcyLSAqIHB0eXBlIGluZm8gaW50byBtdWx0aXBsZSBtZXNzYWdlcywgd2hlcmUgZWFjaCBtZXNzYWdlIHdpbGwgaGF2ZSBpdHMgb3duXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xMzQxPVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDgsIHZpcnRjaG5sMl9wcm9taXNjX2luZm8pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM0Ni0gKlx0XHRcdFx0XHQgICBkZXZpY2UgY2xvY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM0NzogKiBAVklSVENITkwyX0NBUF9QVFBfR0VUX0RFVklDRV9DTEtfVElNRV9NQjogbWFpbGJveCBhY2Nlc3MgdG8gZ2V0IHRoZSB0aW1lIG9mXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNDgtICpcdFx0XHRcdFx0ICAgICAgZGV2aWNlIGNsb2NrXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNDktICogQFZJUlRDSE5MMl9DQVBfUFRQX0dFVF9DUk9TU19USU1FOiBkaXJlY3QgYWNjZXNzIHRvIGNyb3NzIHRpbWVzdGFtcFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDoxMzUwOiAqIEBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfQ1JPU1NfVElNRV9NQjogbWFpbGJveCBhY2Nlc3MgdG8gY3Jvc3MgdGltZXN0YW1wXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNTEtICogQFZJUlRDSE5MMl9DQVBfUFRQX1NFVF9ERVZJQ0VfQ0xLX1RJTUU6IGRpcmVjdCBhY2Nlc3MgdG8gc2V0IHRoZSB0aW1lIG9mXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNTItICpcdFx0XHRcdFx0ICAgZGV2aWNlIGNsb2NrXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNTM6ICogQFZJUlRDSE5MMl9DQVBfUFRQX1NFVF9ERVZJQ0VfQ0xLX1RJTUVfTUI6IG1haWxib3ggYWNjZXNzIHRvIHNldCB0aGUgdGltZSBvZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzU0LSAqXHRcdFx0XHRcdCAgICAgIGRldmljZSBjbG9ja1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM1Ni0gKlx0XHRcdFx0ICAgICAgY2xvY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM1NzogKiBAVklSVENITkwyX0NBUF9QVFBfQURKX0RFVklDRV9DTEtfTUI6IG1haWxib3ggYWNjZXNzIHRvIGFkanVzdCB0aGUgdGltZSBvZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzU4LSAqXHRcdFx0XHRcdCBkZXZpY2UgY2xvY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM1OS0gKiBAVklSVENITkwyX0NBUF9QVFBfVFhfVFNUQU1QUzogZGlyZWN0IGFjY2VzcyB0byB0aGUgVHggdGltZXN0YW1waW5nXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNjA6ICogQFZJUlRDSE5MMl9DQVBfUFRQX1RYX1RTVEFNUFNfTUI6IG1haWxib3ggYWNjZXNzIHRvIHRoZSBUeCB0aW1lc3RhbXBpbmdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM2MS0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzYyLSAqIFBGL1ZGIG5lZ290aWF0ZXMgYSBzZXQgb2Ygc3VwcG9ydGVkIFBUUCBjYXBhYmlsaXRpZXMgd2l0aCB0aGUgQ29udHJvbCBQbGFuZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM2MzogKiBUaGVyZSBhcmUgdHdvIGFjY2VzcyBtZXRob2RzIC0gbWFpbGJveCAoX01CKSBhbmQgZGlyZWN0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzY0LSAqIFBUUCBjYXBhYmlsaXRpZXMgZW5hYmxlcyBNYWluIFRpbWVyIG9wZXJhdGlvbnM6IGdldC9zZXQvYWRqdXN0IE1haW4gVGltZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xNDg1PVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDE2LCB2aXJ0Y2hubDJfcHRwX2dldF92cG9ydF90eF90c3RhbXBfY2Fwcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xNDk0LSAqIEBzZWNvbmRhcnlfbWJ4OiBJbmRpY2F0ZXMgdG8gdGhlIGRyaXZlciB0aGF0IGl0IHNob3VsZCBjcmVhdGUgYSBzZWNvbmRhcnlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTQ5NTogKlx0XHQgICBtYWlsYm94IHRvIGluZXRyYWN0IHdpdGggY29udHJvbCBwbGFuZSBmb3IgUFRQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTE0OTYtICogQHBhZDogUGFkZGluZyBmb3IgZnV0dXJlIGV4dGVuc2lvbnNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwOTAKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMzQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQW5hbHl6aW5nIHRoZSBJRFBGIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBpZHBmYCBkcml2ZXIgcmVsaWVzIG9uIGEgbWFpbGJveCBzeXN0ZW0gZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgQ29udHJvbCBQbGFuZSAoQ1ApLiBUaGlzIG1haWxib3ggaGFzIHRvIGJlIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCB2aWEgYGlkcGZfaW5pdF9kZmx0X21ieGAgYmVmb3JlIGFueXRoaW5nIGVsc2UgY2FuIGhhcHBlbi4gSWYgdGhhdCBpbml0aWFsIHNldHVwIGZhaWxzLCB0aGUgZHJpdmVyJiMzOTtzIGBpZHBmX3Byb2JlYCB3aWxsIGFsc28gZmFpbCwgYW5kIHdlJiMzOTtyZSBkZWFkIGluIHRoZSB3YXRlci4KClRoZSBpc3N1ZSBpcyB0aGF0IFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbiYjMzk7dCByZWFsaXN0aWNhbGx5IHJlcGxpY2F0ZSB0aGUgY29tcGxleGl0aWVzIG9mIHRoaXMgbWFpbGJveCBwcm90b2NvbCwgd2hpY2ggYXBwYXJlbnRseSBpbnZvbHZlcyBETUEgcmluZ3MgYW5kIGludGVycnVwdHMuIFRoZXJlZm9yZSwgdGhlIGRyaXZlciBpcyBnb2luZyB0byBmYWlsIHByb2JlICp2ZXJ5KiBlYXJseSBpbiB0aGUgcHJvY2Vzcywgb3IgYXQgbGVhc3QgaW5pdGlhbGl6YXRpb24uIEJlY2F1c2Ugb2YgdGhpcywgdGhlIG5ldGRldiB3b24mIzM5O3QgZ2V0IHJlZ2lzdGVyZWQuIElmIHRoYXQgZG9lc24mIzM5O3QgaGFwcGVuLCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9uIGBpZHBmX3Zwb3J0X29wZW5gIGlzbiYjMzk7dCBnb2luZyB0byBiZSBjYWxsZWQuIEFuZCBpZiB0aGF0IGRvZXNuJiMzOTt0IG9jY3VyLCB0aGVuIG5laXRoZXIgd2lsbCB0aGUgYGlkcGZfdnBvcnRfaW50cl9hbGxvY2Agbm9yIGBpZHBmX3Zwb3J0X2ludHJfZGVpbml0YCBmdW5jdGlvbnMuIFRoaXMgbWVhbnMgdGhlc2UgcGF0aHMgYXJlIHNpbXBseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggdGhlIGZ1enplci4KCkkgbmVlZCB0byBjb25maXJtIHRoaXM6IGxldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgd2F5IHRvIHJlYWNoIHRoaXMgY29kZS4gSXMgaXQgcG9zc2libGUgdGhhdCBgaWRwZmAgaXMgYWN0dWFsbHkgYSB2aXJ0dWFsIGRyaXZlciB0aGF0IGNhbiBiZSBjcmVhdGVkIHZpYSBuZXRsaW5rPyBOb3BlLCBpdCYjMzk7cyBleHBsaWNpdGx5IGEgUENJIGRyaXZlci4gT2ssIGFueSBjaGFuY2UgaXQmIzM5O3MgdXNlZCBpbiBzb21lIHNwZWNpZmljIGVudmlyb25tZW50PwoKVGhlIHByb21wdCBzcGVjaWZpZXMgdGhhdCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IFNpbmNlIHRoZSBJRFBGIGlzIGEgcGh5c2ljYWwgUENJIGRldmljZSwgaXQgY29tcGxldGVseSBmYWxscyBpbnRvIHRoaXMgY2F0ZWdvcnksIG1lYW5pbmcgaXQgY2Fubm90IGJlIHJlYWNoZWQgYXQgYWxsLCBhbmQgdGh1cyBpdCBjYW5ub3QgYmUgZnV6emVkLgoKVGhlcmVmb3JlLCBjb25zaWRlcmluZyB0aGUgaW5oZXJlbnQgZGVwZW5kZW5jeSBvbiBhIGZ1bmN0aW9uYWwgbWFpbGJveCBwcm90b2NvbCBhbmQgdGhlIGxpbWl0YXRpb25zIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcsIEkmIzM5O20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQmIzM5O3Mgc2ltcGx5IG5vdCByZWFjaGFibGUgaW4gdGhpcyBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMjA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIChJRFBGKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUsIGFuZCBpdCByZXF1aXJlcyBjb21wbGV4IG1haWxib3ggY29tbXVuaWNhdGlvbiB3aXRoIGEgQ29udHJvbCBQbGFuZSB0byBpbml0aWFsaXplLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbnRlcnJ1cHQgYWxsb2NhdGlvbiBhbmQgZGVpbml0aWFsaXphdGlvbikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIChJRFBGKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUsIGFuZCBpdCByZXF1aXJlcyBjb21wbGV4IG1haWxib3ggY29tbXVuaWNhdGlvbiB3aXRoIGEgQ29udHJvbCBQbGFuZSB0byBpbml0aWFsaXplLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbnRlcnJ1cHQgYWxsb2NhdGlvbiBhbmQgZGVpbml0aWFsaXphdGlvbikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6MTcuNDYwNDk5MzQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NjA3NjAyNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIChJRFBGKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUsIGFuZCBpdCByZXF1aXJlcyBjb21wbGV4IG1haWxib3ggY29tbXVuaWNhdGlvbiB3aXRoIGEgQ29udHJvbCBQbGFuZSB0byBpbml0aWFsaXplLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbnRlcnJ1cHQgYWxsb2NhdGlvbiBhbmQgZGVpbml0aWFsaXphdGlvbikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzoxNy40NjA1MDUzNjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODI5MzI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNjZDNmNGJmODI3YjlkZjNmMjQzMWJjOTg3ZDY1Zjg1YzkxZmE5MjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjAgMjA6MDM6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcXG5pbmRleCA3ZjkwNTY0MDRmNjRmYy4uY2Q5ODY3NGZiNjQ4NjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcXG5AQCAtNDE0OCw2ICs0MTQ4LDI2IEBAIHN0YXRpYyB2b2lkIGlkcGZfdnBvcnRfaW50cl9lbmFfaXJxX2FsbChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuIFxcdHdyaXRlbChyc3JjLVxcdTAwM2Vub2lycV9keW5fY3RsX2VuYSwgcnNyYy1cXHUwMDNlbm9pcnFfZHluX2N0bCk7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGwgLSBEaXNhYmxlIERJTSB3b3JrIGZvciBhbGwgcV92ZWN0b3JzXFxuKyAqIEByc3JjOiBwb2ludGVyIHRvIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXFxuKyAqXFxuKyAqIFRoZSBESU0gd29ya3MgYXJlIGVtYmVkZGVkIGluIHRoZSBxX3ZlY3RvciBhcnJheSB0aGF0XFxuKyAqIGlkcGZfdnBvcnRfaW50cl9yZWwoKSBmcmVlcywgYW5kIHRoZSBwb2xsIGFybXMgdGhlbSBhZnRlclxcbisgKiBuYXBpX2NvbXBsZXRlX2RvbmUoKSBoYXMgYWxyZWFkeSBjbGVhcmVkIE5BUElfU1RBVEVfU0NIRUQuICBEaXNhYmxlXFxuKyAqIHJhdGhlciB0aGFuIGp1c3QgY2FuY2VsLCBzbyB0aGF0IGEgcG9sbCB0YWlsIHN0aWxsIHJ1bm5pbmcgcGFzdFxcbisgKiBuYXBpX2Rpc2FibGUoKSBjYW5ub3QgcXVldWUgdGhlbSBhZ2FpbiBiZWhpbmQgdGhlIGRyYWluLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpXFxuK3tcXG4rXFx0Zm9yICh1MTYgdl9pZHggPSAwOyB2X2lkeCBcXHUwMDNjIHJzcmMtXFx1MDAzZW51bV9xX3ZlY3RvcnM7IHZfaWR4KyspIHtcXG4rXFx0XFx0c3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gXFx1MDAyNnJzcmMtXFx1MDAzZXFfdmVjdG9yc1t2X2lkeF07XFxuK1xcbitcXHRcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2cV92ZWN0b3ItXFx1MDAzZXR4X2RpbS53b3JrKTtcXG4rXFx0XFx0ZGlzYWJsZV93b3JrX3N5bmMoXFx1MDAyNnFfdmVjdG9yLVxcdTAwM2VyeF9kaW0ud29yayk7XFxuK1xcdH1cXG4rfVxcbitcXG4gLyoqXFxuICAqIGlkcGZfdnBvcnRfaW50cl9kZWluaXQgLSBSZWxlYXNlIGFsbCB2ZWN0b3IgYXNzb2NpYXRpb25zIGZvciB0aGUgdnBvcnRcXG4gICogQHZwb3J0OiBtYWluIHZwb3J0IHN0cnVjdHVyZVxcbkBAIC00MTU4LDYgKzQxNzgsNyBAQCB2b2lkIGlkcGZfdnBvcnRfaW50cl9kZWluaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxcbiB7XFxuIFxcdGlkcGZfdnBvcnRfaW50cl9kaXNfaXJxX2FsbChyc3JjKTtcXG4gXFx0aWRwZl92cG9ydF9pbnRyX25hcGlfZGlzX2FsbChyc3JjKTtcXG4rXFx0aWRwZl92cG9ydF9pbnRyX2Rpc19kaW1fYWxsKHJzcmMpO1xcbiBcXHRpZHBmX3Zwb3J0X2ludHJfbmFwaV9kZWxfYWxsKHJzcmMpO1xcbiBcXHRpZHBmX3Zwb3J0X2ludHJfcmVsX2lycSh2cG9ydCwgcnNyYyk7XFxuIH1cXG5AQCAtNDIzOCw3ICs0MjU5LDYgQEAgc3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX25hcGlfZW5hX2FsbChzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjICpyc3JjKVxcbiBcXHRmb3IgKHUxNiBxX2lkeCA9IDA7IHFfaWR4IFxcdTAwM2MgcnNyYy1cXHUwMDNlbnVtX3FfdmVjdG9yczsgcV9pZHgrKykge1xcbiBcXHRcXHRzdHJ1Y3QgaWRwZl9xX3ZlY3RvciAqcV92ZWN0b3IgPSBcXHUwMDI2cnNyYy1cXHUwMDNlcV92ZWN0b3JzW3FfaWR4XTtcXG4gXFxuLVxcdFxcdGlkcGZfaW5pdF9kaW0ocV92ZWN0b3IpO1xcbiBcXHRcXHRuYXBpX2VuYWJsZShcXHUwMDI2cV92ZWN0b3ItXFx1MDAzZW5hcGkpO1xcbiBcXHR9XFxuIH1cXG5AQCAtNDU4MSw2ICs0NjAxLDggQEAgaW50IGlkcGZfdnBvcnRfaW50cl9hbGxvYyhzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuIFxcdFxcdHFfY29hbCA9IFxcdTAwMjZ1c2VyX2NvbmZpZy1cXHUwMDNlcV9jb2FsZXNjZVt2X2lkeF07XFxuIFxcdFxcdHFfdmVjdG9yLVxcdTAwM2V2cG9ydCA9IHZwb3J0O1xcbiBcXG4rXFx0XFx0aWRwZl9pbml0X2RpbShxX3ZlY3Rvcik7XFxuK1xcbiBcXHRcXHRxX3ZlY3Rvci1cXHUwMDNldHhfaXRyX3ZhbHVlID0gcV9jb2FsLVxcdTAwM2V0eF9jb2FsZXNjZV91c2VjcztcXG4gXFx0XFx0cV92ZWN0b3ItXFx1MDAzZXR4X2ludHJfbW9kZSA9IHFfY29hbC1cXHUwMDNldHhfaW50cl9tb2RlO1xcbiBcXHRcXHRxX3ZlY3Rvci1cXHUwMDNldHhfaXRyX2lkeCA9IFZJUlRDSE5MMl9JVFJfSURYXzE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjAzOjE4LjAwOTU2NjkyOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyNjA1ODUyODQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiAoSURQRikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBhbmQgaXQgcmVxdWlyZXMgY29tcGxleCBtYWlsYm94IGNvbW11bmljYXRpb24gd2l0aCBhIENvbnRyb2wgUGxhbmUgdG8gaW5pdGlhbGl6ZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW50ZXJydXB0IGFsbG9jYXRpb24gYW5kIGRlaW5pdGlhbGl6YXRpb24pIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjY2QzZjRiZjgyN2I5ZGYzZjI0MzFiYzk4N2Q2NWY4NWM5MWZhOTIyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMjA6MDM6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuaW5kZXggN2Y5MDU2NDA0ZjY0ZmMuLmNkOTg2NzRmYjY0ODYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuQEAgLTQxNDgsNiArNDE0OCwyNiBAQCBzdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfZW5hX2lycV9hbGwoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0d3JpdGVsKHJzcmMtXHUwMDNlbm9pcnFfZHluX2N0bF9lbmEsIHJzcmMtXHUwMDNlbm9pcnFfZHluX2N0bCk7XG4gfVxuIFxuKy8qKlxuKyAqIGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbCAtIERpc2FibGUgRElNIHdvcmsgZm9yIGFsbCBxX3ZlY3RvcnNcbisgKiBAcnNyYzogcG9pbnRlciB0byBxdWV1ZSBhbmQgdmVjdG9yIHJlc291cmNlc1xuKyAqXG4rICogVGhlIERJTSB3b3JrcyBhcmUgZW1iZWRkZWQgaW4gdGhlIHFfdmVjdG9yIGFycmF5IHRoYXRcbisgKiBpZHBmX3Zwb3J0X2ludHJfcmVsKCkgZnJlZXMsIGFuZCB0aGUgcG9sbCBhcm1zIHRoZW0gYWZ0ZXJcbisgKiBuYXBpX2NvbXBsZXRlX2RvbmUoKSBoYXMgYWxyZWFkeSBjbGVhcmVkIE5BUElfU1RBVEVfU0NIRUQuICBEaXNhYmxlXG4rICogcmF0aGVyIHRoYW4ganVzdCBjYW5jZWwsIHNvIHRoYXQgYSBwb2xsIHRhaWwgc3RpbGwgcnVubmluZyBwYXN0XG4rICogbmFwaV9kaXNhYmxlKCkgY2Fubm90IHF1ZXVlIHRoZW0gYWdhaW4gYmVoaW5kIHRoZSBkcmFpbi5cbisgKi9cbitzdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGwoc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYylcbit7XG4rXHRmb3IgKHUxNiB2X2lkeCA9IDA7IHZfaWR4IFx1MDAzYyByc3JjLVx1MDAzZW51bV9xX3ZlY3RvcnM7IHZfaWR4KyspIHtcbitcdFx0c3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gXHUwMDI2cnNyYy1cdTAwM2VxX3ZlY3RvcnNbdl9pZHhdO1xuK1xuK1x0XHRkaXNhYmxlX3dvcmtfc3luYyhcdTAwMjZxX3ZlY3Rvci1cdTAwM2V0eF9kaW0ud29yayk7XG4rXHRcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNnFfdmVjdG9yLVx1MDAzZXJ4X2RpbS53b3JrKTtcbitcdH1cbit9XG4rXG4gLyoqXG4gICogaWRwZl92cG9ydF9pbnRyX2RlaW5pdCAtIFJlbGVhc2UgYWxsIHZlY3RvciBhc3NvY2lhdGlvbnMgZm9yIHRoZSB2cG9ydFxuICAqIEB2cG9ydDogbWFpbiB2cG9ydCBzdHJ1Y3R1cmVcbkBAIC00MTU4LDYgKzQxNzgsNyBAQCB2b2lkIGlkcGZfdnBvcnRfaW50cl9kZWluaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIHtcbiBcdGlkcGZfdnBvcnRfaW50cl9kaXNfaXJxX2FsbChyc3JjKTtcbiBcdGlkcGZfdnBvcnRfaW50cl9uYXBpX2Rpc19hbGwocnNyYyk7XG4rXHRpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGwocnNyYyk7XG4gXHRpZHBmX3Zwb3J0X2ludHJfbmFwaV9kZWxfYWxsKHJzcmMpO1xuIFx0aWRwZl92cG9ydF9pbnRyX3JlbF9pcnEodnBvcnQsIHJzcmMpO1xuIH1cbkBAIC00MjM4LDcgKzQyNTksNiBAQCBzdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfbmFwaV9lbmFfYWxsKHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpXG4gXHRmb3IgKHUxNiBxX2lkeCA9IDA7IHFfaWR4IFx1MDAzYyByc3JjLVx1MDAzZW51bV9xX3ZlY3RvcnM7IHFfaWR4KyspIHtcbiBcdFx0c3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yID0gXHUwMDI2cnNyYy1cdTAwM2VxX3ZlY3RvcnNbcV9pZHhdO1xuIFxuLVx0XHRpZHBmX2luaXRfZGltKHFfdmVjdG9yKTtcbiBcdFx0bmFwaV9lbmFibGUoXHUwMDI2cV92ZWN0b3ItXHUwMDNlbmFwaSk7XG4gXHR9XG4gfVxuQEAgLTQ1ODEsNiArNDYwMSw4IEBAIGludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0XHRxX2NvYWwgPSBcdTAwMjZ1c2VyX2NvbmZpZy1cdTAwM2VxX2NvYWxlc2NlW3ZfaWR4XTtcbiBcdFx0cV92ZWN0b3ItXHUwMDNldnBvcnQgPSB2cG9ydDtcbiBcbitcdFx0aWRwZl9pbml0X2RpbShxX3ZlY3Rvcik7XG4rXG4gXHRcdHFfdmVjdG9yLVx1MDAzZXR4X2l0cl92YWx1ZSA9IHFfY29hbC1cdTAwM2V0eF9jb2FsZXNjZV91c2VjcztcbiBcdFx0cV92ZWN0b3ItXHUwMDNldHhfaW50cl9tb2RlID0gcV9jb2FsLVx1MDAzZXR4X2ludHJfbW9kZTtcbiBcdFx0cV92ZWN0b3ItXHUwMDNldHhfaXRyX2lkeCA9IFZJUlRDSE5MMl9JVFJfSURYXzE7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzoxOC4wMDk1Nzg1OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY2NTk1NjgwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jYC4gVGhlIG1haW4gdGFrZWF3YXkgaXMgdGhhdCB0aGV5J3ZlIGFkZGVkIGEgZnVuY3Rpb24gY2FsbGVkIGBpZHBmX3Zwb3J0X2ludHJfZGlzX2RpbV9hbGxgLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQgZGlzYWJsZXMgc29tZSB3b3JrIHF1ZXVlcywgYHR4X2RpbS53b3JrYCBhbmQgYHJ4X2RpbS53b3JrYCwgYnkgY2FsbGluZyBgZGlzYWJsZV93b3JrX3N5bmNgLiBUaGV5J3ZlIGFsc28gbW92ZWQgYGlkcGZfaW5pdF9kaW1gIGFyb3VuZCwgc2hpZnRpbmcgaXQgZnJvbSBgaWRwZl92cG9ydF9pbnRyX25hcGlfZW5hX2FsbGAgdG8gYGlkcGZfdnBvcnRfaW50cl9hbGxvY2AuIEFkZGl0aW9uYWxseSwgdGhpcyBuZXcgYGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbGAgZnVuY3Rpb24gaXMgbm93IGJlaW5nIGNhbGxlZCBmcm9tIGBpZHBmX3Zwb3J0X2ludHJfZGVpbml0YC5cblxuVGhpcyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBJbnRlbCBJUERGIGRyaXZlci4gQnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIHNwZWNpZmljYWxseSBpZiB0aGlzIGRyaXZlciBpcyBldmVuIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gcmVjYWxsaW5nIHRoYXQgdGhlIEludGVsIElQREYgaXMgdGhlIFwiSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uXCIgZHJpdmVyLiBJdCAqc291bmRzKiBsaWtlIGEgdmlydHVhbCBmdW5jdGlvbiBkcml2ZXIgb3Igc29tZXRoaW5nIHNpbWlsYXIuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuXG5cblRoZSBuZXh0IHRoaW5nIEknbSB0aGlua2luZyBhYm91dCBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGlzIGZ1enphYmxlLiBFdGhlcm5ldCBkcml2ZXJzIHRoYXQgYXJlIGhhcmR3YXJlIHNwZWNpZmljIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZnV6eiwgdW5sZXNzIHRoZXkncmUgcnVubmluZyBvbiBhbiBlbXVsYXRlZCBzeXN0ZW0gb3IgaGF2ZSBzb21lIHNvcnQgb2YgdmlydHVhbCBidXMgYXZhaWxhYmxlLiBXYWl0IGEgbWludXRlLCBJIHRoaW5rIEkgcmVtZW1iZXIgdGhhdCBJUERGIGlzIGEgUENJIGRyaXZlciFcblxuT2theSwgdGhhdCBjaGFuZ2VzIHRoaW5ncy4gTm93IEkgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgaXQncyBhIFBDSSBkcml2ZXIuIE9uY2UgSSBjb25maXJtIHRoYXQsIEkgY2FuIGV2YWx1YXRlIHRoZSBmdXp6aW5nIHBvdGVudGlhbCBtb3JlIHJlYWxpc3RpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzoyOC42NzU1MzgzNDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3MDgwODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9Mzg0PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpZHBmX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzkxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozOTI6bW9kdWxlX3BjaV9kcml2ZXIoaWRwZl9kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzoyOC44ODI2Mjg1MTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjIzMTE0NjcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIGxvb2tzIGxpa2UgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiY2FuIHdlIGZ1enogdGhpcz9cIiBBbmQgdGhlIGFuc3dlciwgb2YgY291cnNlLCBpcyBcIm1heWJlLlwiIElmIHdlIGhhdmUgUENJIGZ1enppbmcgZW5hYmxlZCwgdGhlbiBzeXprYWxsZXIgKm1pZ2h0KiBiZSBhYmxlIHRvIGRvIHNvbWV0aGluZy4gSSByZW1lbWJlciBzeXprYWxsZXIgZG9lcyBoYXZlIGEgUENJIGZ1enplciwgc3BlY2lmaWNhbGx5IGBzeXpfcGNpXy4uLmAuXG5cbkhvd2V2ZXIsIHRoZSBwcm9tcHQgaXMgdGhyb3dpbmcgYSB3cmVuY2ggaW4gdGhpbmdzLCBzcGVjaWZpY2FsbHkgbWVudGlvbmluZyBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSSdtIHRyeWluZyB0byB0aGluayBpZiB0aGVyZSdzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBJRFBGIGRldmljZSwgYW5kIEkgY2FuJ3QgdGhpbmsgb2Ygb25lIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQuIEhtbS5cblxuU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gd2UgcmVhY2ggaXQgdmlhIFBDSSBmdXp6aW5nPyBTeXprYWxsZXLigJlzIFBDSSBmdXp6ZXIgZG9lcyBwcm9iZSBQQ0kgZGV2aWNlcywgc28gdGhhdCdzIGEgZ29vZCBzaWduLiBCdXQgaXMgdGhpcyBldmVuICp3b3J0aCogZnV6emluZz8gVHlwaWNhbGx5LCBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSwgZXNwZWNpYWxseSB3aXRob3V0IGFueSByZWFkaWx5IGF2YWlsYWJsZSBlbXVsYXRpb24sIGFyZSBjb25zaWRlcmVkIGRpZmZpY3VsdCBvciBvdXRyaWdodCBpbXBvc3NpYmxlIHRvIHJlYWNoLlxuXG5XYWl0IGEgc2Vjb25kLCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZWA/IFRoYXQgY2FuICplbXVsYXRlKiBQQ0kgZGV2aWNlcyB0byBzb21lIGV4dGVudCwgYnV0IEkgaGlnaGx5IGRvdWJ0IGl0J3MgYSBmdWxsIGVtdWxhdGlvbiBvZiBJbnRlbCdzIElEUEYgaGFyZHdhcmUuIExldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIElEUEYgaW4gdGhlIGN1cnJlbnQgc2V0dXAuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG92ZXJsb29rZWQgYW55IGRldGFpbHMgdGhhdCBjb3VsZCBtYWtlIGZ1enppbmcgdGhpcyBkcml2ZXIgZmVhc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6NDEuMTEzNzc3NTc5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTA4Mzg5MDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJRFBGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjAzOjQyLjk2NDYyMjkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNDg1MzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudDpcblxuKipFeGFtaW5pbmcgSW50ZWwgaURQRiBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHNvbWUgc3BlY2lmaWNzIHJlZ2FyZGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHJpZ2h0PyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoZXkncmUgdGhlIGdvLXRvIGZvciBzZXR0aW5nIGJ1aWxkLXRpbWUgdmFyaWFibGVzIGFuZCBkZXBlbmRlbmNpZXMuIFRoZSBpRFBGIGRyaXZlciBpcyBsaWtlbHkgdW5kZXIgdGhlIEludGVsIGV0aGVybmV0IHVtYnJlbGxhLCBzbyBJJ2xsIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWdgLiBPciwgaWYgdGhhdCBleGFjdCBwYXRoIGlzIHNsaWdodGx5IG9mZiwgSSdsbCBzdGFydCB0aGVyZSBhbmQgbG9vayBmb3IgYSBzaW1pbGFyIGZpbGVuYW1lIGFuZCBwYXRoIHdpdGhpbiB0aGF0IGRyaXZlciBzdHJ1Y3R1cmUuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3MgSSBuZWVkLiBIb3BlZnVsbHksIEknbGwgZmluZCB3aGF0IEknbSBsb29raW5nIGZvciBxdWlja2x5LCBidXQgaWYgbm90LCBJIGNhbiBtb3ZlIG9udG8gYSBtb3JlIGdlbmVyYWwgSW50ZWwgRXRoZXJuZXQgS2NvbmZpZyBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDc4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6NDUuOTY5NDc3NTE2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTQ3NjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSURQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjQ6Y29uZmlnIElEUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTc9aWYgSURQRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTk6Y29uZmlnIElEUEZfU0lOR0xFUVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJpZHBmIHNpbmdsZXEgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6NDYuMDc4OTU4ODc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyOTUyNTgyMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBJRFBGOiBBIEZlYXNpYmlsaXR5IEFuYWx5c2lzKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGlzLCBpZiB3ZSBlbmFibGUgdGhlIGBJRFBGYCBkcml2ZXIsIGNhbiBzeXprYWxsZXIgYWN0dWFsbHkgKnJlYWNoKiBpdD8gSSBrbm93IHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBidXQgdHlwaWNhbGx5IGl0IG5lZWRzIHNvbWUga2luZCBvZiBQQ0kgZGV2aWNlIGRlc2NyaXB0aW9uIG9yIGl0J3MganVzdCBnb2luZyB0byBtZXNzIGFyb3VuZCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlLiBBaCwgd2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyICpkb2Vzbid0KiBoYXZlIGZ1bGwgZW11bGF0aW9uIGZvciBJRFBGLCBkb2VzIGl0PyBUaGF0J3MgYSBjcnVjaWFsIHBvaW50LlxuXG5TbywgaXMgaXQgZXZlbiAqd29ydGgqIHRyeWluZyB0byBmdXp6IGl0PyBJJ20gcmVtZW1iZXJpbmcgdGhhdCBxdW90ZSwgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmXigKZcIiBUaGlzIHNtZWxscyBsaWtlIGEgZGVhZCBlbmQgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgUENJIGRyaXZlciB3aXRoIG5vIFFFTVUgZW11bGF0aW9uLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhvc2UgY3JpdGljYWwgZnVuY3Rpb25zIGxpa2UgYGlkcGZfdnBvcnRfaW50cl9kZWluaXRgLCBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYCwgdGhlIGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lcy4gV2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCBvciBhIGRlY2VudCBlbXVsYXRvciwgdGhlIGRldmljZSBwcm9iYWJseSB3b24ndCBpbml0aWFsaXplIGNvcnJlY3RseSwgYW5kIHRob3NlIGRhdGEgcGF0aHMgd2lsbCBiZSB1bnJlYWNoYWJsZS5cblxuQWxyaWdodCwgbGV0J3Mga2VlcCBpdCBzaW1wbGUgZm9yIG5vdy4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBzZWUgaWYgYGlkcGZfcHJvYmVgIGNhbiBldmVuIHN1Y2NlZWQgd2l0aCBqdXN0IFBDSSBmdXp6aW5nLiBUaGF0J3MgdGhlIGJhc2VsaW5lLCByaWdodD8gSWYgdGhlIHByb2JlIGZhaWxzLCB3ZSdyZSBkb25lLiBObyBwb2ludCBnb2luZyBmdXJ0aGVyIGRvd24gdGhhdCByYWJiaXQgaG9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ4NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowMzo1Ni4zNzQyMTk2MTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDQwODAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZHBmX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9MTg5PXN0YXRpYyBpbnQgaWRwZl9jZmdfaHcoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjI4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjI5OiAqIGlkcGZfcHJvYmUgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjMwLSAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yMzQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzoyMzU6c3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9Mzg0PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpZHBmX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg2LVxcdC5pZF90YWJsZVxcdFxcdD0gaWRwZl9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6Mzg3OlxcdC5wcm9iZVxcdFxcdFxcdD0gaWRwZl9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM4OC1cXHQuc3Jpb3ZfY29uZmlndXJlXFx0PSBpZHBmX3NyaW92X2NvbmZpZ3VyZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDM6NTYuOTA4NjMzOTc0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMzU3MDYxNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gb2YgYGlkcGZfcHJvYmVgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGlkcGZfcHJvYmVgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcmVjYWxsIHdoYXQgSSBrbm93IGFib3V0IEludGVsIERhdGEgUGxhbmUgRmlsdGVyaW5nIChJRFBGKSBhbmQgaXRzIHB1cnBvc2UuIEl0J3MgbGlrZWx5IGEgcHJvYmUsIG1lYW5pbmcgaXQncyBpbnZvbHZlZCBpbiBzb21lIHNvcnQgb2YgaW50cm9zcGVjdGlvbiBvciBkaXNjb3ZlcnkgcHJvY2VzcyByZWxhdGVkIHRvIHRoZSBkYXRhIHBsYW5lLiBQZXJoYXBzIGl0J3MgaWRlbnRpZnlpbmcgYXZhaWxhYmxlIHJlc291cmNlcywgdmFsaWRhdGluZyBjb25maWd1cmF0aW9ucywgY2hlY2tpbmcgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGNhcGFiaWxpdGllcyByZWxhdGVkIHRvIElEUEYgYWNjZWxlcmF0aW9uLCBvciBldmVuIHByb2JpbmcgdGhlIG5ldHdvcmsgdG8gdmVyaWZ5IGZsb3cgcnVsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2Ygd2hlcmUgdGhpcyBgaWRwZl9wcm9iZWAgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB0aGUgZGF0YSBpdCBvcGVyYXRlcyBvbiBpcyBrZXkuIEknbGwgbmVlZCB0byBjb25zaWRlciB3aGF0IGluZm9ybWF0aW9uIHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuZCB3aGF0IHRoYXQgcmV0dXJuIHZhbHVlIHNpZ25hbHMgd2l0aGluIHRoZSBicm9hZGVyIGZsb3cuIEJhc2VkIG9uIHRoZSBuYW1lLCBgaWRwZl9wcm9iZWAsIEknZCBleHBlY3QgaXQgaXMgcmVsYXRlZCB0byBpZGVudGlmeWluZyBjYXBhYmlsaXRpZXMuIEknbGwgZ28gdGhyb3VnaCB0aGUgY29kZSBhbmQgcXVpY2tseSBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQzNiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjA0OjEwLjI2NTY5ODcyMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjM1OlxcdHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuIDIzODpcXHRcXHRzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyO1xcbiAyMzk6XFx0XFx0aW50IGVycjtcXG4gMjQwOlxcdFxcbiAyNDE6XFx0XFx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyKTtcXG4gMjQyOlxcdFxcdGlmICghYWRhcHRlcilcXG4gMjQzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyNDQ6XFx0XFxuIDI0NTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VyZXFfdHhfc3BsaXRxID0gdHJ1ZTtcXG4gMjQ2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXJlcV9yeF9zcGxpdHEgPSB0cnVlO1xcbiAyNDc6XFx0XFxuIDI0ODpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwZGV2ID0gcGRldjtcXG4gMjQ5OlxcdFxcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4gMjUwOlxcdFxcdGlmIChlcnIpXFxuIDI1MTpcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiAyNTI6XFx0XFxuIDI1MzpcXHRcXHRlcnIgPSBwY2ltX3JlcXVlc3RfcmVnaW9uKHBkZXYsIDAsIHBjaV9uYW1lKHBkZXYpKTtcXG4gMjU0OlxcdFxcdGlmIChlcnIpIHtcXG4gMjU1OlxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcInBjaW1fcmVxdWVzdF9yZWdpb24gZmFpbGVkICVwZVxcXFxuXFxcIiwgRVJSX1BUUihlcnIpKTtcXG4gMjU2OlxcdFxcbiAyNTc6XFx0XFx0XFx0Z290byBlcnJfZnJlZTtcXG4gMjU4OlxcdFxcdH1cXG4gMjU5OlxcdFxcbiAyNjA6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9wdG0ocGRldik7XFxuIDI2MTpcXHRcXHRpZiAoZXJyKVxcbiAyNjI6XFx0XFx0XFx0cGNpX2RiZyhwZGV2LCBcXFwiUENJZSBQVE0gaXMgbm90IHN1cHBvcnRlZCBieSBQQ0llIGJ1cy9jb250cm9sbGVyXFxcXG5cXFwiKTtcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0Lyogc2V0IHVwIGZvciBoaWdoIG9yIGxvdyBkbWEgKi9cXG4gMjY1OlxcdFxcdGVyciA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoZGV2LCBETUFfQklUX01BU0soNjQpKTtcXG4gMjY2OlxcdFxcdGlmIChlcnIpIHtcXG4gMjY3OlxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcIkRNQSBjb25maWd1cmF0aW9uIGZhaWxlZDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKGVycikpO1xcbiAyNjg6XFx0XFxuIDI2OTpcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiAyNzA6XFx0XFx0fVxcbiAyNzE6XFx0XFxuIDI3MjpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMjczOlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBhZGFwdGVyKTtcXG4gMjc0OlxcdFxcbiAyNzU6XFx0XFx0YWRhcHRlci1cXHUwMDNlaW5pdF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXMtJXMtaW5pdFxcXCIsXFxuIDI3NjpcXHRcXHRcXHRcXHRcXHRcXHQgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXFxuIDI3NzpcXHRcXHRcXHRcXHRcXHRcXHQgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxcbiAyNzg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2X25hbWUoZGV2KSk7XFxuIDI3OTpcXHRcXHRpZiAoIWFkYXB0ZXItXFx1MDAzZWluaXRfd3EpIHtcXG4gMjgwOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIGluaXQgd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG4gMjgxOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDI4MjpcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiAyODM6XFx0XFx0fVxcbiAyODQ6XFx0XFxuIDI4NTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VzZXJ2X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCIlcy0lcy1zZXJ2aWNlXFxcIixcXG4gMjg2OlxcdFxcdFxcdFxcdFxcdFxcdCAgIFdRX1VOQk9VTkQgfCBXUV9NRU1fUkVDTEFJTSwgMCxcXG4gMjg3OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXFxuIDI4ODpcXHRcXHRcXHRcXHRcXHRcXHQgICBkZXZfbmFtZShkZXYpKTtcXG4gMjg5OlxcdFxcdGlmICghYWRhcHRlci1cXHUwMDNlc2Vydl93cSkge1xcbiAyOTA6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgc2VydmljZSB3b3JrcXVldWVcXFxcblxcXCIpO1xcbiAyOTE6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMjkyOlxcdFxcdFxcdGdvdG8gZXJyX3NlcnZfd3FfYWxsb2M7XFxuIDI5MzpcXHRcXHR9XFxuIDI5NDpcXHRcXG4gMjk1OlxcdFxcdGFkYXB0ZXItXFx1MDAzZW1ieF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXMtJXMtbWJ4XFxcIiwgV1FfVU5CT1VORCB8IFdRX0hJR0hQUkksXFxuIDI5NjpcXHRcXHRcXHRcXHRcXHRcXHQgIDAsIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXFxuIDI5NzpcXHRcXHRcXHRcXHRcXHRcXHQgIGRldl9uYW1lKGRldikpO1xcbiAyOTg6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2VtYnhfd3EpIHtcXG4gMjk5OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIG1haWxib3ggd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG4gMzAwOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDMwMTpcXHRcXHRcXHRnb3RvIGVycl9tYnhfd3FfYWxsb2M7XFxuIDMwMjpcXHRcXHR9XFxuIDMwMzpcXHRcXG4gMzA0OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXN0YXRzX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCIlcy0lcy1zdGF0c1xcXCIsXFxuIDMwNTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxcbiAzMDY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXFxuIDMwNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgZGV2X25hbWUoZGV2KSk7XFxuIDMwODpcXHRcXHRpZiAoIWFkYXB0ZXItXFx1MDAzZXN0YXRzX3dxKSB7XFxuIDMwOTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXFxcblxcXCIpO1xcbiAzMTA6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzExOlxcdFxcdFxcdGdvdG8gZXJyX3N0YXRzX3dxX2FsbG9jO1xcbiAzMTI6XFx0XFx0fVxcbiAzMTM6XFx0XFxuIDMxNDpcXHRcXHRhZGFwdGVyLVxcdTAwM2V2Y19ldmVudF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXMtJXMtdmNfZXZlbnRcXFwiLFxcbiAzMTU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFdRX1VOQk9VTkQgfCBXUV9NRU1fUkVDTEFJTSwgMCxcXG4gMzE2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxcbiAzMTc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGRldl9uYW1lKGRldikpO1xcbiAzMTg6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V2Y19ldmVudF93cSkge1xcbiAzMTk6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgdmlydGNobmwgZXZlbnQgd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG4gMzIwOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDMyMTpcXHRcXHRcXHRnb3RvIGVycl92Y19ldmVudF93cV9hbGxvYztcXG4gMzIyOlxcdFxcdH1cXG4gMzIzOlxcdFxcbiAzMjQ6XFx0XFx0Lyogc2V0dXAgbXNnbHZsICovXFxuIDMyNTpcXHRcXHRhZGFwdGVyLVxcdTAwM2Vtc2dfZW5hYmxlID0gbmV0aWZfbXNnX2luaXQoLTEsIElEUEZfQVZBSUxfTkVUSUZfTSk7XFxuIDMyNjpcXHRcXG4gMzI3OlxcdFxcdGVyciA9IGlkcGZfZGV2X2luaXQoYWRhcHRlciwgZW50KTtcXG4gMzI4OlxcdFxcdGlmIChlcnIpIHtcXG4gMzI5OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIlVuZXhwZWN0ZWQgZGV2IElEIDB4JXggaW4gaWRwZiBwcm9iZVxcXFxuXFxcIixcXG4gMzMwOlxcdFxcdFxcdFxcdGVudC1cXHUwMDNlZGV2aWNlKTtcXG4gMzMxOlxcdFxcdFxcdGdvdG8gZGVzdHJveV92Y19ldmVudF93cTtcXG4gMzMyOlxcdFxcdH1cXG4gMzMzOlxcdFxcbiAzMzQ6XFx0XFx0ZXJyID0gaWRwZl9jZmdfaHcoYWRhcHRlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjA0OjEwLjI2NTgyMjI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyMTc5MDExNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJRFBGIERyaXZlciBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gYGlkcGZfcHJvYmVgIGNhbGxzIGBpZHBmX2NmZ19od2AsIHdoaWNoIGltbWVkaWF0ZWx5IGluZGljYXRlcyBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIGlmIHRoaXMgZHJpdmVyIGlzIGEgdmlhYmxlIHRhcmdldCBmb3Igc3l6a2FsbGVyLiBTaW5jZSBzeXprYWxsZXIgaGFzIHRoZSBhYmlsaXR5IHRvIGZ1enogUENJIGRldmljZXMgYnkgaW5qZWN0aW5nIFBDSSBjb25maWcgYW5kIE1NSU8gb3BlcmF0aW9ucywgSSB0aGluayB0aGVyZSBpcyBhIGNoYW5jZS4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYGlkcGZfdnBvcnRfaW50cl9kaXNfZGltX2FsbGAgYW5kIGBpZHBmX3Zwb3J0X2ludHJfYWxsb2NgIHdoaWNoIGFyZSBwcm9iYWJseSBwYXJ0IG9mIHZwb3J0IGluaXRpYWxpemF0aW9uLlxuXG5BaGEhIElmIHRoaXMgKmlzKiBhIFBDSSBkcml2ZXIsIG1heWJlIHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZWAgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBgaWRwZl9wcm9iZWAgYW5kIGFsbG93IGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSB0aHJvdWdoIE1NSU8sIGxlYWRpbmcgdG8gdGhlIGFjdGl2YXRpb24gb2YgaW50ZXJydXB0cyBhbmQgb3RoZXIgZnVuY3Rpb25hbGl0eS4gTXkgbWFpbiBjb25jZXJuIGlzLCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0PyBUaGVuIEkgc2VlIHRoaXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIFRoYXQncyBpbXBvcnRhbnQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBpcyBJRFBGIHJlYWNoYWJsZSBpbiBHQ0Ugb3IgUUVNVT8gVGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgbWF0dGVyLiBJZiBpdCBpcyB1bnJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMsIHRoZW4gZnV6emluZyBpdCBpcyBwb2ludGxlc3MuXG5cbkFoISBJIHNlZSB0aGF0IElEUEYgaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uIGRyaXZlciBmb3IgSW50ZWwncyBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24uIElmIGl0J3MgYSBQQ0kgZHJpdmVyLCBzeXprYWxsZXIgY291bGQgaW5qZWN0IGEgZmFrZSBQQ0kgZGV2aWNlIHVzaW5nIGBzeXpfcGNpX2RldmljZWAgYW5kIHRoZW4gZnV6eiBpdC4gSG93ZXZlciwgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBpcyBrbm93biB0byBiZSBzb21ld2hhdCBsaW1pdGVkOyBpdCB1c3VhbGx5IGhhbmRsZXMgdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCBiYXNpYyBNTUlPIGFjY2VzcywgcmFyZWx5IGdldHRpbmcgZGVlcGx5IGludG8gdGhlIG5ldHdvcmsgc3RhY2sgb3IgaW50ZXJydXB0IGhhbmRsaW5nIHVubGVzcyB0aGUgZHJpdmVyIGlzIHNpbXBsZSBvciBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQuIEkgbmVlZCB0byBiZSByZWFsaXN0aWMgYWJvdXQgdGhpcy5cblxuRG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgKmZ1enoqIElEUEY/IEkgY2FuJ3QgYXNzdW1lIGFueXRoaW5nLiBJIG5lZWQgdG8gZ28gYW5kIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgZXhpc3Rpbmcgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgSURQRi4gVGhhdCBpcyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzEyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDQ6MTcuNDgzNzI2NTU3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc4OTE2NDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlkcGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDQ6MTcuOTUxNjIzNDE3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MzU4MjU1MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklEUEYgYW5kIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSByZXN0cmljdGlvbnMuIEkgY2FuJ3QgdXNlIGdyZXBwZXIgb24gYHN5cy8qYCwgc28gdGhhdCdzIG91dC4gSSBhbHNvIG5lZWQgdG8gdXNlIGByZWFkLWZpbGVgIGFuZCBjYW4ndCB1c2UgdGhlIGRlc2NyaXB0aW9uIHNlYXJjaCB0b29sLiBSaWdodCwgdGhhdCB3YXMgYSB0eXBvLlxuXG5Ob3csIGNvbnNpZGVyaW5nIElEUEYsIGl0IGFwcGVhcnMgdG8gYmUgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHNwZWNpZmljYWxseSBhbiBJbnRlbCBFdGhlcm5ldCBkcml2ZXIuIEdpdmVuIHRoaXMsIGl0J3MgZ2VuZXJhbGx5IGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdW5sZXNzIGl0J3MgYSB2aXJ0aW8gb3Igc2ltaWxhciBlbXVsYXRlZCBkZXZpY2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgcmVhY2hhYmxlIGluIEdDRSBvciBRRU1VLlxuXG5HQ0UgcHJpbWFyaWx5IHVzZXMgdmlydGlvLW5ldCBvciBnVk5JQy4gUUVNVSBzdXBwb3J0cyBhIHJhbmdlIG9mIGVtdWxhdGVkIE5JQ3MsIGJ1dCBub3QgSURQRi4gU28sIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgSURQRiBpc24ndCBlbXVsYXRlZCBpbiBRRU1VLiBUaGlzIG1lYW5zLCBhcyBhbiBJbnRlbCBJUFUgaGFyZHdhcmUgZHJpdmVyLCB0aGF0IGl0J3MgaW1wb3NzaWJsZSB0byByZWFjaCB0aGUgY29kZSBwYXRocyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGxpa2UgR0NFIG9yIFFFTVUuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgdGhvdWdoLiBHb29nbGUgQ2xvdWQgdXNlcyBnVk5JQyBhbmQgdmlydGlvLW5ldC4gQVdTIHV0aWxpemVzIEVOQS4gQXp1cmUgZW1wbG95cyBtYW5hLiBJRFBGIHNwZWNpZmljYWxseSB0YXJnZXRzIHRoZSBJbnRlbCBJUFUuIERlZmluaXRlbHkgbm90IGVtdWxhdGVkLiBJdCdzIG5vdCByZWFjaGFibGUuIFRoZXJlZm9yZSwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTGV0IG1lIHJlLWV4YW1pbmUgdGhlIHByb21wdCdzIGNyaXRlcmlhLiBJdCBzYXlzIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBTaW5jZSBJRFBGIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gUUVNVSwgYW5kIHRoZXJlIGlzIG5vIHBvc3NpYmxlIHdheSBmb3IgaXQgdG8gYmUgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFNvLCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgcmlnaHQgYW5zd2VyLlxuXG5Pa2F5LCBsZXQgbWUgY29uZmlybSBpZiB0aGVyZSdzICphbnkqIHNsaWdodCBjaGFuY2UgaXQncyBhIHZpcnR1YWwgZHJpdmVyLiBMZXQgbWUgbG9vayBhdCBgaWRwZl9wcm9iZWAgYWdhaW4uIFRoZSBjb2RlIHVzZXMgYHBjaW1fZW5hYmxlX2RldmljZWAsIGBwY2ltX3JlcXVlc3RfcmVnaW9uYCwgZXRjLiBJdCByZXF1aXJlcyBhIHJlYWwgUENJIGRldmljZS4gV2l0aG91dCBRRU1VIGVtdWxhdGlvbiBvciBhIHJlYWwgcGh5c2ljYWwgZGV2aWNlLCBgaWRwZl9wcm9iZWAgZWl0aGVyIHdvbid0IGJlIGNhbGxlZCwgb3IgaWYgaXQgaXMgcmVhY2hlZCwgaXQgY2FuIG9ubHkgdHJpZ2dlciBiYXNpYyBNTUlPIGZ1enppbmcsIHdoaWNoIHdvdWxkbid0IGdldCB0byB0aG9zZSBrZXkgZnVuY3Rpb25zIEkgd2FudCB0byB0ZXN0LiBBY3R1YWxseSwgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBjYW4gdHJpZ2dlciBpdCwgYnV0IHRoZW4gaXQnbGwgZmFpbCBsYXRlciBvbi4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgYGlkcGZfdnBvcnRfaW50cl9hbGxvY2AgaXMgcmVhY2hhYmxlIGZyb20gYGlkcGZfcHJvYmVgLiBCdXQgYmFzZWQgb24gdGhlIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgaW1wb3NzaWJsZS4gR2l2ZW4gYWxsIHRoaXMsIEknbSBzdGlsbCBmaXJtbHkgaW4gdGhlIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGNhbXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDQ6MzIuMzA5ODgxMDIyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDkwNjg1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWRwZl92cG9ydF9pbnRyX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xNDkyPXN0YXRpYyBpbnQgaWRwZl92cG9ydF9vcGVuKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCwgYm9vbCBydG5sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE1MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE1MTI6XFx0ZXJyID0gaWRwZl92cG9ydF9pbnRyX2FsbG9jKHZwb3J0LCByc3JjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTUxMy1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jPTQ1Mzk9c3RhdGljIHZvaWQgaWRwZl92cG9ydF9pbnRyX25hcGlfYWRkX2FsbChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ1NjMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzo0NTY0OiAqIGlkcGZfdnBvcnRfaW50cl9hbGxvYyAtIEFsbG9jYXRlIG1lbW9yeSBmb3IgaW50ZXJydXB0IHZlY3RvcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ1NjUtICogQHZwb3J0OiB2aXJ0dWFsIHBvcnRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtNDU3MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjQ1NzI6aW50IGlkcGZfdnBvcnRfaW50cl9hbGxvYyhzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NTczLVxcdFxcdFxcdCAgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9MTA5MT12b2lkIGlkcGZfdnBvcnRfaW50cl9yZWwoc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDoxMDkyOmludCBpZHBmX3Zwb3J0X2ludHJfYWxsb2Moc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtMTA5My1cXHRcXHRcXHQgIHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowNDozMi41MTg5NTUxODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY3MTgxNzM0NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBJRFBGJ3MgQXR0YWNrIFN1cmZhY2UqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiB3aGF0IEknbSB0aGlua2luZyBhYm91dCB0aGlzIGBpZHBmYCBkcml2ZXIuIFRoZSBjb3JlIG9mIHRoaXMgcG90ZW50aWFsbHkgdnVsbmVyYWJsZSBmdW5jdGlvbmFsaXR5IGlzIHRoZSBgaWRwZl92cG9ydF9pbnRyX2FsbG9jYCBmdW5jdGlvbi4gSSBrbm93IHRoaXMgaXMgdHJpZ2dlcmVkIGJ5IGBpZHBmX3Zwb3J0X29wZW5gLCB3aGljaCBpdHNlbGYgaXMgYSBjb25zZXF1ZW5jZSBvZiB0aGUgbmV0d29yayBkZXZpY2UgYmVpbmcgb3BlbmVkIHZpYSBgbmRvX29wZW5gLiBUaGUgcGF0aCB0byBnZXQgdGhlcmUgaXMgcHJldHR5IHN0YW5kYXJkOiB0aGUgbmV0ZGV2IG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQuIFJlZ2lzdHJhdGlvbiByZXF1aXJlcyBhIHN1Y2Nlc3NmdWwgYGlkcGZfcHJvYmVgLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXM6IGNhbiBhIHRvb2wgbGlrZSBTeXprYWxsZXIncyBQQ0kgZnV6emVyIGJlIHRyaWNrZWQgaW50byBtYWtpbmcgYGlkcGZfcHJvYmVgIHRoaW5rIGV2ZXJ5dGhpbmcgaXMgb2theSBhbmQgcmVnaXN0ZXIgYSBuZXRkZXYsIGV2ZW4gaWYgaXQncyBub3QgYSByZWFsIHBoeXNpY2FsIGRldmljZT9cblxuTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LiBOZXR3b3JrIGRyaXZlcnMgYXJlIG9mdGVuIHRpZ2h0bHkgY291cGxlZCB3aXRoIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzLiBUaGV5IHJlbHkgb24gdGhpbmdzIGxpa2UgRE1BIHJpbmcgc2V0dXAsIHBvdGVudGlhbGx5IGZpcm13YXJlIGxvYWRpbmcsIGFuZCBkZWZpbml0ZWx5IG1haWxib3ggaW50ZXJhY3Rpb25zIHRvIGNvbW11bmljYXRlLiBJdCdzIHJhcmUgdG8gZmluZCBhIHRydWx5ICdzaW1wbGUnIG5ldHdvcmsgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgaWRwZmAgaGFzIGFueSBkZXBlbmRlbmNpZXMgbGlrZSBmaXJtd2FyZSBvciBhIG1haWxib3ggcHJvdG9jb2wuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgcG90ZW50aWFsIGZvciB2dWxuZXJhYmlsaXR5IGlzIGdvaW5nIHRvIGxpZS4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXNlIHByZXJlcXVpc2l0ZXMgYXJlIGVzc2VudGlhbCBmb3IgYGlkcGZfcHJvYmVgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSWYgdGhlc2UgYXJlIHNraXBwZWQsIG9yIG1vY2tlZCwgdGhlbiBgaWRwZl9wcm9iZWAgd2lsbCBoYXZlIGEgY2hhbmNlIG9mIHN1Y2NlZWRpbmcgd2hlbiBpdCBzaG91bGRuJ3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTAzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDIwOjA0OjU5LjIzNzEzMTkwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0ODgyODA5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZHBmX3NlbmRfbXNnX3RvX2NwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQyMDowNDo1OS43NTIwMjQ5NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjgwMTE2Nzg1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZSwgdXNpbmcgYSBmaXJzdC1wZXJzb24gbmFycmF0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFJvb3QgQ2F1c2UqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBpc3N1ZSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGFrZSBhIG1ldGhvZGljYWwgYXBwcm9hY2guICpMZXQncyBjaGVjayBmb3IgbWFpbGJveCBvciBmaXJtd2FyZS4qIEkgbmVlZCB0byBzdGFydCB3aXRoIHRoZSBtb3N0IGNvbW1vbiwgZWFzaWx5LXZlcmlmaWVkIHN1c3BlY3RzLiBJcyB0aGVyZSBhIHNpbXBsZSBlbWFpbCBtaXNjb25maWd1cmF0aW9uIHRoYXQncyB0aGUgY3VscHJpdD8gT3IgY291bGQgdGhpcyBiZSBhIGtub3duIGJ1ZyBpbiBhIHNwZWNpZmljIGZpcm13YXJlIHZlcnNpb24gdGhhdCdzIGNhdXNpbmcgdGhpcyBiZWhhdmlvcj8gVGhpcyBpbml0aWFsIGNoZWNrIGlzIGNydWNpYWwuIEl0J3MgdGhlIGVxdWl2YWxlbnQgb2YgY2hlY2tpbmcgdGhlIG9idmlvdXMgYmVmb3JlIGdldHRpbmcgaW50byBkZWVwIGFuYWx5c2lzLiBJdCdzIHVubGlrZWx5LCBidXQgYSBoaWdoLWxldmVsIHZpZXcgaXMgbmVlZGVkIGJlZm9yZSBnZXR0aW5nIGludG8gdGhlIG5pdHR5IGdyaXR0eS4gSSB3YW50IHRvIHJ1bGUgb3V0IHRoZSBiYXNpYyBzdHVmZiBmaXJzdCBhbmQgZXN0YWJsaXNoIGEgYmFzZWxpbmUgYmVmb3JlIGNvbnNpZGVyaW5nIG1vcmUgY29tcGxleCBzY2VuYXJpb3MuIEl0J3MgYWJvdXQgZWZmaWNpZW50bHkgaWRlbnRpZnlpbmcgdGhlIGlzc3VlIGFuZCBhdm9pZGluZyB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYyNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDU6MTYuNTUzMTk1NzU0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODk4MDU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWlsYm94XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTEyPXN0cnVjdCBpZHBmX3Jzc19kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzktI2RlZmluZSBJRFBGX0RGTFRfTUJYX0lEXFx0XFx0LTFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MDovKiBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0byB0cnkgYmVmb3JlIHJlc2V0dGluZyBtYWlsYm94ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDEtI2RlZmluZSBJRFBGX01CX01BWF9FUlJcXHRcXHRcXHQyMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9MjAzPXN0cnVjdCBpZHBmX3JlZ19vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjI0LSAqIEBpZGNfaW5pdDogSURDIGluaXRpYWxpemF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjI1OiAqIEBzdGF0aWNfcmVnX2luZm86IGFycmF5IG9mIG1haWxib3ggYW5kIHJzdGF0IHJlZ2lzdGVyIGluZm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9MjI3PXN0cnVjdCBpZHBmX2Rldl9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIzMjpcXHQvKiBzdGF0aWNfcmVnX2luZm9bMF0gaXMgbWFpbGJveCByZWdpb24sIHN0YXRpY19yZWdfaW5mb1sxXSBpcyByc3RhdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIzMy1cXHRzdHJ1Y3QgcmVzb3VyY2Ugc3RhdGljX3JlZ19pbmZvW0lEUEZfTU1JT19SRUdfTlVNX1NUQVRJQ107XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaD01NzE9c3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2NodW5rIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4MC0gKiBzdHJ1Y3QgaWRwZl9xdWV1ZV9pZF9yZWdfaW5mbyAtIHF1ZXVlIElEIGFuZCByZWdpc3RlciBjaHVuayBpbmZvIHJlY2VpdmVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTgxOiAqXFx0XFx0XFx0XFx0ICAgb3ZlciB0aGUgbWFpbGJveFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4Mi0gKiBAbnVtX2NodW5rczogbnVtYmVyIG9mIGNodW5rc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9NjA4PXN0cnVjdCBpZHBmX3ZjX3huX21hbmFnZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MjItICogQG1zZ19lbmFibGU6IERlYnVnIG1lc3NhZ2UgbGV2ZWwgZW5hYmxlZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYyMzogKiBAbWJfd2FpdF9jb3VudDogTnVtYmVyIG9mIHRpbWVzIG1haWxib3ggd2FzIGF0dGVtcHRlZCBpbml0aWFsaXphdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyNC0gKiBAc3RhdGU6IEluaXQgc3RhdGUgbWFjaGluZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjM1LSAqIEB2ZWN0b3Jfc3RhY2s6IFN0YWNrIHRvIHN0b3JlIHRoZSBtc2l4IHZlY3RvciBpbmRleGVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjM2OiAqIEBpcnFfbWJfaGFuZGxlcjogSGFuZGxlciBmb3IgaGFyZCBpbnRlcnJ1cHQgZm9yIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MzctICogQHR4X3RpbWVvdXRfY291bnQ6IE51bWJlciBvZiBUWCB0aW1lb3V0cyB0aGF0IGhhdmUgb2NjdXJyZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY1My0gKiBAc2Vydl93cTogV29ya3F1ZXVlIGZvciBzZXJ2aWNlIHRhc2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2NTQ6ICogQG1ieF90YXNrOiBUYXNrIHRvIGhhbmRsZSBtYWlsYm94IGludGVycnVwdHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2NTU6ICogQG1ieF93cTogV29ya3F1ZXVlIGZvciBtYWlsYm94IHJlc3BvbnNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY1Ni0gKiBAdmNfZXZlbnRfdGFzazogVGFzayB0byBoYW5kbGUgb3V0IG9mIGJhbmQgdmlydGNobmwgZXZlbnQgbm90aWZpY2F0aW9uc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9ODY4PXN0YXRpYyBpbmxpbmUgdTggaWRwZl9nZXRfbWluX3R4X3BrdF9sZW4oc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg3NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NzY6ICogaWRwZl9nZXRfbWJ4X3JlZ19hZGRyIC0gR2V0IEJBUjAgbWFpbGJveCByZWdpc3RlciBhZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc3LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NzktICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4ODA6ICogUmV0dXJuOiBCQVIwIG1haWxib3ggcmVnaXN0ZXIgYWRkcmVzcyBiYXNlZCBvbiByZWdpc3RlciBvZmZzZXQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODgxLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxLmg9OTA9c3RydWN0IGlkcGZfbWJ4cV9kZXNjIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scS5oLTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scS5oOjk3Oi8qIE1heCBudW1iZXIgb2YgTU1JTyByZWdpb25zIG5vdCBpbmNsdWRpbmcgdGhlIG1haWxib3ggYW5kIHJzdGF0IHJlZ2lvbnMgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHEuaC05OC0gKiB0aGUgZmFsbGJhY2sgY2FzZSB3aGVuIHRoZSB3aG9sZSBiYXIgaXMgbWFwcGVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oPTgyPXN0cnVjdCBpZHBmX2N0bHFfY3JlYXRlX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oLTg0LVxcdGludCBpZDsgLyogYWJzb2x1dGUgcXVldWUgb2Zmc2V0IHBhc3NlZCBhcyBpbnB1dFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaDo4NTpcXHRcXHQgKiAtMSBmb3IgZGVmYXVsdCBtYWlsYm94IGlmIHByZXNlbnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHFfYXBpLmgtODYtXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHFfYXBpLmg9OTc9c3RydWN0IGlkcGZfY3RscV9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9jb250cm9scV9hcGkuaC0xMjMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2NvbnRyb2xxX2FwaS5oOjEyNDogKiBlbnVtIGlkcGZfbWJ4X29wYyAtIFBGL1ZGIG1haWxib3ggY29tbWFuZHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfY29udHJvbHFfYXBpLmgtMTI1LSAqIEBpZHBmX21icV9vcGNfc2VuZF9tc2dfdG9fY3A6IHVzZWQgYnkgUEYgb3IgVkYgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gaXRzIENQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMtMTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jOjEyOiAqIGlkcGZfY3RscV9yZWdfaW5pdCAtIGluaXRpYWxpemUgZGVmYXVsdCBtYWlsYm94IHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy0xMy0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYz0xNj1zdGF0aWMgdm9pZCBpZHBmX2N0bHFfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy01NC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmM6NTU6ICogaWRwZl9tYl9pbnRyX3JlZ19pbml0IC0gSW5pdGlhbGl6ZSBtYWlsYm94IGludGVycnVwdCByZWdpc3RlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy01Ni0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYz01OD1zdGF0aWMgdm9pZCBpZHBmX21iX2ludHJfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy02MC1cXHRzdHJ1Y3QgaWRwZl9pbnRyX3JlZyAqaW50ciA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VtYl92ZWN0b3IuaW50cl9yZWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jOjYxOlxcdHUzMiBkeW5fY3RsID0gbGUzMl90b19jcHUoYWRhcHRlci1cXHUwMDNlY2Fwcy5tYWlsYm94X2R5bl9jdGwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYy02Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz01Mz1zdGF0aWMgdm9pZCBpZHBmX2RlaW5pdF92ZWN0b3Jfc3RhY2soc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy02Ny0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzo2ODogKiBUaGlzIHdpbGwgYWxzbyBkaXNhYmxlIGludGVycnVwdCBtb2RlIGFuZCBxdWV1ZSB1cCBtYWlsYm94IHRhc2suIE1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtNjktICogdGFzayB3aWxsIHJlc2NoZWR1bGUgaXRzZWxmIGlmIG5vdCBpbiBpbnRlcnJ1cHQgbW9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz04Mj12b2lkIGlkcGZfaW50cl9yZWwoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy05Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6OTg6ICogaWRwZl9tYl9pbnRyX2NsZWFuIC0gSW50ZXJydXB0IGhhbmRsZXIgZm9yIHRoZSBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTk5LSAqIEBpcnE6IGludGVycnVwdCBudW1iZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xMDI9c3RhdGljIGlycXJldHVybl90IGlkcGZfbWJfaW50cl9jbGVhbihpbnQgX19hbHdheXNfdW51c2VkIGlycSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xMTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjExMjogKiBpZHBmX21iX2lycV9lbmFibGUgLSBFbmFibGUgTVNJWCBpbnRlcnJ1cHQgZm9yIHRoZSBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTExMy0gKiBAYWRhcHRlcjogYWRhcHRlciB0byBnZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3MgZm9yIHJlZ2lzdGVyIHdyaXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTE1PXN0YXRpYyB2b2lkIGlkcGZfbWJfaXJxX2VuYWJsZShzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEyNS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTI2OiAqIGlkcGZfbWJfaW50cl9yZXFfaXJxIC0gUmVxdWVzdCBpcnEgZm9yIHRoZSBtYWlsYm94IGludGVycnVwdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoxMjc6ICogQGFkYXB0ZXI6IGFkYXB0ZXIgc3RydWN0dXJlIHRvIHBhc3MgdG8gdGhlIG1haWxib3ggaXJxIGhhbmRsZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTI4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xMjk9c3RhdGljIGludCBpZHBmX21iX2ludHJfcmVxX2lycShzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE0MC1cXHRcXHRkZXZfZXJyKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE0MTpcXHRcXHRcXHRcXFwiSVJRIHJlcXVlc3QgZm9yIG1haWxib3ggZmFpbGVkLCBlcnJvcjogJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xNTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE1MjogKiBpZHBmX21iX2ludHJfaW5pdCAtIEluaXRpYWxpemUgdGhlIG1haWxib3ggaW50ZXJydXB0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjE1MzogKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmUgdG8gc3RvcmUgdGhlIG1haWxib3ggdmVjdG9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE1NC0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0zMDQ9aW50IGlkcGZfaW50cl9yZXEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0zNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjM3NzpcXHRhZGFwdGVyLVxcdTAwM2VtYl92ZWN0b3Iudl9pZHggPSBsZTE2X3RvX2NwdShhZGFwdGVyLVxcdTAwM2VjYXBzLm1haWxib3hfdmVjdG9yX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMzc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTEzMzc9c3RhdGljIHZvaWQgaWRwZl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEzNDctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjEzNDg6ICogaWRwZl9zdGF0aXN0aWNzX3Rhc2sgLSBEZWxheWVkIHRhc2sgdG8gZ2V0IHN0YXRpc3RpY3Mgb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTEzNDktICogQHdvcms6IHdvcmtfc3RydWN0IGhhbmRsZSB0byBvdXIgZGF0YVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTEzNTE9dm9pZCBpZHBmX3N0YXRpc3RpY3NfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM3MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTM3MTogKiBpZHBmX21ieF90YXNrIC0gRGVsYXllZCB0YXNrIHRvIGhhbmRsZSBtYWlsYm94IHJlc3BvbnNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xMzcyLSAqIEB3b3JrOiB3b3JrX3N0cnVjdCBoYW5kbGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0xMzc0PXZvaWQgaWRwZl9tYnhfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM4OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTM5MDogKiBpZHBmX3NlcnZpY2VfdGFzayAtIERlbGF5ZWQgdGFzayBmb3IgaGFuZGxpbmcgbWFpbGJveCByZXNwb25zZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTM5MS0gKiBAd29yazogd29ya19zdHJ1Y3QgaGFuZGxlIHRvIG91ciBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM9MTg1Nz1zdGF0aWMgaW50IGlkcGZfY2hlY2tfcmVzZXRfY29tcGxldGUoc3RydWN0IGlkcGZfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE4ODktICogRGVhbGxvY2F0ZSB0aGUgdnBvcnRzIGFuZCBhbGwgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSBhbmRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTg5MDogKiByZWFsbG9jYXRlLiBBbHNvIHJlaW5pdGlhbGl6ZSB0aGUgbWFpbGJveC4gUmV0dXJuIDAgb24gc3VjY2VzcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMTg5MS0gKiBuZWdhdGl2ZSBvbiBmYWlsdXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTE4OTM9c3RhdGljIHZvaWQgaWRwZl9pbml0X2hhcmRfcmVzZXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0xOTMyLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MTkzMzpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIGRlZmF1bHQgbWFpbGJveDogJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTE5MzQtXFx0XFx0Z290byB1bmxvY2tfbXV0ZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTE4OT1zdGF0aWMgaW50IGlkcGZfY2ZnX2h3KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTE5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjE5OTpcXHQvKiBNYXAgbWFpbGJveCBzcGFjZSBmb3IgdmlydGNobmwgY29tbXVuaWNhdGlvbiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjAwLVxcdG1ieF9zdGFydCA9IHJlc19zdGFydCArIGFkYXB0ZXItXFx1MDAzZWRldl9vcHMuc3RhdGljX3JlZ19pbmZvWzBdLnN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0yMzU9c3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yOTgtXFx0aWYgKCFhZGFwdGVyLVxcdTAwM2VtYnhfd3EpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjI5OTpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBtYWlsYm94IHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zMDAtXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xMC0gKiBAZGlyZWN0OiBDYXBhYmlsaXR5IHRoYXQgaW5kaWNhdGVzIHRoZSBkaXJlY3QgYWNjZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjExOiAqIEBtYWlsYm94OiBDYXBhYmlsaXR5IHRoYXQgaW5kaWNhdGVzIHRoZSBtYWlsYm94IGFjY2Vzc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xMi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jPTE1PXN0YXRpYyBlbnVtIGlkcGZfcHRwX2FjY2Vzc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxNjppZHBmX3B0cF9nZXRfYWNjZXNzKGNvbnN0IHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBkaXJlY3QsIHUzMiBtYWlsYm94KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0xNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTktXFx0XFx0cmV0dXJuIElEUEZfUFRQX0RJUkVDVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MjA6XFx0ZWxzZSBpZiAoYWRhcHRlci1cXHUwMDNlcHRwLVxcdTAwM2VjYXBzIFxcdTAwMjYgbWFpbGJveClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMjEtXFx0XFx0cmV0dXJuIElEUEZfUFRQX01BSUxCT1g7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MzM9dm9pZCBpZHBmX3B0cF9nZXRfZmVhdHVyZXNfYWNjZXNzKGNvbnN0IHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMzUtXFx0c3RydWN0IGlkcGZfcHRwICpwdHAgPSBhZGFwdGVyLVxcdTAwM2VwdHA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjM2OlxcdHUzMiBkaXJlY3QsIG1haWxib3g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTM5LVxcdGRpcmVjdCA9IFZJUlRDSE5MMl9DQVBfUFRQX0dFVF9ERVZJQ0VfQ0xLX1RJTUU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjQwOlxcdG1haWxib3ggPSBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfREVWSUNFX0NMS19USU1FX01CO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00MS1cXHRwdHAtXFx1MDAzZWdldF9kZXZfY2xrX3RpbWVfYWNjZXNzID0gaWRwZl9wdHBfZ2V0X2FjY2VzcyhhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00Mi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBkaXJlY3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjQzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIG1haWxib3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00Ni1cXHRkaXJlY3QgPSBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfQ1JPU1NfVElNRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NDc6XFx0bWFpbGJveCA9IFZJUlRDSE5MMl9DQVBfUFRQX0dFVF9DUk9TU19USU1FX01CO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00OC1cXHRwdHAtXFx1MDAzZWdldF9jcm9zc190c3RhbXBfYWNjZXNzID0gaWRwZl9wdHBfZ2V0X2FjY2VzcyhhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy00OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBkaXJlY3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjUwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIG1haWxib3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy01MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy01My1cXHRkaXJlY3QgPSBWSVJUQ0hOTDJfQ0FQX1BUUF9TRVRfREVWSUNFX0NMS19USU1FO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo1NDpcXHRtYWlsYm94ID0gVklSVENITkwyX0NBUF9QVFBfU0VUX0RFVklDRV9DTEtfVElNRV9NQjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTUtXFx0cHRwLVxcdTAwM2VzZXRfZGV2X2Nsa190aW1lX2FjY2VzcyA9IGlkcGZfcHRwX2dldF9hY2Nlc3MoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTYtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGlyZWN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo1NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBtYWlsYm94KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjAtXFx0ZGlyZWN0ID0gVklSVENITkwyX0NBUF9QVFBfQURKX0RFVklDRV9DTEs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjYxOlxcdG1haWxib3ggPSBWSVJUQ0hOTDJfQ0FQX1BUUF9BREpfREVWSUNFX0NMS19NQjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjItXFx0cHRwLVxcdTAwM2VhZGpfZGV2X2Nsa190aW1lX2FjY2VzcyA9IGlkcGZfcHRwX2dldF9hY2Nlc3MoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGlyZWN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzo2NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBtYWlsYm94KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNjctXFx0ZGlyZWN0ID0gVklSVENITkwyX0NBUF9QVFBfVFhfVFNUQU1QUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6Njg6XFx0bWFpbGJveCA9IFZJUlRDSE5MMl9DQVBfUFRQX1RYX1RTVEFNUFNfTUI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTY5LVxcdHB0cC1cXHUwMDNldHhfdHN0YW1wX2FjY2VzcyA9IGlkcGZfcHRwX2dldF9hY2Nlc3MoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtNzAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpcmVjdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6NzE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIG1haWxib3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy03Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9OTk9c3RhdGljIHU2NCBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX2RpcmVjdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTEyMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MTI0OiAqIGlkcGZfcHRwX3JlYWRfc3JjX2Nsa19yZWdfbWFpbGJveCAtIFJlYWQgdGhlIG1haW4gdGltZXIgdmFsdWUgdGhyb3VnaCBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jLTEyNS0gKiBAYWRhcHRlcjogRHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTMxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoxMzI6c3RhdGljIGludCBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX21haWxib3goc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTMzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHB0cF9zeXN0ZW1fdGltZXN0YW1wICpzdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM9MTYzPXN0YXRpYyBpbnQgaWRwZl9wdHBfcmVhZF9zcmNfY2xrX3JlZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKnNyY19jbGssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTY5LVxcdGNhc2UgSURQRl9QVFBfTUFJTEJPWDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmM6MTcwOlxcdFxcdHJldHVybiBpZHBmX3B0cF9yZWFkX3NyY19jbGtfcmVnX21haWxib3goYWRhcHRlciwgc3RzLCBzcmNfY2xrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMTcxLVxcdGNhc2UgSURQRl9QVFBfRElSRUNUOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jPTE4OT1zdGF0aWMgdm9pZCBpZHBmX3B0cF9nZXRfc3luY19kZXZpY2VfdGltZV9kaXJlY3Qoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yMTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjIxMjogKiBpZHBmX3B0cF9nZXRfc3luY19kZXZpY2VfdGltZV9tYWlsYm94IC0gR2V0IHRoZSBjcm9zcyB0aW1lIHN0YW1wIHZhbHVlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoyMTM6ICpcXHRcXHRcXHRcXHRcXHQgICB0aHJvdWdoIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMjE0LSAqIEBhZGFwdGVyOiBEcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yMTktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jOjIyMDpzdGF0aWMgaW50IGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lX21haWxib3goc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmMtMjIxLVxcdFxcdFxcdFxcdFxcdFxcdCB1NjQgKmRldl90aW1lLCB1NjQgKnN5c190aW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5jPTI0Nj1zdGF0aWMgaW50IGlkcGZfcHRwX2dldF9zeW5jX2RldmljZV90aW1lKGt0aW1lX3QgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yNjEtXFx0Y2FzZSBJRFBGX1BUUF9NQUlMQk9YOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYzoyNjI6XFx0XFx0ZXJyID0gaWRwZl9wdHBfZ2V0X3N5bmNfZGV2aWNlX3RpbWVfbWFpbGJveChhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuYy0yNjMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZuc190aW1lX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaD0zOD1zdHJ1Y3QgaWRwZl9wdHBfZGV2X2Nsa19yZWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC03Mi0gKiBASURQRl9QVFBfRElSRUNUOiBkaXJlY3QgYWNjZXNzIHRocm91Z2ggQkFSIHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDo3MzogKiBASURQRl9QVFBfTUFJTEJPWDogYWNjZXNzIHRocm91Z2ggbWFpbGJveCBtZXNzYWdlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC03NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmg9NzU9ZW51bSBpZHBmX3B0cF9hY2Nlc3Mge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3B0cC5oLTgxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDo4MjogKiBzdHJ1Y3QgaWRwZl9wdHBfc2Vjb25kYXJ5X21ieCAtIFBUUCBzZWNvbmRhcnkgbWFpbGJveFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDo4MzogKiBAcGVlcl9tYnhfcV9pZDogUFRQIG1haWxib3ggcXVldWUgSURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfcHRwLmgtODQtICogQHBlZXJfaWQ6IFBlZXIgSUQgZm9yIFBUUCBEZXZpY2UgQ29udHJvbCBkYWVtb25cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaD0xNDY9c3RydWN0IGlkcGZfcHRwX3Zwb3J0X3R4X3RzdGFtcF9jYXBzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC0xNzUtICogQHJzdjogcmVzZXJ2ZWQgYml0c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaDoxNzY6ICogQHNlY29uZGFyeV9tYng6IHBhcmFtZXRlcnMgZm9yIHVzaW5nIGRlZGljYXRlZCBQVFAgbWFpbGJveFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9wdHAuaC0xNzctICogQHJlYWRfZGV2X2Nsa19sb2NrOiBzcGlubG9jayBwcm90ZWN0aW5nIGFjY2VzcyB0byB0aGUgZGV2aWNlIGNsb2NrIHJlYWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM9NDM5Mz1zdGF0aWMgdm9pZCBpZHBmX3Zwb3J0X2ludHJfbWFwX3ZlY3Rvcl90b19xcyhzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTQ0OTQtICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjQ0OTU6ICogSW5pdGlhbGl6ZSB2ZWN0b3IgaW5kZXhlcyB3aXRoIHZhbHVlcyByZXR1cm5lZCBvdmVyIG1haWxib3guXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy00NDk2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMtMTAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jOjExOiAqIGlkcGZfdmZfY3RscV9yZWdfaW5pdCAtIGluaXRpYWxpemUgZGVmYXVsdCBtYWlsYm94IHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy0xMi0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYz0xNT1zdGF0aWMgdm9pZCBpZHBmX3ZmX2N0bHFfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy01My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmM6NTQ6ICogaWRwZl92Zl9tYl9pbnRyX3JlZ19pbml0IC0gSW5pdGlhbGl6ZSB0aGUgbWFpbGJveCByZWdpc3RlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy01NS0gKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYz01Nz1zdGF0aWMgdm9pZCBpZHBmX3ZmX21iX2ludHJfcmVnX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy01OS1cXHRzdHJ1Y3QgaWRwZl9pbnRyX3JlZyAqaW50ciA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VtYl92ZWN0b3IuaW50cl9yZWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jOjYwOlxcdHUzMiBkeW5fY3RsID0gbGUzMl90b19jcHUoYWRhcHRlci1cXHUwMDNlY2Fwcy5tYWlsYm94X2R5bl9jdGwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYy02MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTkwPXN0YXRpYyB2b2lkIGlkcGZfcmVjdl9ldmVudF9tc2coc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTExOC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzoxMTk6ICogaWRwZl9tYl9jbGVhbiAtIFJlY2xhaW0gdGhlIHNlbmQgbWFpbGJveCBxdWV1ZSBlbnRyaWVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTIwLSAqIEBhZGFwdGVyOiBkcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEyMi0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjEyMzogKiBSZWNsYWltIHRoZSBzZW5kIG1haWxib3ggcXVldWUgZW50cmllcyB0byBiZSB1c2VkIHRvIHNlbmQgZnVydGhlciBtZXNzYWdlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEyNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTkwPXN0YXRpYyB2b2lkIGlkcGZfcHJlcGFyZV9wdHBfbWJfbXNnKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTE5Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTkzOlxcdC8qIElmIHRoZSBtZXNzYWdlIGlzIFBUUC1yZWxhdGVkIGFuZCB0aGUgc2Vjb25kYXJ5IG1haWxib3ggaXMgYXZhaWxhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjE5NDpcXHQgKiBzZW5kIHRoZSBtZXNzYWdlIHRocm91Z2ggdGhlIHNlY29uZGFyeSBtYWlsYm94LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTE5NS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTIwND1zdGF0aWMgdm9pZCBpZHBmX3ByZXBhcmVfcHRwX21iX21zZyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLCB1MzIgb3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0yMDktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MjEwOiAqIGlkcGZfc2VuZF9tYl9tc2cgLSBTZW5kIG1lc3NhZ2Ugb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMjExLSAqIEBhZGFwdGVyOiBkcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTU3MT1pZHBmX3ZjX3huX2ZvcndhcmRfcmVwbHkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTY2OC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzo2Njk6ICogaWRwZl9yZWN2X21iX21zZyAtIFJlY2VpdmUgbWVzc2FnZSBvdmVyIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy02NzAtICogQGFkYXB0ZXI6IGRyaXZlciBzcGVjaWZpYyBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTAyOD1zdGF0aWMgaW50IGlkcGZfc2VuZF9nZXRfbGFuX21lbW9yeV9yZWdpb25zKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMDg0LSAqIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0cyBhbmQgc2l6ZXMgZm9yIHRoZSByZWdpb25zIGJlZm9yZSwgaW4gYmV0d2VlbiwgYW5kXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTA4NTogKiBhZnRlciB0aGUgbWFpbGJveCBhbmQgcnN0YXQgTU1JTyBtYXBwaW5ncy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMDg2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0xMDg5PXN0YXRpYyBpbnQgaWRwZl9jYWxjX3JlbWFpbmluZ19tbWlvX3JlZ3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEwOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTEwMDpcXHQvKiBSZWdpb24gcHJlY2VkaW5nIG1haWxib3ggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMTAxLVxcdGh3LVxcdTAwM2VsYW5fcmVnc1swXS5hZGRyX3N0YXJ0ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMTAyLVxcdGh3LVxcdTAwM2VsYW5fcmVnc1swXS5hZGRyX2xlbiA9IG1ieF9yZWctXFx1MDAzZXN0YXJ0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjExMDM6XFx0LyogUmVnaW9uIGJldHdlZW4gbWFpbGJveCBhbmQgcnN0YXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xMTA0LVxcdGh3LVxcdTAwM2VsYW5fcmVnc1sxXS5hZGRyX3N0YXJ0ID0gbWJ4X3JlZy1cXHUwMDNlZW5kICsgMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTEzMjQ9aW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTEzNjgtICogQHFfdHlwZTogcXVldWUgbW9kZWxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzoxMzY5OiAqIEBjaHVua3M6IHF1ZXVlIHJlZ3MgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTM3MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MTQxMj1zdGF0aWMgaW50IF9faWRwZl9xdWV1ZV9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0xNDY3LSAqIEByc3JjOiBwb2ludGVyIHRvIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MTQ2ODogKiBAY2h1bmtzOiBxdWV1ZSByZWdpc3RlcnMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMTQ2OS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9MjU0OT1zdGF0aWMgdm9pZCBpZHBmX2NvbnZlcnRfcmVnX3RvX3F1ZXVlX2NodW5rcyhzdHJ1Y3QgdmlydGNobmwyX3F1ZXVlX2NodW5rICpkY2h1bmtzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMjU2NC0gKiBAYWRhcHRlcjogYWRhcHRlciBwb2ludGVyIHVzZWQgdG8gc2VuZCB2aXJ0Y2hubCBtZXNzYWdlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MjU2NTogKiBAY2h1bmtzOiBxdWV1ZSBpZHMgcmVjZWl2ZWQgb3ZlciBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMjU2Ni0gKiBAdnBvcnRfaWQ6IHZwb3J0IGlkZW50aWZpZXIgdXNlZCB3aGlsZSBwcmVwYXJpbmcgdGhlIHZpcnRjaG5sIG1lc3NhZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTMzMzg9c3RhdGljIHN0cnVjdCBpZHBmX2N0bHFfaW5mbyAqaWRwZl9maW5kX2N0bHEoc3RydWN0IGlkcGZfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzM1MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozMzUxOiAqIGlkcGZfaW5pdF9kZmx0X21ieCAtIFNldHVwIGRlZmF1bHQgbWFpbGJveCBwYXJhbWV0ZXJzIGFuZCBtYWtlIHJlcXVlc3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zMzUyLSAqIEBhZGFwdGVyOiBhZGFwdGVyIGluZm8gc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zNDgwPWludCBpZHBmX3ZjX2NvcmVfaW5pdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozNTc5OlxcdC8qIFN0YXJ0IHRoZSBtYWlsYm94IHRhc2sgYmVmb3JlIHJlcXVlc3RpbmcgdmVjdG9ycy4gVGhpcyB3aWxsIGVuc3VyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM1ODA6XFx0ICogdmVjdG9yIGluZm9ybWF0aW9uIHJlc3BvbnNlIGZyb20gbWFpbGJveCBpcyBoYW5kbGVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzU4MS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM2MzQtXFx0aWYgKCsrYWRhcHRlci1cXHUwMDNlbWJfd2FpdF9jb3VudCBcXHUwMDNlIElEUEZfTUJfTUFYX0VSUikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM2MzU6XFx0XFx0ZGV2X2VycihcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGVzdGFibGlzaCBtYWlsYm94IGNvbW11bmljYXRpb25zIHdpdGggaGFyZHdhcmVcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM2MzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zNjM4LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozNjM5OlxcdC8qIElmIGl0IHJlYWNoZWQgaGVyZSwgaXQgaXMgcG9zc2libGUgdGhhdCBtYWlsYm94IHF1ZXVlIGluaXRpYWxpemF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzY0MC1cXHQgKiByZWdpc3RlciB3cml0ZXMgbWlnaHQgbm90IGhhdmUgdGFrZW4gZWZmZWN0LiBSZXRyeSB0byBpbml0aWFsaXplXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzY0MTpcXHQgKiB0aGUgbWFpbGJveCBhZ2FpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM2NDItXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zNzQ3PWludCBpZHBmX3Zwb3J0X2luaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgaWRwZl92cG9ydF9tYXhfcSAqbWF4X3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODE1LSAqIGlkcGZfZ2V0X3ZlY19pZHMgLSBJbml0aWFsaXplIHZlY3RvciBpZCBmcm9tIE1haWxib3ggcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM4MTY6ICogQGFkYXB0ZXI6IGFkYXB0ZXIgc3RydWN0dXJlIHRvIGdldCB0aGUgbWFpbGJveCB2ZWN0b3IgaWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODE3LSAqIEB2ZWNpZHM6IEFycmF5IG9mIHZlY3RvciBpZHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODE4LSAqIEBudW1fdmVjaWRzOiBudW1iZXIgb2YgdmVjdG9yIGlkc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjM4MTk6ICogQGNodW5rczogdmVjdG9yIGlkcyByZWNlaXZlZCBvdmVyIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODIwLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzgyMTogKiBXaWxsIGluaXRpYWxpemUgdGhlIG1haWxib3ggdmVjdG9yIGlkIHdoaWNoIGlzIHJlY2VpdmVkIGZyb20gdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzgyMi0gKiBnZXQgY2FwYWJpbGl0aWVzIGFuZCBkYXRhIHF1ZXVlIHZlY3RvciBpZHMgd2l0aCBpZHMgcmVjZWl2ZWQgYXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODIzOiAqIG1haWxib3ggcGFyYW1ldGVycy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODI0LSAqIFJldHVybnMgbnVtYmVyIG9mIGlkcyBmaWxsZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTM4MjY9aW50IGlkcGZfZ2V0X3ZlY19pZHMoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM4NjMtICogQHFfdHlwZTogcXVldWUgbW9kZWxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozODY0OiAqIEBjaHVua3M6IHF1ZXVlIGlkcyByZWNlaXZlZCBvdmVyIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODY1LSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6Mzg2NjogKiBXaWxsIGluaXRpYWxpemUgYWxsIHF1ZXVlIGlkcyB3aXRoIGlkcyByZWNlaXZlZCBhcyBtYWlsYm94IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zODY3LSAqIFJldHVybnMgbnVtYmVyIG9mIGlkcyBmaWxsZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jPTM4Njk9c3RhdGljIGludCBpZHBmX3Zwb3J0X2dldF9xdWV1ZV9pZHModTMyICpxaWRzLCBpbnQgbnVtX3FpZHMsIHUxNiBxX3R5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zOTA3LSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6MzkwODogKiBXaWxsIGluaXRpYWxpemUgYWxsIHF1ZXVlIGlkcyB3aXRoIGlkcyByZWNlaXZlZCBhcyBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzkwOS0gKiBwYXJhbWV0ZXJzLiBSZXR1cm5zIG51bWJlciBvZiBxdWV1ZSBpZHMgaW5pdGlhbGl6ZWQuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYz0zOTExPXN0YXRpYyBpbnQgX19pZHBmX3Zwb3J0X3F1ZXVlX2lkc19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jLTM5NzktICogQHJzcmM6IHBvaW50ZXIgdG8gcXVldWUgYW5kIHZlY3RvciByZXNvdXJjZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYzozOTgwOiAqIEBjaHVua3M6IHF1ZXVlIGlkcyByZWNlaXZlZCBvdmVyIG1haWxib3hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy0zOTgxLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM6Mzk4MjogKiBXaWxsIGluaXRpYWxpemUgYWxsIHF1ZXVlIGlkcyB3aXRoIGlkcyByZWNlaXZlZCBhcyBtYWlsYm94IHBhcmFtZXRlcnMuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtMzk4My0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmM9NDI5NT1pbnQgaWRwZl9hZGRfZGVsX21hY19maWx0ZXJzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYy00NDAxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jOjQ0MDI6ICogaWRwZl9zZXRfcHJvbWlzY3VvdXMgLSBzZXQgcHJvbWlzY3VvdXMgYW5kIHNlbmQgbWVzc2FnZSB0byBtYWlsYm94XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMtNDQwMy0gKiBAYWRhcHRlcjogRHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmxfcHRwLmM9MTY9aW50IGlkcGZfcHRwX2dldF9jYXBzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmxfcHRwLmMtNjItXFx0LyogaWYgdGhlIHB0cF9tYl9xX2lkIGhvbGRzIGludmFsaWQgdmFsdWUgKDB4ZmZmZiksIHRoZSBzZWNvbmRhcnlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmxfcHRwLmM6NjM6XFx0ICogbWFpbGJveCBpcyBub3Qgc3VwcG9ydGVkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubF9wdHAuYy02NC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg9NDgxPVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDgsIHZpcnRjaG5sMl92ZXJzaW9uX2luZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC00OTAtICogQG90aGVyX2NhcHM6IFNlZSBlbnVtIHZpcnRjaG5sMl9jYXBfb3RoZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo0OTE6ICogQG1haWxib3hfZHluX2N0bDogRFlOX0NUTCByZWdpc3RlciBvZmZzZXQgYW5kIHZlY3RvciBpZCBmb3IgbWFpbGJveFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNDkyLSAqXFx0XFx0ICAgICBwcm92aWRlZCBieSBDUC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjQ5MzogKiBAbWFpbGJveF92ZWN0b3JfaWQ6IE1haWxib3ggdmVjdG9yIGlkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNDk0LSAqIEBudW1fYWxsb2NhdGVkX3ZlY3RvcnM6IE1heGltdW0gbnVtYmVyIG9mIGFsbG9jYXRlZCB2ZWN0b3JzIGZvciB0aGUgZGV2aWNlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01MjctICogSWYgZGF0YXBsYW5lIGRyaXZlciBzZXRzIG51bV9hbGxvY2F0ZWRfdmVjdG9ycyBhcyAwLCBDUCB3aWxsIHJlc3BvbmQgd2l0aCAxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1Mjg6ICogd2hpY2ggaXMgZGVmYXVsdCB2ZWN0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZWZhdWx0IG1haWxib3guIEZvciBhbnkgb3RoZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTUyOS0gKiB2YWx1ZSAnbicsIENQIHJlc3BvbmRzIHdpdGggYSB2YWx1ZSBcXHUwMDNjPSBuIGJhc2VkIG9uIHRoZSBDUCdzIHBvbGljeSBvZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtNTMwLSAqIG1heCBudW1iZXIgb2YgdmVjdG9ycyBmb3IgYSBQRi5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjUzMTogKiBDUCB3aWxsIHJlc3BvbmQgd2l0aCB0aGUgdmVjdG9yIElEIG9mIG1haWxib3ggYWxsb2NhdGVkIHRvIHRoZSBQRiBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6NTMyOiAqIG1haWxib3hfdmVjdG9yX2lkIGFuZCB0aGUgbnVtYmVyIG9mIGl0ciBpbmRleCByZWdpc3RlcnMgaW4gaXRyX2lkeF9tYXAuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01MzMtICogSXQgYWxzbyByZXNwb25kcyB3aXRoIGRlZmF1bHQgbnVtYmVyIG9mIHZwb3J0cyB0aGF0IHRoZSBkYXRhcGxhbmUgZHJpdmVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oPTUzOT1zdHJ1Y3QgdmlydGNobmwyX2dldF9jYXBhYmlsaXRpZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01NDUtXFx0X19sZTY0IG90aGVyX2NhcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDo1NDY6XFx0X19sZTMyIG1haWxib3hfZHluX2N0bDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjU0NzpcXHRfX2xlMTYgbWFpbGJveF92ZWN0b3JfaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC01NDgtXFx0X19sZTE2IG51bV9hbGxvY2F0ZWRfdmVjdG9ycztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg9MTA1Mj1WSVJUQ0hOTDJfQ0hFQ0tfU1RSVUNUX0xFTig2LCB2aXJ0Y2hubDJfcHR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMDcwLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDoxMDcxOiAqIElmIGFsbCB0aGUgcHR5cGVzIGRvbid0IGZpdCBpbnRvIG9uZSBtYWlsYm94IGJ1ZmZlciwgQ1Agc3BsaXRzIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTA3Mi0gKiBwdHlwZSBpbmZvIGludG8gbXVsdGlwbGUgbWVzc2FnZXMsIHdoZXJlIGVhY2ggbWVzc2FnZSB3aWxsIGhhdmUgaXRzIG93blxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xMzQxPVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDgsIHZpcnRjaG5sMl9wcm9taXNjX2luZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzQ2LSAqXFx0XFx0XFx0XFx0XFx0ICAgZGV2aWNlIGNsb2NrXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaDoxMzQ3OiAqIEBWSVJUQ0hOTDJfQ0FQX1BUUF9HRVRfREVWSUNFX0NMS19USU1FX01COiBtYWlsYm94IGFjY2VzcyB0byBnZXQgdGhlIHRpbWUgb2ZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNDgtICpcXHRcXHRcXHRcXHRcXHQgICAgICBkZXZpY2UgY2xvY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNDktICogQFZJUlRDSE5MMl9DQVBfUFRQX0dFVF9DUk9TU19USU1FOiBkaXJlY3QgYWNjZXNzIHRvIGNyb3NzIHRpbWVzdGFtcFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM1MDogKiBAVklSVENITkwyX0NBUF9QVFBfR0VUX0NST1NTX1RJTUVfTUI6IG1haWxib3ggYWNjZXNzIHRvIGNyb3NzIHRpbWVzdGFtcFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM1MS0gKiBAVklSVENITkwyX0NBUF9QVFBfU0VUX0RFVklDRV9DTEtfVElNRTogZGlyZWN0IGFjY2VzcyB0byBzZXQgdGhlIHRpbWUgb2ZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNTItICpcXHRcXHRcXHRcXHRcXHQgICBkZXZpY2UgY2xvY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNTM6ICogQFZJUlRDSE5MMl9DQVBfUFRQX1NFVF9ERVZJQ0VfQ0xLX1RJTUVfTUI6IG1haWxib3ggYWNjZXNzIHRvIHNldCB0aGUgdGltZSBvZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM1NC0gKlxcdFxcdFxcdFxcdFxcdCAgICAgIGRldmljZSBjbG9ja1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzU2LSAqXFx0XFx0XFx0XFx0ICAgICAgY2xvY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNTc6ICogQFZJUlRDSE5MMl9DQVBfUFRQX0FESl9ERVZJQ0VfQ0xLX01COiBtYWlsYm94IGFjY2VzcyB0byBhZGp1c3QgdGhlIHRpbWUgb2ZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNTgtICpcXHRcXHRcXHRcXHRcXHQgZGV2aWNlIGNsb2NrXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaC0xMzU5LSAqIEBWSVJUQ0hOTDJfQ0FQX1BUUF9UWF9UU1RBTVBTOiBkaXJlY3QgYWNjZXNzIHRvIHRoZSBUeCB0aW1lc3RhbXBpbmdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oOjEzNjA6ICogQFZJUlRDSE5MMl9DQVBfUFRQX1RYX1RTVEFNUFNfTUI6IG1haWxib3ggYWNjZXNzIHRvIHRoZSBUeCB0aW1lc3RhbXBpbmdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNjEtICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTEzNjItICogUEYvVkYgbmVnb3RpYXRlcyBhIHNldCBvZiBzdXBwb3J0ZWQgUFRQIGNhcGFiaWxpdGllcyB3aXRoIHRoZSBDb250cm9sIFBsYW5lLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTM2MzogKiBUaGVyZSBhcmUgdHdvIGFjY2VzcyBtZXRob2RzIC0gbWFpbGJveCAoX01CKSBhbmQgZGlyZWN0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmgtMTM2NC0gKiBQVFAgY2FwYWJpbGl0aWVzIGVuYWJsZXMgTWFpbiBUaW1lciBvcGVyYXRpb25zOiBnZXQvc2V0L2FkanVzdCBNYWluIFRpbWVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi92aXJ0Y2hubDIuaD0xNDg1PVZJUlRDSE5MMl9DSEVDS19TVFJVQ1RfTEVOKDE2LCB2aXJ0Y2hubDJfcHRwX2dldF92cG9ydF90eF90c3RhbXBfY2Fwcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTE0OTQtICogQHNlY29uZGFyeV9tYng6IEluZGljYXRlcyB0byB0aGUgZHJpdmVyIHRoYXQgaXQgc2hvdWxkIGNyZWF0ZSBhIHNlY29uZGFyeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvdmlydGNobmwyLmg6MTQ5NTogKlxcdFxcdCAgIG1haWxib3ggdG8gaW5ldHJhY3Qgd2l0aCBjb250cm9sIHBsYW5lIGZvciBQVFBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3ZpcnRjaG5sMi5oLTE0OTYtICogQHBhZDogUGFkZGluZyBmb3IgZnV0dXJlIGV4dGVuc2lvbnNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDU6MTYuNjUyMTgyMDEyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MTU4ODQ2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBBbmFseXppbmcgdGhlIElEUEYgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBpZHBmYCBkcml2ZXIgcmVsaWVzIG9uIGEgbWFpbGJveCBzeXN0ZW0gZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgQ29udHJvbCBQbGFuZSAoQ1ApLiBUaGlzIG1haWxib3ggaGFzIHRvIGJlIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCB2aWEgYGlkcGZfaW5pdF9kZmx0X21ieGAgYmVmb3JlIGFueXRoaW5nIGVsc2UgY2FuIGhhcHBlbi4gSWYgdGhhdCBpbml0aWFsIHNldHVwIGZhaWxzLCB0aGUgZHJpdmVyJ3MgYGlkcGZfcHJvYmVgIHdpbGwgYWxzbyBmYWlsLCBhbmQgd2UncmUgZGVhZCBpbiB0aGUgd2F0ZXIuXG5cblRoZSBpc3N1ZSBpcyB0aGF0IFN5emthbGxlcidzIFBDSSBmdXp6ZXIgY2FuJ3QgcmVhbGlzdGljYWxseSByZXBsaWNhdGUgdGhlIGNvbXBsZXhpdGllcyBvZiB0aGlzIG1haWxib3ggcHJvdG9jb2wsIHdoaWNoIGFwcGFyZW50bHkgaW52b2x2ZXMgRE1BIHJpbmdzIGFuZCBpbnRlcnJ1cHRzLiBUaGVyZWZvcmUsIHRoZSBkcml2ZXIgaXMgZ29pbmcgdG8gZmFpbCBwcm9iZSAqdmVyeSogZWFybHkgaW4gdGhlIHByb2Nlc3MsIG9yIGF0IGxlYXN0IGluaXRpYWxpemF0aW9uLiBCZWNhdXNlIG9mIHRoaXMsIHRoZSBuZXRkZXYgd29uJ3QgZ2V0IHJlZ2lzdGVyZWQuIElmIHRoYXQgZG9lc24ndCBoYXBwZW4sIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb24gYGlkcGZfdnBvcnRfb3BlbmAgaXNuJ3QgZ29pbmcgdG8gYmUgY2FsbGVkLiBBbmQgaWYgdGhhdCBkb2Vzbid0IG9jY3VyLCB0aGVuIG5laXRoZXIgd2lsbCB0aGUgYGlkcGZfdnBvcnRfaW50cl9hbGxvY2Agbm9yIGBpZHBmX3Zwb3J0X2ludHJfZGVpbml0YCBmdW5jdGlvbnMuIFRoaXMgbWVhbnMgdGhlc2UgcGF0aHMgYXJlIHNpbXBseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggdGhlIGZ1enplci5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpczogbGV0IG1lIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBvdGhlciB3YXkgdG8gcmVhY2ggdGhpcyBjb2RlLiBJcyBpdCBwb3NzaWJsZSB0aGF0IGBpZHBmYCBpcyBhY3R1YWxseSBhIHZpcnR1YWwgZHJpdmVyIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdmlhIG5ldGxpbms/IE5vcGUsIGl0J3MgZXhwbGljaXRseSBhIFBDSSBkcml2ZXIuIE9rLCBhbnkgY2hhbmNlIGl0J3MgdXNlZCBpbiBzb21lIHNwZWNpZmljIGVudmlyb25tZW50P1xuXG5UaGUgcHJvbXB0IHNwZWNpZmllcyB0aGF0IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgU2luY2UgdGhlIElEUEYgaXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLCBpdCBjb21wbGV0ZWx5IGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeSwgbWVhbmluZyBpdCBjYW5ub3QgYmUgcmVhY2hlZCBhdCBhbGwsIGFuZCB0aHVzIGl0IGNhbm5vdCBiZSBmdXp6ZWQuXG5cblRoZXJlZm9yZSwgY29uc2lkZXJpbmcgdGhlIGluaGVyZW50IGRlcGVuZGVuY3kgb24gYSBmdW5jdGlvbmFsIG1haWxib3ggcHJvdG9jb2wgYW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCBJJ20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aGlzIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA5MCwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMjA6MDU6MjQuMDY4MDY4ODE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiAoSURQRikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBhbmQgaXQgcmVxdWlyZXMgY29tcGxleCBtYWlsYm94IGNvbW11bmljYXRpb24gd2l0aCBhIENvbnRyb2wgUGxhbmUgdG8gaW5pdGlhbGl6ZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW50ZXJydXB0IGFsbG9jYXRpb24gYW5kIGRlaW5pdGlhbGl6YXRpb24pIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiAoSURQRikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBhbmQgaXQgcmVxdWlyZXMgY29tcGxleCBtYWlsYm94IGNvbW11bmljYXRpb24gd2l0aCBhIENvbnRyb2wgUGxhbmUgdG8gaW5pdGlhbGl6ZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW50ZXJydXB0IGFsbG9jYXRpb24gYW5kIGRlaW5pdGlhbGl6YXRpb24pIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow67c69[1] Phase: Running StartedAt: 2026-07-20 20:07:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow67c69[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-20 20:07:17 +0000 UTC FinishedAt: 2026-07-20 20:07:28 +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,}