Name: series-workflowb6jgv Phase: Failed StartedAt: 2026-09-06 10:44:42 +0000 UTC FinishedAt: 2026-09-06 11:30:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6jgv[0] Phase: Succeeded StartedAt: 2026-09-06 10:44:42 +0000 UTC FinishedAt: 2026-09-06 11:29:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6jgv[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 10:44:42 +0000 UTC FinishedAt: 2026-09-06 11:29:54 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTAwMjIyZTgwOGYxOGMzOGU2Nzk5MmU3NDY4NGY5YThiNTkyZjEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMTE6Mjk6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbmV0ZnMvaW50ZXJuYWwuaCBiL2ZzL25ldGZzL2ludGVybmFsLmhcbmluZGV4IDQyMGVlN2IyNjU4MGYuLjQyNWM3M2I3ZTc3YjQgMTAwNjQ0XG4tLS0gYS9mcy9uZXRmcy9pbnRlcm5hbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9uZXRmcy9pbnRlcm5hbC5oXG5AQCAtNDY4LDYgJiM0Mzs0NjgsMzIgQEAgdm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7XG4gI2RlZmluZSBrbGVhdmUoRk1ULCAuLi4pIGRiZ3ByaW50ayhcJiMzNDtcdTAwM2M9PSAlcygpXCYjMzQ7Rk1UXCYjMzQ7XCYjMzQ7LCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcbiAjZGVmaW5lIGtkZWJ1ZyhGTVQsIC4uLikgZGJncHJpbnRrKEZNVCwgIyNfX1ZBX0FSR1NfXylcbiBcbiYjNDM7I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NBQ0hFXHQwXG4mIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19DT09LSUVcdDFcbiYjNDM7I2RlZmluZSBGU0NBQ0hFX0RFQlVHX09CSkVDVFx0MlxuJiM0MzsjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT1BFUkFUSU9OXHQzXG4mIzQzO1xuJiM0MzsjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfRU5URVJcdDFcbiYjNDM7I2RlZmluZSBGU0NBQ0hFX1BPSU5UX0xFQVZFXHQyXG4mIzQzOyNkZWZpbmUgRlNDQUNIRV9QT0lOVF9ERUJVR1x0NFxuJiM0MztcbiYjNDM7I2lmbmRlZiBGU0NBQ0hFX0RFQlVHX0xFVkVMXG4mIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIERldGVybWluZSB3aGV0aGVyIGEgcGFydGljdWxhciBvcHRpb25hbCBkZWJ1Z2dpbmcgcG9pbnQgc2hvdWxkIGJlIGxvZ2dlZC5cbiYjNDM7ICogVGhyZWUgbGV2ZWxzIG9mIGluZGlyZWN0aW9uIGFyZSBuZWVkZWQgdG8gZXhwYW5kIEZTQ0FDSEVfREVCVUdfTEVWRUwgYmVmb3JlXG4mIzQzOyAqIGpvaW5pbmcgaXQgd2l0aCBpdHMgcHJlZml4LlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXFxcbiYjNDM7XHR1bmxpa2VseShuZXRmc19kZWJ1ZyBcdTAwMjYgXFxcbiYjNDM7XHRcdCAoRlNDQUNIRV9QT0lOVF8jI1BPSU5UIFx1MDAzY1x1MDAzYyAoRlNDQUNIRV9ERUJVR18gIyMgTEVWRUwgKiAzKSkpXG4mIzQzOyNkZWZpbmUgX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXFxcbiYjNDM7XHRfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVClcbiYjNDM7I2RlZmluZSBfX2RvX2tkZWJ1ZyhQT0lOVCkgXFxcbiYjNDM7XHRfX19kb19rZGVidWcoRlNDQUNIRV9ERUJVR19MRVZFTCwgUE9JTlQpXG4mIzQzO1xuICNpZmRlZiBfX0tERUJVR1xuICNkZWZpbmUgX2VudGVyKEZNVCwgLi4uKSBrZW50ZXIoRk1ULCAjI19fVkFfQVJHU19fKVxuICNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKVxuQEAgLTQ3NiwxOSAmIzQzOzUwMiwxOSBAQCB2b2lkIGZzY2FjaGVfY3JlYXRlX3ZvbHVtZShzdHJ1Y3QgZnNjYWNoZV92b2x1bWUgKnZvbHVtZSwgYm9vbCB3YWl0KTtcbiAjZWxpZiBkZWZpbmVkKENPTkZJR19ORVRGU19ERUJVRylcbiAjZGVmaW5lIF9lbnRlcihGTVQsIC4uLilcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcXFxuLVx0aWYgKG5ldGZzX2RlYnVnKVx0XHRcdFxcXG4mIzQzO1x0aWYgKF9fZG9fa2RlYnVnKEVOVEVSKSlcdFx0XHRcXFxuIFx0XHRrZW50ZXIoRk1ULCAjI19fVkFfQVJHU19fKTtcdFxcXG4gfSB3aGlsZSAoMClcbiBcbiAjZGVmaW5lIF9sZWF2ZShGTVQsIC4uLilcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcXFxuLVx0aWYgKG5ldGZzX2RlYnVnKVx0XHRcdFxcXG4mIzQzO1x0aWYgKF9fZG9fa2RlYnVnKExFQVZFKSlcdFx0XHRcXFxuIFx0XHRrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKTtcdFxcXG4gfSB3aGlsZSAoMClcbiBcbiAjZGVmaW5lIF9kZWJ1ZyhGTVQsIC4uLilcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcXFxuLVx0aWYgKG5ldGZzX2RlYnVnKVx0XHRcdFxcXG4mIzQzO1x0aWYgKF9fZG9fa2RlYnVnKERFQlVHKSlcdFx0XHRcXFxuIFx0XHRrZGVidWcoRk1ULCAjI19fVkFfQVJHU19fKTtcdFxcXG4gfSB3aGlsZSAoMClcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMToyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRlYnVnIGxvZ2dpbmcgbWFjcm9zIChfZW50ZXIsIF9sZWF2ZSwgX2RlYnVnKSBpbiBmcy9uZXRmcy9pbnRlcm5hbC5oIHRvIHN1cHBvcnQgZmluZS1ncmFpbmVkIGRlYnVnIGxldmVsIGJpdG1hc2sgZmlsdGVyaW5nLiBJdCBjb25zdGl0dXRlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGNoYW5nZXMgYW5kIGRvZXMgbm90IGFsdGVyIGV4ZWN1dGFibGUgY29udHJvbCBmbG93LCBkYXRhIHN0cnVjdHVyZXMsIHN0YXRlIG1hbmFnZW1lbnQsIG9yIHJ1bnRpbWUgYXNzZXJ0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMDAyMjJlODA4ZjE4YzM4ZTY3OTkyZTc0Njg0ZjlhOGI1OTJmMTA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAxMToyOTowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL25ldGZzL2ludGVybmFsLmggYi9mcy9uZXRmcy9pbnRlcm5hbC5oCmluZGV4IDQyMGVlN2IyNjU4MGYuLjQyNWM3M2I3ZTc3YjQgMTAwNjQ0Ci0tLSBhL2ZzL25ldGZzL2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbmV0ZnMvaW50ZXJuYWwuaApAQCAtNDY4LDYgJiM0Mzs0NjgsMzIgQEAgdm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7CiAjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKCYjMzQ7Jmx0Oz09ICVzKCkmIzM0O0ZNVCYjMzQ7JiMzNDssIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBrZGVidWcoRk1ULCAuLi4pIGRiZ3ByaW50ayhGTVQsICMjX19WQV9BUkdTX18pCiAKJiM0MzsjZGVmaW5lIEZTQ0FDSEVfREVCVUdfQ0FDSEUJMAomIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19DT09LSUUJMQomIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19PQkpFQ1QJMgomIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19PUEVSQVRJT04JMwomIzQzOwomIzQzOyNkZWZpbmUgRlNDQUNIRV9QT0lOVF9FTlRFUgkxCiYjNDM7I2RlZmluZSBGU0NBQ0hFX1BPSU5UX0xFQVZFCTIKJiM0MzsjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfREVCVUcJNAomIzQzOwomIzQzOyNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTAomIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRQomIzQzOyNlbmRpZgomIzQzOwomIzQzOy8qCiYjNDM7ICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIG9wdGlvbmFsIGRlYnVnZ2luZyBwb2ludCBzaG91bGQgYmUgbG9nZ2VkLgomIzQzOyAqIFRocmVlIGxldmVscyBvZiBpbmRpcmVjdGlvbiBhcmUgbmVlZGVkIHRvIGV4cGFuZCBGU0NBQ0hFX0RFQlVHX0xFVkVMIGJlZm9yZQomIzQzOyAqIGpvaW5pbmcgaXQgd2l0aCBpdHMgcHJlZml4LgomIzQzOyAqLwomIzQzOyNkZWZpbmUgX19fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFwKJiM0MzsJdW5saWtlbHkobmV0ZnNfZGVidWcgJmFtcDsgXAomIzQzOwkJIChGU0NBQ0hFX1BPSU5UXyMjUE9JTlQgJmx0OyZsdDsgKEZTQ0FDSEVfREVCVUdfICMjIExFVkVMICogMykpKQomIzQzOyNkZWZpbmUgX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXAomIzQzOwlfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkKJiM0MzsjZGVmaW5lIF9fZG9fa2RlYnVnKFBPSU5UKSBcCiYjNDM7CV9fX2RvX2tkZWJ1ZyhGU0NBQ0hFX0RFQlVHX0xFVkVMLCBQT0lOVCkKJiM0MzsKICNpZmRlZiBfX0tERUJVRwogI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pIGtlbnRlcihGTVQsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIF9sZWF2ZShGTVQsIC4uLikga2xlYXZlKEZNVCwgIyNfX1ZBX0FSR1NfXykKQEAgLTQ3NiwxOSAmIzQzOzUwMiwxOSBAQCB2b2lkIGZzY2FjaGVfY3JlYXRlX3ZvbHVtZShzdHJ1Y3QgZnNjYWNoZV92b2x1bWUgKnZvbHVtZSwgYm9vbCB3YWl0KTsKICNlbGlmIGRlZmluZWQoQ09ORklHX05FVEZTX0RFQlVHKQogI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pCQkJXAogZG8gewkJCQkJCVwKLQlpZiAobmV0ZnNfZGVidWcpCQkJXAomIzQzOwlpZiAoX19kb19rZGVidWcoRU5URVIpKQkJCVwKIAkJa2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXyk7CVwKIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKQkJCVwKIGRvIHsJCQkJCQlcCi0JaWYgKG5ldGZzX2RlYnVnKQkJCVwKJiM0MzsJaWYgKF9fZG9fa2RlYnVnKExFQVZFKSkJCQlcCiAJCWtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pOwlcCiB9IHdoaWxlICgwKQogCiAjZGVmaW5lIF9kZWJ1ZyhGTVQsIC4uLikJCQlcCiBkbyB7CQkJCQkJXAotCWlmIChuZXRmc19kZWJ1ZykJCQlcCiYjNDM7CWlmIChfX2RvX2tkZWJ1ZyhERUJVRykpCQkJXAogCQlrZGVidWcoRk1ULCAjI19fVkFfQVJHU19fKTsJXAogfSB3aGlsZSAoMCkKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDEwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGJyZWFrIGRvd24gdGhlIGNoYW5nZXMgYW5kIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIG5ldHdvcmsgZmlsZXN5c3RlbS4gVGhlIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gZXhhbWluZSB0aGUgc3BlY2lmaWMgY29kZSBtb2RpZmljYXRpb25zLgoKSSBzZWUgdGhlIHBhdGNoIHRhcmdldHMgYGZzL25ldGZzL2ludGVybmFsLmhgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGRlYnVnIG1hY3Jvcy4gSSYjMzk7bSBub3RpbmcgdGhlIG5ldyBkZWZpbml0aW9ucyBmb3IgYEZTQ0FDSEVfREVCVUdfKmAsIGBGU0NBQ0hFX1BPSU5UXypgLCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBgX19fX2RvX2tkZWJ1Z2AsIGFuZCBgX19fZG9fa2RlYnVnYC4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9jayBgI2VsaWYgZGVmaW5lZChDT05GSUdfTkVURlNfREVCVUcpYC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBleGlzdGluZyBkZWJ1Z2dpbmcgbWFjcm9zLCBgX2VudGVyYCwgYF9sZWF2ZWAsIGFuZCBgX2RlYnVnYCwgdG8gbm93IGNoZWNrIHRoZSBvdXRwdXQgb2YgdGhlIGBfX2RvX2tkZWJ1ZyguLi4pYCBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3RseSB1c2luZyBgbmV0ZnNfZGVidWdgLgoKTm93LCBiZWZvcmUgSSBtYWtlIGFueSBkZWZpbml0aXZlIGNvbmNsdXNpb25zLCBJIG5lZWQgYSBjbG9zZXIgbG9vayBhdCB0aGUgYGZzL25ldGZzL2ludGVybmFsLmhgIGZpbGUgaXRzZWxmLiBJJiMzOTtsbCB1c2UgbXkgZmlsZS1yZWFkaW5nIHRvb2xzIHRvIHplcm8gaW4gb24gdGhvc2Ugc3BlY2lmaWMgbGluZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBleGlzdGluZyBkZWJ1ZyBpbmZyYXN0cnVjdHVyZSBpcyBjcml0aWNhbCB0byBldmFsdWF0aW5nIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYWx0ZXJhdGlvbnMuIEkgbmVlZCB0byBzZWUgaG93IGBuZXRmc19kZWJ1Z2Agd2FzIHByZXZpb3VzbHkgdXNlZCwgYW5kIGhvdyBgX19kb19rZGVidWdgIGlzIGludGVuZGVkIHRvIGludGVncmF0ZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGEgc2ltcGxlIHJlZmFjdG9yaW5nLCBhbiBvcHRpbWl6YXRpb24sIG9yIHNvbWV0aGluZyBtb3JlIHN1YnN0YW50aWFsIGxpa2UgYSBjaGFuZ2UgaW4gZGVidWdnaW5nIGxldmVsIG9yIG91dHB1dCBtZWNoYW5pc20uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9uZXRmcy9pbnRlcm5hbC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gNDYxOlx0LypcbiA0NjI6XHQgKiBkZWJ1ZyB0cmFjaW5nXG4gNDYzOlx0ICovXG4gNDY0Olx0I2RlZmluZSBkYmdwcmludGsoRk1ULCAuLi4pIFxcXG4gNDY1Olx0XHRwcmludGsoXCYjMzQ7WyUtNi42c10gXCYjMzQ7Rk1UXCYjMzQ7XFxuXCYjMzQ7LCBjdXJyZW50LVx1MDAzZWNvbW0sICMjX19WQV9BUkdTX18pXG4gNDY2Olx0XG4gNDY3Olx0I2RlZmluZSBrZW50ZXIoRk1ULCAuLi4pIGRiZ3ByaW50ayhcJiMzNDs9PVx1MDAzZSAlcyhcJiMzNDtGTVRcJiMzNDspXCYjMzQ7LCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcbiA0Njg6XHQjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKFwmIzM0O1x1MDAzYz09ICVzKClcJiMzNDtGTVRcJiMzNDtcJiMzNDssIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKVxuIDQ2OTpcdCNkZWZpbmUga2RlYnVnKEZNVCwgLi4uKSBkYmdwcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxuIDQ3MDpcdFxuIDQ3MTpcdCNkZWZpbmUgRlNDQUNIRV9ERUJVR19DQUNIRVx0MFxuIDQ3MjpcdCNkZWZpbmUgRlNDQUNIRV9ERUJVR19DT09LSUVcdDFcbiA0NzM6XHQjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT0JKRUNUXHQyXG4gNDc0Olx0I2RlZmluZSBGU0NBQ0hFX0RFQlVHX09QRVJBVElPTlx0M1xuIDQ3NTpcdFxuIDQ3NjpcdCNkZWZpbmUgRlNDQUNIRV9QT0lOVF9FTlRFUlx0MVxuIDQ3NzpcdCNkZWZpbmUgRlNDQUNIRV9QT0lOVF9MRUFWRVx0MlxuIDQ3ODpcdCNkZWZpbmUgRlNDQUNIRV9QT0lOVF9ERUJVR1x0NFxuIDQ3OTpcdFxuIDQ4MDpcdCNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTFxuIDQ4MTpcdCNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRVxuIDQ4MjpcdCNlbmRpZlxuIDQ4MzpcdFxuIDQ4NDpcdC8qXG4gNDg1Olx0ICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIG9wdGlvbmFsIGRlYnVnZ2luZyBwb2ludCBzaG91bGQgYmUgbG9nZ2VkLlxuIDQ4NjpcdCAqIFRocmVlIGxldmVscyBvZiBpbmRpcmVjdGlvbiBhcmUgbmVlZGVkIHRvIGV4cGFuZCBGU0NBQ0hFX0RFQlVHX0xFVkVMIGJlZm9yZVxuIDQ4NzpcdCAqIGpvaW5pbmcgaXQgd2l0aCBpdHMgcHJlZml4LlxuIDQ4ODpcdCAqL1xuIDQ4OTpcdCNkZWZpbmUgX19fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFxcXG4gNDkwOlx0XHR1bmxpa2VseShuZXRmc19kZWJ1ZyBcdTAwMjYgXFxcbiA0OTE6XHRcdFx0IChGU0NBQ0hFX1BPSU5UXyMjUE9JTlQgXHUwMDNjXHUwMDNjIChGU0NBQ0hFX0RFQlVHXyAjIyBMRVZFTCAqIDMpKSlcbiA0OTI6XHQjZGVmaW5lIF9fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFxcXG4gNDkzOlx0XHRfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVClcbiA0OTQ6XHQjZGVmaW5lIF9fZG9fa2RlYnVnKFBPSU5UKSBcXFxuIDQ5NTpcdFx0X19fZG9fa2RlYnVnKEZTQ0FDSEVfREVCVUdfTEVWRUwsIFBPSU5UKVxuIDQ5NjpcdFxuIDQ5NzpcdCNpZmRlZiBfX0tERUJVR1xuIDQ5ODpcdCNkZWZpbmUgX2VudGVyKEZNVCwgLi4uKSBrZW50ZXIoRk1ULCAjI19fVkFfQVJHU19fKVxuIDQ5OTpcdCNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKVxuIDUwMDpcdCNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBrZGVidWcoRk1ULCAjI19fVkFfQVJHU19fKVxuIDUwMTpcdFxuIDUwMjpcdCNlbGlmIGRlZmluZWQoQ09ORklHX05FVEZTX0RFQlVHKVxuIDUwMzpcdCNkZWZpbmUgX2VudGVyKEZNVCwgLi4uKVx0XHRcdFxcXG4gNTA0Olx0ZG8ge1x0XHRcdFx0XHRcdFxcXG4gNTA1Olx0XHRpZiAoX19kb19rZGVidWcoRU5URVIpKVx0XHRcdFxcXG4gNTA2Olx0XHRcdGtlbnRlcihGTVQsICMjX19WQV9BUkdTX18pO1x0XFxcbiA1MDc6XHR9IHdoaWxlICgwKVxuIDUwODpcdFxuIDUwOTpcdCNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKVx0XHRcdFxcXG4gNTEwOlx0ZG8ge1x0XHRcdFx0XHRcdFxcXG4gNTExOlx0XHRpZiAoX19kb19rZGVidWcoTEVBVkUpKVx0XHRcdFxcXG4gNTEyOlx0XHRcdGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pO1x0XFxcbiA1MTM6XHR9IHdoaWxlICgwKVxuIDUxNDpcdFxuIDUxNTpcdCNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKVx0XHRcdFxcXG4gNTE2Olx0ZG8ge1x0XHRcdFx0XHRcdFxcXG4gNTE3Olx0XHRpZiAoX19kb19rZGVidWcoREVCVUcpKVx0XHRcdFxcXG4gNTE4Olx0XHRcdGtkZWJ1ZyhGTVQsICMjX19WQV9BUkdTX18pO1x0XFxcbiA1MTk6XHR9IHdoaWxlICgwKVxuIDUyMDpcdFxuIDUyMTpcdCNlbHNlXG4gNTIyOlx0I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pIG5vX3ByaW50ayhcJiMzNDs9PVx1MDAzZSAlcyhcJiMzNDtGTVRcJiMzNDspXCYjMzQ7LCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcbiA1MjM6XHQjZGVmaW5lIF9sZWF2ZShGTVQsIC4uLikgbm9fcHJpbnRrKFwmIzM0O1x1MDAzYz09ICVzKClcJiMzNDtGTVRcJiMzNDtcJiMzNDssIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKVxuIDUyNDpcdCNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBub19wcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxuIDUyNTpcdCNlbmRpZlxuIDUyNjpcdFxuIDUyNzpcdC8qXG4gNTI4Olx0ICogYXNzZXJ0aW9uc1xuIDUyOTpcdCAqL1xuIDUzMDpcdCNpZiAxIC8qIGRlZmluZWQoX19LREVCVUdBTEwpICovXG4gNTMxOlx0XG4gNTMyOlx0I2RlZmluZSBBU1NFUlQoWClcdFx0XHRcdFx0XHRcdFxcXG4gNTMzOlx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gNTM0Olx0XHRpZiAodW5saWtlbHkoIShYKSkpIHtcdFx0XHRcdFx0XHRcXFxuIDUzNTpcdFx0XHRwcl9lcnIoXCYjMzQ7XFxuXCYjMzQ7KTtcdFx0XHRcdFx0XFxcbiA1MzY6XHRcdFx0cHJfZXJyKFwmIzM0O0Fzc2VydGlvbiBmYWlsZWRcXG5cJiMzNDspO1x0XFxcbiA1Mzc6XHRcdFx0QlVHKCk7XHRcdFx0XHRcdFx0XHRcXFxuIDUzODpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuIDUzOTpcdH0gd2hpbGUgKDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIwNgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlc2UgYXJlIHNpbXBseSBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyDigJMgYGRiZ3ByaW50a2Agc3BlY2lmaWNhbGx5LiBOb3csIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBleGFtaW5lIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBvdXRsaW5lZC4gSSYjMzk7bSBmb2N1c2luZyBvbiBhcmVhcyB3aGVyZSBjaGFuZ2VzIGFyZSB0eXBpY2FsbHkgKm5vdCogYWNjZXB0ZWQuCgpUaGUgcHJvbXB0IHN0YXRlczogbm8gY2hhbmdlcyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIHNwZWxsaW5nLCB1c2VyLXNwYWNlLCBub24tZXhlY3V0YWJsZSwgZGVjb3JhdGl2ZSBsb2dnaW5nIG9yIHRyYWNlcG9pbnRzIGFuZCBubyBidWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG9uJiMzOTt0IGNoYW5nZSBjb21waWxlZCBDIGxvZ2ljLiBBbHJpZ2h0LCB0aGF0JiMzOTtzIGNsZWFyLgoKU28sIHNpbmNlIHRoZXNlIG1hY3JvcyBhcmUgKnByb2JhYmx5KiBqdXN0IHVzZWQgZm9yIGxvZ2dpbmcsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uLiBUaGUgY2hhbmdlcyBhcmUgcHJvYmFibHkgbm90IGltcG9ydGFudC4KCkxldCYjMzk7cyBkbyBhIGRlZXBlciBkaXZlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbWFjcm9zIGFyZSBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBhIGNvdXBsZSBvZiBwbGFjZXMsIGxpa2UgYGZzL25ldGZzYCBhbmQgYGZzL2ZzY2FjaGVgLiBJJiMzOTtsbCBhbHNvIGRvIGEgZ2VuZXJhbCBzZWFyY2ggdG8gc2VlIHdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbCB0aGVzZSBsb2dnaW5nIG1hY3JvcyBhcmUgdXNlZCwgYW5kIG1heWJlIGFsc28gZ3JlcCBmb3IgYW55IHJlbGF0ZWQgZGVidWcgbGV2ZWxzIOKAkyBsaWtlIGBGU0NBQ0hFX0RFQlVHX0xFVkVMYCBvciBgbmV0ZnNfZGVidWdgIOKAkyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIHNob3VsZCB0ZWxsIG1lIHF1aWNrbHkgaWYgdGhlc2UgYXJlIHNpbXBseSBkZXNjcmlwdGl2ZSwgb3IgaWYgdGhlcmUmIzM5O3MgYW55IGFsdGVyYXRpb24gb2YgY29udHJvbCBmbG93LCBkYXRhIHN0cnVjdHVyZXMsIG9yIGJ1aWxkIGxvZ2ljIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZTQ0FDSEVfREVCVUdfTEVWRUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTctXG5mcy9uZXRmcy9mc2NhY2hlX2NhY2hlLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMC1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6MTE6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENPT0tJRVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMi0jaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy02LSAqL1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjc6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIE9QRVJBVElPTlxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTgtI2luY2x1ZGUgXHUwMDNjbGludXgvZnNjYWNoZS1jYWNoZS5oXHUwMDNlXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9tYWluLmMtNy1cbmZzL25ldGZzL2ZzY2FjaGVfbWFpbi5jOjg6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9wcm9jLmMtNy1cbmZzL25ldGZzL2ZzY2FjaGVfcHJvYy5jOjg6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXG5mcy9uZXRmcy9mc2NhY2hlX3Byb2MuYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9zdGF0cy5jLTctXG5mcy9uZXRmcy9mc2NhY2hlX3N0YXRzLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcbmZzL25ldGZzL2ZzY2FjaGVfc3RhdHMuYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb2NfZnMuaFx1MDAzZVxuLS1cbmZzL25ldGZzL2ZzY2FjaGVfdm9sdW1lLmMtNy1cbmZzL25ldGZzL2ZzY2FjaGVfdm9sdW1lLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ09PS0lFXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTktI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2Vcbi0tXG5mcy9uZXRmcy9pbnRlcm5hbC5oPTQ1OD12b2lkIGZzY2FjaGVfY3JlYXRlX3ZvbHVtZShzdHJ1Y3QgZnNjYWNoZV92b2x1bWUgKnZvbHVtZSwgYm9vbCB3YWl0KTtcbi0tXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ3OS1cbmZzL25ldGZzL2ludGVybmFsLmg6NDgwOiNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo0ODE6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ4Mi0jZW5kaWZcbi0tXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ4NS0gKiBEZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgb3B0aW9uYWwgZGVidWdnaW5nIHBvaW50IHNob3VsZCBiZSBsb2dnZWQuXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ4NjogKiBUaHJlZSBsZXZlbHMgb2YgaW5kaXJlY3Rpb24gYXJlIG5lZWRlZCB0byBleHBhbmQgRlNDQUNIRV9ERUJVR19MRVZFTCBiZWZvcmVcbmZzL25ldGZzL2ludGVybmFsLmgtNDg3LSAqIGpvaW5pbmcgaXQgd2l0aCBpdHMgcHJlZml4LlxuLS1cbmZzL25ldGZzL2ludGVybmFsLmgtNDk0LSNkZWZpbmUgX19kb19rZGVidWcoUE9JTlQpIFxcXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ5NTpcdF9fX2RvX2tkZWJ1ZyhGU0NBQ0hFX0RFQlVHX0xFVkVMLCBQT0lOVClcbmZzL25ldGZzL2ludGVybmFsLmgtNDk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEZWJ1ZyBMb2dnaW5nIGluIGBmcy9uZXRmc2AqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGVzZSBtYWNyb3Mg4oCTIGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgIOKAkyBhcmUgYmFzaWNhbGx5IGp1c3QgZ2xvcmlmaWVkIHByaW50IHN0YXRlbWVudHMuIFRoZXkmIzM5O3JlIHVsdGltYXRlbHkgY2FsbGluZyBgZGJncHJpbnRrYCwgd2hpY2ggdGhlbiByZXNvbHZlcyB0byBgcHJpbnRrYC4gRXNzZW50aWFsbHksIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGRlYnVnIGxvZ2dpbmcgaGVyZSwgbm90aGluZyBtb3JlLgoKVGhlIGNoYW5nZSBmb2N1c2VzIG9uIGFkanVzdGluZyB0aGUgYml0bWFzayBjaGVjayB1c2VkIHRvIGNvbnRyb2wgd2hldGhlciB0aGVzZSBkZWJ1ZyBwcmludCBzdGF0ZW1lbnRzIGdldCB0cmlnZ2VyZWQgYmFzZWQgb24gYENPTkZJR19ORVRGU19ERUJVR2AuIFRoZSBpbXBvcnRhbnQgcXVlc3Rpb24sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIG1vZGlmaWNhdGlvbiBoYXMgYW55IGltcGFjdCBvbiB0aGUgYWN0dWFsICpmdW5jdGlvbmFsaXR5KiBvZiB0aGUga2VybmVsIGNvZGUuCgpBbmQgYWZ0ZXIgYSBxdWljayByZXZpZXcsIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyAqbm8qLiBUaGVzZSBtYWNyb3MgZG9uJiMzOTt0IGFsdGVyIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYWNoaW5lcywgYXNzZXJ0aW9ucywgb3IgbG9naWMuIFRoZXkmIzM5O3JlIHNvbGVseSBmb3IgZGVidWcgcHJpbnRpbmcuIFRoZSBjb2RlJiMzOTtzIGV4ZWN1dGlvbiBwYXRoIHJlbWFpbnMgdGhlIHNhbWUgcmVnYXJkbGVzcy4KCk5leHQsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgZm9yIGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyB3aXRoaW4gYGZzL25ldGZzYCB3aGVyZSB0aGVzZSBtYWNyb3MgYXJlIGNhbGxlZCwganVzdCB0byBiZSB0aG9yb3VnaCwgYnV0IG15IGluaXRpYWwgYXNzZXNzbWVudCBzdWdnZXN0cyB0aGF0IHRoZXJlIHdvbiYjMzk7dCBiZSBhbnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2VudGVyXFwofF9sZWF2ZVxcKHxfZGVidWdcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZXRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTM5Nj1zdGF0aWMgaW50IG5ldGZzX3JlYWRfZ2FwcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNDEyLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jOjQxMzpcdF9lbnRlcihcJiMzNDslbHhcJiMzNDssIGZvbGlvLVx1MDAzZWluZGV4KTtcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy00MTQtXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTUwMT1pbnQgbmV0ZnNfcmVhZF9mb2xpbyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNTEyLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jOjUxMzpcdF9lbnRlcihcJiMzNDslbHhcJiMzNDssIGZvbGlvLVx1MDAzZWluZGV4KTtcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy01MTQtXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTYzMD1pbnQgbmV0ZnNfd3JpdGVfYmVnaW4oc3RydWN0IG5ldGZzX2lub2RlICpjdHgsXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTcwMy1cdCpfZm9saW8gPSBmb2xpbztcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MDQ6XHRfbGVhdmUoXCYjMzQ7ID0gMFwmIzM0Oyk7XG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNzA1LVx0cmV0dXJuIDA7XG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTcxMy1cdH1cbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MTQ6XHRfbGVhdmUoXCYjMzQ7ID0gJWRcJiMzNDssIHJldCk7XG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNzE1LVx0cmV0dXJuIHJldDtcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmM9NzIyPWludCBuZXRmc19wcmVmZXRjaF9mb3Jfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTczMS1cbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MzI6XHRfZW50ZXIoXCYjMzQ7JXp4IEAlbGx4XCYjMzQ7LCBmbGVuLCBzdGFydCk7XG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNzMzLVxuLS1cbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy03NjQtZXJyb3I6XG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmM6NzY1Olx0X2xlYXZlKFwmIzM0OyA9ICVkXCYjMzQ7LCByZXQpO1xuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTc2Ni1cdHJldHVybiByZXQ7XG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYz04Nz1zc2l6ZV90IG5ldGZzX3BlcmZvcm1fd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYy0yODYtXHRcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzoyODc6XHRcdFx0XHRfZGVidWcoXCYjMzQ7cHJlZmV0Y2ggPSAlemRcJiMzNDssIHJldCk7XG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTI4OC1cdFx0XHRcdGdvdG8gZXJyb3JfZm9saW9fdW5sb2NrO1xuLS1cbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNDMyLVx0aW9jYi1cdTAwM2VraV9wb3MgJiM0Mzs9IHdyaXR0ZW47XG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jOjQzMzpcdF9sZWF2ZShcJiMzNDsgPSAlemQgWyV6ZF1cJiMzNDssIHdyaXR0ZW4sIHJldCk7XG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTQzNC1cdHJldHVybiB3cml0dGVuID8gd3JpdHRlbiA6IHJldDtcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jPTUwMT1zc2l6ZV90IG5ldGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTUwNy1cbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM6NTA4Olx0X2VudGVyKFwmIzM0OyVsbHgsJXp4LCVsbHhcJiMzNDssIGlvY2ItXHUwMDNla2lfcG9zLCBpb3ZfaXRlcl9jb3VudChmcm9tKSwgaV9zaXplX3JlYWQoaW5vZGUpKTtcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNTA5LVxuLS1cbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM9NTM3PXZtX2ZhdWx0X3QgbmV0ZnNfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgbmV0ZnNfZ3JvdXAgKm5ldGZzX2dyb3VwKVxuLS1cbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNTQ4LVxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzo1NDk6XHRfZW50ZXIoXCYjMzQ7JWx4XCYjMzQ7LCBmb2xpby1cdTAwM2VpbmRleCk7XG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTU1MC1cbi0tXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jPTExMj1zdGF0aWMgc3NpemVfdCBuZXRmc191bmJ1ZmZlcmVkX3JlYWQoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEsIGJvb2wgc3luYylcbi0tXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jLTExNS1cbmZzL25ldGZzL2RpcmVjdF9yZWFkLmM6MTE2Olx0X2VudGVyKFwmIzM0O1I9JXggJWxseC0lbGx4XCYjMzQ7LFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYy0xMTctXHQgICAgICAgcnJlcS1cdTAwM2VkZWJ1Z19pZCwgcnJlcS1cdTAwM2VzdGFydCwgcnJlcS1cdTAwM2VzdGFydCAmIzQzOyBycmVxLVx1MDAzZWxlbiAtIDEpO1xuLS1cbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTM4LVxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYzoxMzk6XHRfbGVhdmUoXCYjMzQ7ID0gJXpkXCYjMzQ7LCByZXQpO1xuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYy0xNDAtXHRyZXR1cm4gcmV0O1xuLS1cbmZzL25ldGZzL2RpcmVjdF9yZWFkLmM9MTUzPXNzaXplX3QgbmV0ZnNfdW5idWZmZXJlZF9yZWFkX2l0ZXJfbG9ja2VkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKVxuLS1cbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTU5LVxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYzoxNjA6XHRfZW50ZXIoXCYjMzQ7XCYjMzQ7KTtcbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTYxLVxuLS1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jPTE1PXN0YXRpYyB2b2lkIG5ldGZzX3VuYnVmZmVyZWRfd3JpdGVfZG9uZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcbi0tXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0xOC1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jOjE5Olx0X2VudGVyKFwmIzM0O1I9JXhcJiMzNDssIHdyZXEtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjAtXG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtNDMtXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzo0NDpcdF9kZWJ1ZyhcJiMzNDtmaW5pc2hlZFwmIzM0Oyk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy00NS1cdG5ldGZzX3dha2VfcnJlcV9mbGFnKHdyZXEsIE5FVEZTX1JSRVFfSU5fUFJPR1JFU1MsIG5ldGZzX3JyZXFfdHJhY2Vfd2FrZV9pcCk7XG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM9OTQ9c3RhdGljIGludCBuZXRmc191bmJ1ZmZlcmVkX3dyaXRlKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICp3cmVxKVxuLS1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTk5LVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MTAwOlx0X2VudGVyKFwmIzM0OyVsbHhcJiMzNDssIHdyZXEtXHUwMDNlbGVuKTtcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTEwMS1cbi0tXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0xOTgtXHRuZXRmc191bmJ1ZmZlcmVkX3dyaXRlX2RvbmUod3JlcSk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzoxOTk6XHRfbGVhdmUoXCYjMzQ7ID0gJWRcJiMzNDssIHJldCk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMDAtXHRyZXR1cm4gcmV0O1xuLS1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jPTIxNT1zc2l6ZV90IG5ldGZzX3VuYnVmZmVyZWRfd3JpdGVfaXRlcl9sb2NrZWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjI0LVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MjI1Olx0X2VudGVyKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMjYtXG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjMyLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MjMzOlx0X2RlYnVnKFwmIzM0O3V3ICVsbHgtJWxseFwmIzM0Oywgc3RhcnQsIGVuZCk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMzQtXG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjkxLVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzoyOTI6XHRcdFx0X2RlYnVnKFwmIzM0O2JlZ2luID0gJXpkXCYjMzQ7LCByZXQpO1xuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjkzLVx0XHR9IGVsc2Uge1xuLS1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jPTMyMz1zc2l6ZV90IG5ldGZzX3VuYnVmZmVyZWRfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0zMzItXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzozMzM6XHRfZW50ZXIoXCYjMzQ7JWxseCwlengsJWxseFwmIzM0OywgcG9zLCBpb3ZfaXRlcl9jb3VudChmcm9tKSwgaV9zaXplX3JlYWQoaW5vZGUpKTtcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTMzNC1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2NhY2hlLmM9MjM0PWludCBmc2NhY2hlX2FkZF9jYWNoZShzdHJ1Y3QgZnNjYWNoZV9jYWNoZSAqY2FjaGUsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTIzOS1cbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYzoyNDA6XHRfZW50ZXIoXCYjMzQ7eyVzLCVzfVwmIzM0Oywgb3BzLVx1MDAzZW5hbWUsIGNhY2hlLVx1MDAzZW5hbWUpO1xuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTI0MS1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2NhY2hlLmMtMjU5LVx0cHJfbm90aWNlKFwmIzM0O0NhY2hlIFxcXCYjMzQ7JXNcXFwmIzM0OyBhZGRlZCAodHlwZSAlcylcXG5cJiMzNDssIGNhY2hlLVx1MDAzZW5hbWUsIG9wcy1cdTAwM2VuYW1lKTtcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYzoyNjA6XHRfbGVhdmUoXCYjMzQ7ID0gMCBbJXNdXCYjMzQ7LCBjYWNoZS1cdTAwM2VuYW1lKTtcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy0yNjEtXHRyZXR1cm4gMDtcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jPTQ1MD1zdHJ1Y3QgZnNjYWNoZV9jb29raWUgKl9fZnNjYWNoZV9hY3F1aXJlX2Nvb2tpZShcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ1OC1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NDU5Olx0X2VudGVyKFwmIzM0O1Y9JXhcJiMzNDssIHZvbHVtZS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ2MC1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ4Ni1cdGZzY2FjaGVfc3RhdChcdTAwMjZmc2NhY2hlX25fYWNxdWlyZXNfb2spO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo0ODc6XHRfbGVhdmUoXCYjMzQ7ID0gYz0lMDh4XCYjMzQ7LCBjb29raWUtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy00ODgtXHRyZXR1cm4gY29va2llO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9NTAzPXN0YXRpYyB2b2lkIGZzY2FjaGVfcGVyZm9ybV9sb29rdXAoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUpXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01MDctXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjUwODpcdF9lbnRlcihcJiMzNDtcJiMzNDspO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01MDktXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01MjEtXHRcdG5lZWRfd2l0aGRyYXcgPSB0cnVlO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo1MjI6XHRcdF9sZWF2ZShcJiMzNDsgW2ZhaWxdXCYjMzQ7KTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNTIzLVx0XHRnb3RvIG91dDtcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jPTU2OT12b2lkIF9fZnNjYWNoZV91c2VfY29va2llKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llLCBib29sIHdpbGxfbW9kaWZ5KVxuLS1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNTc0LVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo1NzU6XHRfZW50ZXIoXCYjMzQ7Yz0lMDh4XCYjMzQ7LCBjb29raWUtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01NzYtXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy02MzgtXHRcdGZzY2FjaGVfcXVldWVfY29va2llKGNvb2tpZSwgZnNjYWNoZV9jb29raWVfZ2V0X3VzZV93b3JrKTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NjM5Olx0X2xlYXZlKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTY0MC19XG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz03MDA9c3RhdGljIHZvaWQgZnNjYWNoZV9jb29raWVfc3RhdGVfbWFjaGluZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSlcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTcwNC1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NzA1Olx0X2VudGVyKFwmIzM0O2M9JXhcJiMzNDssIGNvb2tpZS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTcwNi1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTgyNi1cdFx0d2FrZV91cF9jb29raWVfc3RhdGUoY29va2llKTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6ODI3Olx0X2xlYXZlKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTgyOC19XG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz04NjA9c3RhdGljIHZvaWQgZnNjYWNoZV9jb29raWVfbHJ1X2RvX29uZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSlcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTg3My1cdFx0ZnNjYWNoZV9zdGF0KFx1MDAyNmZzY2FjaGVfbl9jb29raWVzX2xydV9leHBpcmVkKTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6ODc0Olx0XHRfZGVidWcoXCYjMzQ7bHJ1IGM9JXhcJiMzNDssIGNvb2tpZS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTg3NS1cdFx0X19mc2NhY2hlX3dpdGhkcmF3X2Nvb2tpZShjb29raWUpO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9OTcyPXZvaWQgX19mc2NhY2hlX3JlbGlucXVpc2hfY29va2llKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llLCBib29sIHJldGlyZSlcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTk3Ny1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6OTc4Olx0X2VudGVyKFwmIzM0O2M9JTA4eHslZH0sJWRcJiMzNDssXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTk3OS1cdCAgICAgICBjb29raWUtXHUwMDNlZGVidWdfaWQsIGF0b21pY19yZWFkKFx1MDAyNmNvb2tpZS1cdTAwM2VuX2FjdGl2ZSksIHJldGlyZSk7XG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz0xMDUxPXZvaWQgX19mc2NhY2hlX2ludmFsaWRhdGUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMDU2LVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMDU3Olx0X2VudGVyKFwmIzM0O2M9JXhcJiMzNDssIGNvb2tpZS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTEwNTgtXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMDc4LVx0XHRzcGluX3VubG9jayhcdTAwMjZjb29raWUtXHUwMDNlbG9jayk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjEwNzk6XHRcdF9sZWF2ZShcJiMzNDsgW25vICV1XVwmIzM0OywgY29va2llLVx1MDAzZXN0YXRlKTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA4MC1cdFx0cmV0dXJuO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA4Ny1cdFx0c3Bpbl91bmxvY2soXHUwMDI2Y29va2llLVx1MDAzZWxvY2spO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMDg4Olx0XHRfbGVhdmUoXCYjMzQ7IFtsb29rICV4XVwmIzM0OywgY29va2llLVx1MDAzZWludmFsX2NvdW50ZXIpO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMDg5LVx0XHRyZXR1cm47XG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMTAwLVx0XHRcdGZzY2FjaGVfcXVldWVfY29va2llKGNvb2tpZSwgZnNjYWNoZV9jb29raWVfZ2V0X2ludmFsX3dvcmspO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMTAxOlx0XHRfbGVhdmUoXCYjMzQ7IFtpbnZdXCYjMzQ7KTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTEwMi1cdFx0cmV0dXJuO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYz0yMj1ib29sIGZzY2FjaGVfd2FpdF9mb3Jfb3BlcmF0aW9uKHN0cnVjdCBuZXRmc19jYWNoZV9yZXNvdXJjZXMgKmNyZXMsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTI5LVx0aWYgKCFmc2NhY2hlX2NhY2hlX2lzX2xpdmUoY29va2llLVx1MDAzZXZvbHVtZS1cdTAwM2VjYWNoZSkpIHtcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYzozMDpcdFx0X2xlYXZlKFwmIzM0OyBbYnJva2VuXVwmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMzEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMzQtXHRzdGF0ZSA9IGZzY2FjaGVfY29va2llX3N0YXRlKGNvb2tpZSk7XG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6MzU6XHRfZW50ZXIoXCYjMzQ7Yz0lMDh4eyV1fSwleFwmIzM0OywgY29va2llLVx1MDAzZWRlYnVnX2lkLCBzdGF0ZSwgd2FudF9zdGF0ZSk7XG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMzYtXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTUzLVx0ZGVmYXVsdDpcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYzo1NDpcdFx0X2xlYXZlKFwmIzM0OyBbbm90IGxpdmVdXCYjMzQ7KTtcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy01NS1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYz03MD1zdGF0aWMgaW50IGZzY2FjaGVfYmVnaW5fb3BlcmF0aW9uKHN0cnVjdCBuZXRmc19jYWNoZV9yZXNvdXJjZXMgKmNyZXMsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTkzLVx0c3RhdGUgPSBmc2NhY2hlX2Nvb2tpZV9zdGF0ZShjb29raWUpO1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjk0Olx0X2VudGVyKFwmIzM0O2M9JTA4eHsldX0sJXhcJiMzNDssIGNvb2tpZS1cdTAwM2VkZWJ1Z19pZCwgc3RhdGUsIHdhbnRfc3RhdGUpO1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTk1LVxuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0xNDEtXHRmc2NhY2hlX2VuZF9jb29raWVfYWNjZXNzKGNvb2tpZSwgZnNjYWNoZV9hY2Nlc3NfaW9fbm90X2xpdmUpO1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjE0MjpcdF9sZWF2ZShcJiMzNDsgPSAtRU5PQlVGU1wmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMTQzLVx0cmV0dXJuIC1FTk9CVUZTO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYz0yMDk9dm9pZCBfX2ZzY2FjaGVfd3JpdGVfdG9fY2FjaGUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTIyMy1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYzoyMjQ6XHRfZW50ZXIoXCYjMzQ7JWxseCwlenhcJiMzNDssIHN0YXJ0LCBsZW4pO1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTIyNS1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYz0xMDA9dm9pZCBfX2V4aXQgZnNjYWNoZV9leGl0KHZvaWQpXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy0xMDEte1xuZnMvbmV0ZnMvZnNjYWNoZV9tYWluLmM6MTAyOlx0X2VudGVyKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy0xMDMtXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYz0yMTI9c3RhdGljIHN0cnVjdCBmc2NhY2hlX3ZvbHVtZSAqZnNjYWNoZV9hbGxvY192b2x1bWUoY29uc3QgY2hhciAqdm9sdW1lX2tleSxcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTI2NS1cdHVwX3dyaXRlKFx1MDAyNmZzY2FjaGVfYWRkcmVtb3ZlX3NlbSk7XG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jOjI2NjpcdF9sZWF2ZShcJiMzNDsgPSB2PSV4XCYjMzQ7LCB2b2x1bWUtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy0yNjctXHRyZXR1cm4gdm9sdW1lO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfdm9sdW1lLmM9NDYzPXZvaWQgZnNjYWNoZV93aXRoZHJhd192b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUpXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy00NjYtXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jOjQ2NzpcdF9kZWJ1ZyhcJiMzNDt3aXRoZHJhdyBWPSV4XCYjMzQ7LCB2b2x1bWUtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy00NjgtXG4tLVxuZnMvbmV0ZnMvaW50ZXJuYWwuaD00NTg9dm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7XG4tLVxuZnMvbmV0ZnMvaW50ZXJuYWwuaC00OTctI2lmZGVmIF9fS0RFQlVHXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ5ODojZGVmaW5lIF9lbnRlcihGTVQsIC4uLikga2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXylcbmZzL25ldGZzL2ludGVybmFsLmg6NDk5OiNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDA6I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pIGtkZWJ1ZyhGTVQsICMjX19WQV9BUkdTX18pXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTUwMS1cbmZzL25ldGZzL2ludGVybmFsLmgtNTAyLSNlbGlmIGRlZmluZWQoQ09ORklHX05FVEZTX0RFQlVHKVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDM6I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXHRcdFx0XFxcbmZzL25ldGZzL2ludGVybmFsLmgtNTA0LWRvIHtcdFx0XHRcdFx0XHRcXFxuLS1cbmZzL25ldGZzL2ludGVybmFsLmgtNTA4LVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDk6I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pXHRcdFx0XFxcbmZzL25ldGZzL2ludGVybmFsLmgtNTEwLWRvIHtcdFx0XHRcdFx0XHRcXFxuLS1cbmZzL25ldGZzL2ludGVybmFsLmgtNTE0LVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MTU6I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pXHRcdFx0XFxcbmZzL25ldGZzL2ludGVybmFsLmgtNTE2LWRvIHtcdFx0XHRcdFx0XHRcXFxuLS1cbmZzL25ldGZzL2ludGVybmFsLmgtNTIxLSNlbHNlXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjUyMjojZGVmaW5lIF9lbnRlcihGTVQsIC4uLikgbm9fcHJpbnRrKFwmIzM0Oz09XHUwMDNlICVzKFwmIzM0O0ZNVFwmIzM0OylcJiMzNDssIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MjM6I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIG5vX3ByaW50ayhcJiMzNDtcdTAwM2M9PSAlcygpXCYjMzQ7Rk1UXCYjMzQ7XCYjMzQ7LCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcbmZzL25ldGZzL2ludGVybmFsLmg6NTI0OiNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBub19wcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MjUtI2VuZGlmXG4tLVxuZnMvbmV0ZnMvbWlzYy5jPTEzNj1ib29sIG5ldGZzX2RpcnR5X2ZvbGlvKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbmZzL25ldGZzL21pc2MuYy0xNDItXG5mcy9uZXRmcy9taXNjLmM6MTQzOlx0X2VudGVyKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9taXNjLmMtMTQ0LVxuLS1cbmZzL25ldGZzL21pc2MuYz0yMTE9dm9pZCBuZXRmc19pbnZhbGlkYXRlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpXG4tLVxuZnMvbmV0ZnMvbWlzYy5jLTIxNy1cbmZzL25ldGZzL21pc2MuYzoyMTg6XHRfZW50ZXIoXCYjMzQ7eyVseH0sJXp4LCV6eFwmIzM0OywgZm9saW8tXHUwMDNlaW5kZXgsIG9mZnNldCwgbGVuZ3RoKTtcbmZzL25ldGZzL21pc2MuYy0yMTktXG4tLVxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM9NDI9c3RhdGljIHZvaWQgbmV0ZnNfdW5sb2NrX3JlYWRfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEsXG4tLVxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtODctXHQgICAgdGVzdF9iaXQoTkVURlNfUlJFUV9OT19VTkxPQ0tfRk9MSU8sIFx1MDAyNnJyZXEtXHUwMDNlZmxhZ3MpKSB7XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYzo4ODpcdFx0X2RlYnVnKFwmIzM0O25vIHVubG9ja1wmIzM0Oyk7XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy04OS1cdH0gZWxzZSB7XG4tLVxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM9MTg1PXN0YXRpYyB2b2lkIG5ldGZzX2NvbGxlY3RfcmVhZF9yZXN1bHRzKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKVxuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTE5MC1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjE5MTpcdF9lbnRlcihcJiMzNDslbGx4LSVsbHhcJiMzNDssIHJyZXEtXHUwMDNlc3RhcnQsIHJyZXEtXHUwMDNlc3RhcnQgJiM0MzsgcnJlcS1cdTAwM2VsZW4pO1xuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtMTkyLVx0dHJhY2VfbmV0ZnNfcnJlcShycmVxLCBuZXRmc19ycmVxX3RyYWNlX2NvbGxlY3QpO1xuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTIxNS1cdFx0dHJhY2VfbmV0ZnNfY29sbGVjdF9zcmVxKHJyZXEsIGZyb250KTtcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjIxNjpcdFx0X2RlYnVnKFwmIzM0O3NyZXEgWyV4XSAlbGx4ICV6eC8lenhcJiMzNDssXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0yMTctXHRcdCAgICAgICBmcm9udC1cdTAwM2VkZWJ1Z19pbmRleCwgZnJvbnQtXHUwMDNlc3RhcnQsIGZyb250LVx1MDAzZXRyYW5zZmVycmVkLCBmcm9udC1cdTAwM2VsZW4pO1xuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTMyOC1vdXQ6XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYzozMjk6XHRfbGVhdmUoXCYjMzQ7ID0gJXhcJiMzNDssIG5vdGVzKTtcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTMzMC1cdHJldHVybjtcbi0tXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMzYtXHQgKi9cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjMzNzpcdF9kZWJ1ZyhcJiMzNDtyZXRyeVwmIzM0Oyk7XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMzgtXHRuZXRmc19yZXRyeV9yZWFkcyhycmVxKTtcbi0tXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYz0xOT1zdGF0aWMgdm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKmNyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMjUtXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoyNjpcdF9lbnRlcihcJiMzNDtcJiMzNDspO1xuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMjctXG4tLVxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMzUtXHRcdC8qIG1tYXAgYmV5b25kIGVvZi4gKi9cbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jOjM2Olx0XHRfZGVidWcoXCYjMzQ7YmV5b25kIGVvZlwmIzM0Oyk7XG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0zNy1cdFx0Zm9saW9fZW5kX3ByaXZhdGVfMihmb2xpbyk7XG4tLVxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtNTAtXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzo1MTpcdF9kZWJ1ZyhcJiMzNDtmb2xpbyAlenggJXp4XCYjMzQ7LCBmbGVuLCBmc2l6ZSk7XG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy01Mi1cbi0tXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM9MjY9c3RhdGljIHZvaWQgbmV0ZnNfcmV0cnlfcmVhZF9zdWJyZXF1ZXN0cyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSlcbi0tXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMzEtXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM6MzI6XHRfZW50ZXIoXCYjMzQ7Uj0leFwmIzM0OywgcnJlcS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMzMtXG4tLVxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTkwLVxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jOjkxOlx0XHRfZGVidWcoXCYjMzQ7ZnJvbSBSPSUwOHhbJXhdIHM9JWxseCBjdGw9JXp4LyV6eFwmIzM0OyxcbmZzL25ldGZzL3JlYWRfcmV0cnkuYy05Mi1cdFx0ICAgICAgIHJyZXEtXHUwMDNlZGVidWdfaWQsIGZyb20tXHUwMDNlZGVidWdfaW5kZXgsXG4tLVxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTExNS1cbmZzL25ldGZzL3JlYWRfcmV0cnkuYzoxMTY6XHRcdF9kZWJ1ZyhcJiMzNDsgLSByYW5nZTogJWxseC0lbGx4ICVsbHhcJiMzNDssIHN0YXJ0LCBzdGFydCAmIzQzOyBsZW4gLSAxLCBsZW4pO1xuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTExNy1cbi0tXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM9MjkxPXZvaWQgbmV0ZnNfdW5sb2NrX2FiYW5kb25lZF9yZWFkX3BhZ2VzKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKVxuLS1cbmZzL25ldGZzL3JlYWRfcmV0cnkuYy0zMDItXHRcdFx0XHRcdCAgICAgXHUwMDI2cnJlcS1cdTAwM2VmbGFncykpIHtcbmZzL25ldGZzL3JlYWRfcmV0cnkuYzozMDM6XHRcdFx0XHRcdF9kZWJ1ZyhcJiMzNDtubyB1bmxvY2tcJiMzNDspO1xuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTMwNC1cdFx0XHRcdH0gZWxzZSB7XG4tLVxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYz03NT1zdGF0aWMgdm9pZCBuZXRmc19zaW5nbGVfcmVhZF9jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSxcbi0tXG5mcy9uZXRmcy9yZWFkX3NpbmdsZS5jLTc5LVxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYzo4MDpcdF9lbnRlcihcJiMzNDtSPSUwOHhbJXhdXCYjMzQ7LCBycmVxLVx1MDAzZWRlYnVnX2lkLCBzdWJyZXEtXHUwMDNlZGVidWdfaW5kZXgpO1xuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYy04MS1cdG5ldGZzX3N0YXQoXHUwMDI2bmV0ZnNfbl9yaF9yZWFkKTtcbi0tXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM9MjAwPXN0YXRpYyB2b2lkIG5ldGZzX2NvbGxlY3Rfd3JpdGVfcmVzdWx0cyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcbi0tXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMjA3LVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjIwODpcdF9lbnRlcihcJiMzNDslbGx4LSVsbHhcJiMzNDssIHdyZXEtXHUwMDNlc3RhcnQsIHdyZXEtXHUwMDNlc3RhcnQgJiM0Mzsgd3JlcS1cdTAwM2VsZW4pO1xuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTIwOS1cdHRyYWNlX25ldGZzX2NvbGxlY3Qod3JlcSk7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTIzOS1cdFx0XHR0cmFjZV9uZXRmc19jb2xsZWN0X3NyZXEod3JlcSwgZnJvbnQpO1xuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjI0MDpcdFx0XHQvL19kZWJ1ZyhcJiMzNDtzcmVxIFsleF0gJWxseCAlengvJXp4XCYjMzQ7LFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTI0MS1cdFx0XHQvLyAgICAgICBmcm9udC1cdTAwM2VkZWJ1Z19pbmRleCwgZnJvbnQtXHUwMDNlc3RhcnQsIGZyb250LVx1MDAzZXRyYW5zZmVycmVkLCBmcm9udC1cdTAwM2VsZW4pO1xuLS1cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNDQtXHR3cmVxLVx1MDAzZW5yX2dyb3VwX3JlbCA9IDA7XG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM6MzQ1Olx0X2xlYXZlKFwmIzM0OyA9ICV4XCYjMzQ7LCBub3Rlcyk7XG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMzQ2LVx0cmV0dXJuO1xuLS1cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNTItXHQgKi9cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzozNTM6XHRfZGVidWcoXCYjMzQ7cmV0cnlcJiMzNDspO1xuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTM1NC1cdG5ldGZzX3JldHJ5X3dyaXRlcyh3cmVxKTtcbi0tXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM9MzYxPWJvb2wgbmV0ZnNfd3JpdGVfY29sbGVjdGlvbihzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcbi0tXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMzY3LVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjM2ODpcdF9lbnRlcihcJiMzNDtSPSV4XCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkKTtcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNjktXG4tLVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTQwNi1cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzo0MDc6XHRfZGVidWcoXCYjMzQ7ZmluaXNoZWRcJiMzNDspO1xuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTQwOC1cdG5ldGZzX3dha2VfcnJlcV9mbGFnKHdyZXEsIE5FVEZTX1JSRVFfSU5fUFJPR1JFU1MsIG5ldGZzX3JyZXFfdHJhY2Vfd2FrZV9pcCk7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jPTQ2OT12b2lkIG5ldGZzX3dyaXRlX3N1YnJlcXVlc3RfdGVybWluYXRlZCh2b2lkICpfb3AsIHNzaXplX3QgdHJhbnNmZXJyZWRfb3JfZXJyb3IpXG4tLVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTQ3My1cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzo0NzQ6XHRfZW50ZXIoXCYjMzQ7JXhbJXhdICV6ZFwmIzM0Oywgd3JlcS1cdTAwM2VkZWJ1Z19pZCwgc3VicmVxLVx1MDAzZWRlYnVnX2luZGV4LCB0cmFuc2ZlcnJlZF9vcl9lcnJvcik7XG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtNDc1LVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM9OTA9c3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKm5ldGZzX2NyZWF0ZV93cml0ZV9yZXEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0xMDUtXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjEwNjpcdF9lbnRlcihcJiMzNDtSPSV4XCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMTA3LVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM9MTU3PXZvaWQgbmV0ZnNfcHJlcGFyZV93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSxcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTE3Ny1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MTc4Olx0X2VudGVyKFwmIzM0O1I9JXhbJXhdXCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkLCBzdWJyZXEtXHUwMDNlZGVidWdfaW5kZXgpO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0xNzktXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz0yMjc9c3RhdGljIHZvaWQgbmV0ZnNfZG9faXNzdWVfd3JpdGUoc3RydWN0IG5ldGZzX2lvX3N0cmVhbSAqc3RyZWFtLFxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMjMxLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzoyMzI6XHRfZW50ZXIoXCYjMzQ7Uj0leFsleF0sJXp4XCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkLCBzdWJyZXEtXHUwMDNlZGVidWdfaW5kZXgsIHN1YnJlcS1cdTAwM2VsZW4pO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yMzMtXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz0yNzg9c2l6ZV90IG5ldGZzX2FkdmFuY2Vfd3JpdGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yODUtXHRpZiAoIXN0cmVhbS1cdTAwM2VhdmFpbCkge1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzoyODY6XHRcdF9sZWF2ZShcJiMzNDtubyB3cml0ZVwmIzM0Oyk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTI4Ny1cdFx0cmV0dXJuIGxlbjtcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTI4OS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MjkwOlx0X2VudGVyKFwmIzM0O1I9JXhbJXhdXCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkLCBzdWJyZXEgPyBzdWJyZXEtXHUwMDNlZGVidWdfaW5kZXggOiAwKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMjkxLVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzAxLVx0cGFydCA9IHVtaW4oc3RyZWFtLVx1MDAzZXNyZXFfbWF4X2xlbiAtIHN1YnJlcS1cdTAwM2VsZW4sIGxlbik7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjMwMjpcdF9kZWJ1ZyhcJiMzNDtwYXJ0ICV6eC8lenggJXp4LyV6eFwmIzM0Oywgc3VicmVxLVx1MDAzZWxlbiwgc3RyZWFtLVx1MDAzZXNyZXFfbWF4X2xlbiwgcGFydCwgbGVuKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzAzLVx0c3VicmVxLVx1MDAzZWxlbiAmIzQzOz0gcGFydDtcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTMyMD1zdGF0aWMgaW50IG5ldGZzX3dyaXRlX2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICp3cmVxLFxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzM0LVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzozMzU6XHRfZW50ZXIoXCYjMzQ7XCYjMzQ7KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzM2LVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzQ3LVx0XHQvKiBtbWFwIGJleW9uZCBlb2YuICovXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjM0ODpcdFx0X2RlYnVnKFwmIzM0O2JleW9uZCBlb2ZcJiMzNDspO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zNDktXHRcdGZvbGlvX3N0YXJ0X3dyaXRlYmFjayhmb2xpbyk7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zODEtXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjM4MjpcdF9kZWJ1ZyhcJiMzNDtmb2xpbyAlenggJXp4ICV6eFwmIzM0OywgZm9mZiwgZmxlbiwgZnNpemUpO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zODMtXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01MTQtXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjUxNTpcdF9sZWF2ZShcJiMzNDsgPSAwXCYjMzQ7KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNTE2LVx0cmV0dXJuIDA7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz01NDY9aW50IG5ldGZzX3dyaXRlcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01NzItXHRkbyB7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjU3MzpcdFx0X2RlYnVnKFwmIzM0O3diaXRlciAlbHggJWxseFwmIzM0OywgZm9saW8tXHUwMDNlaW5kZXgsIGF0b21pYzY0X3JlYWQoXHUwMDI2d3JlcS1cdTAwM2Vpc3N1ZWRfdG8pKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNTc0LVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNTk0LVx0bmV0ZnNfcHV0X3JlcXVlc3Qod3JlcSwgbmV0ZnNfcnJlcV90cmFjZV9wdXRfcmV0dXJuKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NTk1Olx0X2xlYXZlKFwmIzM0OyA9ICVkXCYjMzQ7LCBlcnJvcik7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTU5Ni1cdHJldHVybiBlcnJvcjtcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTYwOC1cdG5ldGZzX3diX2VuZChpY3R4KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NjA5Olx0X2xlYXZlKFwmIzM0OyA9ICVkXCYjMzQ7LCBlcnJvcik7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTYxMC1cdHJldHVybiBlcnJvcjtcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTY0Mz1pbnQgbmV0ZnNfYWR2YW5jZV93cml0ZXRocm91Z2goc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjLFxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNjQ4LVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo2NDk6XHRfZW50ZXIoXCYjMzQ7Uj0leCBpYz0lenUgd3M9JXUgY3A9JXp1IHRwPSV1XCYjMzQ7LFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02NTAtXHQgICAgICAgd3JlcS1cdTAwM2VkZWJ1Z19pZCwgd3JlcS1cdTAwM2VidWZmZXIuaXRlci5jb3VudCwgd3JlcS1cdTAwM2V3c2l6ZSwgY29waWVkLCB0b19wYWdlX2VuZCk7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz02ODc9c3NpemVfdCBuZXRmc19lbmRfd3JpdGV0aHJvdWdoKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICp3cmVxLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyxcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTY5MS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NjkyOlx0X2VudGVyKFwmIzM0O1I9JXhcJiMzNDssIHdyZXEtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02OTMtXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz03MTQ9c3RhdGljIGludCBuZXRmc193cml0ZV9mb2xpb19zaW5nbGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy03MjYtXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjcyNzpcdF9lbnRlcihcJiMzNDtcJiMzNDspO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy03MjgtXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy03MzctXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjczODpcdF9kZWJ1ZyhcJiMzNDtmb2xpbyAlengvJXp4XCYjMzQ7LCBmbGVuLCBmc2l6ZSk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTczOS1cbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTgyNC1cdFx0a2RlYnVnKFwmIzM0O1I9JXg6IE5vIHN1Ym1pdFwmIzM0Oywgd3JlcS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjgyNTpcdF9sZWF2ZShcJiMzNDsgPSAwXCYjMzQ7KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtODI2LVx0cmV0dXJuIDA7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz04NDE9aW50IG5ldGZzX3dyaXRlYmFja19zaW5nbGUoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04NzctXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjg3ODpcdFx0XHRfZGVidWcoXCYjMzQ7d2JpdGVyICVseCAlbGx4XCYjMzQ7LCBmb2xpby1cdTAwM2VpbmRleCwgYXRvbWljNjRfcmVhZChcdTAwMjZ3cmVxLVx1MDAzZWlzc3VlZF90bykpO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04NzktXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04OTctXHRuZXRmc19wdXRfcmVxdWVzdCh3cmVxLCBuZXRmc19ycmVxX3RyYWNlX3B1dF9yZXR1cm4pO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo4OTg6XHRfbGVhdmUoXCYjMzQ7ID0gJWRcJiMzNDssIHJldCk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTg5OS1cdHJldHVybiByZXQ7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy05MDItXHRuZXRmc193Yl9lbmQoaWN0eCk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjkwMzpcdF9sZWF2ZShcJiMzNDsgPSAlZFwmIzM0OywgcmV0KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtOTA0LVx0cmV0dXJuIHJldDtcbi0tXG5mcy9uZXRmcy93cml0ZV9yZXRyeS5jPTE3PXN0YXRpYyB2b2lkIG5ldGZzX3JldHJ5X3dyaXRlX3N0cmVhbShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSxcbi0tXG5mcy9uZXRmcy93cml0ZV9yZXRyeS5jLTIxLVxuZnMvbmV0ZnMvd3JpdGVfcmV0cnkuYzoyMjpcdF9lbnRlcihcJiMzNDtSPSV4WyV4Ol1cJiMzNDssIHdyZXEtXHUwMDNlZGVidWdfaWQsIHN0cmVhbS1cdTAwM2VzdHJlYW1fbnIpO1xuZnMvbmV0ZnMvd3JpdGVfcmV0cnkuYy0yMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMyMgoJCQkJCQkJb3V0cHV0OiA5MQoJCQkJCQkJdGhvdWdodHM6IDEyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IERlYnVnIExvZ2dpbmcgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uc3VsdCBTZWN0aW9uIDIgb2YgdGhlIHRyaWFnZSBwaGlsb3NvcGh5IHJlZ2FyZGluZyB3aGVuIHRvIG1hcmsgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUga2V5IGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGlmIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLCBzcGVjaWZpY2FsbHkgJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nLi4udGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4mIzM0OwoKTm93LCBsZXQmIzM5O3MgYW5hbHl6ZSB0aGUgcGF0Y2guIExvb2tpbmcgYXQgYGZzL25ldGZzL2ludGVybmFsLmhgLCBpdCYjMzk7cyBjbGVhciB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCB0aGUgZGVidWcgbG9nZ2luZyBtYWNyb3M6IGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBhIGNoZWNrIGFnYWluc3QgYSBmaW5lLWdyYWluZWQgYml0bWFzayBgbmV0ZnNfZGVidWdgIGJlZm9yZSBpbnZva2luZyB0aGUgdW5kZXJseWluZyBga2VudGVyYCwgYGtsZWF2ZWAsIG9yIGBrZGVidWdgIGZ1bmN0aW9ucyAod2hpY2gsIGluIHR1cm4sIHVzZSBgZGJncHJpbnRrYCkuCgpBZnRlciB2ZXJpZnlpbmcgdGhhdCB0aGUgZGlmZiBpcyByZXN0cmljdGVkIHRvIGBmcy9uZXRmcy9pbnRlcm5hbC5oYCwgdGhlc2UgbW9kaWZpY2F0aW9ucyBhcmUgcHVyZWx5IGZvciBkZWJ1ZyBvdXRwdXQ7IHNwZWNpZmljYWxseSwgdGhleSBlbmFibGUgbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgd2hhdCBkZWJ1ZyBtZXNzYWdlcyBhcmUgZGlzcGxheWVkLiBUaGV5IGRvbiYjMzk7dCBhZmZlY3Qga2VybmVsIGNvbnRyb2wgZmxvdywgZG9uJiMzOTt0IG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSBvciBhbHRlciBhbnkgYXNzZXJ0aW9ucyBvciBlcnJvciBoYW5kbGluZy4gRXNzZW50aWFsbHksIHRoZXNlIHVwZGF0ZXMganVzdCBjaGFuZ2UgKndoZW4qIGRlYnVnIG1lc3NhZ2VzIGFyZSBwcmludGVkIGJhc2VkIG9uIHRoZSBiaXRtYXNrIGluIGBuZXRmc19kZWJ1Z2AuCgpUaGVyZWZvcmUsIHRoZSBwYXRjaCBzdHJpY3RseSBmYWxscyB1bmRlciB0aGUgJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nJiMzNDsgY2F0ZWdvcnkuIENvbnNlcXVlbnRseSwgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCB3YXJyYW50IGZ1enppbmcuCgpNeSBjb25jbHVzaW9uIGlzOgoKLSAgIGBXb3J0aEZ1enppbmc6IGZhbHNlYAotICAgYEZvY3VzU3ltYm9sczogW11gCi0gICBgRW5hYmxlQ29uZmlnczogW11gCi0gICBgUmVhc29uaW5nOiBQdXJlbHkgZGVidWcgbG9nZ2luZyBtYWNybyB1cGRhdGVzIGluIG5ldGZzL2ZzY2FjaGUgdGhhdCBkbyBub3QgY2hhbmdlIGtlcm5lbCBsb2dpYywgZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIG9yIGFzc2VydGlvbnMuYAoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRlYnVnIGxvZ2dpbmcgbWFjcm9zIChfZW50ZXIsIF9sZWF2ZSwgX2RlYnVnKSBpbiBmcy9uZXRmcy9pbnRlcm5hbC5oIHRvIHN1cHBvcnQgZmluZS1ncmFpbmVkIGRlYnVnIGxldmVsIGJpdG1hc2sgZmlsdGVyaW5nLiBJdCBjb25zdGl0dXRlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGNoYW5nZXMgYW5kIGRvZXMgbm90IGFsdGVyIGV4ZWN1dGFibGUgY29udHJvbCBmbG93LCBkYXRhIHN0cnVjdHVyZXMsIHN0YXRlIG1hbmFnZW1lbnQsIG9yIHJ1bnRpbWUgYXNzZXJ0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOToxMC4zMTQ4NDYxNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTU0MjQzMzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOToxMC4zMTQ4NTgzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcyNzMxMTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTAwMjIyZTgwOGYxOGMzOGU2Nzk5MmU3NDY4NGY5YThiNTkyZjEwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDExOjI5OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL25ldGZzL2ludGVybmFsLmggYi9mcy9uZXRmcy9pbnRlcm5hbC5oXFxuaW5kZXggNDIwZWU3YjI2NTgwZi4uNDI1YzczYjdlNzdiNCAxMDA2NDRcXG4tLS0gYS9mcy9uZXRmcy9pbnRlcm5hbC5oXFxuKysrIGIvZnMvbmV0ZnMvaW50ZXJuYWwuaFxcbkBAIC00NjgsNiArNDY4LDMyIEBAIHZvaWQgZnNjYWNoZV9jcmVhdGVfdm9sdW1lKHN0cnVjdCBmc2NhY2hlX3ZvbHVtZSAqdm9sdW1lLCBib29sIHdhaXQpO1xcbiAjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKFxcXCJcXHUwMDNjPT0gJXMoKVxcXCJGTVRcXFwiXFxcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXFxuICNkZWZpbmUga2RlYnVnKEZNVCwgLi4uKSBkYmdwcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxcbiBcXG4rI2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NBQ0hFXFx0MFxcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfQ09PS0lFXFx0MVxcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT0JKRUNUXFx0MlxcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT1BFUkFUSU9OXFx0M1xcbitcXG4rI2RlZmluZSBGU0NBQ0hFX1BPSU5UX0VOVEVSXFx0MVxcbisjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfTEVBVkVcXHQyXFxuKyNkZWZpbmUgRlNDQUNIRV9QT0lOVF9ERUJVR1xcdDRcXG4rXFxuKyNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTFxcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcXG4rI2VuZGlmXFxuK1xcbisvKlxcbisgKiBEZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgb3B0aW9uYWwgZGVidWdnaW5nIHBvaW50IHNob3VsZCBiZSBsb2dnZWQuXFxuKyAqIFRocmVlIGxldmVscyBvZiBpbmRpcmVjdGlvbiBhcmUgbmVlZGVkIHRvIGV4cGFuZCBGU0NBQ0hFX0RFQlVHX0xFVkVMIGJlZm9yZVxcbisgKiBqb2luaW5nIGl0IHdpdGggaXRzIHByZWZpeC5cXG4rICovXFxuKyNkZWZpbmUgX19fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFxcXFxcXG4rXFx0dW5saWtlbHkobmV0ZnNfZGVidWcgXFx1MDAyNiBcXFxcXFxuK1xcdFxcdCAoRlNDQUNIRV9QT0lOVF8jI1BPSU5UIFxcdTAwM2NcXHUwMDNjIChGU0NBQ0hFX0RFQlVHXyAjIyBMRVZFTCAqIDMpKSlcXG4rI2RlZmluZSBfX19kb19rZGVidWcoTEVWRUwsIFBPSU5UKSBcXFxcXFxuK1xcdF9fX19kb19rZGVidWcoTEVWRUwsIFBPSU5UKVxcbisjZGVmaW5lIF9fZG9fa2RlYnVnKFBPSU5UKSBcXFxcXFxuK1xcdF9fX2RvX2tkZWJ1ZyhGU0NBQ0hFX0RFQlVHX0xFVkVMLCBQT0lOVClcXG4rXFxuICNpZmRlZiBfX0tERUJVR1xcbiAjZGVmaW5lIF9lbnRlcihGTVQsIC4uLikga2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXylcXG4gI2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pXFxuQEAgLTQ3NiwxOSArNTAyLDE5IEBAIHZvaWQgZnNjYWNoZV9jcmVhdGVfdm9sdW1lKHN0cnVjdCBmc2NhY2hlX3ZvbHVtZSAqdm9sdW1lLCBib29sIHdhaXQpO1xcbiAjZWxpZiBkZWZpbmVkKENPTkZJR19ORVRGU19ERUJVRylcXG4gI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRpZiAobmV0ZnNfZGVidWcpXFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoX19kb19rZGVidWcoRU5URVIpKVxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0a2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG4gI2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRpZiAobmV0ZnNfZGVidWcpXFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoX19kb19rZGVidWcoTEVBVkUpKVxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0a2xlYXZlKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG4gI2RlZmluZSBfZGVidWcoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRpZiAobmV0ZnNfZGVidWcpXFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoX19kb19rZGVidWcoREVCVUcpKVxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0a2RlYnVnKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTE6Mjk6MTEuNjg4Mjc4NTQ5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozMTE4MDc5ODQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwMDIyMmU4MDhmMThjMzhlNjc5OTJlNzQ2ODRmOWE4YjU5MmYxMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDExOjI5OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbmV0ZnMvaW50ZXJuYWwuaCBiL2ZzL25ldGZzL2ludGVybmFsLmhcbmluZGV4IDQyMGVlN2IyNjU4MGYuLjQyNWM3M2I3ZTc3YjQgMTAwNjQ0XG4tLS0gYS9mcy9uZXRmcy9pbnRlcm5hbC5oXG4rKysgYi9mcy9uZXRmcy9pbnRlcm5hbC5oXG5AQCAtNDY4LDYgKzQ2OCwzMiBAQCB2b2lkIGZzY2FjaGVfY3JlYXRlX3ZvbHVtZShzdHJ1Y3QgZnNjYWNoZV92b2x1bWUgKnZvbHVtZSwgYm9vbCB3YWl0KTtcbiAjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKFwiXHUwMDNjPT0gJXMoKVwiRk1UXCJcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXG4gI2RlZmluZSBrZGVidWcoRk1ULCAuLi4pIGRiZ3ByaW50ayhGTVQsICMjX19WQV9BUkdTX18pXG4gXG4rI2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NBQ0hFXHQwXG4rI2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NPT0tJRVx0MVxuKyNkZWZpbmUgRlNDQUNIRV9ERUJVR19PQkpFQ1RcdDJcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT1BFUkFUSU9OXHQzXG4rXG4rI2RlZmluZSBGU0NBQ0hFX1BPSU5UX0VOVEVSXHQxXG4rI2RlZmluZSBGU0NBQ0hFX1BPSU5UX0xFQVZFXHQyXG4rI2RlZmluZSBGU0NBQ0hFX1BPSU5UX0RFQlVHXHQ0XG4rXG4rI2lmbmRlZiBGU0NBQ0hFX0RFQlVHX0xFVkVMXG4rI2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXG4rI2VuZGlmXG4rXG4rLypcbisgKiBEZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgb3B0aW9uYWwgZGVidWdnaW5nIHBvaW50IHNob3VsZCBiZSBsb2dnZWQuXG4rICogVGhyZWUgbGV2ZWxzIG9mIGluZGlyZWN0aW9uIGFyZSBuZWVkZWQgdG8gZXhwYW5kIEZTQ0FDSEVfREVCVUdfTEVWRUwgYmVmb3JlXG4rICogam9pbmluZyBpdCB3aXRoIGl0cyBwcmVmaXguXG4rICovXG4rI2RlZmluZSBfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXFxcbitcdHVubGlrZWx5KG5ldGZzX2RlYnVnIFx1MDAyNiBcXFxuK1x0XHQgKEZTQ0FDSEVfUE9JTlRfIyNQT0lOVCBcdTAwM2NcdTAwM2MgKEZTQ0FDSEVfREVCVUdfICMjIExFVkVMICogMykpKVxuKyNkZWZpbmUgX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXFxcbitcdF9fX19kb19rZGVidWcoTEVWRUwsIFBPSU5UKVxuKyNkZWZpbmUgX19kb19rZGVidWcoUE9JTlQpIFxcXG4rXHRfX19kb19rZGVidWcoRlNDQUNIRV9ERUJVR19MRVZFTCwgUE9JTlQpXG4rXG4gI2lmZGVmIF9fS0RFQlVHXG4gI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pIGtlbnRlcihGTVQsICMjX19WQV9BUkdTX18pXG4gI2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pXG5AQCAtNDc2LDE5ICs1MDIsMTkgQEAgdm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7XG4gI2VsaWYgZGVmaW5lZChDT05GSUdfTkVURlNfREVCVUcpXG4gI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXHRcdFx0XFxcbiBkbyB7XHRcdFx0XHRcdFx0XFxcbi1cdGlmIChuZXRmc19kZWJ1ZylcdFx0XHRcXFxuK1x0aWYgKF9fZG9fa2RlYnVnKEVOVEVSKSlcdFx0XHRcXFxuIFx0XHRrZW50ZXIoRk1ULCAjI19fVkFfQVJHU19fKTtcdFxcXG4gfSB3aGlsZSAoMClcbiBcbiAjZGVmaW5lIF9sZWF2ZShGTVQsIC4uLilcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcXFxuLVx0aWYgKG5ldGZzX2RlYnVnKVx0XHRcdFxcXG4rXHRpZiAoX19kb19rZGVidWcoTEVBVkUpKVx0XHRcdFxcXG4gXHRcdGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pO1x0XFxcbiB9IHdoaWxlICgwKVxuIFxuICNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKVx0XHRcdFxcXG4gZG8ge1x0XHRcdFx0XHRcdFxcXG4tXHRpZiAobmV0ZnNfZGVidWcpXHRcdFx0XFxcbitcdGlmIChfX2RvX2tkZWJ1ZyhERUJVRykpXHRcdFx0XFxcbiBcdFx0a2RlYnVnKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuIH0gd2hpbGUgKDApXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOToxMS42ODgyNzk5NjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTUxNzUzNTM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYnJlYWsgZG93biB0aGUgY2hhbmdlcyBhbmQgZW5zdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgbmV0d29yayBmaWxlc3lzdGVtLiBUaGUgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBleGFtaW5lIHRoZSBzcGVjaWZpYyBjb2RlIG1vZGlmaWNhdGlvbnMuXG5cbkkgc2VlIHRoZSBwYXRjaCB0YXJnZXRzIGBmcy9uZXRmcy9pbnRlcm5hbC5oYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGRlYnVnIG1hY3Jvcy4gSSdtIG5vdGluZyB0aGUgbmV3IGRlZmluaXRpb25zIGZvciBgRlNDQUNIRV9ERUJVR18qYCwgYEZTQ0FDSEVfUE9JTlRfKmAsIGFuZCB0aGUgaW50cm9kdWN0aW9uIG9mIGBfX19fZG9fa2RlYnVnYCwgYW5kIGBfX19kb19rZGVidWdgLiBUaGUga2V5IGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2NrIGAjZWxpZiBkZWZpbmVkKENPTkZJR19ORVRGU19ERUJVRylgLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIGV4aXN0aW5nIGRlYnVnZ2luZyBtYWNyb3MsIGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLCB0byBub3cgY2hlY2sgdGhlIG91dHB1dCBvZiB0aGUgYF9fZG9fa2RlYnVnKC4uLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIGBuZXRmc19kZWJ1Z2AuXG5cbk5vdywgYmVmb3JlIEkgbWFrZSBhbnkgZGVmaW5pdGl2ZSBjb25jbHVzaW9ucywgSSBuZWVkIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBmcy9uZXRmcy9pbnRlcm5hbC5oYCBmaWxlIGl0c2VsZi4gSSdsbCB1c2UgbXkgZmlsZS1yZWFkaW5nIHRvb2xzIHRvIHplcm8gaW4gb24gdGhvc2Ugc3BlY2lmaWMgbGluZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBleGlzdGluZyBkZWJ1ZyBpbmZyYXN0cnVjdHVyZSBpcyBjcml0aWNhbCB0byBldmFsdWF0aW5nIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYWx0ZXJhdGlvbnMuIEkgbmVlZCB0byBzZWUgaG93IGBuZXRmc19kZWJ1Z2Agd2FzIHByZXZpb3VzbHkgdXNlZCwgYW5kIGhvdyBgX19kb19rZGVidWdgIGlzIGludGVuZGVkIHRvIGludGVncmF0ZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIGl0J3MgYSBzaW1wbGUgcmVmYWN0b3JpbmcsIGFuIG9wdGltaXphdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgc3Vic3RhbnRpYWwgbGlrZSBhIGNoYW5nZSBpbiBkZWJ1Z2dpbmcgbGV2ZWwgb3Igb3V0cHV0IG1lY2hhbmlzbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjIzLjIwNTgxODUzNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL25ldGZzL2ludGVybmFsLmhcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4gNDYxOlxcdC8qXFxuIDQ2MjpcXHQgKiBkZWJ1ZyB0cmFjaW5nXFxuIDQ2MzpcXHQgKi9cXG4gNDY0OlxcdCNkZWZpbmUgZGJncHJpbnRrKEZNVCwgLi4uKSBcXFxcXFxuIDQ2NTpcXHRcXHRwcmludGsoXFxcIlslLTYuNnNdIFxcXCJGTVRcXFwiXFxcXG5cXFwiLCBjdXJyZW50LVxcdTAwM2Vjb21tLCAjI19fVkFfQVJHU19fKVxcbiA0NjY6XFx0XFxuIDQ2NzpcXHQjZGVmaW5lIGtlbnRlcihGTVQsIC4uLikgZGJncHJpbnRrKFxcXCI9PVxcdTAwM2UgJXMoXFxcIkZNVFxcXCIpXFxcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXFxuIDQ2ODpcXHQjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKFxcXCJcXHUwMDNjPT0gJXMoKVxcXCJGTVRcXFwiXFxcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXFxuIDQ2OTpcXHQjZGVmaW5lIGtkZWJ1ZyhGTVQsIC4uLikgZGJncHJpbnRrKEZNVCwgIyNfX1ZBX0FSR1NfXylcXG4gNDcwOlxcdFxcbiA0NzE6XFx0I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NBQ0hFXFx0MFxcbiA0NzI6XFx0I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NPT0tJRVxcdDFcXG4gNDczOlxcdCNkZWZpbmUgRlNDQUNIRV9ERUJVR19PQkpFQ1RcXHQyXFxuIDQ3NDpcXHQjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT1BFUkFUSU9OXFx0M1xcbiA0NzU6XFx0XFxuIDQ3NjpcXHQjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfRU5URVJcXHQxXFxuIDQ3NzpcXHQjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfTEVBVkVcXHQyXFxuIDQ3ODpcXHQjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfREVCVUdcXHQ0XFxuIDQ3OTpcXHRcXG4gNDgwOlxcdCNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTFxcbiA0ODE6XFx0I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXFxuIDQ4MjpcXHQjZW5kaWZcXG4gNDgzOlxcdFxcbiA0ODQ6XFx0LypcXG4gNDg1OlxcdCAqIERldGVybWluZSB3aGV0aGVyIGEgcGFydGljdWxhciBvcHRpb25hbCBkZWJ1Z2dpbmcgcG9pbnQgc2hvdWxkIGJlIGxvZ2dlZC5cXG4gNDg2OlxcdCAqIFRocmVlIGxldmVscyBvZiBpbmRpcmVjdGlvbiBhcmUgbmVlZGVkIHRvIGV4cGFuZCBGU0NBQ0hFX0RFQlVHX0xFVkVMIGJlZm9yZVxcbiA0ODc6XFx0ICogam9pbmluZyBpdCB3aXRoIGl0cyBwcmVmaXguXFxuIDQ4ODpcXHQgKi9cXG4gNDg5OlxcdCNkZWZpbmUgX19fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFxcXFxcXG4gNDkwOlxcdFxcdHVubGlrZWx5KG5ldGZzX2RlYnVnIFxcdTAwMjYgXFxcXFxcbiA0OTE6XFx0XFx0XFx0IChGU0NBQ0hFX1BPSU5UXyMjUE9JTlQgXFx1MDAzY1xcdTAwM2MgKEZTQ0FDSEVfREVCVUdfICMjIExFVkVMICogMykpKVxcbiA0OTI6XFx0I2RlZmluZSBfX19kb19rZGVidWcoTEVWRUwsIFBPSU5UKSBcXFxcXFxuIDQ5MzpcXHRcXHRfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVClcXG4gNDk0OlxcdCNkZWZpbmUgX19kb19rZGVidWcoUE9JTlQpIFxcXFxcXG4gNDk1OlxcdFxcdF9fX2RvX2tkZWJ1ZyhGU0NBQ0hFX0RFQlVHX0xFVkVMLCBQT0lOVClcXG4gNDk2OlxcdFxcbiA0OTc6XFx0I2lmZGVmIF9fS0RFQlVHXFxuIDQ5ODpcXHQjZGVmaW5lIF9lbnRlcihGTVQsIC4uLikga2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXylcXG4gNDk5OlxcdCNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKVxcbiA1MDA6XFx0I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pIGtkZWJ1ZyhGTVQsICMjX19WQV9BUkdTX18pXFxuIDUwMTpcXHRcXG4gNTAyOlxcdCNlbGlmIGRlZmluZWQoQ09ORklHX05FVEZTX0RFQlVHKVxcbiA1MDM6XFx0I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiA1MDQ6XFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTA1OlxcdFxcdGlmIChfX2RvX2tkZWJ1ZyhFTlRFUikpXFx0XFx0XFx0XFxcXFxcbiA1MDY6XFx0XFx0XFx0a2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiA1MDc6XFx0fSB3aGlsZSAoMClcXG4gNTA4OlxcdFxcbiA1MDk6XFx0I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiA1MTA6XFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTExOlxcdFxcdGlmIChfX2RvX2tkZWJ1ZyhMRUFWRSkpXFx0XFx0XFx0XFxcXFxcbiA1MTI6XFx0XFx0XFx0a2xlYXZlKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiA1MTM6XFx0fSB3aGlsZSAoMClcXG4gNTE0OlxcdFxcbiA1MTU6XFx0I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiA1MTY6XFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTE3OlxcdFxcdGlmIChfX2RvX2tkZWJ1ZyhERUJVRykpXFx0XFx0XFx0XFxcXFxcbiA1MTg6XFx0XFx0XFx0a2RlYnVnKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiA1MTk6XFx0fSB3aGlsZSAoMClcXG4gNTIwOlxcdFxcbiA1MjE6XFx0I2Vsc2VcXG4gNTIyOlxcdCNkZWZpbmUgX2VudGVyKEZNVCwgLi4uKSBub19wcmludGsoXFxcIj09XFx1MDAzZSAlcyhcXFwiRk1UXFxcIilcXFwiLCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcXG4gNTIzOlxcdCNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBub19wcmludGsoXFxcIlxcdTAwM2M9PSAlcygpXFxcIkZNVFxcXCJcXFwiLCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcXG4gNTI0OlxcdCNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBub19wcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxcbiA1MjU6XFx0I2VuZGlmXFxuIDUyNjpcXHRcXG4gNTI3OlxcdC8qXFxuIDUyODpcXHQgKiBhc3NlcnRpb25zXFxuIDUyOTpcXHQgKi9cXG4gNTMwOlxcdCNpZiAxIC8qIGRlZmluZWQoX19LREVCVUdBTEwpICovXFxuIDUzMTpcXHRcXG4gNTMyOlxcdCNkZWZpbmUgQVNTRVJUKFgpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiA1MzM6XFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTM0OlxcdFxcdGlmICh1bmxpa2VseSghKFgpKSkge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTM1OlxcdFxcdFxcdHByX2VycihcXFwiXFxcXG5cXFwiKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDUzNjpcXHRcXHRcXHRwcl9lcnIoXFxcIkFzc2VydGlvbiBmYWlsZWRcXFxcblxcXCIpO1xcdFxcXFxcXG4gNTM3OlxcdFxcdFxcdEJVRygpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTM4OlxcdFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDUzOTpcXHR9IHdoaWxlICgwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOToyMy4yMDU5MDc3OTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTgzNzA4NDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlc2UgYXJlIHNpbXBseSBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyDigJMgYGRiZ3ByaW50a2Agc3BlY2lmaWNhbGx5LiBOb3csIGxldCdzIGdvIGJhY2sgYW5kIGV4YW1pbmUgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIG91dGxpbmVkLiBJJ20gZm9jdXNpbmcgb24gYXJlYXMgd2hlcmUgY2hhbmdlcyBhcmUgdHlwaWNhbGx5ICpub3QqIGFjY2VwdGVkLlxuXG5UaGUgcHJvbXB0IHN0YXRlczogbm8gY2hhbmdlcyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIHNwZWxsaW5nLCB1c2VyLXNwYWNlLCBub24tZXhlY3V0YWJsZSwgZGVjb3JhdGl2ZSBsb2dnaW5nIG9yIHRyYWNlcG9pbnRzIGFuZCBubyBidWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG9uJ3QgY2hhbmdlIGNvbXBpbGVkIEMgbG9naWMuIEFscmlnaHQsIHRoYXQncyBjbGVhci5cblxuU28sIHNpbmNlIHRoZXNlIG1hY3JvcyBhcmUgKnByb2JhYmx5KiBqdXN0IHVzZWQgZm9yIGxvZ2dpbmcsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uLiBUaGUgY2hhbmdlcyBhcmUgcHJvYmFibHkgbm90IGltcG9ydGFudC5cblxuTGV0J3MgZG8gYSBkZWVwZXIgZGl2ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1hY3JvcyBhcmUgYWN0dWFsbHkgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBhIGNvdXBsZSBvZiBwbGFjZXMsIGxpa2UgYGZzL25ldGZzYCBhbmQgYGZzL2ZzY2FjaGVgLiBJJ2xsIGFsc28gZG8gYSBnZW5lcmFsIHNlYXJjaCB0byBzZWUgd2hlcmUgZWxzZSBpbiB0aGUga2VybmVsIHRoZXNlIGxvZ2dpbmcgbWFjcm9zIGFyZSB1c2VkLCBhbmQgbWF5YmUgYWxzbyBncmVwIGZvciBhbnkgcmVsYXRlZCBkZWJ1ZyBsZXZlbHMg4oCTIGxpa2UgYEZTQ0FDSEVfREVCVUdfTEVWRUxgIG9yIGBuZXRmc19kZWJ1Z2Ag4oCTIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuIFRoaXMgc2hvdWxkIHRlbGwgbWUgcXVpY2tseSBpZiB0aGVzZSBhcmUgc2ltcGx5IGRlc2NyaXB0aXZlLCBvciBpZiB0aGVyZSdzIGFueSBhbHRlcmF0aW9uIG9mIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBidWlsZCBsb2dpYyBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIwNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjI1Ljc4OTYxOTYyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODQ3MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZTQ0FDSEVfREVCVUdfTEVWRUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy03LVxcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYzo4OiNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRVxcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9leHBvcnQuaFxcdTAwM2VcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTAtXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMTojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ09PS0lFXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMi0jaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtNi0gKi9cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6NzojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgT1BFUkFUSU9OXFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzY2FjaGUtY2FjaGUuaFxcdTAwM2VcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfbWFpbi5jLTctXFxuZnMvbmV0ZnMvZnNjYWNoZV9tYWluLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfcHJvYy5jLTctXFxuZnMvbmV0ZnMvZnNjYWNoZV9wcm9jLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcXG5mcy9uZXRmcy9mc2NhY2hlX3Byb2MuYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfc3RhdHMuYy03LVxcbmZzL25ldGZzL2ZzY2FjaGVfc3RhdHMuYzo4OiNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRVxcbmZzL25ldGZzL2ZzY2FjaGVfc3RhdHMuYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9jX2ZzLmhcXHUwMDNlXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTctXFxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYzo4OiNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDT09LSUVcXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTktI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbi0tXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaD00NTg9dm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7XFxuLS1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ3OS1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ4MDojaWZuZGVmIEZTQ0FDSEVfREVCVUdfTEVWRUxcXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ4MTojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ4Mi0jZW5kaWZcXG4tLVxcbmZzL25ldGZzL2ludGVybmFsLmgtNDg1LSAqIERldGVybWluZSB3aGV0aGVyIGEgcGFydGljdWxhciBvcHRpb25hbCBkZWJ1Z2dpbmcgcG9pbnQgc2hvdWxkIGJlIGxvZ2dlZC5cXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ4NjogKiBUaHJlZSBsZXZlbHMgb2YgaW5kaXJlY3Rpb24gYXJlIG5lZWRlZCB0byBleHBhbmQgRlNDQUNIRV9ERUJVR19MRVZFTCBiZWZvcmVcXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ4Ny0gKiBqb2luaW5nIGl0IHdpdGggaXRzIHByZWZpeC5cXG4tLVxcbmZzL25ldGZzL2ludGVybmFsLmgtNDk0LSNkZWZpbmUgX19kb19rZGVidWcoUE9JTlQpIFxcXFxcXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ5NTpcXHRfX19kb19rZGVidWcoRlNDQUNIRV9ERUJVR19MRVZFTCwgUE9JTlQpXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC00OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjI1Ljg1OTQ3MTU5OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwODQyNDE2MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZWJ1ZyBMb2dnaW5nIGluIGBmcy9uZXRmc2AqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCB0aGVzZSBtYWNyb3Mg4oCTIGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgIOKAkyBhcmUgYmFzaWNhbGx5IGp1c3QgZ2xvcmlmaWVkIHByaW50IHN0YXRlbWVudHMuIFRoZXkncmUgdWx0aW1hdGVseSBjYWxsaW5nIGBkYmdwcmludGtgLCB3aGljaCB0aGVuIHJlc29sdmVzIHRvIGBwcmludGtgLiBFc3NlbnRpYWxseSwgd2UncmUgdGFsa2luZyBhYm91dCBkZWJ1ZyBsb2dnaW5nIGhlcmUsIG5vdGhpbmcgbW9yZS5cblxuVGhlIGNoYW5nZSBmb2N1c2VzIG9uIGFkanVzdGluZyB0aGUgYml0bWFzayBjaGVjayB1c2VkIHRvIGNvbnRyb2wgd2hldGhlciB0aGVzZSBkZWJ1ZyBwcmludCBzdGF0ZW1lbnRzIGdldCB0cmlnZ2VyZWQgYmFzZWQgb24gYENPTkZJR19ORVRGU19ERUJVR2AuIFRoZSBpbXBvcnRhbnQgcXVlc3Rpb24sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIG1vZGlmaWNhdGlvbiBoYXMgYW55IGltcGFjdCBvbiB0aGUgYWN0dWFsICpmdW5jdGlvbmFsaXR5KiBvZiB0aGUga2VybmVsIGNvZGUuXG5cbkFuZCBhZnRlciBhIHF1aWNrIHJldmlldywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgKm5vKi4gVGhlc2UgbWFjcm9zIGRvbid0IGFsdGVyIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYWNoaW5lcywgYXNzZXJ0aW9ucywgb3IgbG9naWMuIFRoZXkncmUgc29sZWx5IGZvciBkZWJ1ZyBwcmludGluZy4gVGhlIGNvZGUncyBleGVjdXRpb24gcGF0aCByZW1haW5zIHRoZSBzYW1lIHJlZ2FyZGxlc3MuXG5cbk5leHQsIEknbGwgcXVpY2tseSBjaGVjayBmb3IgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIHdpdGhpbiBgZnMvbmV0ZnNgIHdoZXJlIHRoZXNlIG1hY3JvcyBhcmUgY2FsbGVkLCBqdXN0IHRvIGJlIHRob3JvdWdoLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IHN1Z2dlc3RzIHRoYXQgdGhlcmUgd29uJ3QgYmUgYW55LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTE1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjMzLjk0MzcxNTQ5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE1MDQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfZW50ZXJcXFxcKHxfbGVhdmVcXFxcKHxfZGVidWdcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uZXRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTM5Nj1zdGF0aWMgaW50IG5ldGZzX3JlYWRfZ2FwcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy00MTItXFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jOjQxMzpcXHRfZW50ZXIoXFxcIiVseFxcXCIsIGZvbGlvLVxcdTAwM2VpbmRleCk7XFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTQxNC1cXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYz01MDE9aW50IG5ldGZzX3JlYWRfZm9saW8oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNTEyLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo1MTM6XFx0X2VudGVyKFxcXCIlbHhcXFwiLCBmb2xpby1cXHUwMDNlaW5kZXgpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy01MTQtXFxuLS1cXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmM9NjMwPWludCBuZXRmc193cml0ZV9iZWdpbihzdHJ1Y3QgbmV0ZnNfaW5vZGUgKmN0eCxcXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy03MDMtXFx0Kl9mb2xpbyA9IGZvbGlvO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MDQ6XFx0X2xlYXZlKFxcXCIgPSAwXFxcIik7XFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTcwNS1cXHRyZXR1cm4gMDtcXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy03MTMtXFx0fVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MTQ6XFx0X2xlYXZlKFxcXCIgPSAlZFxcXCIsIHJldCk7XFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTcxNS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTcyMj1pbnQgbmV0ZnNfcHJlZmV0Y2hfZm9yX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTczMS1cXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmM6NzMyOlxcdF9lbnRlcihcXFwiJXp4IEAlbGx4XFxcIiwgZmxlbiwgc3RhcnQpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy03MzMtXFxuLS1cXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNzY0LWVycm9yOlxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3NjU6XFx0X2xlYXZlKFxcXCIgPSAlZFxcXCIsIHJldCk7XFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTc2Ni1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYz04Nz1zc2l6ZV90IG5ldGZzX3BlcmZvcm1fd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTI4Ni1cXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM6Mjg3OlxcdFxcdFxcdFxcdF9kZWJ1ZyhcXFwicHJlZmV0Y2ggPSAlemRcXFwiLCByZXQpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtMjg4LVxcdFxcdFxcdFxcdGdvdG8gZXJyb3JfZm9saW9fdW5sb2NrO1xcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYy00MzItXFx0aW9jYi1cXHUwMDNla2lfcG9zICs9IHdyaXR0ZW47XFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzo0MzM6XFx0X2xlYXZlKFxcXCIgPSAlemQgWyV6ZF1cXFwiLCB3cml0dGVuLCByZXQpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNDM0LVxcdHJldHVybiB3cml0dGVuID8gd3JpdHRlbiA6IHJldDtcXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM9NTAxPXNzaXplX3QgbmV0ZnNfZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYy01MDctXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzo1MDg6XFx0X2VudGVyKFxcXCIlbGx4LCV6eCwlbGx4XFxcIiwgaW9jYi1cXHUwMDNla2lfcG9zLCBpb3ZfaXRlcl9jb3VudChmcm9tKSwgaV9zaXplX3JlYWQoaW5vZGUpKTtcXG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTUwOS1cXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM9NTM3PXZtX2ZhdWx0X3QgbmV0ZnNfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgbmV0ZnNfZ3JvdXAgKm5ldGZzX2dyb3VwKVxcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYy01NDgtXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzo1NDk6XFx0X2VudGVyKFxcXCIlbHhcXFwiLCBmb2xpby1cXHUwMDNlaW5kZXgpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNTUwLVxcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYz0xMTI9c3RhdGljIHNzaXplX3QgbmV0ZnNfdW5idWZmZXJlZF9yZWFkKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLCBib29sIHN5bmMpXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jLTExNS1cXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jOjExNjpcXHRfZW50ZXIoXFxcIlI9JXggJWxseC0lbGx4XFxcIixcXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jLTExNy1cXHQgICAgICAgcnJlcS1cXHUwMDNlZGVidWdfaWQsIHJyZXEtXFx1MDAzZXN0YXJ0LCBycmVxLVxcdTAwM2VzdGFydCArIHJyZXEtXFx1MDAzZWxlbiAtIDEpO1xcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYy0xMzgtXFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYzoxMzk6XFx0X2xlYXZlKFxcXCIgPSAlemRcXFwiLCByZXQpO1xcbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTQwLVxcdHJldHVybiByZXQ7XFxuLS1cXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jPTE1Mz1zc2l6ZV90IG5ldGZzX3VuYnVmZmVyZWRfcmVhZF9pdGVyX2xvY2tlZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcXG4tLVxcbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTU5LVxcbmZzL25ldGZzL2RpcmVjdF9yZWFkLmM6MTYwOlxcdF9lbnRlcihcXFwiXFxcIik7XFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYy0xNjEtXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYz0xNT1zdGF0aWMgdm9pZCBuZXRmc191bmJ1ZmZlcmVkX3dyaXRlX2RvbmUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEpXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0xOC1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzoxOTpcXHRfZW50ZXIoXFxcIlI9JXhcXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjAtXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy00My1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzo0NDpcXHRfZGVidWcoXFxcImZpbmlzaGVkXFxcIik7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtNDUtXFx0bmV0ZnNfd2FrZV9ycmVxX2ZsYWcod3JlcSwgTkVURlNfUlJFUV9JTl9QUk9HUkVTUywgbmV0ZnNfcnJlcV90cmFjZV93YWtlX2lwKTtcXG4tLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jPTk0PXN0YXRpYyBpbnQgbmV0ZnNfdW5idWZmZXJlZF93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcXG4tLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTk5LVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jOjEwMDpcXHRfZW50ZXIoXFxcIiVsbHhcXFwiLCB3cmVxLVxcdTAwM2VsZW4pO1xcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTEwMS1cXG4tLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTE5OC1cXHRuZXRmc191bmJ1ZmZlcmVkX3dyaXRlX2RvbmUod3JlcSk7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MTk5OlxcdF9sZWF2ZShcXFwiID0gJWRcXFwiLCByZXQpO1xcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTIwMC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM9MjE1PXNzaXplX3QgbmV0ZnNfdW5idWZmZXJlZF93cml0ZV9pdGVyX2xvY2tlZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG4tLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTIyNC1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzoyMjU6XFx0X2VudGVyKFxcXCJcXFwiKTtcXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMjYtXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMzItXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MjMzOlxcdF9kZWJ1ZyhcXFwidXcgJWxseC0lbGx4XFxcIiwgc3RhcnQsIGVuZCk7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjM0LVxcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjkxLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MjkyOlxcdFxcdFxcdF9kZWJ1ZyhcXFwiYmVnaW4gPSAlemRcXFwiLCByZXQpO1xcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTI5My1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM9MzIzPXNzaXplX3QgbmV0ZnNfdW5idWZmZXJlZF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMzMyLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jOjMzMzpcXHRfZW50ZXIoXFxcIiVsbHgsJXp4LCVsbHhcXFwiLCBwb3MsIGlvdl9pdGVyX2NvdW50KGZyb20pLCBpX3NpemVfcmVhZChpbm9kZSkpO1xcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTMzNC1cXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYz0yMzQ9aW50IGZzY2FjaGVfYWRkX2NhY2hlKHN0cnVjdCBmc2NhY2hlX2NhY2hlICpjYWNoZSxcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy0yMzktXFxuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jOjI0MDpcXHRfZW50ZXIoXFxcInslcywlc31cXFwiLCBvcHMtXFx1MDAzZW5hbWUsIGNhY2hlLVxcdTAwM2VuYW1lKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2NhY2hlLmMtMjQxLVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTI1OS1cXHRwcl9ub3RpY2UoXFxcIkNhY2hlIFxcXFxcXFwiJXNcXFxcXFxcIiBhZGRlZCAodHlwZSAlcylcXFxcblxcXCIsIGNhY2hlLVxcdTAwM2VuYW1lLCBvcHMtXFx1MDAzZW5hbWUpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYzoyNjA6XFx0X2xlYXZlKFxcXCIgPSAwIFslc11cXFwiLCBjYWNoZS1cXHUwMDNlbmFtZSk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTI2MS1cXHRyZXR1cm4gMDtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9NDUwPXN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqX19mc2NhY2hlX2FjcXVpcmVfY29va2llKFxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy00NTgtXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo0NTk6XFx0X2VudGVyKFxcXCJWPSV4XFxcIiwgdm9sdW1lLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy00NjAtXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ4Ni1cXHRmc2NhY2hlX3N0YXQoXFx1MDAyNmZzY2FjaGVfbl9hY3F1aXJlc19vayk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo0ODc6XFx0X2xlYXZlKFxcXCIgPSBjPSUwOHhcXFwiLCBjb29raWUtXFx1MDAzZWRlYnVnX2lkKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ4OC1cXHRyZXR1cm4gY29va2llO1xcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz01MDM9c3RhdGljIHZvaWQgZnNjYWNoZV9wZXJmb3JtX2xvb2t1cChzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSlcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNTA3LVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NTA4OlxcdF9lbnRlcihcXFwiXFxcIik7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01MDktXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTUyMS1cXHRcXHRuZWVkX3dpdGhkcmF3ID0gdHJ1ZTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjUyMjpcXHRcXHRfbGVhdmUoXFxcIiBbZmFpbF1cXFwiKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTUyMy1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9NTY5PXZvaWQgX19mc2NhY2hlX3VzZV9jb29raWUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsIGJvb2wgd2lsbF9tb2RpZnkpXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTU3NC1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjU3NTpcXHRfZW50ZXIoXFxcImM9JTA4eFxcXCIsIGNvb2tpZS1cXHUwMDNlZGVidWdfaWQpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNTc2LVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy02MzgtXFx0XFx0ZnNjYWNoZV9xdWV1ZV9jb29raWUoY29va2llLCBmc2NhY2hlX2Nvb2tpZV9nZXRfdXNlX3dvcmspO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NjM5OlxcdF9sZWF2ZShcXFwiXFxcIik7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy02NDAtfVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz03MDA9c3RhdGljIHZvaWQgZnNjYWNoZV9jb29raWVfc3RhdGVfbWFjaGluZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSlcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNzA0LVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NzA1OlxcdF9lbnRlcihcXFwiYz0leFxcXCIsIGNvb2tpZS1cXHUwMDNlZGVidWdfaWQpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNzA2LVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy04MjYtXFx0XFx0d2FrZV91cF9jb29raWVfc3RhdGUoY29va2llKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjgyNzpcXHRfbGVhdmUoXFxcIlxcXCIpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtODI4LX1cXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9ODYwPXN0YXRpYyB2b2lkIGZzY2FjaGVfY29va2llX2xydV9kb19vbmUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUpXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTg3My1cXHRcXHRmc2NhY2hlX3N0YXQoXFx1MDAyNmZzY2FjaGVfbl9jb29raWVzX2xydV9leHBpcmVkKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjg3NDpcXHRcXHRfZGVidWcoXFxcImxydSBjPSV4XFxcIiwgY29va2llLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy04NzUtXFx0XFx0X19mc2NhY2hlX3dpdGhkcmF3X2Nvb2tpZShjb29raWUpO1xcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz05NzI9dm9pZCBfX2ZzY2FjaGVfcmVsaW5xdWlzaF9jb29raWUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsIGJvb2wgcmV0aXJlKVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy05NzctXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo5Nzg6XFx0X2VudGVyKFxcXCJjPSUwOHh7JWR9LCVkXFxcIixcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTk3OS1cXHQgICAgICAgY29va2llLVxcdTAwM2VkZWJ1Z19pZCwgYXRvbWljX3JlYWQoXFx1MDAyNmNvb2tpZS1cXHUwMDNlbl9hY3RpdmUpLCByZXRpcmUpO1xcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz0xMDUxPXZvaWQgX19mc2NhY2hlX2ludmFsaWRhdGUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTEwNTYtXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMDU3OlxcdF9lbnRlcihcXFwiYz0leFxcXCIsIGNvb2tpZS1cXHUwMDNlZGVidWdfaWQpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA1OC1cXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA3OC1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2Y29va2llLVxcdTAwM2Vsb2NrKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjEwNzk6XFx0XFx0X2xlYXZlKFxcXCIgW25vICV1XVxcXCIsIGNvb2tpZS1cXHUwMDNlc3RhdGUpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA4MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTEwODctXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmNvb2tpZS1cXHUwMDNlbG9jayk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMDg4OlxcdFxcdF9sZWF2ZShcXFwiIFtsb29rICV4XVxcXCIsIGNvb2tpZS1cXHUwMDNlaW52YWxfY291bnRlcik7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMDg5LVxcdFxcdHJldHVybjtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTEwMC1cXHRcXHRcXHRmc2NhY2hlX3F1ZXVlX2Nvb2tpZShjb29raWUsIGZzY2FjaGVfY29va2llX2dldF9pbnZhbF93b3JrKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjExMDE6XFx0XFx0X2xlYXZlKFxcXCIgW2ludl1cXFwiKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTExMDItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jPTIyPWJvb2wgZnNjYWNoZV93YWl0X2Zvcl9vcGVyYXRpb24oc3RydWN0IG5ldGZzX2NhY2hlX3Jlc291cmNlcyAqY3JlcyxcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0yOS1cXHRpZiAoIWZzY2FjaGVfY2FjaGVfaXNfbGl2ZShjb29raWUtXFx1MDAzZXZvbHVtZS1cXHUwMDNlY2FjaGUpKSB7XFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjMwOlxcdFxcdF9sZWF2ZShcXFwiIFticm9rZW5dXFxcIik7XFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTMxLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0zNC1cXHRzdGF0ZSA9IGZzY2FjaGVfY29va2llX3N0YXRlKGNvb2tpZSk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjM1OlxcdF9lbnRlcihcXFwiYz0lMDh4eyV1fSwleFxcXCIsIGNvb2tpZS1cXHUwMDNlZGVidWdfaWQsIHN0YXRlLCB3YW50X3N0YXRlKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMzYtXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtNTMtXFx0ZGVmYXVsdDpcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6NTQ6XFx0XFx0X2xlYXZlKFxcXCIgW25vdCBsaXZlXVxcXCIpO1xcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy01NS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM9NzA9c3RhdGljIGludCBmc2NhY2hlX2JlZ2luX29wZXJhdGlvbihzdHJ1Y3QgbmV0ZnNfY2FjaGVfcmVzb3VyY2VzICpjcmVzLFxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTkzLVxcdHN0YXRlID0gZnNjYWNoZV9jb29raWVfc3RhdGUoY29va2llKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6OTQ6XFx0X2VudGVyKFxcXCJjPSUwOHh7JXV9LCV4XFxcIiwgY29va2llLVxcdTAwM2VkZWJ1Z19pZCwgc3RhdGUsIHdhbnRfc3RhdGUpO1xcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy05NS1cXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0xNDEtXFx0ZnNjYWNoZV9lbmRfY29va2llX2FjY2Vzcyhjb29raWUsIGZzY2FjaGVfYWNjZXNzX2lvX25vdF9saXZlKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6MTQyOlxcdF9sZWF2ZShcXFwiID0gLUVOT0JVRlNcXFwiKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMTQzLVxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYz0yMDk9dm9pZCBfX2ZzY2FjaGVfd3JpdGVfdG9fY2FjaGUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMjIzLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYzoyMjQ6XFx0X2VudGVyKFxcXCIlbGx4LCV6eFxcXCIsIHN0YXJ0LCBsZW4pO1xcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0yMjUtXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYz0xMDA9dm9pZCBfX2V4aXQgZnNjYWNoZV9leGl0KHZvaWQpXFxuZnMvbmV0ZnMvZnNjYWNoZV9tYWluLmMtMTAxLXtcXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYzoxMDI6XFx0X2VudGVyKFxcXCJcXFwiKTtcXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy0xMDMtXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jPTIxMj1zdGF0aWMgc3RydWN0IGZzY2FjaGVfdm9sdW1lICpmc2NhY2hlX2FsbG9jX3ZvbHVtZShjb25zdCBjaGFyICp2b2x1bWVfa2V5LFxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy0yNjUtXFx0dXBfd3JpdGUoXFx1MDAyNmZzY2FjaGVfYWRkcmVtb3ZlX3NlbSk7XFxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYzoyNjY6XFx0X2xlYXZlKFxcXCIgPSB2PSV4XFxcIiwgdm9sdW1lLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy0yNjctXFx0cmV0dXJuIHZvbHVtZTtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfdm9sdW1lLmM9NDYzPXZvaWQgZnNjYWNoZV93aXRoZHJhd192b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUpXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTQ2Ni1cXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jOjQ2NzpcXHRfZGVidWcoXFxcIndpdGhkcmF3IFY9JXhcXFwiLCB2b2x1bWUtXFx1MDAzZWRlYnVnX2lkKTtcXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTQ2OC1cXG4tLVxcbmZzL25ldGZzL2ludGVybmFsLmg9NDU4PXZvaWQgZnNjYWNoZV9jcmVhdGVfdm9sdW1lKHN0cnVjdCBmc2NhY2hlX3ZvbHVtZSAqdm9sdW1lLCBib29sIHdhaXQpO1xcbi0tXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC00OTctI2lmZGVmIF9fS0RFQlVHXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo0OTg6I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pIGtlbnRlcihGTVQsICMjX19WQV9BUkdTX18pXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo0OTk6I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDA6I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pIGtkZWJ1ZyhGTVQsICMjX19WQV9BUkdTX18pXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MDEtXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MDItI2VsaWYgZGVmaW5lZChDT05GSUdfTkVURlNfREVCVUcpXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDM6I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbmZzL25ldGZzL2ludGVybmFsLmgtNTA0LWRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTUwOC1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjUwOTojZGVmaW5lIF9sZWF2ZShGTVQsIC4uLilcXHRcXHRcXHRcXFxcXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MTAtZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmZzL25ldGZzL2ludGVybmFsLmgtNTE0LVxcbmZzL25ldGZzL2ludGVybmFsLmg6NTE1OiNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKVxcdFxcdFxcdFxcXFxcXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTUxNi1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MjEtI2Vsc2VcXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjUyMjojZGVmaW5lIF9lbnRlcihGTVQsIC4uLikgbm9fcHJpbnRrKFxcXCI9PVxcdTAwM2UgJXMoXFxcIkZNVFxcXCIpXFxcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MjM6I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIG5vX3ByaW50ayhcXFwiXFx1MDAzYz09ICVzKClcXFwiRk1UXFxcIlxcXCIsIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKVxcbmZzL25ldGZzL2ludGVybmFsLmg6NTI0OiNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBub19wcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxcbmZzL25ldGZzL2ludGVybmFsLmgtNTI1LSNlbmRpZlxcbi0tXFxuZnMvbmV0ZnMvbWlzYy5jPTEzNj1ib29sIG5ldGZzX2RpcnR5X2ZvbGlvKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuZnMvbmV0ZnMvbWlzYy5jLTE0Mi1cXG5mcy9uZXRmcy9taXNjLmM6MTQzOlxcdF9lbnRlcihcXFwiXFxcIik7XFxuZnMvbmV0ZnMvbWlzYy5jLTE0NC1cXG4tLVxcbmZzL25ldGZzL21pc2MuYz0yMTE9dm9pZCBuZXRmc19pbnZhbGlkYXRlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpXFxuLS1cXG5mcy9uZXRmcy9taXNjLmMtMjE3LVxcbmZzL25ldGZzL21pc2MuYzoyMTg6XFx0X2VudGVyKFxcXCJ7JWx4fSwlengsJXp4XFxcIiwgZm9saW8tXFx1MDAzZWluZGV4LCBvZmZzZXQsIGxlbmd0aCk7XFxuZnMvbmV0ZnMvbWlzYy5jLTIxOS1cXG4tLVxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jPTQyPXN0YXRpYyB2b2lkIG5ldGZzX3VubG9ja19yZWFkX2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLFxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtODctXFx0ICAgIHRlc3RfYml0KE5FVEZTX1JSRVFfTk9fVU5MT0NLX0ZPTElPLCBcXHUwMDI2cnJlcS1cXHUwMDNlZmxhZ3MpKSB7XFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM6ODg6XFx0XFx0X2RlYnVnKFxcXCJubyB1bmxvY2tcXFwiKTtcXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy04OS1cXHR9IGVsc2Uge1xcbi0tXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM9MTg1PXN0YXRpYyB2b2lkIG5ldGZzX2NvbGxlY3RfcmVhZF9yZXN1bHRzKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtMTkwLVxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjE5MTpcXHRfZW50ZXIoXFxcIiVsbHgtJWxseFxcXCIsIHJyZXEtXFx1MDAzZXN0YXJ0LCBycmVxLVxcdTAwM2VzdGFydCArIHJyZXEtXFx1MDAzZWxlbik7XFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtMTkyLVxcdHRyYWNlX25ldGZzX3JyZXEocnJlcSwgbmV0ZnNfcnJlcV90cmFjZV9jb2xsZWN0KTtcXG4tLVxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTIxNS1cXHRcXHR0cmFjZV9uZXRmc19jb2xsZWN0X3NyZXEocnJlcSwgZnJvbnQpO1xcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjIxNjpcXHRcXHRfZGVidWcoXFxcInNyZXEgWyV4XSAlbGx4ICV6eC8lenhcXFwiLFxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTIxNy1cXHRcXHQgICAgICAgZnJvbnQtXFx1MDAzZWRlYnVnX2luZGV4LCBmcm9udC1cXHUwMDNlc3RhcnQsIGZyb250LVxcdTAwM2V0cmFuc2ZlcnJlZCwgZnJvbnQtXFx1MDAzZWxlbik7XFxuLS1cXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMjgtb3V0OlxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjMyOTpcXHRfbGVhdmUoXFxcIiA9ICV4XFxcIiwgbm90ZXMpO1xcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTMzMC1cXHRyZXR1cm47XFxuLS1cXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMzYtXFx0ICovXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM6MzM3OlxcdF9kZWJ1ZyhcXFwicmV0cnlcXFwiKTtcXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMzgtXFx0bmV0ZnNfcmV0cnlfcmVhZHMocnJlcSk7XFxuLS1cXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYz0xOT1zdGF0aWMgdm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKmNyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0yNS1cXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoyNjpcXHRfZW50ZXIoXFxcIlxcXCIpO1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jLTI3LVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMzUtXFx0XFx0LyogbW1hcCBiZXlvbmQgZW9mLiAqL1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jOjM2OlxcdFxcdF9kZWJ1ZyhcXFwiYmV5b25kIGVvZlxcXCIpO1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jLTM3LVxcdFxcdGZvbGlvX2VuZF9wcml2YXRlXzIoZm9saW8pO1xcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtNTAtXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmM6NTE6XFx0X2RlYnVnKFxcXCJmb2xpbyAlenggJXp4XFxcIiwgZmxlbiwgZnNpemUpO1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jLTUyLVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jPTI2PXN0YXRpYyB2b2lkIG5ldGZzX3JldHJ5X3JlYWRfc3VicmVxdWVzdHMoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEpXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMzEtXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jOjMyOlxcdF9lbnRlcihcXFwiUj0leFxcXCIsIHJyZXEtXFx1MDAzZWRlYnVnX2lkKTtcXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMzMtXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtOTAtXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jOjkxOlxcdFxcdF9kZWJ1ZyhcXFwiZnJvbSBSPSUwOHhbJXhdIHM9JWxseCBjdGw9JXp4LyV6eFxcXCIsXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTkyLVxcdFxcdCAgICAgICBycmVxLVxcdTAwM2VkZWJ1Z19pZCwgZnJvbS1cXHUwMDNlZGVidWdfaW5kZXgsXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMTE1LVxcbmZzL25ldGZzL3JlYWRfcmV0cnkuYzoxMTY6XFx0XFx0X2RlYnVnKFxcXCIgLSByYW5nZTogJWxseC0lbGx4ICVsbHhcXFwiLCBzdGFydCwgc3RhcnQgKyBsZW4gLSAxLCBsZW4pO1xcbmZzL25ldGZzL3JlYWRfcmV0cnkuYy0xMTctXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM9MjkxPXZvaWQgbmV0ZnNfdW5sb2NrX2FiYW5kb25lZF9yZWFkX3BhZ2VzKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTMwMi1cXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZycmVxLVxcdTAwM2VmbGFncykpIHtcXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM6MzAzOlxcdFxcdFxcdFxcdFxcdF9kZWJ1ZyhcXFwibm8gdW5sb2NrXFxcIik7XFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTMwNC1cXHRcXHRcXHRcXHR9IGVsc2Uge1xcbi0tXFxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYz03NT1zdGF0aWMgdm9pZCBuZXRmc19zaW5nbGVfcmVhZF9jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSxcXG4tLVxcbmZzL25ldGZzL3JlYWRfc2luZ2xlLmMtNzktXFxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYzo4MDpcXHRfZW50ZXIoXFxcIlI9JTA4eFsleF1cXFwiLCBycmVxLVxcdTAwM2VkZWJ1Z19pZCwgc3VicmVxLVxcdTAwM2VkZWJ1Z19pbmRleCk7XFxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYy04MS1cXHRuZXRmc19zdGF0KFxcdTAwMjZuZXRmc19uX3JoX3JlYWQpO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jPTIwMD1zdGF0aWMgdm9pZCBuZXRmc19jb2xsZWN0X3dyaXRlX3Jlc3VsdHMoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEpXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMjA3LVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzoyMDg6XFx0X2VudGVyKFxcXCIlbGx4LSVsbHhcXFwiLCB3cmVxLVxcdTAwM2VzdGFydCwgd3JlcS1cXHUwMDNlc3RhcnQgKyB3cmVxLVxcdTAwM2VsZW4pO1xcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0yMDktXFx0dHJhY2VfbmV0ZnNfY29sbGVjdCh3cmVxKTtcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0yMzktXFx0XFx0XFx0dHJhY2VfbmV0ZnNfY29sbGVjdF9zcmVxKHdyZXEsIGZyb250KTtcXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM6MjQwOlxcdFxcdFxcdC8vX2RlYnVnKFxcXCJzcmVxIFsleF0gJWxseCAlengvJXp4XFxcIixcXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMjQxLVxcdFxcdFxcdC8vICAgICAgIGZyb250LVxcdTAwM2VkZWJ1Z19pbmRleCwgZnJvbnQtXFx1MDAzZXN0YXJ0LCBmcm9udC1cXHUwMDNldHJhbnNmZXJyZWQsIGZyb250LVxcdTAwM2VsZW4pO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTM0NC1cXHR3cmVxLVxcdTAwM2Vucl9ncm91cF9yZWwgPSAwO1xcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzozNDU6XFx0X2xlYXZlKFxcXCIgPSAleFxcXCIsIG5vdGVzKTtcXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMzQ2LVxcdHJldHVybjtcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNTItXFx0ICovXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjM1MzpcXHRfZGVidWcoXFxcInJldHJ5XFxcIik7XFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTM1NC1cXHRuZXRmc19yZXRyeV93cml0ZXMod3JlcSk7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM9MzYxPWJvb2wgbmV0ZnNfd3JpdGVfY29sbGVjdGlvbihzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNjctXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjM2ODpcXHRfZW50ZXIoXFxcIlI9JXhcXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTM2OS1cXG4tLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy00MDYtXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjQwNzpcXHRfZGVidWcoXFxcImZpbmlzaGVkXFxcIik7XFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTQwOC1cXHRuZXRmc193YWtlX3JyZXFfZmxhZyh3cmVxLCBORVRGU19SUkVRX0lOX1BST0dSRVNTLCBuZXRmc19ycmVxX3RyYWNlX3dha2VfaXApO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jPTQ2OT12b2lkIG5ldGZzX3dyaXRlX3N1YnJlcXVlc3RfdGVybWluYXRlZCh2b2lkICpfb3AsIHNzaXplX3QgdHJhbnNmZXJyZWRfb3JfZXJyb3IpXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtNDczLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzo0NzQ6XFx0X2VudGVyKFxcXCIleFsleF0gJXpkXFxcIiwgd3JlcS1cXHUwMDNlZGVidWdfaWQsIHN1YnJlcS1cXHUwMDNlZGVidWdfaW5kZXgsIHRyYW5zZmVycmVkX29yX2Vycm9yKTtcXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtNDc1LVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz05MD1zdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqbmV0ZnNfY3JlYXRlX3dyaXRlX3JlcShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMTA1LVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MTA2OlxcdF9lbnRlcihcXFwiUj0leFxcXCIsIHdyZXEtXFx1MDAzZWRlYnVnX2lkKTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTEwNy1cXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM9MTU3PXZvaWQgbmV0ZnNfcHJlcGFyZV93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMTc3LVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MTc4OlxcdF9lbnRlcihcXFwiUj0leFsleF1cXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCwgc3VicmVxLVxcdTAwM2VkZWJ1Z19pbmRleCk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0xNzktXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTIyNz1zdGF0aWMgdm9pZCBuZXRmc19kb19pc3N1ZV93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fc3RyZWFtICpzdHJlYW0sXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTIzMS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjIzMjpcXHRfZW50ZXIoXFxcIlI9JXhbJXhdLCV6eFxcXCIsIHdyZXEtXFx1MDAzZWRlYnVnX2lkLCBzdWJyZXEtXFx1MDAzZWRlYnVnX2luZGV4LCBzdWJyZXEtXFx1MDAzZWxlbik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yMzMtXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTI3OD1zaXplX3QgbmV0ZnNfYWR2YW5jZV93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMjg1LVxcdGlmICghc3RyZWFtLVxcdTAwM2VhdmFpbCkge1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6Mjg2OlxcdFxcdF9sZWF2ZShcXFwibm8gd3JpdGVcXFwiKTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTI4Ny1cXHRcXHRyZXR1cm4gbGVuO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yODktXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzoyOTA6XFx0X2VudGVyKFxcXCJSPSV4WyV4XVxcXCIsIHdyZXEtXFx1MDAzZWRlYnVnX2lkLCBzdWJyZXEgPyBzdWJyZXEtXFx1MDAzZWRlYnVnX2luZGV4IDogMCk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yOTEtXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTMwMS1cXHRwYXJ0ID0gdW1pbihzdHJlYW0tXFx1MDAzZXNyZXFfbWF4X2xlbiAtIHN1YnJlcS1cXHUwMDNlbGVuLCBsZW4pO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MzAyOlxcdF9kZWJ1ZyhcXFwicGFydCAlengvJXp4ICV6eC8lenhcXFwiLCBzdWJyZXEtXFx1MDAzZWxlbiwgc3RyZWFtLVxcdTAwM2VzcmVxX21heF9sZW4sIHBhcnQsIGxlbik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zMDMtXFx0c3VicmVxLVxcdTAwM2VsZW4gKz0gcGFydDtcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM9MzIwPXN0YXRpYyBpbnQgbmV0ZnNfd3JpdGVfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTMzNC1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjMzNTpcXHRfZW50ZXIoXFxcIlxcXCIpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzM2LVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zNDctXFx0XFx0LyogbW1hcCBiZXlvbmQgZW9mLiAqL1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MzQ4OlxcdFxcdF9kZWJ1ZyhcXFwiYmV5b25kIGVvZlxcXCIpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzQ5LVxcdFxcdGZvbGlvX3N0YXJ0X3dyaXRlYmFjayhmb2xpbyk7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTM4MS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjM4MjpcXHRfZGVidWcoXFxcImZvbGlvICV6eCAlenggJXp4XFxcIiwgZm9mZiwgZmxlbiwgZnNpemUpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzgzLVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01MTQtXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo1MTU6XFx0X2xlYXZlKFxcXCIgPSAwXFxcIik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01MTYtXFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTU0Nj1pbnQgbmV0ZnNfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNTcyLVxcdGRvIHtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjU3MzpcXHRcXHRfZGVidWcoXFxcIndiaXRlciAlbHggJWxseFxcXCIsIGZvbGlvLVxcdTAwM2VpbmRleCwgYXRvbWljNjRfcmVhZChcXHUwMDI2d3JlcS1cXHUwMDNlaXNzdWVkX3RvKSk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01NzQtXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTU5NC1cXHRuZXRmc19wdXRfcmVxdWVzdCh3cmVxLCBuZXRmc19ycmVxX3RyYWNlX3B1dF9yZXR1cm4pO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NTk1OlxcdF9sZWF2ZShcXFwiID0gJWRcXFwiLCBlcnJvcik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01OTYtXFx0cmV0dXJuIGVycm9yO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02MDgtXFx0bmV0ZnNfd2JfZW5kKGljdHgpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NjA5OlxcdF9sZWF2ZShcXFwiID0gJWRcXFwiLCBlcnJvcik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02MTAtXFx0cmV0dXJuIGVycm9yO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz02NDM9aW50IG5ldGZzX2FkdmFuY2Vfd3JpdGV0aHJvdWdoKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICp3cmVxLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNjQ4LVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NjQ5OlxcdF9lbnRlcihcXFwiUj0leCBpYz0lenUgd3M9JXUgY3A9JXp1IHRwPSV1XFxcIixcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTY1MC1cXHQgICAgICAgd3JlcS1cXHUwMDNlZGVidWdfaWQsIHdyZXEtXFx1MDAzZWJ1ZmZlci5pdGVyLmNvdW50LCB3cmVxLVxcdTAwM2V3c2l6ZSwgY29waWVkLCB0b19wYWdlX2VuZCk7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTY4Nz1zc2l6ZV90IG5ldGZzX2VuZF93cml0ZXRocm91Z2goc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjLFxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02OTEtXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo2OTI6XFx0X2VudGVyKFxcXCJSPSV4XFxcIiwgd3JlcS1cXHUwMDNlZGVidWdfaWQpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNjkzLVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz03MTQ9c3RhdGljIGludCBuZXRmc193cml0ZV9mb2xpb19zaW5nbGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTcyNi1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjcyNzpcXHRfZW50ZXIoXFxcIlxcXCIpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNzI4LVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy03MzctXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo3Mzg6XFx0X2RlYnVnKFxcXCJmb2xpbyAlengvJXp4XFxcIiwgZmxlbiwgZnNpemUpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNzM5LVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04MjQtXFx0XFx0a2RlYnVnKFxcXCJSPSV4OiBObyBzdWJtaXRcXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo4MjU6XFx0X2xlYXZlKFxcXCIgPSAwXFxcIik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04MjYtXFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTg0MT1pbnQgbmV0ZnNfd3JpdGViYWNrX3NpbmdsZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtODc3LVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6ODc4OlxcdFxcdFxcdF9kZWJ1ZyhcXFwid2JpdGVyICVseCAlbGx4XFxcIiwgZm9saW8tXFx1MDAzZWluZGV4LCBhdG9taWM2NF9yZWFkKFxcdTAwMjZ3cmVxLVxcdTAwM2Vpc3N1ZWRfdG8pKTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTg3OS1cXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtODk3LVxcdG5ldGZzX3B1dF9yZXF1ZXN0KHdyZXEsIG5ldGZzX3JyZXFfdHJhY2VfcHV0X3JldHVybik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo4OTg6XFx0X2xlYXZlKFxcXCIgPSAlZFxcXCIsIHJldCk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04OTktXFx0cmV0dXJuIHJldDtcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtOTAyLVxcdG5ldGZzX3diX2VuZChpY3R4KTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjkwMzpcXHRfbGVhdmUoXFxcIiA9ICVkXFxcIiwgcmV0KTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTkwNC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfcmV0cnkuYz0xNz1zdGF0aWMgdm9pZCBuZXRmc19yZXRyeV93cml0ZV9zdHJlYW0oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9yZXRyeS5jLTIxLVxcbmZzL25ldGZzL3dyaXRlX3JldHJ5LmM6MjI6XFx0X2VudGVyKFxcXCJSPSV4WyV4Ol1cXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCwgc3RyZWFtLVxcdTAwM2VzdHJlYW1fbnIpO1xcbmZzL25ldGZzL3dyaXRlX3JldHJ5LmMtMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjMzLjk4ODg2OTY0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODg4MDE4NjI1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRXZhbHVhdGlvbjogRGVidWcgTG9nZ2luZyBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uc3VsdCBTZWN0aW9uIDIgb2YgdGhlIHRyaWFnZSBwaGlsb3NvcGh5IHJlZ2FyZGluZyB3aGVuIHRvIG1hcmsgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUga2V5IGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGlmIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLCBzcGVjaWZpY2FsbHkgXCJQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nLi4udGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cIlxuXG5Ob3csIGxldCdzIGFuYWx5emUgdGhlIHBhdGNoLiBMb29raW5nIGF0IGBmcy9uZXRmcy9pbnRlcm5hbC5oYCwgaXQncyBjbGVhciB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCB0aGUgZGVidWcgbG9nZ2luZyBtYWNyb3M6IGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgY2hlY2sgYWdhaW5zdCBhIGZpbmUtZ3JhaW5lZCBiaXRtYXNrIGBuZXRmc19kZWJ1Z2AgYmVmb3JlIGludm9raW5nIHRoZSB1bmRlcmx5aW5nIGBrZW50ZXJgLCBga2xlYXZlYCwgb3IgYGtkZWJ1Z2AgZnVuY3Rpb25zICh3aGljaCwgaW4gdHVybiwgdXNlIGBkYmdwcmludGtgKS5cblxuQWZ0ZXIgdmVyaWZ5aW5nIHRoYXQgdGhlIGRpZmYgaXMgcmVzdHJpY3RlZCB0byBgZnMvbmV0ZnMvaW50ZXJuYWwuaGAsIHRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIHB1cmVseSBmb3IgZGVidWcgb3V0cHV0OyBzcGVjaWZpY2FsbHksIHRoZXkgZW5hYmxlIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHdoYXQgZGVidWcgbWVzc2FnZXMgYXJlIGRpc3BsYXllZC4gVGhleSBkb24ndCBhZmZlY3Qga2VybmVsIGNvbnRyb2wgZmxvdywgZG9uJ3QgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFuZCBkb24ndCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IGFzc2VydGlvbnMgb3IgZXJyb3IgaGFuZGxpbmcuIEVzc2VudGlhbGx5LCB0aGVzZSB1cGRhdGVzIGp1c3QgY2hhbmdlICp3aGVuKiBkZWJ1ZyBtZXNzYWdlcyBhcmUgcHJpbnRlZCBiYXNlZCBvbiB0aGUgYml0bWFzayBpbiBgbmV0ZnNfZGVidWdgLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXRjaCBzdHJpY3RseSBmYWxscyB1bmRlciB0aGUgXCJQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nXCIgY2F0ZWdvcnkuIENvbnNlcXVlbnRseSwgdGhpcyBwYXRjaCBkb2Vzbid0IHdhcnJhbnQgZnV6emluZy5cblxuTXkgY29uY2x1c2lvbiBpczpcblxuLSAgIGBXb3J0aEZ1enppbmc6IGZhbHNlYFxuLSAgIGBGb2N1c1N5bWJvbHM6IFtdYFxuLSAgIGBFbmFibGVDb25maWdzOiBbXWBcbi0gICBgUmVhc29uaW5nOiBQdXJlbHkgZGVidWcgbG9nZ2luZyBtYWNybyB1cGRhdGVzIGluIG5ldGZzL2ZzY2FjaGUgdGhhdCBkbyBub3QgY2hhbmdlIGtlcm5lbCBsb2dpYywgZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIG9yIGFzc2VydGlvbnMuYFxuXG5UaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzMjIsIk91dHB1dFRva2VucyI6OTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjQyLjg2OTA1NzgyMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZGVidWcgbG9nZ2luZyBtYWNyb3MgKF9lbnRlciwgX2xlYXZlLCBfZGVidWcpIGluIGZzL25ldGZzL2ludGVybmFsLmggdG8gc3VwcG9ydCBmaW5lLWdyYWluZWQgZGVidWcgbGV2ZWwgYml0bWFzayBmaWx0ZXJpbmcuIEl0IGNvbnN0aXR1dGVzIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgY2hhbmdlcyBhbmQgZG9lcyBub3QgYWx0ZXIgZXhlY3V0YWJsZSBjb250cm9sIGZsb3csIGRhdGEgc3RydWN0dXJlcywgc3RhdGUgbWFuYWdlbWVudCwgb3IgcnVudGltZSBhc3NlcnRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOTo0Mi44NjkwNzg4MjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowb6jgv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 10:44:42 +0000 UTC FinishedAt: 2026-09-06 11:29:44 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTAwMjIyZTgwOGYxOGMzOGU2Nzk5MmU3NDY4NGY5YThiNTkyZjEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMTE6Mjk6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbmV0ZnMvaW50ZXJuYWwuaCBiL2ZzL25ldGZzL2ludGVybmFsLmhcbmluZGV4IDQyMGVlN2IyNjU4MGYuLjQyNWM3M2I3ZTc3YjQgMTAwNjQ0XG4tLS0gYS9mcy9uZXRmcy9pbnRlcm5hbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9uZXRmcy9pbnRlcm5hbC5oXG5AQCAtNDY4LDYgJiM0Mzs0NjgsMzIgQEAgdm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7XG4gI2RlZmluZSBrbGVhdmUoRk1ULCAuLi4pIGRiZ3ByaW50ayhcJiMzNDtcdTAwM2M9PSAlcygpXCYjMzQ7Rk1UXCYjMzQ7XCYjMzQ7LCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcbiAjZGVmaW5lIGtkZWJ1ZyhGTVQsIC4uLikgZGJncHJpbnRrKEZNVCwgIyNfX1ZBX0FSR1NfXylcbiBcbiYjNDM7I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NBQ0hFXHQwXG4mIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19DT09LSUVcdDFcbiYjNDM7I2RlZmluZSBGU0NBQ0hFX0RFQlVHX09CSkVDVFx0MlxuJiM0MzsjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT1BFUkFUSU9OXHQzXG4mIzQzO1xuJiM0MzsjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfRU5URVJcdDFcbiYjNDM7I2RlZmluZSBGU0NBQ0hFX1BPSU5UX0xFQVZFXHQyXG4mIzQzOyNkZWZpbmUgRlNDQUNIRV9QT0lOVF9ERUJVR1x0NFxuJiM0MztcbiYjNDM7I2lmbmRlZiBGU0NBQ0hFX0RFQlVHX0xFVkVMXG4mIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIERldGVybWluZSB3aGV0aGVyIGEgcGFydGljdWxhciBvcHRpb25hbCBkZWJ1Z2dpbmcgcG9pbnQgc2hvdWxkIGJlIGxvZ2dlZC5cbiYjNDM7ICogVGhyZWUgbGV2ZWxzIG9mIGluZGlyZWN0aW9uIGFyZSBuZWVkZWQgdG8gZXhwYW5kIEZTQ0FDSEVfREVCVUdfTEVWRUwgYmVmb3JlXG4mIzQzOyAqIGpvaW5pbmcgaXQgd2l0aCBpdHMgcHJlZml4LlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXFxcbiYjNDM7XHR1bmxpa2VseShuZXRmc19kZWJ1ZyBcdTAwMjYgXFxcbiYjNDM7XHRcdCAoRlNDQUNIRV9QT0lOVF8jI1BPSU5UIFx1MDAzY1x1MDAzYyAoRlNDQUNIRV9ERUJVR18gIyMgTEVWRUwgKiAzKSkpXG4mIzQzOyNkZWZpbmUgX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXFxcbiYjNDM7XHRfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVClcbiYjNDM7I2RlZmluZSBfX2RvX2tkZWJ1ZyhQT0lOVCkgXFxcbiYjNDM7XHRfX19kb19rZGVidWcoRlNDQUNIRV9ERUJVR19MRVZFTCwgUE9JTlQpXG4mIzQzO1xuICNpZmRlZiBfX0tERUJVR1xuICNkZWZpbmUgX2VudGVyKEZNVCwgLi4uKSBrZW50ZXIoRk1ULCAjI19fVkFfQVJHU19fKVxuICNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKVxuQEAgLTQ3NiwxOSAmIzQzOzUwMiwxOSBAQCB2b2lkIGZzY2FjaGVfY3JlYXRlX3ZvbHVtZShzdHJ1Y3QgZnNjYWNoZV92b2x1bWUgKnZvbHVtZSwgYm9vbCB3YWl0KTtcbiAjZWxpZiBkZWZpbmVkKENPTkZJR19ORVRGU19ERUJVRylcbiAjZGVmaW5lIF9lbnRlcihGTVQsIC4uLilcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcXFxuLVx0aWYgKG5ldGZzX2RlYnVnKVx0XHRcdFxcXG4mIzQzO1x0aWYgKF9fZG9fa2RlYnVnKEVOVEVSKSlcdFx0XHRcXFxuIFx0XHRrZW50ZXIoRk1ULCAjI19fVkFfQVJHU19fKTtcdFxcXG4gfSB3aGlsZSAoMClcbiBcbiAjZGVmaW5lIF9sZWF2ZShGTVQsIC4uLilcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcXFxuLVx0aWYgKG5ldGZzX2RlYnVnKVx0XHRcdFxcXG4mIzQzO1x0aWYgKF9fZG9fa2RlYnVnKExFQVZFKSlcdFx0XHRcXFxuIFx0XHRrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKTtcdFxcXG4gfSB3aGlsZSAoMClcbiBcbiAjZGVmaW5lIF9kZWJ1ZyhGTVQsIC4uLilcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcXFxuLVx0aWYgKG5ldGZzX2RlYnVnKVx0XHRcdFxcXG4mIzQzO1x0aWYgKF9fZG9fa2RlYnVnKERFQlVHKSlcdFx0XHRcXFxuIFx0XHRrZGVidWcoRk1ULCAjI19fVkFfQVJHU19fKTtcdFxcXG4gfSB3aGlsZSAoMClcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMToyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRlYnVnIGxvZ2dpbmcgbWFjcm9zIChfZW50ZXIsIF9sZWF2ZSwgX2RlYnVnKSBpbiBmcy9uZXRmcy9pbnRlcm5hbC5oIHRvIHN1cHBvcnQgZmluZS1ncmFpbmVkIGRlYnVnIGxldmVsIGJpdG1hc2sgZmlsdGVyaW5nLiBJdCBjb25zdGl0dXRlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGNoYW5nZXMgYW5kIGRvZXMgbm90IGFsdGVyIGV4ZWN1dGFibGUgY29udHJvbCBmbG93LCBkYXRhIHN0cnVjdHVyZXMsIHN0YXRlIG1hbmFnZW1lbnQsIG9yIHJ1bnRpbWUgYXNzZXJ0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMDAyMjJlODA4ZjE4YzM4ZTY3OTkyZTc0Njg0ZjlhOGI1OTJmMTA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAxMToyOTowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL25ldGZzL2ludGVybmFsLmggYi9mcy9uZXRmcy9pbnRlcm5hbC5oCmluZGV4IDQyMGVlN2IyNjU4MGYuLjQyNWM3M2I3ZTc3YjQgMTAwNjQ0Ci0tLSBhL2ZzL25ldGZzL2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbmV0ZnMvaW50ZXJuYWwuaApAQCAtNDY4LDYgJiM0Mzs0NjgsMzIgQEAgdm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7CiAjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKCYjMzQ7Jmx0Oz09ICVzKCkmIzM0O0ZNVCYjMzQ7JiMzNDssIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBrZGVidWcoRk1ULCAuLi4pIGRiZ3ByaW50ayhGTVQsICMjX19WQV9BUkdTX18pCiAKJiM0MzsjZGVmaW5lIEZTQ0FDSEVfREVCVUdfQ0FDSEUJMAomIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19DT09LSUUJMQomIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19PQkpFQ1QJMgomIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19PUEVSQVRJT04JMwomIzQzOwomIzQzOyNkZWZpbmUgRlNDQUNIRV9QT0lOVF9FTlRFUgkxCiYjNDM7I2RlZmluZSBGU0NBQ0hFX1BPSU5UX0xFQVZFCTIKJiM0MzsjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfREVCVUcJNAomIzQzOwomIzQzOyNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTAomIzQzOyNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRQomIzQzOyNlbmRpZgomIzQzOwomIzQzOy8qCiYjNDM7ICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIG9wdGlvbmFsIGRlYnVnZ2luZyBwb2ludCBzaG91bGQgYmUgbG9nZ2VkLgomIzQzOyAqIFRocmVlIGxldmVscyBvZiBpbmRpcmVjdGlvbiBhcmUgbmVlZGVkIHRvIGV4cGFuZCBGU0NBQ0hFX0RFQlVHX0xFVkVMIGJlZm9yZQomIzQzOyAqIGpvaW5pbmcgaXQgd2l0aCBpdHMgcHJlZml4LgomIzQzOyAqLwomIzQzOyNkZWZpbmUgX19fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFwKJiM0MzsJdW5saWtlbHkobmV0ZnNfZGVidWcgJmFtcDsgXAomIzQzOwkJIChGU0NBQ0hFX1BPSU5UXyMjUE9JTlQgJmx0OyZsdDsgKEZTQ0FDSEVfREVCVUdfICMjIExFVkVMICogMykpKQomIzQzOyNkZWZpbmUgX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXAomIzQzOwlfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkKJiM0MzsjZGVmaW5lIF9fZG9fa2RlYnVnKFBPSU5UKSBcCiYjNDM7CV9fX2RvX2tkZWJ1ZyhGU0NBQ0hFX0RFQlVHX0xFVkVMLCBQT0lOVCkKJiM0MzsKICNpZmRlZiBfX0tERUJVRwogI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pIGtlbnRlcihGTVQsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIF9sZWF2ZShGTVQsIC4uLikga2xlYXZlKEZNVCwgIyNfX1ZBX0FSR1NfXykKQEAgLTQ3NiwxOSAmIzQzOzUwMiwxOSBAQCB2b2lkIGZzY2FjaGVfY3JlYXRlX3ZvbHVtZShzdHJ1Y3QgZnNjYWNoZV92b2x1bWUgKnZvbHVtZSwgYm9vbCB3YWl0KTsKICNlbGlmIGRlZmluZWQoQ09ORklHX05FVEZTX0RFQlVHKQogI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pCQkJXAogZG8gewkJCQkJCVwKLQlpZiAobmV0ZnNfZGVidWcpCQkJXAomIzQzOwlpZiAoX19kb19rZGVidWcoRU5URVIpKQkJCVwKIAkJa2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXyk7CVwKIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKQkJCVwKIGRvIHsJCQkJCQlcCi0JaWYgKG5ldGZzX2RlYnVnKQkJCVwKJiM0MzsJaWYgKF9fZG9fa2RlYnVnKExFQVZFKSkJCQlcCiAJCWtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pOwlcCiB9IHdoaWxlICgwKQogCiAjZGVmaW5lIF9kZWJ1ZyhGTVQsIC4uLikJCQlcCiBkbyB7CQkJCQkJXAotCWlmIChuZXRmc19kZWJ1ZykJCQlcCiYjNDM7CWlmIChfX2RvX2tkZWJ1ZyhERUJVRykpCQkJXAogCQlrZGVidWcoRk1ULCAjI19fVkFfQVJHU19fKTsJXAogfSB3aGlsZSAoMCkKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDEwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGJyZWFrIGRvd24gdGhlIGNoYW5nZXMgYW5kIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIG5ldHdvcmsgZmlsZXN5c3RlbS4gVGhlIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gZXhhbWluZSB0aGUgc3BlY2lmaWMgY29kZSBtb2RpZmljYXRpb25zLgoKSSBzZWUgdGhlIHBhdGNoIHRhcmdldHMgYGZzL25ldGZzL2ludGVybmFsLmhgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGRlYnVnIG1hY3Jvcy4gSSYjMzk7bSBub3RpbmcgdGhlIG5ldyBkZWZpbml0aW9ucyBmb3IgYEZTQ0FDSEVfREVCVUdfKmAsIGBGU0NBQ0hFX1BPSU5UXypgLCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBgX19fX2RvX2tkZWJ1Z2AsIGFuZCBgX19fZG9fa2RlYnVnYC4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9jayBgI2VsaWYgZGVmaW5lZChDT05GSUdfTkVURlNfREVCVUcpYC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBleGlzdGluZyBkZWJ1Z2dpbmcgbWFjcm9zLCBgX2VudGVyYCwgYF9sZWF2ZWAsIGFuZCBgX2RlYnVnYCwgdG8gbm93IGNoZWNrIHRoZSBvdXRwdXQgb2YgdGhlIGBfX2RvX2tkZWJ1ZyguLi4pYCBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3RseSB1c2luZyBgbmV0ZnNfZGVidWdgLgoKTm93LCBiZWZvcmUgSSBtYWtlIGFueSBkZWZpbml0aXZlIGNvbmNsdXNpb25zLCBJIG5lZWQgYSBjbG9zZXIgbG9vayBhdCB0aGUgYGZzL25ldGZzL2ludGVybmFsLmhgIGZpbGUgaXRzZWxmLiBJJiMzOTtsbCB1c2UgbXkgZmlsZS1yZWFkaW5nIHRvb2xzIHRvIHplcm8gaW4gb24gdGhvc2Ugc3BlY2lmaWMgbGluZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBleGlzdGluZyBkZWJ1ZyBpbmZyYXN0cnVjdHVyZSBpcyBjcml0aWNhbCB0byBldmFsdWF0aW5nIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYWx0ZXJhdGlvbnMuIEkgbmVlZCB0byBzZWUgaG93IGBuZXRmc19kZWJ1Z2Agd2FzIHByZXZpb3VzbHkgdXNlZCwgYW5kIGhvdyBgX19kb19rZGVidWdgIGlzIGludGVuZGVkIHRvIGludGVncmF0ZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGEgc2ltcGxlIHJlZmFjdG9yaW5nLCBhbiBvcHRpbWl6YXRpb24sIG9yIHNvbWV0aGluZyBtb3JlIHN1YnN0YW50aWFsIGxpa2UgYSBjaGFuZ2UgaW4gZGVidWdnaW5nIGxldmVsIG9yIG91dHB1dCBtZWNoYW5pc20uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9uZXRmcy9pbnRlcm5hbC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gNDYxOlx0LypcbiA0NjI6XHQgKiBkZWJ1ZyB0cmFjaW5nXG4gNDYzOlx0ICovXG4gNDY0Olx0I2RlZmluZSBkYmdwcmludGsoRk1ULCAuLi4pIFxcXG4gNDY1Olx0XHRwcmludGsoXCYjMzQ7WyUtNi42c10gXCYjMzQ7Rk1UXCYjMzQ7XFxuXCYjMzQ7LCBjdXJyZW50LVx1MDAzZWNvbW0sICMjX19WQV9BUkdTX18pXG4gNDY2Olx0XG4gNDY3Olx0I2RlZmluZSBrZW50ZXIoRk1ULCAuLi4pIGRiZ3ByaW50ayhcJiMzNDs9PVx1MDAzZSAlcyhcJiMzNDtGTVRcJiMzNDspXCYjMzQ7LCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcbiA0Njg6XHQjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKFwmIzM0O1x1MDAzYz09ICVzKClcJiMzNDtGTVRcJiMzNDtcJiMzNDssIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKVxuIDQ2OTpcdCNkZWZpbmUga2RlYnVnKEZNVCwgLi4uKSBkYmdwcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxuIDQ3MDpcdFxuIDQ3MTpcdCNkZWZpbmUgRlNDQUNIRV9ERUJVR19DQUNIRVx0MFxuIDQ3MjpcdCNkZWZpbmUgRlNDQUNIRV9ERUJVR19DT09LSUVcdDFcbiA0NzM6XHQjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT0JKRUNUXHQyXG4gNDc0Olx0I2RlZmluZSBGU0NBQ0hFX0RFQlVHX09QRVJBVElPTlx0M1xuIDQ3NTpcdFxuIDQ3NjpcdCNkZWZpbmUgRlNDQUNIRV9QT0lOVF9FTlRFUlx0MVxuIDQ3NzpcdCNkZWZpbmUgRlNDQUNIRV9QT0lOVF9MRUFWRVx0MlxuIDQ3ODpcdCNkZWZpbmUgRlNDQUNIRV9QT0lOVF9ERUJVR1x0NFxuIDQ3OTpcdFxuIDQ4MDpcdCNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTFxuIDQ4MTpcdCNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRVxuIDQ4MjpcdCNlbmRpZlxuIDQ4MzpcdFxuIDQ4NDpcdC8qXG4gNDg1Olx0ICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIG9wdGlvbmFsIGRlYnVnZ2luZyBwb2ludCBzaG91bGQgYmUgbG9nZ2VkLlxuIDQ4NjpcdCAqIFRocmVlIGxldmVscyBvZiBpbmRpcmVjdGlvbiBhcmUgbmVlZGVkIHRvIGV4cGFuZCBGU0NBQ0hFX0RFQlVHX0xFVkVMIGJlZm9yZVxuIDQ4NzpcdCAqIGpvaW5pbmcgaXQgd2l0aCBpdHMgcHJlZml4LlxuIDQ4ODpcdCAqL1xuIDQ4OTpcdCNkZWZpbmUgX19fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFxcXG4gNDkwOlx0XHR1bmxpa2VseShuZXRmc19kZWJ1ZyBcdTAwMjYgXFxcbiA0OTE6XHRcdFx0IChGU0NBQ0hFX1BPSU5UXyMjUE9JTlQgXHUwMDNjXHUwMDNjIChGU0NBQ0hFX0RFQlVHXyAjIyBMRVZFTCAqIDMpKSlcbiA0OTI6XHQjZGVmaW5lIF9fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFxcXG4gNDkzOlx0XHRfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVClcbiA0OTQ6XHQjZGVmaW5lIF9fZG9fa2RlYnVnKFBPSU5UKSBcXFxuIDQ5NTpcdFx0X19fZG9fa2RlYnVnKEZTQ0FDSEVfREVCVUdfTEVWRUwsIFBPSU5UKVxuIDQ5NjpcdFxuIDQ5NzpcdCNpZmRlZiBfX0tERUJVR1xuIDQ5ODpcdCNkZWZpbmUgX2VudGVyKEZNVCwgLi4uKSBrZW50ZXIoRk1ULCAjI19fVkFfQVJHU19fKVxuIDQ5OTpcdCNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKVxuIDUwMDpcdCNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBrZGVidWcoRk1ULCAjI19fVkFfQVJHU19fKVxuIDUwMTpcdFxuIDUwMjpcdCNlbGlmIGRlZmluZWQoQ09ORklHX05FVEZTX0RFQlVHKVxuIDUwMzpcdCNkZWZpbmUgX2VudGVyKEZNVCwgLi4uKVx0XHRcdFxcXG4gNTA0Olx0ZG8ge1x0XHRcdFx0XHRcdFxcXG4gNTA1Olx0XHRpZiAoX19kb19rZGVidWcoRU5URVIpKVx0XHRcdFxcXG4gNTA2Olx0XHRcdGtlbnRlcihGTVQsICMjX19WQV9BUkdTX18pO1x0XFxcbiA1MDc6XHR9IHdoaWxlICgwKVxuIDUwODpcdFxuIDUwOTpcdCNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKVx0XHRcdFxcXG4gNTEwOlx0ZG8ge1x0XHRcdFx0XHRcdFxcXG4gNTExOlx0XHRpZiAoX19kb19rZGVidWcoTEVBVkUpKVx0XHRcdFxcXG4gNTEyOlx0XHRcdGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pO1x0XFxcbiA1MTM6XHR9IHdoaWxlICgwKVxuIDUxNDpcdFxuIDUxNTpcdCNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKVx0XHRcdFxcXG4gNTE2Olx0ZG8ge1x0XHRcdFx0XHRcdFxcXG4gNTE3Olx0XHRpZiAoX19kb19rZGVidWcoREVCVUcpKVx0XHRcdFxcXG4gNTE4Olx0XHRcdGtkZWJ1ZyhGTVQsICMjX19WQV9BUkdTX18pO1x0XFxcbiA1MTk6XHR9IHdoaWxlICgwKVxuIDUyMDpcdFxuIDUyMTpcdCNlbHNlXG4gNTIyOlx0I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pIG5vX3ByaW50ayhcJiMzNDs9PVx1MDAzZSAlcyhcJiMzNDtGTVRcJiMzNDspXCYjMzQ7LCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcbiA1MjM6XHQjZGVmaW5lIF9sZWF2ZShGTVQsIC4uLikgbm9fcHJpbnRrKFwmIzM0O1x1MDAzYz09ICVzKClcJiMzNDtGTVRcJiMzNDtcJiMzNDssIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKVxuIDUyNDpcdCNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBub19wcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxuIDUyNTpcdCNlbmRpZlxuIDUyNjpcdFxuIDUyNzpcdC8qXG4gNTI4Olx0ICogYXNzZXJ0aW9uc1xuIDUyOTpcdCAqL1xuIDUzMDpcdCNpZiAxIC8qIGRlZmluZWQoX19LREVCVUdBTEwpICovXG4gNTMxOlx0XG4gNTMyOlx0I2RlZmluZSBBU1NFUlQoWClcdFx0XHRcdFx0XHRcdFxcXG4gNTMzOlx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gNTM0Olx0XHRpZiAodW5saWtlbHkoIShYKSkpIHtcdFx0XHRcdFx0XHRcXFxuIDUzNTpcdFx0XHRwcl9lcnIoXCYjMzQ7XFxuXCYjMzQ7KTtcdFx0XHRcdFx0XFxcbiA1MzY6XHRcdFx0cHJfZXJyKFwmIzM0O0Fzc2VydGlvbiBmYWlsZWRcXG5cJiMzNDspO1x0XFxcbiA1Mzc6XHRcdFx0QlVHKCk7XHRcdFx0XHRcdFx0XHRcXFxuIDUzODpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuIDUzOTpcdH0gd2hpbGUgKDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIwNgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlc2UgYXJlIHNpbXBseSBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyDigJMgYGRiZ3ByaW50a2Agc3BlY2lmaWNhbGx5LiBOb3csIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBleGFtaW5lIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBvdXRsaW5lZC4gSSYjMzk7bSBmb2N1c2luZyBvbiBhcmVhcyB3aGVyZSBjaGFuZ2VzIGFyZSB0eXBpY2FsbHkgKm5vdCogYWNjZXB0ZWQuCgpUaGUgcHJvbXB0IHN0YXRlczogbm8gY2hhbmdlcyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIHNwZWxsaW5nLCB1c2VyLXNwYWNlLCBub24tZXhlY3V0YWJsZSwgZGVjb3JhdGl2ZSBsb2dnaW5nIG9yIHRyYWNlcG9pbnRzIGFuZCBubyBidWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG9uJiMzOTt0IGNoYW5nZSBjb21waWxlZCBDIGxvZ2ljLiBBbHJpZ2h0LCB0aGF0JiMzOTtzIGNsZWFyLgoKU28sIHNpbmNlIHRoZXNlIG1hY3JvcyBhcmUgKnByb2JhYmx5KiBqdXN0IHVzZWQgZm9yIGxvZ2dpbmcsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uLiBUaGUgY2hhbmdlcyBhcmUgcHJvYmFibHkgbm90IGltcG9ydGFudC4KCkxldCYjMzk7cyBkbyBhIGRlZXBlciBkaXZlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbWFjcm9zIGFyZSBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBhIGNvdXBsZSBvZiBwbGFjZXMsIGxpa2UgYGZzL25ldGZzYCBhbmQgYGZzL2ZzY2FjaGVgLiBJJiMzOTtsbCBhbHNvIGRvIGEgZ2VuZXJhbCBzZWFyY2ggdG8gc2VlIHdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbCB0aGVzZSBsb2dnaW5nIG1hY3JvcyBhcmUgdXNlZCwgYW5kIG1heWJlIGFsc28gZ3JlcCBmb3IgYW55IHJlbGF0ZWQgZGVidWcgbGV2ZWxzIOKAkyBsaWtlIGBGU0NBQ0hFX0RFQlVHX0xFVkVMYCBvciBgbmV0ZnNfZGVidWdgIOKAkyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIHNob3VsZCB0ZWxsIG1lIHF1aWNrbHkgaWYgdGhlc2UgYXJlIHNpbXBseSBkZXNjcmlwdGl2ZSwgb3IgaWYgdGhlcmUmIzM5O3MgYW55IGFsdGVyYXRpb24gb2YgY29udHJvbCBmbG93LCBkYXRhIHN0cnVjdHVyZXMsIG9yIGJ1aWxkIGxvZ2ljIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZTQ0FDSEVfREVCVUdfTEVWRUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTctXG5mcy9uZXRmcy9mc2NhY2hlX2NhY2hlLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMC1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6MTE6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENPT0tJRVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMi0jaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy02LSAqL1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjc6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIE9QRVJBVElPTlxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTgtI2luY2x1ZGUgXHUwMDNjbGludXgvZnNjYWNoZS1jYWNoZS5oXHUwMDNlXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9tYWluLmMtNy1cbmZzL25ldGZzL2ZzY2FjaGVfbWFpbi5jOjg6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9wcm9jLmMtNy1cbmZzL25ldGZzL2ZzY2FjaGVfcHJvYy5jOjg6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXG5mcy9uZXRmcy9mc2NhY2hlX3Byb2MuYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9zdGF0cy5jLTctXG5mcy9uZXRmcy9mc2NhY2hlX3N0YXRzLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcbmZzL25ldGZzL2ZzY2FjaGVfc3RhdHMuYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb2NfZnMuaFx1MDAzZVxuLS1cbmZzL25ldGZzL2ZzY2FjaGVfdm9sdW1lLmMtNy1cbmZzL25ldGZzL2ZzY2FjaGVfdm9sdW1lLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ09PS0lFXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTktI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2Vcbi0tXG5mcy9uZXRmcy9pbnRlcm5hbC5oPTQ1OD12b2lkIGZzY2FjaGVfY3JlYXRlX3ZvbHVtZShzdHJ1Y3QgZnNjYWNoZV92b2x1bWUgKnZvbHVtZSwgYm9vbCB3YWl0KTtcbi0tXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ3OS1cbmZzL25ldGZzL2ludGVybmFsLmg6NDgwOiNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo0ODE6I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ4Mi0jZW5kaWZcbi0tXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ4NS0gKiBEZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgb3B0aW9uYWwgZGVidWdnaW5nIHBvaW50IHNob3VsZCBiZSBsb2dnZWQuXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ4NjogKiBUaHJlZSBsZXZlbHMgb2YgaW5kaXJlY3Rpb24gYXJlIG5lZWRlZCB0byBleHBhbmQgRlNDQUNIRV9ERUJVR19MRVZFTCBiZWZvcmVcbmZzL25ldGZzL2ludGVybmFsLmgtNDg3LSAqIGpvaW5pbmcgaXQgd2l0aCBpdHMgcHJlZml4LlxuLS1cbmZzL25ldGZzL2ludGVybmFsLmgtNDk0LSNkZWZpbmUgX19kb19rZGVidWcoUE9JTlQpIFxcXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ5NTpcdF9fX2RvX2tkZWJ1ZyhGU0NBQ0hFX0RFQlVHX0xFVkVMLCBQT0lOVClcbmZzL25ldGZzL2ludGVybmFsLmgtNDk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEZWJ1ZyBMb2dnaW5nIGluIGBmcy9uZXRmc2AqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGVzZSBtYWNyb3Mg4oCTIGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgIOKAkyBhcmUgYmFzaWNhbGx5IGp1c3QgZ2xvcmlmaWVkIHByaW50IHN0YXRlbWVudHMuIFRoZXkmIzM5O3JlIHVsdGltYXRlbHkgY2FsbGluZyBgZGJncHJpbnRrYCwgd2hpY2ggdGhlbiByZXNvbHZlcyB0byBgcHJpbnRrYC4gRXNzZW50aWFsbHksIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGRlYnVnIGxvZ2dpbmcgaGVyZSwgbm90aGluZyBtb3JlLgoKVGhlIGNoYW5nZSBmb2N1c2VzIG9uIGFkanVzdGluZyB0aGUgYml0bWFzayBjaGVjayB1c2VkIHRvIGNvbnRyb2wgd2hldGhlciB0aGVzZSBkZWJ1ZyBwcmludCBzdGF0ZW1lbnRzIGdldCB0cmlnZ2VyZWQgYmFzZWQgb24gYENPTkZJR19ORVRGU19ERUJVR2AuIFRoZSBpbXBvcnRhbnQgcXVlc3Rpb24sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIG1vZGlmaWNhdGlvbiBoYXMgYW55IGltcGFjdCBvbiB0aGUgYWN0dWFsICpmdW5jdGlvbmFsaXR5KiBvZiB0aGUga2VybmVsIGNvZGUuCgpBbmQgYWZ0ZXIgYSBxdWljayByZXZpZXcsIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyAqbm8qLiBUaGVzZSBtYWNyb3MgZG9uJiMzOTt0IGFsdGVyIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYWNoaW5lcywgYXNzZXJ0aW9ucywgb3IgbG9naWMuIFRoZXkmIzM5O3JlIHNvbGVseSBmb3IgZGVidWcgcHJpbnRpbmcuIFRoZSBjb2RlJiMzOTtzIGV4ZWN1dGlvbiBwYXRoIHJlbWFpbnMgdGhlIHNhbWUgcmVnYXJkbGVzcy4KCk5leHQsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgZm9yIGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyB3aXRoaW4gYGZzL25ldGZzYCB3aGVyZSB0aGVzZSBtYWNyb3MgYXJlIGNhbGxlZCwganVzdCB0byBiZSB0aG9yb3VnaCwgYnV0IG15IGluaXRpYWwgYXNzZXNzbWVudCBzdWdnZXN0cyB0aGF0IHRoZXJlIHdvbiYjMzk7dCBiZSBhbnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2VudGVyXFwofF9sZWF2ZVxcKHxfZGVidWdcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZXRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTM5Nj1zdGF0aWMgaW50IG5ldGZzX3JlYWRfZ2FwcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNDEyLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jOjQxMzpcdF9lbnRlcihcJiMzNDslbHhcJiMzNDssIGZvbGlvLVx1MDAzZWluZGV4KTtcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy00MTQtXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTUwMT1pbnQgbmV0ZnNfcmVhZF9mb2xpbyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNTEyLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jOjUxMzpcdF9lbnRlcihcJiMzNDslbHhcJiMzNDssIGZvbGlvLVx1MDAzZWluZGV4KTtcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy01MTQtXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTYzMD1pbnQgbmV0ZnNfd3JpdGVfYmVnaW4oc3RydWN0IG5ldGZzX2lub2RlICpjdHgsXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTcwMy1cdCpfZm9saW8gPSBmb2xpbztcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MDQ6XHRfbGVhdmUoXCYjMzQ7ID0gMFwmIzM0Oyk7XG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNzA1LVx0cmV0dXJuIDA7XG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTcxMy1cdH1cbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MTQ6XHRfbGVhdmUoXCYjMzQ7ID0gJWRcJiMzNDssIHJldCk7XG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNzE1LVx0cmV0dXJuIHJldDtcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmM9NzIyPWludCBuZXRmc19wcmVmZXRjaF9mb3Jfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTczMS1cbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MzI6XHRfZW50ZXIoXCYjMzQ7JXp4IEAlbGx4XCYjMzQ7LCBmbGVuLCBzdGFydCk7XG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNzMzLVxuLS1cbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy03NjQtZXJyb3I6XG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmM6NzY1Olx0X2xlYXZlKFwmIzM0OyA9ICVkXCYjMzQ7LCByZXQpO1xuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTc2Ni1cdHJldHVybiByZXQ7XG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYz04Nz1zc2l6ZV90IG5ldGZzX3BlcmZvcm1fd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYy0yODYtXHRcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzoyODc6XHRcdFx0XHRfZGVidWcoXCYjMzQ7cHJlZmV0Y2ggPSAlemRcJiMzNDssIHJldCk7XG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTI4OC1cdFx0XHRcdGdvdG8gZXJyb3JfZm9saW9fdW5sb2NrO1xuLS1cbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNDMyLVx0aW9jYi1cdTAwM2VraV9wb3MgJiM0Mzs9IHdyaXR0ZW47XG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jOjQzMzpcdF9sZWF2ZShcJiMzNDsgPSAlemQgWyV6ZF1cJiMzNDssIHdyaXR0ZW4sIHJldCk7XG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTQzNC1cdHJldHVybiB3cml0dGVuID8gd3JpdHRlbiA6IHJldDtcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jPTUwMT1zc2l6ZV90IG5ldGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTUwNy1cbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM6NTA4Olx0X2VudGVyKFwmIzM0OyVsbHgsJXp4LCVsbHhcJiMzNDssIGlvY2ItXHUwMDNla2lfcG9zLCBpb3ZfaXRlcl9jb3VudChmcm9tKSwgaV9zaXplX3JlYWQoaW5vZGUpKTtcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNTA5LVxuLS1cbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM9NTM3PXZtX2ZhdWx0X3QgbmV0ZnNfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgbmV0ZnNfZ3JvdXAgKm5ldGZzX2dyb3VwKVxuLS1cbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNTQ4LVxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzo1NDk6XHRfZW50ZXIoXCYjMzQ7JWx4XCYjMzQ7LCBmb2xpby1cdTAwM2VpbmRleCk7XG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTU1MC1cbi0tXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jPTExMj1zdGF0aWMgc3NpemVfdCBuZXRmc191bmJ1ZmZlcmVkX3JlYWQoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEsIGJvb2wgc3luYylcbi0tXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jLTExNS1cbmZzL25ldGZzL2RpcmVjdF9yZWFkLmM6MTE2Olx0X2VudGVyKFwmIzM0O1I9JXggJWxseC0lbGx4XCYjMzQ7LFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYy0xMTctXHQgICAgICAgcnJlcS1cdTAwM2VkZWJ1Z19pZCwgcnJlcS1cdTAwM2VzdGFydCwgcnJlcS1cdTAwM2VzdGFydCAmIzQzOyBycmVxLVx1MDAzZWxlbiAtIDEpO1xuLS1cbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTM4LVxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYzoxMzk6XHRfbGVhdmUoXCYjMzQ7ID0gJXpkXCYjMzQ7LCByZXQpO1xuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYy0xNDAtXHRyZXR1cm4gcmV0O1xuLS1cbmZzL25ldGZzL2RpcmVjdF9yZWFkLmM9MTUzPXNzaXplX3QgbmV0ZnNfdW5idWZmZXJlZF9yZWFkX2l0ZXJfbG9ja2VkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKVxuLS1cbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTU5LVxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYzoxNjA6XHRfZW50ZXIoXCYjMzQ7XCYjMzQ7KTtcbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTYxLVxuLS1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jPTE1PXN0YXRpYyB2b2lkIG5ldGZzX3VuYnVmZmVyZWRfd3JpdGVfZG9uZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcbi0tXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0xOC1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jOjE5Olx0X2VudGVyKFwmIzM0O1I9JXhcJiMzNDssIHdyZXEtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjAtXG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtNDMtXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzo0NDpcdF9kZWJ1ZyhcJiMzNDtmaW5pc2hlZFwmIzM0Oyk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy00NS1cdG5ldGZzX3dha2VfcnJlcV9mbGFnKHdyZXEsIE5FVEZTX1JSRVFfSU5fUFJPR1JFU1MsIG5ldGZzX3JyZXFfdHJhY2Vfd2FrZV9pcCk7XG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM9OTQ9c3RhdGljIGludCBuZXRmc191bmJ1ZmZlcmVkX3dyaXRlKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICp3cmVxKVxuLS1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTk5LVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MTAwOlx0X2VudGVyKFwmIzM0OyVsbHhcJiMzNDssIHdyZXEtXHUwMDNlbGVuKTtcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTEwMS1cbi0tXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0xOTgtXHRuZXRmc191bmJ1ZmZlcmVkX3dyaXRlX2RvbmUod3JlcSk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzoxOTk6XHRfbGVhdmUoXCYjMzQ7ID0gJWRcJiMzNDssIHJldCk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMDAtXHRyZXR1cm4gcmV0O1xuLS1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jPTIxNT1zc2l6ZV90IG5ldGZzX3VuYnVmZmVyZWRfd3JpdGVfaXRlcl9sb2NrZWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjI0LVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MjI1Olx0X2VudGVyKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMjYtXG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjMyLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MjMzOlx0X2RlYnVnKFwmIzM0O3V3ICVsbHgtJWxseFwmIzM0Oywgc3RhcnQsIGVuZCk7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMzQtXG4tLVxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjkxLVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzoyOTI6XHRcdFx0X2RlYnVnKFwmIzM0O2JlZ2luID0gJXpkXCYjMzQ7LCByZXQpO1xuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjkzLVx0XHR9IGVsc2Uge1xuLS1cbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jPTMyMz1zc2l6ZV90IG5ldGZzX3VuYnVmZmVyZWRfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0zMzItXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzozMzM6XHRfZW50ZXIoXCYjMzQ7JWxseCwlengsJWxseFwmIzM0OywgcG9zLCBpb3ZfaXRlcl9jb3VudChmcm9tKSwgaV9zaXplX3JlYWQoaW5vZGUpKTtcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTMzNC1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2NhY2hlLmM9MjM0PWludCBmc2NhY2hlX2FkZF9jYWNoZShzdHJ1Y3QgZnNjYWNoZV9jYWNoZSAqY2FjaGUsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTIzOS1cbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYzoyNDA6XHRfZW50ZXIoXCYjMzQ7eyVzLCVzfVwmIzM0Oywgb3BzLVx1MDAzZW5hbWUsIGNhY2hlLVx1MDAzZW5hbWUpO1xuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTI0MS1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2NhY2hlLmMtMjU5LVx0cHJfbm90aWNlKFwmIzM0O0NhY2hlIFxcXCYjMzQ7JXNcXFwmIzM0OyBhZGRlZCAodHlwZSAlcylcXG5cJiMzNDssIGNhY2hlLVx1MDAzZW5hbWUsIG9wcy1cdTAwM2VuYW1lKTtcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYzoyNjA6XHRfbGVhdmUoXCYjMzQ7ID0gMCBbJXNdXCYjMzQ7LCBjYWNoZS1cdTAwM2VuYW1lKTtcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy0yNjEtXHRyZXR1cm4gMDtcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jPTQ1MD1zdHJ1Y3QgZnNjYWNoZV9jb29raWUgKl9fZnNjYWNoZV9hY3F1aXJlX2Nvb2tpZShcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ1OC1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NDU5Olx0X2VudGVyKFwmIzM0O1Y9JXhcJiMzNDssIHZvbHVtZS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ2MC1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ4Ni1cdGZzY2FjaGVfc3RhdChcdTAwMjZmc2NhY2hlX25fYWNxdWlyZXNfb2spO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo0ODc6XHRfbGVhdmUoXCYjMzQ7ID0gYz0lMDh4XCYjMzQ7LCBjb29raWUtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy00ODgtXHRyZXR1cm4gY29va2llO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9NTAzPXN0YXRpYyB2b2lkIGZzY2FjaGVfcGVyZm9ybV9sb29rdXAoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUpXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01MDctXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjUwODpcdF9lbnRlcihcJiMzNDtcJiMzNDspO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01MDktXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01MjEtXHRcdG5lZWRfd2l0aGRyYXcgPSB0cnVlO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo1MjI6XHRcdF9sZWF2ZShcJiMzNDsgW2ZhaWxdXCYjMzQ7KTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNTIzLVx0XHRnb3RvIG91dDtcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jPTU2OT12b2lkIF9fZnNjYWNoZV91c2VfY29va2llKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llLCBib29sIHdpbGxfbW9kaWZ5KVxuLS1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNTc0LVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo1NzU6XHRfZW50ZXIoXCYjMzQ7Yz0lMDh4XCYjMzQ7LCBjb29raWUtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01NzYtXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy02MzgtXHRcdGZzY2FjaGVfcXVldWVfY29va2llKGNvb2tpZSwgZnNjYWNoZV9jb29raWVfZ2V0X3VzZV93b3JrKTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NjM5Olx0X2xlYXZlKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTY0MC19XG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz03MDA9c3RhdGljIHZvaWQgZnNjYWNoZV9jb29raWVfc3RhdGVfbWFjaGluZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSlcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTcwNC1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NzA1Olx0X2VudGVyKFwmIzM0O2M9JXhcJiMzNDssIGNvb2tpZS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTcwNi1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTgyNi1cdFx0d2FrZV91cF9jb29raWVfc3RhdGUoY29va2llKTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6ODI3Olx0X2xlYXZlKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTgyOC19XG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz04NjA9c3RhdGljIHZvaWQgZnNjYWNoZV9jb29raWVfbHJ1X2RvX29uZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSlcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTg3My1cdFx0ZnNjYWNoZV9zdGF0KFx1MDAyNmZzY2FjaGVfbl9jb29raWVzX2xydV9leHBpcmVkKTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6ODc0Olx0XHRfZGVidWcoXCYjMzQ7bHJ1IGM9JXhcJiMzNDssIGNvb2tpZS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTg3NS1cdFx0X19mc2NhY2hlX3dpdGhkcmF3X2Nvb2tpZShjb29raWUpO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9OTcyPXZvaWQgX19mc2NhY2hlX3JlbGlucXVpc2hfY29va2llKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llLCBib29sIHJldGlyZSlcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTk3Ny1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6OTc4Olx0X2VudGVyKFwmIzM0O2M9JTA4eHslZH0sJWRcJiMzNDssXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTk3OS1cdCAgICAgICBjb29raWUtXHUwMDNlZGVidWdfaWQsIGF0b21pY19yZWFkKFx1MDAyNmNvb2tpZS1cdTAwM2VuX2FjdGl2ZSksIHJldGlyZSk7XG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz0xMDUxPXZvaWQgX19mc2NhY2hlX2ludmFsaWRhdGUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMDU2LVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMDU3Olx0X2VudGVyKFwmIzM0O2M9JXhcJiMzNDssIGNvb2tpZS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTEwNTgtXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMDc4LVx0XHRzcGluX3VubG9jayhcdTAwMjZjb29raWUtXHUwMDNlbG9jayk7XG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjEwNzk6XHRcdF9sZWF2ZShcJiMzNDsgW25vICV1XVwmIzM0OywgY29va2llLVx1MDAzZXN0YXRlKTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA4MC1cdFx0cmV0dXJuO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA4Ny1cdFx0c3Bpbl91bmxvY2soXHUwMDI2Y29va2llLVx1MDAzZWxvY2spO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMDg4Olx0XHRfbGVhdmUoXCYjMzQ7IFtsb29rICV4XVwmIzM0OywgY29va2llLVx1MDAzZWludmFsX2NvdW50ZXIpO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMDg5LVx0XHRyZXR1cm47XG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMTAwLVx0XHRcdGZzY2FjaGVfcXVldWVfY29va2llKGNvb2tpZSwgZnNjYWNoZV9jb29raWVfZ2V0X2ludmFsX3dvcmspO1xuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMTAxOlx0XHRfbGVhdmUoXCYjMzQ7IFtpbnZdXCYjMzQ7KTtcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTEwMi1cdFx0cmV0dXJuO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYz0yMj1ib29sIGZzY2FjaGVfd2FpdF9mb3Jfb3BlcmF0aW9uKHN0cnVjdCBuZXRmc19jYWNoZV9yZXNvdXJjZXMgKmNyZXMsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTI5LVx0aWYgKCFmc2NhY2hlX2NhY2hlX2lzX2xpdmUoY29va2llLVx1MDAzZXZvbHVtZS1cdTAwM2VjYWNoZSkpIHtcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYzozMDpcdFx0X2xlYXZlKFwmIzM0OyBbYnJva2VuXVwmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMzEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMzQtXHRzdGF0ZSA9IGZzY2FjaGVfY29va2llX3N0YXRlKGNvb2tpZSk7XG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6MzU6XHRfZW50ZXIoXCYjMzQ7Yz0lMDh4eyV1fSwleFwmIzM0OywgY29va2llLVx1MDAzZWRlYnVnX2lkLCBzdGF0ZSwgd2FudF9zdGF0ZSk7XG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMzYtXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTUzLVx0ZGVmYXVsdDpcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYzo1NDpcdFx0X2xlYXZlKFwmIzM0OyBbbm90IGxpdmVdXCYjMzQ7KTtcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy01NS1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYz03MD1zdGF0aWMgaW50IGZzY2FjaGVfYmVnaW5fb3BlcmF0aW9uKHN0cnVjdCBuZXRmc19jYWNoZV9yZXNvdXJjZXMgKmNyZXMsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTkzLVx0c3RhdGUgPSBmc2NhY2hlX2Nvb2tpZV9zdGF0ZShjb29raWUpO1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjk0Olx0X2VudGVyKFwmIzM0O2M9JTA4eHsldX0sJXhcJiMzNDssIGNvb2tpZS1cdTAwM2VkZWJ1Z19pZCwgc3RhdGUsIHdhbnRfc3RhdGUpO1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTk1LVxuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0xNDEtXHRmc2NhY2hlX2VuZF9jb29raWVfYWNjZXNzKGNvb2tpZSwgZnNjYWNoZV9hY2Nlc3NfaW9fbm90X2xpdmUpO1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjE0MjpcdF9sZWF2ZShcJiMzNDsgPSAtRU5PQlVGU1wmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMTQzLVx0cmV0dXJuIC1FTk9CVUZTO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYz0yMDk9dm9pZCBfX2ZzY2FjaGVfd3JpdGVfdG9fY2FjaGUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTIyMy1cbmZzL25ldGZzL2ZzY2FjaGVfaW8uYzoyMjQ6XHRfZW50ZXIoXCYjMzQ7JWxseCwlenhcJiMzNDssIHN0YXJ0LCBsZW4pO1xuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTIyNS1cbi0tXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYz0xMDA9dm9pZCBfX2V4aXQgZnNjYWNoZV9leGl0KHZvaWQpXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy0xMDEte1xuZnMvbmV0ZnMvZnNjYWNoZV9tYWluLmM6MTAyOlx0X2VudGVyKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy0xMDMtXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYz0yMTI9c3RhdGljIHN0cnVjdCBmc2NhY2hlX3ZvbHVtZSAqZnNjYWNoZV9hbGxvY192b2x1bWUoY29uc3QgY2hhciAqdm9sdW1lX2tleSxcbi0tXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTI2NS1cdHVwX3dyaXRlKFx1MDAyNmZzY2FjaGVfYWRkcmVtb3ZlX3NlbSk7XG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jOjI2NjpcdF9sZWF2ZShcJiMzNDsgPSB2PSV4XCYjMzQ7LCB2b2x1bWUtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy0yNjctXHRyZXR1cm4gdm9sdW1lO1xuLS1cbmZzL25ldGZzL2ZzY2FjaGVfdm9sdW1lLmM9NDYzPXZvaWQgZnNjYWNoZV93aXRoZHJhd192b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUpXG4tLVxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy00NjYtXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jOjQ2NzpcdF9kZWJ1ZyhcJiMzNDt3aXRoZHJhdyBWPSV4XCYjMzQ7LCB2b2x1bWUtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy00NjgtXG4tLVxuZnMvbmV0ZnMvaW50ZXJuYWwuaD00NTg9dm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7XG4tLVxuZnMvbmV0ZnMvaW50ZXJuYWwuaC00OTctI2lmZGVmIF9fS0RFQlVHXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ5ODojZGVmaW5lIF9lbnRlcihGTVQsIC4uLikga2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXylcbmZzL25ldGZzL2ludGVybmFsLmg6NDk5OiNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDA6I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pIGtkZWJ1ZyhGTVQsICMjX19WQV9BUkdTX18pXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTUwMS1cbmZzL25ldGZzL2ludGVybmFsLmgtNTAyLSNlbGlmIGRlZmluZWQoQ09ORklHX05FVEZTX0RFQlVHKVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDM6I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXHRcdFx0XFxcbmZzL25ldGZzL2ludGVybmFsLmgtNTA0LWRvIHtcdFx0XHRcdFx0XHRcXFxuLS1cbmZzL25ldGZzL2ludGVybmFsLmgtNTA4LVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDk6I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pXHRcdFx0XFxcbmZzL25ldGZzL2ludGVybmFsLmgtNTEwLWRvIHtcdFx0XHRcdFx0XHRcXFxuLS1cbmZzL25ldGZzL2ludGVybmFsLmgtNTE0LVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MTU6I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pXHRcdFx0XFxcbmZzL25ldGZzL2ludGVybmFsLmgtNTE2LWRvIHtcdFx0XHRcdFx0XHRcXFxuLS1cbmZzL25ldGZzL2ludGVybmFsLmgtNTIxLSNlbHNlXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjUyMjojZGVmaW5lIF9lbnRlcihGTVQsIC4uLikgbm9fcHJpbnRrKFwmIzM0Oz09XHUwMDNlICVzKFwmIzM0O0ZNVFwmIzM0OylcJiMzNDssIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKVxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MjM6I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIG5vX3ByaW50ayhcJiMzNDtcdTAwM2M9PSAlcygpXCYjMzQ7Rk1UXCYjMzQ7XCYjMzQ7LCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcbmZzL25ldGZzL2ludGVybmFsLmg6NTI0OiNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBub19wcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MjUtI2VuZGlmXG4tLVxuZnMvbmV0ZnMvbWlzYy5jPTEzNj1ib29sIG5ldGZzX2RpcnR5X2ZvbGlvKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbmZzL25ldGZzL21pc2MuYy0xNDItXG5mcy9uZXRmcy9taXNjLmM6MTQzOlx0X2VudGVyKFwmIzM0O1wmIzM0Oyk7XG5mcy9uZXRmcy9taXNjLmMtMTQ0LVxuLS1cbmZzL25ldGZzL21pc2MuYz0yMTE9dm9pZCBuZXRmc19pbnZhbGlkYXRlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpXG4tLVxuZnMvbmV0ZnMvbWlzYy5jLTIxNy1cbmZzL25ldGZzL21pc2MuYzoyMTg6XHRfZW50ZXIoXCYjMzQ7eyVseH0sJXp4LCV6eFwmIzM0OywgZm9saW8tXHUwMDNlaW5kZXgsIG9mZnNldCwgbGVuZ3RoKTtcbmZzL25ldGZzL21pc2MuYy0yMTktXG4tLVxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM9NDI9c3RhdGljIHZvaWQgbmV0ZnNfdW5sb2NrX3JlYWRfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEsXG4tLVxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtODctXHQgICAgdGVzdF9iaXQoTkVURlNfUlJFUV9OT19VTkxPQ0tfRk9MSU8sIFx1MDAyNnJyZXEtXHUwMDNlZmxhZ3MpKSB7XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYzo4ODpcdFx0X2RlYnVnKFwmIzM0O25vIHVubG9ja1wmIzM0Oyk7XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy04OS1cdH0gZWxzZSB7XG4tLVxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM9MTg1PXN0YXRpYyB2b2lkIG5ldGZzX2NvbGxlY3RfcmVhZF9yZXN1bHRzKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKVxuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTE5MC1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjE5MTpcdF9lbnRlcihcJiMzNDslbGx4LSVsbHhcJiMzNDssIHJyZXEtXHUwMDNlc3RhcnQsIHJyZXEtXHUwMDNlc3RhcnQgJiM0MzsgcnJlcS1cdTAwM2VsZW4pO1xuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtMTkyLVx0dHJhY2VfbmV0ZnNfcnJlcShycmVxLCBuZXRmc19ycmVxX3RyYWNlX2NvbGxlY3QpO1xuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTIxNS1cdFx0dHJhY2VfbmV0ZnNfY29sbGVjdF9zcmVxKHJyZXEsIGZyb250KTtcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjIxNjpcdFx0X2RlYnVnKFwmIzM0O3NyZXEgWyV4XSAlbGx4ICV6eC8lenhcJiMzNDssXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0yMTctXHRcdCAgICAgICBmcm9udC1cdTAwM2VkZWJ1Z19pbmRleCwgZnJvbnQtXHUwMDNlc3RhcnQsIGZyb250LVx1MDAzZXRyYW5zZmVycmVkLCBmcm9udC1cdTAwM2VsZW4pO1xuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTMyOC1vdXQ6XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYzozMjk6XHRfbGVhdmUoXCYjMzQ7ID0gJXhcJiMzNDssIG5vdGVzKTtcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTMzMC1cdHJldHVybjtcbi0tXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMzYtXHQgKi9cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjMzNzpcdF9kZWJ1ZyhcJiMzNDtyZXRyeVwmIzM0Oyk7XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMzgtXHRuZXRmc19yZXRyeV9yZWFkcyhycmVxKTtcbi0tXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYz0xOT1zdGF0aWMgdm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKmNyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMjUtXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoyNjpcdF9lbnRlcihcJiMzNDtcJiMzNDspO1xuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMjctXG4tLVxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMzUtXHRcdC8qIG1tYXAgYmV5b25kIGVvZi4gKi9cbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jOjM2Olx0XHRfZGVidWcoXCYjMzQ7YmV5b25kIGVvZlwmIzM0Oyk7XG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0zNy1cdFx0Zm9saW9fZW5kX3ByaXZhdGVfMihmb2xpbyk7XG4tLVxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtNTAtXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzo1MTpcdF9kZWJ1ZyhcJiMzNDtmb2xpbyAlenggJXp4XCYjMzQ7LCBmbGVuLCBmc2l6ZSk7XG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy01Mi1cbi0tXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM9MjY9c3RhdGljIHZvaWQgbmV0ZnNfcmV0cnlfcmVhZF9zdWJyZXF1ZXN0cyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSlcbi0tXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMzEtXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM6MzI6XHRfZW50ZXIoXCYjMzQ7Uj0leFwmIzM0OywgcnJlcS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMzMtXG4tLVxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTkwLVxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jOjkxOlx0XHRfZGVidWcoXCYjMzQ7ZnJvbSBSPSUwOHhbJXhdIHM9JWxseCBjdGw9JXp4LyV6eFwmIzM0OyxcbmZzL25ldGZzL3JlYWRfcmV0cnkuYy05Mi1cdFx0ICAgICAgIHJyZXEtXHUwMDNlZGVidWdfaWQsIGZyb20tXHUwMDNlZGVidWdfaW5kZXgsXG4tLVxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTExNS1cbmZzL25ldGZzL3JlYWRfcmV0cnkuYzoxMTY6XHRcdF9kZWJ1ZyhcJiMzNDsgLSByYW5nZTogJWxseC0lbGx4ICVsbHhcJiMzNDssIHN0YXJ0LCBzdGFydCAmIzQzOyBsZW4gLSAxLCBsZW4pO1xuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTExNy1cbi0tXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM9MjkxPXZvaWQgbmV0ZnNfdW5sb2NrX2FiYW5kb25lZF9yZWFkX3BhZ2VzKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKVxuLS1cbmZzL25ldGZzL3JlYWRfcmV0cnkuYy0zMDItXHRcdFx0XHRcdCAgICAgXHUwMDI2cnJlcS1cdTAwM2VmbGFncykpIHtcbmZzL25ldGZzL3JlYWRfcmV0cnkuYzozMDM6XHRcdFx0XHRcdF9kZWJ1ZyhcJiMzNDtubyB1bmxvY2tcJiMzNDspO1xuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTMwNC1cdFx0XHRcdH0gZWxzZSB7XG4tLVxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYz03NT1zdGF0aWMgdm9pZCBuZXRmc19zaW5nbGVfcmVhZF9jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSxcbi0tXG5mcy9uZXRmcy9yZWFkX3NpbmdsZS5jLTc5LVxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYzo4MDpcdF9lbnRlcihcJiMzNDtSPSUwOHhbJXhdXCYjMzQ7LCBycmVxLVx1MDAzZWRlYnVnX2lkLCBzdWJyZXEtXHUwMDNlZGVidWdfaW5kZXgpO1xuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYy04MS1cdG5ldGZzX3N0YXQoXHUwMDI2bmV0ZnNfbl9yaF9yZWFkKTtcbi0tXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM9MjAwPXN0YXRpYyB2b2lkIG5ldGZzX2NvbGxlY3Rfd3JpdGVfcmVzdWx0cyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcbi0tXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMjA3LVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjIwODpcdF9lbnRlcihcJiMzNDslbGx4LSVsbHhcJiMzNDssIHdyZXEtXHUwMDNlc3RhcnQsIHdyZXEtXHUwMDNlc3RhcnQgJiM0Mzsgd3JlcS1cdTAwM2VsZW4pO1xuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTIwOS1cdHRyYWNlX25ldGZzX2NvbGxlY3Qod3JlcSk7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTIzOS1cdFx0XHR0cmFjZV9uZXRmc19jb2xsZWN0X3NyZXEod3JlcSwgZnJvbnQpO1xuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjI0MDpcdFx0XHQvL19kZWJ1ZyhcJiMzNDtzcmVxIFsleF0gJWxseCAlengvJXp4XCYjMzQ7LFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTI0MS1cdFx0XHQvLyAgICAgICBmcm9udC1cdTAwM2VkZWJ1Z19pbmRleCwgZnJvbnQtXHUwMDNlc3RhcnQsIGZyb250LVx1MDAzZXRyYW5zZmVycmVkLCBmcm9udC1cdTAwM2VsZW4pO1xuLS1cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNDQtXHR3cmVxLVx1MDAzZW5yX2dyb3VwX3JlbCA9IDA7XG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM6MzQ1Olx0X2xlYXZlKFwmIzM0OyA9ICV4XCYjMzQ7LCBub3Rlcyk7XG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMzQ2LVx0cmV0dXJuO1xuLS1cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNTItXHQgKi9cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzozNTM6XHRfZGVidWcoXCYjMzQ7cmV0cnlcJiMzNDspO1xuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTM1NC1cdG5ldGZzX3JldHJ5X3dyaXRlcyh3cmVxKTtcbi0tXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM9MzYxPWJvb2wgbmV0ZnNfd3JpdGVfY29sbGVjdGlvbihzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcbi0tXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMzY3LVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjM2ODpcdF9lbnRlcihcJiMzNDtSPSV4XCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkKTtcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNjktXG4tLVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTQwNi1cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzo0MDc6XHRfZGVidWcoXCYjMzQ7ZmluaXNoZWRcJiMzNDspO1xuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTQwOC1cdG5ldGZzX3dha2VfcnJlcV9mbGFnKHdyZXEsIE5FVEZTX1JSRVFfSU5fUFJPR1JFU1MsIG5ldGZzX3JyZXFfdHJhY2Vfd2FrZV9pcCk7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jPTQ2OT12b2lkIG5ldGZzX3dyaXRlX3N1YnJlcXVlc3RfdGVybWluYXRlZCh2b2lkICpfb3AsIHNzaXplX3QgdHJhbnNmZXJyZWRfb3JfZXJyb3IpXG4tLVxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTQ3My1cbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzo0NzQ6XHRfZW50ZXIoXCYjMzQ7JXhbJXhdICV6ZFwmIzM0Oywgd3JlcS1cdTAwM2VkZWJ1Z19pZCwgc3VicmVxLVx1MDAzZWRlYnVnX2luZGV4LCB0cmFuc2ZlcnJlZF9vcl9lcnJvcik7XG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtNDc1LVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM9OTA9c3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKm5ldGZzX2NyZWF0ZV93cml0ZV9yZXEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0xMDUtXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjEwNjpcdF9lbnRlcihcJiMzNDtSPSV4XCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMTA3LVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM9MTU3PXZvaWQgbmV0ZnNfcHJlcGFyZV93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSxcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTE3Ny1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MTc4Olx0X2VudGVyKFwmIzM0O1I9JXhbJXhdXCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkLCBzdWJyZXEtXHUwMDNlZGVidWdfaW5kZXgpO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0xNzktXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz0yMjc9c3RhdGljIHZvaWQgbmV0ZnNfZG9faXNzdWVfd3JpdGUoc3RydWN0IG5ldGZzX2lvX3N0cmVhbSAqc3RyZWFtLFxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMjMxLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzoyMzI6XHRfZW50ZXIoXCYjMzQ7Uj0leFsleF0sJXp4XCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkLCBzdWJyZXEtXHUwMDNlZGVidWdfaW5kZXgsIHN1YnJlcS1cdTAwM2VsZW4pO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yMzMtXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz0yNzg9c2l6ZV90IG5ldGZzX2FkdmFuY2Vfd3JpdGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yODUtXHRpZiAoIXN0cmVhbS1cdTAwM2VhdmFpbCkge1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzoyODY6XHRcdF9sZWF2ZShcJiMzNDtubyB3cml0ZVwmIzM0Oyk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTI4Ny1cdFx0cmV0dXJuIGxlbjtcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTI4OS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MjkwOlx0X2VudGVyKFwmIzM0O1I9JXhbJXhdXCYjMzQ7LCB3cmVxLVx1MDAzZWRlYnVnX2lkLCBzdWJyZXEgPyBzdWJyZXEtXHUwMDNlZGVidWdfaW5kZXggOiAwKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMjkxLVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzAxLVx0cGFydCA9IHVtaW4oc3RyZWFtLVx1MDAzZXNyZXFfbWF4X2xlbiAtIHN1YnJlcS1cdTAwM2VsZW4sIGxlbik7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjMwMjpcdF9kZWJ1ZyhcJiMzNDtwYXJ0ICV6eC8lenggJXp4LyV6eFwmIzM0Oywgc3VicmVxLVx1MDAzZWxlbiwgc3RyZWFtLVx1MDAzZXNyZXFfbWF4X2xlbiwgcGFydCwgbGVuKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzAzLVx0c3VicmVxLVx1MDAzZWxlbiAmIzQzOz0gcGFydDtcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTMyMD1zdGF0aWMgaW50IG5ldGZzX3dyaXRlX2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICp3cmVxLFxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzM0LVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzozMzU6XHRfZW50ZXIoXCYjMzQ7XCYjMzQ7KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzM2LVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzQ3LVx0XHQvKiBtbWFwIGJleW9uZCBlb2YuICovXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjM0ODpcdFx0X2RlYnVnKFwmIzM0O2JleW9uZCBlb2ZcJiMzNDspO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zNDktXHRcdGZvbGlvX3N0YXJ0X3dyaXRlYmFjayhmb2xpbyk7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zODEtXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjM4MjpcdF9kZWJ1ZyhcJiMzNDtmb2xpbyAlenggJXp4ICV6eFwmIzM0OywgZm9mZiwgZmxlbiwgZnNpemUpO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zODMtXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01MTQtXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjUxNTpcdF9sZWF2ZShcJiMzNDsgPSAwXCYjMzQ7KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNTE2LVx0cmV0dXJuIDA7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz01NDY9aW50IG5ldGZzX3dyaXRlcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01NzItXHRkbyB7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjU3MzpcdFx0X2RlYnVnKFwmIzM0O3diaXRlciAlbHggJWxseFwmIzM0OywgZm9saW8tXHUwMDNlaW5kZXgsIGF0b21pYzY0X3JlYWQoXHUwMDI2d3JlcS1cdTAwM2Vpc3N1ZWRfdG8pKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNTc0LVxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNTk0LVx0bmV0ZnNfcHV0X3JlcXVlc3Qod3JlcSwgbmV0ZnNfcnJlcV90cmFjZV9wdXRfcmV0dXJuKTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NTk1Olx0X2xlYXZlKFwmIzM0OyA9ICVkXCYjMzQ7LCBlcnJvcik7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTU5Ni1cdHJldHVybiBlcnJvcjtcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTYwOC1cdG5ldGZzX3diX2VuZChpY3R4KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NjA5Olx0X2xlYXZlKFwmIzM0OyA9ICVkXCYjMzQ7LCBlcnJvcik7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTYxMC1cdHJldHVybiBlcnJvcjtcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTY0Mz1pbnQgbmV0ZnNfYWR2YW5jZV93cml0ZXRocm91Z2goc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjLFxuLS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNjQ4LVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo2NDk6XHRfZW50ZXIoXCYjMzQ7Uj0leCBpYz0lenUgd3M9JXUgY3A9JXp1IHRwPSV1XCYjMzQ7LFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02NTAtXHQgICAgICAgd3JlcS1cdTAwM2VkZWJ1Z19pZCwgd3JlcS1cdTAwM2VidWZmZXIuaXRlci5jb3VudCwgd3JlcS1cdTAwM2V3c2l6ZSwgY29waWVkLCB0b19wYWdlX2VuZCk7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz02ODc9c3NpemVfdCBuZXRmc19lbmRfd3JpdGV0aHJvdWdoKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICp3cmVxLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyxcbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTY5MS1cbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NjkyOlx0X2VudGVyKFwmIzM0O1I9JXhcJiMzNDssIHdyZXEtXHUwMDNlZGVidWdfaWQpO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02OTMtXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz03MTQ9c3RhdGljIGludCBuZXRmc193cml0ZV9mb2xpb19zaW5nbGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy03MjYtXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjcyNzpcdF9lbnRlcihcJiMzNDtcJiMzNDspO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy03MjgtXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy03MzctXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjczODpcdF9kZWJ1ZyhcJiMzNDtmb2xpbyAlengvJXp4XCYjMzQ7LCBmbGVuLCBmc2l6ZSk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTczOS1cbi0tXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTgyNC1cdFx0a2RlYnVnKFwmIzM0O1I9JXg6IE5vIHN1Ym1pdFwmIzM0Oywgd3JlcS1cdTAwM2VkZWJ1Z19pZCk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjgyNTpcdF9sZWF2ZShcJiMzNDsgPSAwXCYjMzQ7KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtODI2LVx0cmV0dXJuIDA7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz04NDE9aW50IG5ldGZzX3dyaXRlYmFja19zaW5nbGUoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04NzctXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjg3ODpcdFx0XHRfZGVidWcoXCYjMzQ7d2JpdGVyICVseCAlbGx4XCYjMzQ7LCBmb2xpby1cdTAwM2VpbmRleCwgYXRvbWljNjRfcmVhZChcdTAwMjZ3cmVxLVx1MDAzZWlzc3VlZF90bykpO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04NzktXG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04OTctXHRuZXRmc19wdXRfcmVxdWVzdCh3cmVxLCBuZXRmc19ycmVxX3RyYWNlX3B1dF9yZXR1cm4pO1xuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo4OTg6XHRfbGVhdmUoXCYjMzQ7ID0gJWRcJiMzNDssIHJldCk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTg5OS1cdHJldHVybiByZXQ7XG4tLVxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy05MDItXHRuZXRmc193Yl9lbmQoaWN0eCk7XG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjkwMzpcdF9sZWF2ZShcJiMzNDsgPSAlZFwmIzM0OywgcmV0KTtcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtOTA0LVx0cmV0dXJuIHJldDtcbi0tXG5mcy9uZXRmcy93cml0ZV9yZXRyeS5jPTE3PXN0YXRpYyB2b2lkIG5ldGZzX3JldHJ5X3dyaXRlX3N0cmVhbShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSxcbi0tXG5mcy9uZXRmcy93cml0ZV9yZXRyeS5jLTIxLVxuZnMvbmV0ZnMvd3JpdGVfcmV0cnkuYzoyMjpcdF9lbnRlcihcJiMzNDtSPSV4WyV4Ol1cJiMzNDssIHdyZXEtXHUwMDNlZGVidWdfaWQsIHN0cmVhbS1cdTAwM2VzdHJlYW1fbnIpO1xuZnMvbmV0ZnMvd3JpdGVfcmV0cnkuYy0yMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMyMgoJCQkJCQkJb3V0cHV0OiA5MQoJCQkJCQkJdGhvdWdodHM6IDEyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IERlYnVnIExvZ2dpbmcgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uc3VsdCBTZWN0aW9uIDIgb2YgdGhlIHRyaWFnZSBwaGlsb3NvcGh5IHJlZ2FyZGluZyB3aGVuIHRvIG1hcmsgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUga2V5IGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGlmIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLCBzcGVjaWZpY2FsbHkgJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nLi4udGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4mIzM0OwoKTm93LCBsZXQmIzM5O3MgYW5hbHl6ZSB0aGUgcGF0Y2guIExvb2tpbmcgYXQgYGZzL25ldGZzL2ludGVybmFsLmhgLCBpdCYjMzk7cyBjbGVhciB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCB0aGUgZGVidWcgbG9nZ2luZyBtYWNyb3M6IGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBhIGNoZWNrIGFnYWluc3QgYSBmaW5lLWdyYWluZWQgYml0bWFzayBgbmV0ZnNfZGVidWdgIGJlZm9yZSBpbnZva2luZyB0aGUgdW5kZXJseWluZyBga2VudGVyYCwgYGtsZWF2ZWAsIG9yIGBrZGVidWdgIGZ1bmN0aW9ucyAod2hpY2gsIGluIHR1cm4sIHVzZSBgZGJncHJpbnRrYCkuCgpBZnRlciB2ZXJpZnlpbmcgdGhhdCB0aGUgZGlmZiBpcyByZXN0cmljdGVkIHRvIGBmcy9uZXRmcy9pbnRlcm5hbC5oYCwgdGhlc2UgbW9kaWZpY2F0aW9ucyBhcmUgcHVyZWx5IGZvciBkZWJ1ZyBvdXRwdXQ7IHNwZWNpZmljYWxseSwgdGhleSBlbmFibGUgbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgd2hhdCBkZWJ1ZyBtZXNzYWdlcyBhcmUgZGlzcGxheWVkLiBUaGV5IGRvbiYjMzk7dCBhZmZlY3Qga2VybmVsIGNvbnRyb2wgZmxvdywgZG9uJiMzOTt0IG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSBvciBhbHRlciBhbnkgYXNzZXJ0aW9ucyBvciBlcnJvciBoYW5kbGluZy4gRXNzZW50aWFsbHksIHRoZXNlIHVwZGF0ZXMganVzdCBjaGFuZ2UgKndoZW4qIGRlYnVnIG1lc3NhZ2VzIGFyZSBwcmludGVkIGJhc2VkIG9uIHRoZSBiaXRtYXNrIGluIGBuZXRmc19kZWJ1Z2AuCgpUaGVyZWZvcmUsIHRoZSBwYXRjaCBzdHJpY3RseSBmYWxscyB1bmRlciB0aGUgJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nJiMzNDsgY2F0ZWdvcnkuIENvbnNlcXVlbnRseSwgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCB3YXJyYW50IGZ1enppbmcuCgpNeSBjb25jbHVzaW9uIGlzOgoKLSAgIGBXb3J0aEZ1enppbmc6IGZhbHNlYAotICAgYEZvY3VzU3ltYm9sczogW11gCi0gICBgRW5hYmxlQ29uZmlnczogW11gCi0gICBgUmVhc29uaW5nOiBQdXJlbHkgZGVidWcgbG9nZ2luZyBtYWNybyB1cGRhdGVzIGluIG5ldGZzL2ZzY2FjaGUgdGhhdCBkbyBub3QgY2hhbmdlIGtlcm5lbCBsb2dpYywgZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIG9yIGFzc2VydGlvbnMuYAoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRlYnVnIGxvZ2dpbmcgbWFjcm9zIChfZW50ZXIsIF9sZWF2ZSwgX2RlYnVnKSBpbiBmcy9uZXRmcy9pbnRlcm5hbC5oIHRvIHN1cHBvcnQgZmluZS1ncmFpbmVkIGRlYnVnIGxldmVsIGJpdG1hc2sgZmlsdGVyaW5nLiBJdCBjb25zdGl0dXRlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGNoYW5nZXMgYW5kIGRvZXMgbm90IGFsdGVyIGV4ZWN1dGFibGUgY29udHJvbCBmbG93LCBkYXRhIHN0cnVjdHVyZXMsIHN0YXRlIG1hbmFnZW1lbnQsIG9yIHJ1bnRpbWUgYXNzZXJ0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDExOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOToxMC4zMTQ4NDYxNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTU0MjQzMzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOToxMC4zMTQ4NTgzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcyNzMxMTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTAwMjIyZTgwOGYxOGMzOGU2Nzk5MmU3NDY4NGY5YThiNTkyZjEwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDExOjI5OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL25ldGZzL2ludGVybmFsLmggYi9mcy9uZXRmcy9pbnRlcm5hbC5oXFxuaW5kZXggNDIwZWU3YjI2NTgwZi4uNDI1YzczYjdlNzdiNCAxMDA2NDRcXG4tLS0gYS9mcy9uZXRmcy9pbnRlcm5hbC5oXFxuKysrIGIvZnMvbmV0ZnMvaW50ZXJuYWwuaFxcbkBAIC00NjgsNiArNDY4LDMyIEBAIHZvaWQgZnNjYWNoZV9jcmVhdGVfdm9sdW1lKHN0cnVjdCBmc2NhY2hlX3ZvbHVtZSAqdm9sdW1lLCBib29sIHdhaXQpO1xcbiAjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKFxcXCJcXHUwMDNjPT0gJXMoKVxcXCJGTVRcXFwiXFxcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXFxuICNkZWZpbmUga2RlYnVnKEZNVCwgLi4uKSBkYmdwcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxcbiBcXG4rI2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NBQ0hFXFx0MFxcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfQ09PS0lFXFx0MVxcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT0JKRUNUXFx0MlxcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT1BFUkFUSU9OXFx0M1xcbitcXG4rI2RlZmluZSBGU0NBQ0hFX1BPSU5UX0VOVEVSXFx0MVxcbisjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfTEVBVkVcXHQyXFxuKyNkZWZpbmUgRlNDQUNIRV9QT0lOVF9ERUJVR1xcdDRcXG4rXFxuKyNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTFxcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcXG4rI2VuZGlmXFxuK1xcbisvKlxcbisgKiBEZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgb3B0aW9uYWwgZGVidWdnaW5nIHBvaW50IHNob3VsZCBiZSBsb2dnZWQuXFxuKyAqIFRocmVlIGxldmVscyBvZiBpbmRpcmVjdGlvbiBhcmUgbmVlZGVkIHRvIGV4cGFuZCBGU0NBQ0hFX0RFQlVHX0xFVkVMIGJlZm9yZVxcbisgKiBqb2luaW5nIGl0IHdpdGggaXRzIHByZWZpeC5cXG4rICovXFxuKyNkZWZpbmUgX19fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFxcXFxcXG4rXFx0dW5saWtlbHkobmV0ZnNfZGVidWcgXFx1MDAyNiBcXFxcXFxuK1xcdFxcdCAoRlNDQUNIRV9QT0lOVF8jI1BPSU5UIFxcdTAwM2NcXHUwMDNjIChGU0NBQ0hFX0RFQlVHXyAjIyBMRVZFTCAqIDMpKSlcXG4rI2RlZmluZSBfX19kb19rZGVidWcoTEVWRUwsIFBPSU5UKSBcXFxcXFxuK1xcdF9fX19kb19rZGVidWcoTEVWRUwsIFBPSU5UKVxcbisjZGVmaW5lIF9fZG9fa2RlYnVnKFBPSU5UKSBcXFxcXFxuK1xcdF9fX2RvX2tkZWJ1ZyhGU0NBQ0hFX0RFQlVHX0xFVkVMLCBQT0lOVClcXG4rXFxuICNpZmRlZiBfX0tERUJVR1xcbiAjZGVmaW5lIF9lbnRlcihGTVQsIC4uLikga2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXylcXG4gI2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pXFxuQEAgLTQ3NiwxOSArNTAyLDE5IEBAIHZvaWQgZnNjYWNoZV9jcmVhdGVfdm9sdW1lKHN0cnVjdCBmc2NhY2hlX3ZvbHVtZSAqdm9sdW1lLCBib29sIHdhaXQpO1xcbiAjZWxpZiBkZWZpbmVkKENPTkZJR19ORVRGU19ERUJVRylcXG4gI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRpZiAobmV0ZnNfZGVidWcpXFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoX19kb19rZGVidWcoRU5URVIpKVxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0a2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG4gI2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRpZiAobmV0ZnNfZGVidWcpXFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoX19kb19rZGVidWcoTEVBVkUpKVxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0a2xlYXZlKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG4gI2RlZmluZSBfZGVidWcoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRpZiAobmV0ZnNfZGVidWcpXFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoX19kb19rZGVidWcoREVCVUcpKVxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0a2RlYnVnKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTE6Mjk6MTEuNjg4Mjc4NTQ5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozMTE4MDc5ODQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwMDIyMmU4MDhmMThjMzhlNjc5OTJlNzQ2ODRmOWE4YjU5MmYxMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDExOjI5OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbmV0ZnMvaW50ZXJuYWwuaCBiL2ZzL25ldGZzL2ludGVybmFsLmhcbmluZGV4IDQyMGVlN2IyNjU4MGYuLjQyNWM3M2I3ZTc3YjQgMTAwNjQ0XG4tLS0gYS9mcy9uZXRmcy9pbnRlcm5hbC5oXG4rKysgYi9mcy9uZXRmcy9pbnRlcm5hbC5oXG5AQCAtNDY4LDYgKzQ2OCwzMiBAQCB2b2lkIGZzY2FjaGVfY3JlYXRlX3ZvbHVtZShzdHJ1Y3QgZnNjYWNoZV92b2x1bWUgKnZvbHVtZSwgYm9vbCB3YWl0KTtcbiAjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKFwiXHUwMDNjPT0gJXMoKVwiRk1UXCJcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXG4gI2RlZmluZSBrZGVidWcoRk1ULCAuLi4pIGRiZ3ByaW50ayhGTVQsICMjX19WQV9BUkdTX18pXG4gXG4rI2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NBQ0hFXHQwXG4rI2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NPT0tJRVx0MVxuKyNkZWZpbmUgRlNDQUNIRV9ERUJVR19PQkpFQ1RcdDJcbisjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT1BFUkFUSU9OXHQzXG4rXG4rI2RlZmluZSBGU0NBQ0hFX1BPSU5UX0VOVEVSXHQxXG4rI2RlZmluZSBGU0NBQ0hFX1BPSU5UX0xFQVZFXHQyXG4rI2RlZmluZSBGU0NBQ0hFX1BPSU5UX0RFQlVHXHQ0XG4rXG4rI2lmbmRlZiBGU0NBQ0hFX0RFQlVHX0xFVkVMXG4rI2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXG4rI2VuZGlmXG4rXG4rLypcbisgKiBEZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgb3B0aW9uYWwgZGVidWdnaW5nIHBvaW50IHNob3VsZCBiZSBsb2dnZWQuXG4rICogVGhyZWUgbGV2ZWxzIG9mIGluZGlyZWN0aW9uIGFyZSBuZWVkZWQgdG8gZXhwYW5kIEZTQ0FDSEVfREVCVUdfTEVWRUwgYmVmb3JlXG4rICogam9pbmluZyBpdCB3aXRoIGl0cyBwcmVmaXguXG4rICovXG4rI2RlZmluZSBfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXFxcbitcdHVubGlrZWx5KG5ldGZzX2RlYnVnIFx1MDAyNiBcXFxuK1x0XHQgKEZTQ0FDSEVfUE9JTlRfIyNQT0lOVCBcdTAwM2NcdTAwM2MgKEZTQ0FDSEVfREVCVUdfICMjIExFVkVMICogMykpKVxuKyNkZWZpbmUgX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVCkgXFxcbitcdF9fX19kb19rZGVidWcoTEVWRUwsIFBPSU5UKVxuKyNkZWZpbmUgX19kb19rZGVidWcoUE9JTlQpIFxcXG4rXHRfX19kb19rZGVidWcoRlNDQUNIRV9ERUJVR19MRVZFTCwgUE9JTlQpXG4rXG4gI2lmZGVmIF9fS0RFQlVHXG4gI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pIGtlbnRlcihGTVQsICMjX19WQV9BUkdTX18pXG4gI2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pXG5AQCAtNDc2LDE5ICs1MDIsMTkgQEAgdm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7XG4gI2VsaWYgZGVmaW5lZChDT05GSUdfTkVURlNfREVCVUcpXG4gI2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXHRcdFx0XFxcbiBkbyB7XHRcdFx0XHRcdFx0XFxcbi1cdGlmIChuZXRmc19kZWJ1ZylcdFx0XHRcXFxuK1x0aWYgKF9fZG9fa2RlYnVnKEVOVEVSKSlcdFx0XHRcXFxuIFx0XHRrZW50ZXIoRk1ULCAjI19fVkFfQVJHU19fKTtcdFxcXG4gfSB3aGlsZSAoMClcbiBcbiAjZGVmaW5lIF9sZWF2ZShGTVQsIC4uLilcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcXFxuLVx0aWYgKG5ldGZzX2RlYnVnKVx0XHRcdFxcXG4rXHRpZiAoX19kb19rZGVidWcoTEVBVkUpKVx0XHRcdFxcXG4gXHRcdGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pO1x0XFxcbiB9IHdoaWxlICgwKVxuIFxuICNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKVx0XHRcdFxcXG4gZG8ge1x0XHRcdFx0XHRcdFxcXG4tXHRpZiAobmV0ZnNfZGVidWcpXHRcdFx0XFxcbitcdGlmIChfX2RvX2tkZWJ1ZyhERUJVRykpXHRcdFx0XFxcbiBcdFx0a2RlYnVnKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuIH0gd2hpbGUgKDApXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOToxMS42ODgyNzk5NjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTUxNzUzNTM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYnJlYWsgZG93biB0aGUgY2hhbmdlcyBhbmQgZW5zdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgbmV0d29yayBmaWxlc3lzdGVtLiBUaGUgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBleGFtaW5lIHRoZSBzcGVjaWZpYyBjb2RlIG1vZGlmaWNhdGlvbnMuXG5cbkkgc2VlIHRoZSBwYXRjaCB0YXJnZXRzIGBmcy9uZXRmcy9pbnRlcm5hbC5oYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGRlYnVnIG1hY3Jvcy4gSSdtIG5vdGluZyB0aGUgbmV3IGRlZmluaXRpb25zIGZvciBgRlNDQUNIRV9ERUJVR18qYCwgYEZTQ0FDSEVfUE9JTlRfKmAsIGFuZCB0aGUgaW50cm9kdWN0aW9uIG9mIGBfX19fZG9fa2RlYnVnYCwgYW5kIGBfX19kb19rZGVidWdgLiBUaGUga2V5IGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2NrIGAjZWxpZiBkZWZpbmVkKENPTkZJR19ORVRGU19ERUJVRylgLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIGV4aXN0aW5nIGRlYnVnZ2luZyBtYWNyb3MsIGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLCB0byBub3cgY2hlY2sgdGhlIG91dHB1dCBvZiB0aGUgYF9fZG9fa2RlYnVnKC4uLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIGBuZXRmc19kZWJ1Z2AuXG5cbk5vdywgYmVmb3JlIEkgbWFrZSBhbnkgZGVmaW5pdGl2ZSBjb25jbHVzaW9ucywgSSBuZWVkIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBmcy9uZXRmcy9pbnRlcm5hbC5oYCBmaWxlIGl0c2VsZi4gSSdsbCB1c2UgbXkgZmlsZS1yZWFkaW5nIHRvb2xzIHRvIHplcm8gaW4gb24gdGhvc2Ugc3BlY2lmaWMgbGluZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBleGlzdGluZyBkZWJ1ZyBpbmZyYXN0cnVjdHVyZSBpcyBjcml0aWNhbCB0byBldmFsdWF0aW5nIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYWx0ZXJhdGlvbnMuIEkgbmVlZCB0byBzZWUgaG93IGBuZXRmc19kZWJ1Z2Agd2FzIHByZXZpb3VzbHkgdXNlZCwgYW5kIGhvdyBgX19kb19rZGVidWdgIGlzIGludGVuZGVkIHRvIGludGVncmF0ZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIGl0J3MgYSBzaW1wbGUgcmVmYWN0b3JpbmcsIGFuIG9wdGltaXphdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgc3Vic3RhbnRpYWwgbGlrZSBhIGNoYW5nZSBpbiBkZWJ1Z2dpbmcgbGV2ZWwgb3Igb3V0cHV0IG1lY2hhbmlzbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjIzLjIwNTgxODUzNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL25ldGZzL2ludGVybmFsLmhcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4gNDYxOlxcdC8qXFxuIDQ2MjpcXHQgKiBkZWJ1ZyB0cmFjaW5nXFxuIDQ2MzpcXHQgKi9cXG4gNDY0OlxcdCNkZWZpbmUgZGJncHJpbnRrKEZNVCwgLi4uKSBcXFxcXFxuIDQ2NTpcXHRcXHRwcmludGsoXFxcIlslLTYuNnNdIFxcXCJGTVRcXFwiXFxcXG5cXFwiLCBjdXJyZW50LVxcdTAwM2Vjb21tLCAjI19fVkFfQVJHU19fKVxcbiA0NjY6XFx0XFxuIDQ2NzpcXHQjZGVmaW5lIGtlbnRlcihGTVQsIC4uLikgZGJncHJpbnRrKFxcXCI9PVxcdTAwM2UgJXMoXFxcIkZNVFxcXCIpXFxcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXFxuIDQ2ODpcXHQjZGVmaW5lIGtsZWF2ZShGTVQsIC4uLikgZGJncHJpbnRrKFxcXCJcXHUwMDNjPT0gJXMoKVxcXCJGTVRcXFwiXFxcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXFxuIDQ2OTpcXHQjZGVmaW5lIGtkZWJ1ZyhGTVQsIC4uLikgZGJncHJpbnRrKEZNVCwgIyNfX1ZBX0FSR1NfXylcXG4gNDcwOlxcdFxcbiA0NzE6XFx0I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NBQ0hFXFx0MFxcbiA0NzI6XFx0I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0NPT0tJRVxcdDFcXG4gNDczOlxcdCNkZWZpbmUgRlNDQUNIRV9ERUJVR19PQkpFQ1RcXHQyXFxuIDQ3NDpcXHQjZGVmaW5lIEZTQ0FDSEVfREVCVUdfT1BFUkFUSU9OXFx0M1xcbiA0NzU6XFx0XFxuIDQ3NjpcXHQjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfRU5URVJcXHQxXFxuIDQ3NzpcXHQjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfTEVBVkVcXHQyXFxuIDQ3ODpcXHQjZGVmaW5lIEZTQ0FDSEVfUE9JTlRfREVCVUdcXHQ0XFxuIDQ3OTpcXHRcXG4gNDgwOlxcdCNpZm5kZWYgRlNDQUNIRV9ERUJVR19MRVZFTFxcbiA0ODE6XFx0I2RlZmluZSBGU0NBQ0hFX0RFQlVHX0xFVkVMIENBQ0hFXFxuIDQ4MjpcXHQjZW5kaWZcXG4gNDgzOlxcdFxcbiA0ODQ6XFx0LypcXG4gNDg1OlxcdCAqIERldGVybWluZSB3aGV0aGVyIGEgcGFydGljdWxhciBvcHRpb25hbCBkZWJ1Z2dpbmcgcG9pbnQgc2hvdWxkIGJlIGxvZ2dlZC5cXG4gNDg2OlxcdCAqIFRocmVlIGxldmVscyBvZiBpbmRpcmVjdGlvbiBhcmUgbmVlZGVkIHRvIGV4cGFuZCBGU0NBQ0hFX0RFQlVHX0xFVkVMIGJlZm9yZVxcbiA0ODc6XFx0ICogam9pbmluZyBpdCB3aXRoIGl0cyBwcmVmaXguXFxuIDQ4ODpcXHQgKi9cXG4gNDg5OlxcdCNkZWZpbmUgX19fX2RvX2tkZWJ1ZyhMRVZFTCwgUE9JTlQpIFxcXFxcXG4gNDkwOlxcdFxcdHVubGlrZWx5KG5ldGZzX2RlYnVnIFxcdTAwMjYgXFxcXFxcbiA0OTE6XFx0XFx0XFx0IChGU0NBQ0hFX1BPSU5UXyMjUE9JTlQgXFx1MDAzY1xcdTAwM2MgKEZTQ0FDSEVfREVCVUdfICMjIExFVkVMICogMykpKVxcbiA0OTI6XFx0I2RlZmluZSBfX19kb19rZGVidWcoTEVWRUwsIFBPSU5UKSBcXFxcXFxuIDQ5MzpcXHRcXHRfX19fZG9fa2RlYnVnKExFVkVMLCBQT0lOVClcXG4gNDk0OlxcdCNkZWZpbmUgX19kb19rZGVidWcoUE9JTlQpIFxcXFxcXG4gNDk1OlxcdFxcdF9fX2RvX2tkZWJ1ZyhGU0NBQ0hFX0RFQlVHX0xFVkVMLCBQT0lOVClcXG4gNDk2OlxcdFxcbiA0OTc6XFx0I2lmZGVmIF9fS0RFQlVHXFxuIDQ5ODpcXHQjZGVmaW5lIF9lbnRlcihGTVQsIC4uLikga2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXylcXG4gNDk5OlxcdCNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBrbGVhdmUoRk1ULCAjI19fVkFfQVJHU19fKVxcbiA1MDA6XFx0I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pIGtkZWJ1ZyhGTVQsICMjX19WQV9BUkdTX18pXFxuIDUwMTpcXHRcXG4gNTAyOlxcdCNlbGlmIGRlZmluZWQoQ09ORklHX05FVEZTX0RFQlVHKVxcbiA1MDM6XFx0I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiA1MDQ6XFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTA1OlxcdFxcdGlmIChfX2RvX2tkZWJ1ZyhFTlRFUikpXFx0XFx0XFx0XFxcXFxcbiA1MDY6XFx0XFx0XFx0a2VudGVyKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiA1MDc6XFx0fSB3aGlsZSAoMClcXG4gNTA4OlxcdFxcbiA1MDk6XFx0I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiA1MTA6XFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTExOlxcdFxcdGlmIChfX2RvX2tkZWJ1ZyhMRUFWRSkpXFx0XFx0XFx0XFxcXFxcbiA1MTI6XFx0XFx0XFx0a2xlYXZlKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiA1MTM6XFx0fSB3aGlsZSAoMClcXG4gNTE0OlxcdFxcbiA1MTU6XFx0I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbiA1MTY6XFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTE3OlxcdFxcdGlmIChfX2RvX2tkZWJ1ZyhERUJVRykpXFx0XFx0XFx0XFxcXFxcbiA1MTg6XFx0XFx0XFx0a2RlYnVnKEZNVCwgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiA1MTk6XFx0fSB3aGlsZSAoMClcXG4gNTIwOlxcdFxcbiA1MjE6XFx0I2Vsc2VcXG4gNTIyOlxcdCNkZWZpbmUgX2VudGVyKEZNVCwgLi4uKSBub19wcmludGsoXFxcIj09XFx1MDAzZSAlcyhcXFwiRk1UXFxcIilcXFwiLCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcXG4gNTIzOlxcdCNkZWZpbmUgX2xlYXZlKEZNVCwgLi4uKSBub19wcmludGsoXFxcIlxcdTAwM2M9PSAlcygpXFxcIkZNVFxcXCJcXFwiLCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXylcXG4gNTI0OlxcdCNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBub19wcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxcbiA1MjU6XFx0I2VuZGlmXFxuIDUyNjpcXHRcXG4gNTI3OlxcdC8qXFxuIDUyODpcXHQgKiBhc3NlcnRpb25zXFxuIDUyOTpcXHQgKi9cXG4gNTMwOlxcdCNpZiAxIC8qIGRlZmluZWQoX19LREVCVUdBTEwpICovXFxuIDUzMTpcXHRcXG4gNTMyOlxcdCNkZWZpbmUgQVNTRVJUKFgpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiA1MzM6XFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTM0OlxcdFxcdGlmICh1bmxpa2VseSghKFgpKSkge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTM1OlxcdFxcdFxcdHByX2VycihcXFwiXFxcXG5cXFwiKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDUzNjpcXHRcXHRcXHRwcl9lcnIoXFxcIkFzc2VydGlvbiBmYWlsZWRcXFxcblxcXCIpO1xcdFxcXFxcXG4gNTM3OlxcdFxcdFxcdEJVRygpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gNTM4OlxcdFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDUzOTpcXHR9IHdoaWxlICgwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOToyMy4yMDU5MDc3OTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTgzNzA4NDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlc2UgYXJlIHNpbXBseSBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyDigJMgYGRiZ3ByaW50a2Agc3BlY2lmaWNhbGx5LiBOb3csIGxldCdzIGdvIGJhY2sgYW5kIGV4YW1pbmUgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIG91dGxpbmVkLiBJJ20gZm9jdXNpbmcgb24gYXJlYXMgd2hlcmUgY2hhbmdlcyBhcmUgdHlwaWNhbGx5ICpub3QqIGFjY2VwdGVkLlxuXG5UaGUgcHJvbXB0IHN0YXRlczogbm8gY2hhbmdlcyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIHNwZWxsaW5nLCB1c2VyLXNwYWNlLCBub24tZXhlY3V0YWJsZSwgZGVjb3JhdGl2ZSBsb2dnaW5nIG9yIHRyYWNlcG9pbnRzIGFuZCBubyBidWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG9uJ3QgY2hhbmdlIGNvbXBpbGVkIEMgbG9naWMuIEFscmlnaHQsIHRoYXQncyBjbGVhci5cblxuU28sIHNpbmNlIHRoZXNlIG1hY3JvcyBhcmUgKnByb2JhYmx5KiBqdXN0IHVzZWQgZm9yIGxvZ2dpbmcsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uLiBUaGUgY2hhbmdlcyBhcmUgcHJvYmFibHkgbm90IGltcG9ydGFudC5cblxuTGV0J3MgZG8gYSBkZWVwZXIgZGl2ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1hY3JvcyBhcmUgYWN0dWFsbHkgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBhIGNvdXBsZSBvZiBwbGFjZXMsIGxpa2UgYGZzL25ldGZzYCBhbmQgYGZzL2ZzY2FjaGVgLiBJJ2xsIGFsc28gZG8gYSBnZW5lcmFsIHNlYXJjaCB0byBzZWUgd2hlcmUgZWxzZSBpbiB0aGUga2VybmVsIHRoZXNlIGxvZ2dpbmcgbWFjcm9zIGFyZSB1c2VkLCBhbmQgbWF5YmUgYWxzbyBncmVwIGZvciBhbnkgcmVsYXRlZCBkZWJ1ZyBsZXZlbHMg4oCTIGxpa2UgYEZTQ0FDSEVfREVCVUdfTEVWRUxgIG9yIGBuZXRmc19kZWJ1Z2Ag4oCTIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuIFRoaXMgc2hvdWxkIHRlbGwgbWUgcXVpY2tseSBpZiB0aGVzZSBhcmUgc2ltcGx5IGRlc2NyaXB0aXZlLCBvciBpZiB0aGVyZSdzIGFueSBhbHRlcmF0aW9uIG9mIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBidWlsZCBsb2dpYyBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIwNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjI1Ljc4OTYxOTYyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODQ3MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZTQ0FDSEVfREVCVUdfTEVWRUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy03LVxcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYzo4OiNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRVxcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9leHBvcnQuaFxcdTAwM2VcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTAtXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMTojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ09PS0lFXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMi0jaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtNi0gKi9cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6NzojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgT1BFUkFUSU9OXFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzY2FjaGUtY2FjaGUuaFxcdTAwM2VcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfbWFpbi5jLTctXFxuZnMvbmV0ZnMvZnNjYWNoZV9tYWluLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfcHJvYy5jLTctXFxuZnMvbmV0ZnMvZnNjYWNoZV9wcm9jLmM6ODojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcXG5mcy9uZXRmcy9mc2NhY2hlX3Byb2MuYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfc3RhdHMuYy03LVxcbmZzL25ldGZzL2ZzY2FjaGVfc3RhdHMuYzo4OiNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDQUNIRVxcbmZzL25ldGZzL2ZzY2FjaGVfc3RhdHMuYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9jX2ZzLmhcXHUwMDNlXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTctXFxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYzo4OiNkZWZpbmUgRlNDQUNIRV9ERUJVR19MRVZFTCBDT09LSUVcXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTktI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbi0tXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaD00NTg9dm9pZCBmc2NhY2hlX2NyZWF0ZV92b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUsIGJvb2wgd2FpdCk7XFxuLS1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ3OS1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ4MDojaWZuZGVmIEZTQ0FDSEVfREVCVUdfTEVWRUxcXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ4MTojZGVmaW5lIEZTQ0FDSEVfREVCVUdfTEVWRUwgQ0FDSEVcXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ4Mi0jZW5kaWZcXG4tLVxcbmZzL25ldGZzL2ludGVybmFsLmgtNDg1LSAqIERldGVybWluZSB3aGV0aGVyIGEgcGFydGljdWxhciBvcHRpb25hbCBkZWJ1Z2dpbmcgcG9pbnQgc2hvdWxkIGJlIGxvZ2dlZC5cXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ4NjogKiBUaHJlZSBsZXZlbHMgb2YgaW5kaXJlY3Rpb24gYXJlIG5lZWRlZCB0byBleHBhbmQgRlNDQUNIRV9ERUJVR19MRVZFTCBiZWZvcmVcXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTQ4Ny0gKiBqb2luaW5nIGl0IHdpdGggaXRzIHByZWZpeC5cXG4tLVxcbmZzL25ldGZzL2ludGVybmFsLmgtNDk0LSNkZWZpbmUgX19kb19rZGVidWcoUE9JTlQpIFxcXFxcXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjQ5NTpcXHRfX19kb19rZGVidWcoRlNDQUNIRV9ERUJVR19MRVZFTCwgUE9JTlQpXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC00OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjI1Ljg1OTQ3MTU5OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwODQyNDE2MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZWJ1ZyBMb2dnaW5nIGluIGBmcy9uZXRmc2AqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCB0aGVzZSBtYWNyb3Mg4oCTIGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgIOKAkyBhcmUgYmFzaWNhbGx5IGp1c3QgZ2xvcmlmaWVkIHByaW50IHN0YXRlbWVudHMuIFRoZXkncmUgdWx0aW1hdGVseSBjYWxsaW5nIGBkYmdwcmludGtgLCB3aGljaCB0aGVuIHJlc29sdmVzIHRvIGBwcmludGtgLiBFc3NlbnRpYWxseSwgd2UncmUgdGFsa2luZyBhYm91dCBkZWJ1ZyBsb2dnaW5nIGhlcmUsIG5vdGhpbmcgbW9yZS5cblxuVGhlIGNoYW5nZSBmb2N1c2VzIG9uIGFkanVzdGluZyB0aGUgYml0bWFzayBjaGVjayB1c2VkIHRvIGNvbnRyb2wgd2hldGhlciB0aGVzZSBkZWJ1ZyBwcmludCBzdGF0ZW1lbnRzIGdldCB0cmlnZ2VyZWQgYmFzZWQgb24gYENPTkZJR19ORVRGU19ERUJVR2AuIFRoZSBpbXBvcnRhbnQgcXVlc3Rpb24sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIG1vZGlmaWNhdGlvbiBoYXMgYW55IGltcGFjdCBvbiB0aGUgYWN0dWFsICpmdW5jdGlvbmFsaXR5KiBvZiB0aGUga2VybmVsIGNvZGUuXG5cbkFuZCBhZnRlciBhIHF1aWNrIHJldmlldywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgKm5vKi4gVGhlc2UgbWFjcm9zIGRvbid0IGFsdGVyIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYWNoaW5lcywgYXNzZXJ0aW9ucywgb3IgbG9naWMuIFRoZXkncmUgc29sZWx5IGZvciBkZWJ1ZyBwcmludGluZy4gVGhlIGNvZGUncyBleGVjdXRpb24gcGF0aCByZW1haW5zIHRoZSBzYW1lIHJlZ2FyZGxlc3MuXG5cbk5leHQsIEknbGwgcXVpY2tseSBjaGVjayBmb3IgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIHdpdGhpbiBgZnMvbmV0ZnNgIHdoZXJlIHRoZXNlIG1hY3JvcyBhcmUgY2FsbGVkLCBqdXN0IHRvIGJlIHRob3JvdWdoLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IHN1Z2dlc3RzIHRoYXQgdGhlcmUgd29uJ3QgYmUgYW55LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTE1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjMzLjk0MzcxNTQ5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE1MDQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfZW50ZXJcXFxcKHxfbGVhdmVcXFxcKHxfZGVidWdcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uZXRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTM5Nj1zdGF0aWMgaW50IG5ldGZzX3JlYWRfZ2FwcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy00MTItXFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jOjQxMzpcXHRfZW50ZXIoXFxcIiVseFxcXCIsIGZvbGlvLVxcdTAwM2VpbmRleCk7XFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTQxNC1cXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYz01MDE9aW50IG5ldGZzX3JlYWRfZm9saW8oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNTEyLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo1MTM6XFx0X2VudGVyKFxcXCIlbHhcXFwiLCBmb2xpby1cXHUwMDNlaW5kZXgpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy01MTQtXFxuLS1cXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmM9NjMwPWludCBuZXRmc193cml0ZV9iZWdpbihzdHJ1Y3QgbmV0ZnNfaW5vZGUgKmN0eCxcXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy03MDMtXFx0Kl9mb2xpbyA9IGZvbGlvO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MDQ6XFx0X2xlYXZlKFxcXCIgPSAwXFxcIik7XFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTcwNS1cXHRyZXR1cm4gMDtcXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy03MTMtXFx0fVxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3MTQ6XFx0X2xlYXZlKFxcXCIgPSAlZFxcXCIsIHJldCk7XFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTcxNS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jPTcyMj1pbnQgbmV0ZnNfcHJlZmV0Y2hfZm9yX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTczMS1cXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmM6NzMyOlxcdF9lbnRlcihcXFwiJXp4IEAlbGx4XFxcIiwgZmxlbiwgc3RhcnQpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYy03MzMtXFxuLS1cXG5mcy9uZXRmcy9idWZmZXJlZF9yZWFkLmMtNzY0LWVycm9yOlxcbmZzL25ldGZzL2J1ZmZlcmVkX3JlYWQuYzo3NjU6XFx0X2xlYXZlKFxcXCIgPSAlZFxcXCIsIHJldCk7XFxuZnMvbmV0ZnMvYnVmZmVyZWRfcmVhZC5jLTc2Ni1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYz04Nz1zc2l6ZV90IG5ldGZzX3BlcmZvcm1fd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTI4Ni1cXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM6Mjg3OlxcdFxcdFxcdFxcdF9kZWJ1ZyhcXFwicHJlZmV0Y2ggPSAlemRcXFwiLCByZXQpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtMjg4LVxcdFxcdFxcdFxcdGdvdG8gZXJyb3JfZm9saW9fdW5sb2NrO1xcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYy00MzItXFx0aW9jYi1cXHUwMDNla2lfcG9zICs9IHdyaXR0ZW47XFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzo0MzM6XFx0X2xlYXZlKFxcXCIgPSAlemQgWyV6ZF1cXFwiLCB3cml0dGVuLCByZXQpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNDM0LVxcdHJldHVybiB3cml0dGVuID8gd3JpdHRlbiA6IHJldDtcXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM9NTAxPXNzaXplX3QgbmV0ZnNfZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYy01MDctXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzo1MDg6XFx0X2VudGVyKFxcXCIlbGx4LCV6eCwlbGx4XFxcIiwgaW9jYi1cXHUwMDNla2lfcG9zLCBpb3ZfaXRlcl9jb3VudChmcm9tKSwgaV9zaXplX3JlYWQoaW5vZGUpKTtcXG5mcy9uZXRmcy9idWZmZXJlZF93cml0ZS5jLTUwOS1cXG4tLVxcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmM9NTM3PXZtX2ZhdWx0X3QgbmV0ZnNfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgbmV0ZnNfZ3JvdXAgKm5ldGZzX2dyb3VwKVxcbi0tXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYy01NDgtXFxuZnMvbmV0ZnMvYnVmZmVyZWRfd3JpdGUuYzo1NDk6XFx0X2VudGVyKFxcXCIlbHhcXFwiLCBmb2xpby1cXHUwMDNlaW5kZXgpO1xcbmZzL25ldGZzL2J1ZmZlcmVkX3dyaXRlLmMtNTUwLVxcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYz0xMTI9c3RhdGljIHNzaXplX3QgbmV0ZnNfdW5idWZmZXJlZF9yZWFkKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLCBib29sIHN5bmMpXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jLTExNS1cXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jOjExNjpcXHRfZW50ZXIoXFxcIlI9JXggJWxseC0lbGx4XFxcIixcXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jLTExNy1cXHQgICAgICAgcnJlcS1cXHUwMDNlZGVidWdfaWQsIHJyZXEtXFx1MDAzZXN0YXJ0LCBycmVxLVxcdTAwM2VzdGFydCArIHJyZXEtXFx1MDAzZWxlbiAtIDEpO1xcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYy0xMzgtXFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYzoxMzk6XFx0X2xlYXZlKFxcXCIgPSAlemRcXFwiLCByZXQpO1xcbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTQwLVxcdHJldHVybiByZXQ7XFxuLS1cXG5mcy9uZXRmcy9kaXJlY3RfcmVhZC5jPTE1Mz1zc2l6ZV90IG5ldGZzX3VuYnVmZmVyZWRfcmVhZF9pdGVyX2xvY2tlZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcXG4tLVxcbmZzL25ldGZzL2RpcmVjdF9yZWFkLmMtMTU5LVxcbmZzL25ldGZzL2RpcmVjdF9yZWFkLmM6MTYwOlxcdF9lbnRlcihcXFwiXFxcIik7XFxuZnMvbmV0ZnMvZGlyZWN0X3JlYWQuYy0xNjEtXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYz0xNT1zdGF0aWMgdm9pZCBuZXRmc191bmJ1ZmZlcmVkX3dyaXRlX2RvbmUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEpXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0xOC1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzoxOTpcXHRfZW50ZXIoXFxcIlI9JXhcXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjAtXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy00My1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzo0NDpcXHRfZGVidWcoXFxcImZpbmlzaGVkXFxcIik7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtNDUtXFx0bmV0ZnNfd2FrZV9ycmVxX2ZsYWcod3JlcSwgTkVURlNfUlJFUV9JTl9QUk9HUkVTUywgbmV0ZnNfcnJlcV90cmFjZV93YWtlX2lwKTtcXG4tLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jPTk0PXN0YXRpYyBpbnQgbmV0ZnNfdW5idWZmZXJlZF93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcXG4tLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTk5LVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jOjEwMDpcXHRfZW50ZXIoXFxcIiVsbHhcXFwiLCB3cmVxLVxcdTAwM2VsZW4pO1xcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTEwMS1cXG4tLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTE5OC1cXHRuZXRmc191bmJ1ZmZlcmVkX3dyaXRlX2RvbmUod3JlcSk7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MTk5OlxcdF9sZWF2ZShcXFwiID0gJWRcXFwiLCByZXQpO1xcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTIwMC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM9MjE1PXNzaXplX3QgbmV0ZnNfdW5idWZmZXJlZF93cml0ZV9pdGVyX2xvY2tlZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG4tLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTIyNC1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYzoyMjU6XFx0X2VudGVyKFxcXCJcXFwiKTtcXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMjYtXFxuLS1cXG5mcy9uZXRmcy9kaXJlY3Rfd3JpdGUuYy0yMzItXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MjMzOlxcdF9kZWJ1ZyhcXFwidXcgJWxseC0lbGx4XFxcIiwgc3RhcnQsIGVuZCk7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjM0LVxcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMjkxLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM6MjkyOlxcdFxcdFxcdF9kZWJ1ZyhcXFwiYmVnaW4gPSAlemRcXFwiLCByZXQpO1xcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTI5My1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmM9MzIzPXNzaXplX3QgbmV0ZnNfdW5idWZmZXJlZF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvbmV0ZnMvZGlyZWN0X3dyaXRlLmMtMzMyLVxcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jOjMzMzpcXHRfZW50ZXIoXFxcIiVsbHgsJXp4LCVsbHhcXFwiLCBwb3MsIGlvdl9pdGVyX2NvdW50KGZyb20pLCBpX3NpemVfcmVhZChpbm9kZSkpO1xcbmZzL25ldGZzL2RpcmVjdF93cml0ZS5jLTMzNC1cXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYz0yMzQ9aW50IGZzY2FjaGVfYWRkX2NhY2hlKHN0cnVjdCBmc2NhY2hlX2NhY2hlICpjYWNoZSxcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYy0yMzktXFxuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jOjI0MDpcXHRfZW50ZXIoXFxcInslcywlc31cXFwiLCBvcHMtXFx1MDAzZW5hbWUsIGNhY2hlLVxcdTAwM2VuYW1lKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2NhY2hlLmMtMjQxLVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTI1OS1cXHRwcl9ub3RpY2UoXFxcIkNhY2hlIFxcXFxcXFwiJXNcXFxcXFxcIiBhZGRlZCAodHlwZSAlcylcXFxcblxcXCIsIGNhY2hlLVxcdTAwM2VuYW1lLCBvcHMtXFx1MDAzZW5hbWUpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY2FjaGUuYzoyNjA6XFx0X2xlYXZlKFxcXCIgPSAwIFslc11cXFwiLCBjYWNoZS1cXHUwMDNlbmFtZSk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jYWNoZS5jLTI2MS1cXHRyZXR1cm4gMDtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9NDUwPXN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqX19mc2NhY2hlX2FjcXVpcmVfY29va2llKFxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy00NTgtXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo0NTk6XFx0X2VudGVyKFxcXCJWPSV4XFxcIiwgdm9sdW1lLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy00NjAtXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ4Ni1cXHRmc2NhY2hlX3N0YXQoXFx1MDAyNmZzY2FjaGVfbl9hY3F1aXJlc19vayk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo0ODc6XFx0X2xlYXZlKFxcXCIgPSBjPSUwOHhcXFwiLCBjb29raWUtXFx1MDAzZWRlYnVnX2lkKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTQ4OC1cXHRyZXR1cm4gY29va2llO1xcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz01MDM9c3RhdGljIHZvaWQgZnNjYWNoZV9wZXJmb3JtX2xvb2t1cChzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSlcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNTA3LVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NTA4OlxcdF9lbnRlcihcXFwiXFxcIik7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy01MDktXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTUyMS1cXHRcXHRuZWVkX3dpdGhkcmF3ID0gdHJ1ZTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjUyMjpcXHRcXHRfbGVhdmUoXFxcIiBbZmFpbF1cXFwiKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTUyMy1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9NTY5PXZvaWQgX19mc2NhY2hlX3VzZV9jb29raWUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsIGJvb2wgd2lsbF9tb2RpZnkpXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTU3NC1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjU3NTpcXHRfZW50ZXIoXFxcImM9JTA4eFxcXCIsIGNvb2tpZS1cXHUwMDNlZGVidWdfaWQpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNTc2LVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy02MzgtXFx0XFx0ZnNjYWNoZV9xdWV1ZV9jb29raWUoY29va2llLCBmc2NhY2hlX2Nvb2tpZV9nZXRfdXNlX3dvcmspO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NjM5OlxcdF9sZWF2ZShcXFwiXFxcIik7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy02NDAtfVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz03MDA9c3RhdGljIHZvaWQgZnNjYWNoZV9jb29raWVfc3RhdGVfbWFjaGluZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSlcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNzA0LVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM6NzA1OlxcdF9lbnRlcihcXFwiYz0leFxcXCIsIGNvb2tpZS1cXHUwMDNlZGVidWdfaWQpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtNzA2LVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy04MjYtXFx0XFx0d2FrZV91cF9jb29raWVfc3RhdGUoY29va2llKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjgyNzpcXHRfbGVhdmUoXFxcIlxcXCIpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtODI4LX1cXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmM9ODYwPXN0YXRpYyB2b2lkIGZzY2FjaGVfY29va2llX2xydV9kb19vbmUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUpXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTg3My1cXHRcXHRmc2NhY2hlX3N0YXQoXFx1MDAyNmZzY2FjaGVfbl9jb29raWVzX2xydV9leHBpcmVkKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjg3NDpcXHRcXHRfZGVidWcoXFxcImxydSBjPSV4XFxcIiwgY29va2llLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy04NzUtXFx0XFx0X19mc2NhY2hlX3dpdGhkcmF3X2Nvb2tpZShjb29raWUpO1xcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz05NzI9dm9pZCBfX2ZzY2FjaGVfcmVsaW5xdWlzaF9jb29raWUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsIGJvb2wgcmV0aXJlKVxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy05NzctXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzo5Nzg6XFx0X2VudGVyKFxcXCJjPSUwOHh7JWR9LCVkXFxcIixcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTk3OS1cXHQgICAgICAgY29va2llLVxcdTAwM2VkZWJ1Z19pZCwgYXRvbWljX3JlYWQoXFx1MDAyNmNvb2tpZS1cXHUwMDNlbl9hY3RpdmUpLCByZXRpcmUpO1xcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYz0xMDUxPXZvaWQgX19mc2NhY2hlX2ludmFsaWRhdGUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTEwNTYtXFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMDU3OlxcdF9lbnRlcihcXFwiYz0leFxcXCIsIGNvb2tpZS1cXHUwMDNlZGVidWdfaWQpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA1OC1cXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA3OC1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2Y29va2llLVxcdTAwM2Vsb2NrKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjEwNzk6XFx0XFx0X2xlYXZlKFxcXCIgW25vICV1XVxcXCIsIGNvb2tpZS1cXHUwMDNlc3RhdGUpO1xcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTA4MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTEwODctXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmNvb2tpZS1cXHUwMDNlbG9jayk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYzoxMDg4OlxcdFxcdF9sZWF2ZShcXFwiIFtsb29rICV4XVxcXCIsIGNvb2tpZS1cXHUwMDNlaW52YWxfY291bnRlcik7XFxuZnMvbmV0ZnMvZnNjYWNoZV9jb29raWUuYy0xMDg5LVxcdFxcdHJldHVybjtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfY29va2llLmMtMTEwMC1cXHRcXHRcXHRmc2NhY2hlX3F1ZXVlX2Nvb2tpZShjb29raWUsIGZzY2FjaGVfY29va2llX2dldF9pbnZhbF93b3JrKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jOjExMDE6XFx0XFx0X2xlYXZlKFxcXCIgW2ludl1cXFwiKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2Nvb2tpZS5jLTExMDItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jPTIyPWJvb2wgZnNjYWNoZV93YWl0X2Zvcl9vcGVyYXRpb24oc3RydWN0IG5ldGZzX2NhY2hlX3Jlc291cmNlcyAqY3JlcyxcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0yOS1cXHRpZiAoIWZzY2FjaGVfY2FjaGVfaXNfbGl2ZShjb29raWUtXFx1MDAzZXZvbHVtZS1cXHUwMDNlY2FjaGUpKSB7XFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjMwOlxcdFxcdF9sZWF2ZShcXFwiIFticm9rZW5dXFxcIik7XFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTMxLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0zNC1cXHRzdGF0ZSA9IGZzY2FjaGVfY29va2llX3N0YXRlKGNvb2tpZSk7XFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jOjM1OlxcdF9lbnRlcihcXFwiYz0lMDh4eyV1fSwleFxcXCIsIGNvb2tpZS1cXHUwMDNlZGVidWdfaWQsIHN0YXRlLCB3YW50X3N0YXRlKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMzYtXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtNTMtXFx0ZGVmYXVsdDpcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6NTQ6XFx0XFx0X2xlYXZlKFxcXCIgW25vdCBsaXZlXVxcXCIpO1xcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy01NS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM9NzA9c3RhdGljIGludCBmc2NhY2hlX2JlZ2luX29wZXJhdGlvbihzdHJ1Y3QgbmV0ZnNfY2FjaGVfcmVzb3VyY2VzICpjcmVzLFxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV9pby5jLTkzLVxcdHN0YXRlID0gZnNjYWNoZV9jb29raWVfc3RhdGUoY29va2llKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6OTQ6XFx0X2VudGVyKFxcXCJjPSUwOHh7JXV9LCV4XFxcIiwgY29va2llLVxcdTAwM2VkZWJ1Z19pZCwgc3RhdGUsIHdhbnRfc3RhdGUpO1xcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy05NS1cXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0xNDEtXFx0ZnNjYWNoZV9lbmRfY29va2llX2FjY2Vzcyhjb29raWUsIGZzY2FjaGVfYWNjZXNzX2lvX25vdF9saXZlKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmM6MTQyOlxcdF9sZWF2ZShcXFwiID0gLUVOT0JVRlNcXFwiKTtcXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMTQzLVxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYz0yMDk9dm9pZCBfX2ZzY2FjaGVfd3JpdGVfdG9fY2FjaGUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX2lvLmMtMjIzLVxcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYzoyMjQ6XFx0X2VudGVyKFxcXCIlbGx4LCV6eFxcXCIsIHN0YXJ0LCBsZW4pO1xcbmZzL25ldGZzL2ZzY2FjaGVfaW8uYy0yMjUtXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYz0xMDA9dm9pZCBfX2V4aXQgZnNjYWNoZV9leGl0KHZvaWQpXFxuZnMvbmV0ZnMvZnNjYWNoZV9tYWluLmMtMTAxLXtcXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYzoxMDI6XFx0X2VudGVyKFxcXCJcXFwiKTtcXG5mcy9uZXRmcy9mc2NhY2hlX21haW4uYy0xMDMtXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jPTIxMj1zdGF0aWMgc3RydWN0IGZzY2FjaGVfdm9sdW1lICpmc2NhY2hlX2FsbG9jX3ZvbHVtZShjb25zdCBjaGFyICp2b2x1bWVfa2V5LFxcbi0tXFxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy0yNjUtXFx0dXBfd3JpdGUoXFx1MDAyNmZzY2FjaGVfYWRkcmVtb3ZlX3NlbSk7XFxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYzoyNjY6XFx0X2xlYXZlKFxcXCIgPSB2PSV4XFxcIiwgdm9sdW1lLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvZnNjYWNoZV92b2x1bWUuYy0yNjctXFx0cmV0dXJuIHZvbHVtZTtcXG4tLVxcbmZzL25ldGZzL2ZzY2FjaGVfdm9sdW1lLmM9NDYzPXZvaWQgZnNjYWNoZV93aXRoZHJhd192b2x1bWUoc3RydWN0IGZzY2FjaGVfdm9sdW1lICp2b2x1bWUpXFxuLS1cXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTQ2Ni1cXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jOjQ2NzpcXHRfZGVidWcoXFxcIndpdGhkcmF3IFY9JXhcXFwiLCB2b2x1bWUtXFx1MDAzZWRlYnVnX2lkKTtcXG5mcy9uZXRmcy9mc2NhY2hlX3ZvbHVtZS5jLTQ2OC1cXG4tLVxcbmZzL25ldGZzL2ludGVybmFsLmg9NDU4PXZvaWQgZnNjYWNoZV9jcmVhdGVfdm9sdW1lKHN0cnVjdCBmc2NhY2hlX3ZvbHVtZSAqdm9sdW1lLCBib29sIHdhaXQpO1xcbi0tXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC00OTctI2lmZGVmIF9fS0RFQlVHXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo0OTg6I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pIGtlbnRlcihGTVQsICMjX19WQV9BUkdTX18pXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo0OTk6I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIGtsZWF2ZShGTVQsICMjX19WQV9BUkdTX18pXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDA6I2RlZmluZSBfZGVidWcoRk1ULCAuLi4pIGtkZWJ1ZyhGTVQsICMjX19WQV9BUkdTX18pXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MDEtXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MDItI2VsaWYgZGVmaW5lZChDT05GSUdfTkVURlNfREVCVUcpXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MDM6I2RlZmluZSBfZW50ZXIoRk1ULCAuLi4pXFx0XFx0XFx0XFxcXFxcbmZzL25ldGZzL2ludGVybmFsLmgtNTA0LWRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTUwOC1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjUwOTojZGVmaW5lIF9sZWF2ZShGTVQsIC4uLilcXHRcXHRcXHRcXFxcXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MTAtZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmZzL25ldGZzL2ludGVybmFsLmgtNTE0LVxcbmZzL25ldGZzL2ludGVybmFsLmg6NTE1OiNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKVxcdFxcdFxcdFxcXFxcXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTUxNi1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC01MjEtI2Vsc2VcXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjUyMjojZGVmaW5lIF9lbnRlcihGTVQsIC4uLikgbm9fcHJpbnRrKFxcXCI9PVxcdTAwM2UgJXMoXFxcIkZNVFxcXCIpXFxcIiwgX19mdW5jX18sICMjX19WQV9BUkdTX18pXFxuZnMvbmV0ZnMvaW50ZXJuYWwuaDo1MjM6I2RlZmluZSBfbGVhdmUoRk1ULCAuLi4pIG5vX3ByaW50ayhcXFwiXFx1MDAzYz09ICVzKClcXFwiRk1UXFxcIlxcXCIsIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKVxcbmZzL25ldGZzL2ludGVybmFsLmg6NTI0OiNkZWZpbmUgX2RlYnVnKEZNVCwgLi4uKSBub19wcmludGsoRk1ULCAjI19fVkFfQVJHU19fKVxcbmZzL25ldGZzL2ludGVybmFsLmgtNTI1LSNlbmRpZlxcbi0tXFxuZnMvbmV0ZnMvbWlzYy5jPTEzNj1ib29sIG5ldGZzX2RpcnR5X2ZvbGlvKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuZnMvbmV0ZnMvbWlzYy5jLTE0Mi1cXG5mcy9uZXRmcy9taXNjLmM6MTQzOlxcdF9lbnRlcihcXFwiXFxcIik7XFxuZnMvbmV0ZnMvbWlzYy5jLTE0NC1cXG4tLVxcbmZzL25ldGZzL21pc2MuYz0yMTE9dm9pZCBuZXRmc19pbnZhbGlkYXRlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpXFxuLS1cXG5mcy9uZXRmcy9taXNjLmMtMjE3LVxcbmZzL25ldGZzL21pc2MuYzoyMTg6XFx0X2VudGVyKFxcXCJ7JWx4fSwlengsJXp4XFxcIiwgZm9saW8tXFx1MDAzZWluZGV4LCBvZmZzZXQsIGxlbmd0aCk7XFxuZnMvbmV0ZnMvbWlzYy5jLTIxOS1cXG4tLVxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jPTQyPXN0YXRpYyB2b2lkIG5ldGZzX3VubG9ja19yZWFkX2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLFxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtODctXFx0ICAgIHRlc3RfYml0KE5FVEZTX1JSRVFfTk9fVU5MT0NLX0ZPTElPLCBcXHUwMDI2cnJlcS1cXHUwMDNlZmxhZ3MpKSB7XFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM6ODg6XFx0XFx0X2RlYnVnKFxcXCJubyB1bmxvY2tcXFwiKTtcXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy04OS1cXHR9IGVsc2Uge1xcbi0tXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM9MTg1PXN0YXRpYyB2b2lkIG5ldGZzX2NvbGxlY3RfcmVhZF9yZXN1bHRzKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtMTkwLVxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjE5MTpcXHRfZW50ZXIoXFxcIiVsbHgtJWxseFxcXCIsIHJyZXEtXFx1MDAzZXN0YXJ0LCBycmVxLVxcdTAwM2VzdGFydCArIHJyZXEtXFx1MDAzZWxlbik7XFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtMTkyLVxcdHRyYWNlX25ldGZzX3JyZXEocnJlcSwgbmV0ZnNfcnJlcV90cmFjZV9jb2xsZWN0KTtcXG4tLVxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTIxNS1cXHRcXHR0cmFjZV9uZXRmc19jb2xsZWN0X3NyZXEocnJlcSwgZnJvbnQpO1xcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjIxNjpcXHRcXHRfZGVidWcoXFxcInNyZXEgWyV4XSAlbGx4ICV6eC8lenhcXFwiLFxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTIxNy1cXHRcXHQgICAgICAgZnJvbnQtXFx1MDAzZWRlYnVnX2luZGV4LCBmcm9udC1cXHUwMDNlc3RhcnQsIGZyb250LVxcdTAwM2V0cmFuc2ZlcnJlZCwgZnJvbnQtXFx1MDAzZWxlbik7XFxuLS1cXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMjgtb3V0OlxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjMyOTpcXHRfbGVhdmUoXFxcIiA9ICV4XFxcIiwgbm90ZXMpO1xcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTMzMC1cXHRyZXR1cm47XFxuLS1cXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMzYtXFx0ICovXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmM6MzM3OlxcdF9kZWJ1ZyhcXFwicmV0cnlcXFwiKTtcXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy0zMzgtXFx0bmV0ZnNfcmV0cnlfcmVhZHMocnJlcSk7XFxuLS1cXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYz0xOT1zdGF0aWMgdm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKmNyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0yNS1cXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoyNjpcXHRfZW50ZXIoXFxcIlxcXCIpO1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jLTI3LVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMzUtXFx0XFx0LyogbW1hcCBiZXlvbmQgZW9mLiAqL1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jOjM2OlxcdFxcdF9kZWJ1ZyhcXFwiYmV5b25kIGVvZlxcXCIpO1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jLTM3LVxcdFxcdGZvbGlvX2VuZF9wcml2YXRlXzIoZm9saW8pO1xcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtNTAtXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmM6NTE6XFx0X2RlYnVnKFxcXCJmb2xpbyAlenggJXp4XFxcIiwgZmxlbiwgZnNpemUpO1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jLTUyLVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jPTI2PXN0YXRpYyB2b2lkIG5ldGZzX3JldHJ5X3JlYWRfc3VicmVxdWVzdHMoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEpXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMzEtXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jOjMyOlxcdF9lbnRlcihcXFwiUj0leFxcXCIsIHJyZXEtXFx1MDAzZWRlYnVnX2lkKTtcXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMzMtXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtOTAtXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jOjkxOlxcdFxcdF9kZWJ1ZyhcXFwiZnJvbSBSPSUwOHhbJXhdIHM9JWxseCBjdGw9JXp4LyV6eFxcXCIsXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTkyLVxcdFxcdCAgICAgICBycmVxLVxcdTAwM2VkZWJ1Z19pZCwgZnJvbS1cXHUwMDNlZGVidWdfaW5kZXgsXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmMtMTE1LVxcbmZzL25ldGZzL3JlYWRfcmV0cnkuYzoxMTY6XFx0XFx0X2RlYnVnKFxcXCIgLSByYW5nZTogJWxseC0lbGx4ICVsbHhcXFwiLCBzdGFydCwgc3RhcnQgKyBsZW4gLSAxLCBsZW4pO1xcbmZzL25ldGZzL3JlYWRfcmV0cnkuYy0xMTctXFxuLS1cXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM9MjkxPXZvaWQgbmV0ZnNfdW5sb2NrX2FiYW5kb25lZF9yZWFkX3BhZ2VzKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTMwMi1cXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZycmVxLVxcdTAwM2VmbGFncykpIHtcXG5mcy9uZXRmcy9yZWFkX3JldHJ5LmM6MzAzOlxcdFxcdFxcdFxcdFxcdF9kZWJ1ZyhcXFwibm8gdW5sb2NrXFxcIik7XFxuZnMvbmV0ZnMvcmVhZF9yZXRyeS5jLTMwNC1cXHRcXHRcXHRcXHR9IGVsc2Uge1xcbi0tXFxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYz03NT1zdGF0aWMgdm9pZCBuZXRmc19zaW5nbGVfcmVhZF9jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSxcXG4tLVxcbmZzL25ldGZzL3JlYWRfc2luZ2xlLmMtNzktXFxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYzo4MDpcXHRfZW50ZXIoXFxcIlI9JTA4eFsleF1cXFwiLCBycmVxLVxcdTAwM2VkZWJ1Z19pZCwgc3VicmVxLVxcdTAwM2VkZWJ1Z19pbmRleCk7XFxuZnMvbmV0ZnMvcmVhZF9zaW5nbGUuYy04MS1cXHRuZXRmc19zdGF0KFxcdTAwMjZuZXRmc19uX3JoX3JlYWQpO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jPTIwMD1zdGF0aWMgdm9pZCBuZXRmc19jb2xsZWN0X3dyaXRlX3Jlc3VsdHMoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEpXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMjA3LVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzoyMDg6XFx0X2VudGVyKFxcXCIlbGx4LSVsbHhcXFwiLCB3cmVxLVxcdTAwM2VzdGFydCwgd3JlcS1cXHUwMDNlc3RhcnQgKyB3cmVxLVxcdTAwM2VsZW4pO1xcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0yMDktXFx0dHJhY2VfbmV0ZnNfY29sbGVjdCh3cmVxKTtcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0yMzktXFx0XFx0XFx0dHJhY2VfbmV0ZnNfY29sbGVjdF9zcmVxKHdyZXEsIGZyb250KTtcXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM6MjQwOlxcdFxcdFxcdC8vX2RlYnVnKFxcXCJzcmVxIFsleF0gJWxseCAlengvJXp4XFxcIixcXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMjQxLVxcdFxcdFxcdC8vICAgICAgIGZyb250LVxcdTAwM2VkZWJ1Z19pbmRleCwgZnJvbnQtXFx1MDAzZXN0YXJ0LCBmcm9udC1cXHUwMDNldHJhbnNmZXJyZWQsIGZyb250LVxcdTAwM2VsZW4pO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTM0NC1cXHR3cmVxLVxcdTAwM2Vucl9ncm91cF9yZWwgPSAwO1xcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzozNDU6XFx0X2xlYXZlKFxcXCIgPSAleFxcXCIsIG5vdGVzKTtcXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtMzQ2LVxcdHJldHVybjtcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNTItXFx0ICovXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjM1MzpcXHRfZGVidWcoXFxcInJldHJ5XFxcIik7XFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTM1NC1cXHRuZXRmc19yZXRyeV93cml0ZXMod3JlcSk7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmM9MzYxPWJvb2wgbmV0ZnNfd3JpdGVfY29sbGVjdGlvbihzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSlcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy0zNjctXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjM2ODpcXHRfZW50ZXIoXFxcIlI9JXhcXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTM2OS1cXG4tLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYy00MDYtXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jOjQwNzpcXHRfZGVidWcoXFxcImZpbmlzaGVkXFxcIik7XFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jLTQwOC1cXHRuZXRmc193YWtlX3JyZXFfZmxhZyh3cmVxLCBORVRGU19SUkVRX0lOX1BST0dSRVNTLCBuZXRmc19ycmVxX3RyYWNlX3dha2VfaXApO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfY29sbGVjdC5jPTQ2OT12b2lkIG5ldGZzX3dyaXRlX3N1YnJlcXVlc3RfdGVybWluYXRlZCh2b2lkICpfb3AsIHNzaXplX3QgdHJhbnNmZXJyZWRfb3JfZXJyb3IpXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtNDczLVxcbmZzL25ldGZzL3dyaXRlX2NvbGxlY3QuYzo0NzQ6XFx0X2VudGVyKFxcXCIleFsleF0gJXpkXFxcIiwgd3JlcS1cXHUwMDNlZGVidWdfaWQsIHN1YnJlcS1cXHUwMDNlZGVidWdfaW5kZXgsIHRyYW5zZmVycmVkX29yX2Vycm9yKTtcXG5mcy9uZXRmcy93cml0ZV9jb2xsZWN0LmMtNDc1LVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz05MD1zdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqbmV0ZnNfY3JlYXRlX3dyaXRlX3JlcShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMTA1LVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MTA2OlxcdF9lbnRlcihcXFwiUj0leFxcXCIsIHdyZXEtXFx1MDAzZWRlYnVnX2lkKTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTEwNy1cXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM9MTU3PXZvaWQgbmV0ZnNfcHJlcGFyZV93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMTc3LVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MTc4OlxcdF9lbnRlcihcXFwiUj0leFsleF1cXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCwgc3VicmVxLVxcdTAwM2VkZWJ1Z19pbmRleCk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0xNzktXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTIyNz1zdGF0aWMgdm9pZCBuZXRmc19kb19pc3N1ZV93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fc3RyZWFtICpzdHJlYW0sXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTIzMS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjIzMjpcXHRfZW50ZXIoXFxcIlI9JXhbJXhdLCV6eFxcXCIsIHdyZXEtXFx1MDAzZWRlYnVnX2lkLCBzdWJyZXEtXFx1MDAzZWRlYnVnX2luZGV4LCBzdWJyZXEtXFx1MDAzZWxlbik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yMzMtXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTI3OD1zaXplX3QgbmV0ZnNfYWR2YW5jZV93cml0ZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqd3JlcSxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMjg1LVxcdGlmICghc3RyZWFtLVxcdTAwM2VhdmFpbCkge1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6Mjg2OlxcdFxcdF9sZWF2ZShcXFwibm8gd3JpdGVcXFwiKTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTI4Ny1cXHRcXHRyZXR1cm4gbGVuO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yODktXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzoyOTA6XFx0X2VudGVyKFxcXCJSPSV4WyV4XVxcXCIsIHdyZXEtXFx1MDAzZWRlYnVnX2lkLCBzdWJyZXEgPyBzdWJyZXEtXFx1MDAzZWRlYnVnX2luZGV4IDogMCk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0yOTEtXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTMwMS1cXHRwYXJ0ID0gdW1pbihzdHJlYW0tXFx1MDAzZXNyZXFfbWF4X2xlbiAtIHN1YnJlcS1cXHUwMDNlbGVuLCBsZW4pO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MzAyOlxcdF9kZWJ1ZyhcXFwicGFydCAlengvJXp4ICV6eC8lenhcXFwiLCBzdWJyZXEtXFx1MDAzZWxlbiwgc3RyZWFtLVxcdTAwM2VzcmVxX21heF9sZW4sIHBhcnQsIGxlbik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zMDMtXFx0c3VicmVxLVxcdTAwM2VsZW4gKz0gcGFydDtcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM9MzIwPXN0YXRpYyBpbnQgbmV0ZnNfd3JpdGVfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTMzNC1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjMzNTpcXHRfZW50ZXIoXFxcIlxcXCIpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzM2LVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy0zNDctXFx0XFx0LyogbW1hcCBiZXlvbmQgZW9mLiAqL1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6MzQ4OlxcdFxcdF9kZWJ1ZyhcXFwiYmV5b25kIGVvZlxcXCIpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzQ5LVxcdFxcdGZvbGlvX3N0YXJ0X3dyaXRlYmFjayhmb2xpbyk7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTM4MS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjM4MjpcXHRfZGVidWcoXFxcImZvbGlvICV6eCAlenggJXp4XFxcIiwgZm9mZiwgZmxlbiwgZnNpemUpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtMzgzLVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01MTQtXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo1MTU6XFx0X2xlYXZlKFxcXCIgPSAwXFxcIik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01MTYtXFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTU0Nj1pbnQgbmV0ZnNfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNTcyLVxcdGRvIHtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjU3MzpcXHRcXHRfZGVidWcoXFxcIndiaXRlciAlbHggJWxseFxcXCIsIGZvbGlvLVxcdTAwM2VpbmRleCwgYXRvbWljNjRfcmVhZChcXHUwMDI2d3JlcS1cXHUwMDNlaXNzdWVkX3RvKSk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01NzQtXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTU5NC1cXHRuZXRmc19wdXRfcmVxdWVzdCh3cmVxLCBuZXRmc19ycmVxX3RyYWNlX3B1dF9yZXR1cm4pO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NTk1OlxcdF9sZWF2ZShcXFwiID0gJWRcXFwiLCBlcnJvcik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy01OTYtXFx0cmV0dXJuIGVycm9yO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02MDgtXFx0bmV0ZnNfd2JfZW5kKGljdHgpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NjA5OlxcdF9sZWF2ZShcXFwiID0gJWRcXFwiLCBlcnJvcik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02MTAtXFx0cmV0dXJuIGVycm9yO1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz02NDM9aW50IG5ldGZzX2FkdmFuY2Vfd3JpdGV0aHJvdWdoKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICp3cmVxLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNjQ4LVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6NjQ5OlxcdF9lbnRlcihcXFwiUj0leCBpYz0lenUgd3M9JXUgY3A9JXp1IHRwPSV1XFxcIixcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTY1MC1cXHQgICAgICAgd3JlcS1cXHUwMDNlZGVidWdfaWQsIHdyZXEtXFx1MDAzZWJ1ZmZlci5pdGVyLmNvdW50LCB3cmVxLVxcdTAwM2V3c2l6ZSwgY29waWVkLCB0b19wYWdlX2VuZCk7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTY4Nz1zc2l6ZV90IG5ldGZzX2VuZF93cml0ZXRocm91Z2goc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjLFxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy02OTEtXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo2OTI6XFx0X2VudGVyKFxcXCJSPSV4XFxcIiwgd3JlcS1cXHUwMDNlZGVidWdfaWQpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNjkzLVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYz03MTQ9c3RhdGljIGludCBuZXRmc193cml0ZV9mb2xpb19zaW5nbGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTcyNi1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjcyNzpcXHRfZW50ZXIoXFxcIlxcXCIpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNzI4LVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy03MzctXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo3Mzg6XFx0X2RlYnVnKFxcXCJmb2xpbyAlengvJXp4XFxcIiwgZmxlbiwgZnNpemUpO1xcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtNzM5LVxcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04MjQtXFx0XFx0a2RlYnVnKFxcXCJSPSV4OiBObyBzdWJtaXRcXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo4MjU6XFx0X2xlYXZlKFxcXCIgPSAwXFxcIik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04MjYtXFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jPTg0MT1pbnQgbmV0ZnNfd3JpdGViYWNrX3NpbmdsZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtODc3LVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmM6ODc4OlxcdFxcdFxcdF9kZWJ1ZyhcXFwid2JpdGVyICVseCAlbGx4XFxcIiwgZm9saW8tXFx1MDAzZWluZGV4LCBhdG9taWM2NF9yZWFkKFxcdTAwMjZ3cmVxLVxcdTAwM2Vpc3N1ZWRfdG8pKTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTg3OS1cXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtODk3LVxcdG5ldGZzX3B1dF9yZXF1ZXN0KHdyZXEsIG5ldGZzX3JyZXFfdHJhY2VfcHV0X3JldHVybik7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYzo4OTg6XFx0X2xlYXZlKFxcXCIgPSAlZFxcXCIsIHJldCk7XFxuZnMvbmV0ZnMvd3JpdGVfaXNzdWUuYy04OTktXFx0cmV0dXJuIHJldDtcXG4tLVxcbmZzL25ldGZzL3dyaXRlX2lzc3VlLmMtOTAyLVxcdG5ldGZzX3diX2VuZChpY3R4KTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jOjkwMzpcXHRfbGVhdmUoXFxcIiA9ICVkXFxcIiwgcmV0KTtcXG5mcy9uZXRmcy93cml0ZV9pc3N1ZS5jLTkwNC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZnMvbmV0ZnMvd3JpdGVfcmV0cnkuYz0xNz1zdGF0aWMgdm9pZCBuZXRmc19yZXRyeV93cml0ZV9zdHJlYW0oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKndyZXEsXFxuLS1cXG5mcy9uZXRmcy93cml0ZV9yZXRyeS5jLTIxLVxcbmZzL25ldGZzL3dyaXRlX3JldHJ5LmM6MjI6XFx0X2VudGVyKFxcXCJSPSV4WyV4Ol1cXFwiLCB3cmVxLVxcdTAwM2VkZWJ1Z19pZCwgc3RyZWFtLVxcdTAwM2VzdHJlYW1fbnIpO1xcbmZzL25ldGZzL3dyaXRlX3JldHJ5LmMtMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjMzLjk4ODg2OTY0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODg4MDE4NjI1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRXZhbHVhdGlvbjogRGVidWcgTG9nZ2luZyBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uc3VsdCBTZWN0aW9uIDIgb2YgdGhlIHRyaWFnZSBwaGlsb3NvcGh5IHJlZ2FyZGluZyB3aGVuIHRvIG1hcmsgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUga2V5IGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGlmIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLCBzcGVjaWZpY2FsbHkgXCJQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nLi4udGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cIlxuXG5Ob3csIGxldCdzIGFuYWx5emUgdGhlIHBhdGNoLiBMb29raW5nIGF0IGBmcy9uZXRmcy9pbnRlcm5hbC5oYCwgaXQncyBjbGVhciB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCB0aGUgZGVidWcgbG9nZ2luZyBtYWNyb3M6IGBfZW50ZXJgLCBgX2xlYXZlYCwgYW5kIGBfZGVidWdgLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgY2hlY2sgYWdhaW5zdCBhIGZpbmUtZ3JhaW5lZCBiaXRtYXNrIGBuZXRmc19kZWJ1Z2AgYmVmb3JlIGludm9raW5nIHRoZSB1bmRlcmx5aW5nIGBrZW50ZXJgLCBga2xlYXZlYCwgb3IgYGtkZWJ1Z2AgZnVuY3Rpb25zICh3aGljaCwgaW4gdHVybiwgdXNlIGBkYmdwcmludGtgKS5cblxuQWZ0ZXIgdmVyaWZ5aW5nIHRoYXQgdGhlIGRpZmYgaXMgcmVzdHJpY3RlZCB0byBgZnMvbmV0ZnMvaW50ZXJuYWwuaGAsIHRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIHB1cmVseSBmb3IgZGVidWcgb3V0cHV0OyBzcGVjaWZpY2FsbHksIHRoZXkgZW5hYmxlIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHdoYXQgZGVidWcgbWVzc2FnZXMgYXJlIGRpc3BsYXllZC4gVGhleSBkb24ndCBhZmZlY3Qga2VybmVsIGNvbnRyb2wgZmxvdywgZG9uJ3QgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFuZCBkb24ndCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IGFzc2VydGlvbnMgb3IgZXJyb3IgaGFuZGxpbmcuIEVzc2VudGlhbGx5LCB0aGVzZSB1cGRhdGVzIGp1c3QgY2hhbmdlICp3aGVuKiBkZWJ1ZyBtZXNzYWdlcyBhcmUgcHJpbnRlZCBiYXNlZCBvbiB0aGUgYml0bWFzayBpbiBgbmV0ZnNfZGVidWdgLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXRjaCBzdHJpY3RseSBmYWxscyB1bmRlciB0aGUgXCJQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nXCIgY2F0ZWdvcnkuIENvbnNlcXVlbnRseSwgdGhpcyBwYXRjaCBkb2Vzbid0IHdhcnJhbnQgZnV6emluZy5cblxuTXkgY29uY2x1c2lvbiBpczpcblxuLSAgIGBXb3J0aEZ1enppbmc6IGZhbHNlYFxuLSAgIGBGb2N1c1N5bWJvbHM6IFtdYFxuLSAgIGBFbmFibGVDb25maWdzOiBbXWBcbi0gICBgUmVhc29uaW5nOiBQdXJlbHkgZGVidWcgbG9nZ2luZyBtYWNybyB1cGRhdGVzIGluIG5ldGZzL2ZzY2FjaGUgdGhhdCBkbyBub3QgY2hhbmdlIGtlcm5lbCBsb2dpYywgZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIG9yIGFzc2VydGlvbnMuYFxuXG5UaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzMjIsIk91dHB1dFRva2VucyI6OTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDExOjI5OjQyLjg2OTA1NzgyMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZGVidWcgbG9nZ2luZyBtYWNyb3MgKF9lbnRlciwgX2xlYXZlLCBfZGVidWcpIGluIGZzL25ldGZzL2ludGVybmFsLmggdG8gc3VwcG9ydCBmaW5lLWdyYWluZWQgZGVidWcgbGV2ZWwgYml0bWFzayBmaWx0ZXJpbmcuIEl0IGNvbnN0aXR1dGVzIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgY2hhbmdlcyBhbmQgZG9lcyBub3QgYWx0ZXIgZXhlY3V0YWJsZSBjb250cm9sIGZsb3csIGRhdGEgc3RydWN0dXJlcywgc3RhdGUgbWFuYWdlbWVudCwgb3IgcnVudGltZSBhc3NlcnRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkZWJ1ZyBsb2dnaW5nIG1hY3JvcyAoX2VudGVyLCBfbGVhdmUsIF9kZWJ1ZykgaW4gZnMvbmV0ZnMvaW50ZXJuYWwuaCB0byBzdXBwb3J0IGZpbmUtZ3JhaW5lZCBkZWJ1ZyBsZXZlbCBiaXRtYXNrIGZpbHRlcmluZy4gSXQgY29uc3RpdHV0ZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2VzIGFuZCBkb2VzIG5vdCBhbHRlciBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdywgZGF0YSBzdHJ1Y3R1cmVzLCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBydW50aW1lIGFzc2VydGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMToyOTo0Mi44NjkwNzg4MjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowb6jgv[1] Phase: Running StartedAt: 2026-09-06 11:29:54 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6jgv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 11:29:54 +0000 UTC FinishedAt: 2026-09-06 11:29:58 +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,}