fH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgp8TU9UT1JPTEEgTUlDUk9QUk9DRVNTT1IgJiBNRU1PUlkgVEVDSE5PTE9HWSBHUk9VUAp8TTY4MDAwIEhpLVBlcmZvcm1hbmNlIE1pY3JvcHJvY2Vzc29yIERpdmlzaW9uCnxNNjgwNjAgU29mdHdhcmUgUGFja2FnZQp8UHJvZHVjdGlvbiBSZWxlYXNlIFAxLjAwIC0tIE9jdG9iZXIgMTAsIDE5OTQKfAp8TTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IKkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgp8CnxUSEUgU09GVFdBUkUgaXMgcHJvdmlkZWQgb24gYW4gIkFTIElTIiBiYXNpcyBhbmQgd2l0aG91dCB3YXJyYW50eS4KfFRvIHRoZSBtYXhpbXVtIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsCnxNT1RPUk9MQSBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0hFVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsCnxJTkNMVURJTkcgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQp8YW5kIGFueSB3YXJyYW50eSBhZ2FpbnN0IGluZnJpbmdlbWVudCB3aXRoIHJlZ2FyZCB0byB0aGUgU09GVFdBUkUKfChJTkNMVURJTkcgQU5ZIE1PRElGSUVEIFZFUlNJT05TIFRIRVJFT0YpIGFuZCBhbnkgYWNjb21wYW55aW5nIHdyaXR0ZW4gbWF0ZXJpYWxzLgp8CnxUbyB0aGUgbWF4aW11bSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LAp8SU4gTk8gRVZFTlQgU0hBTEwgTU9UT1JPTEEgQkUgTElBQkxFIEZPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSCnwoSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgREFNQUdFUyBGT1IgTE9TUyBPRiBCVVNJTkVTUyBQUk9GSVRTLAp8QlVTSU5FU1MgSU5URVJSVVBUSU9OLCBMT1NTIE9GIEJVU0lORVNTIElORk9STUFUSU9OLCBPUiBPVEhFUiBQRUNVTklBUlkgTE9TUykKfEFSSVNJTkcgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBTT0ZUV0FSRS4KfE1vdG9yb2xhIGFzc3VtZXMgbm8gcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBtYWludGVuYW5jZSBhbmQgc3VwcG9ydCBvZiB0aGUgU09GVFdBUkUuCnwKfFlvdSBhcmUgaGVyZWJ5IGdyYW50ZWQgYSBjb3B5cmlnaHQgbGljZW5zZSB0byB1c2UsIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhlIFNPRlRXQVJFCnxzbyBsb25nIGFzIHRoaXMgZW50aXJlIG5vdGljZSBpcyByZXRhaW5lZCB3aXRob3V0IGFsdGVyYXRpb24gaW4gYW55IG1vZGlmaWVkIGFuZC9vcgp8cmVkaXN0cmlidXRlZCB2ZXJzaW9ucywgYW5kIHRoYXQgc3VjaCBtb2RpZmllZCB2ZXJzaW9ucyBhcmUgY2xlYXJseSBpZGVudGlmaWVkIGFzIHN1Y2guCnxObyBsaWNlbnNlcyBhcmUgZ3JhbnRlZCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlIHVuZGVyIGFueSBwYXRlbnRzCnxvciB0cmFkZW1hcmtzIG9mIE1vdG9yb2xhLCBJbmMuCnx+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KfCBvcy5zCnwKfCBUaGlzIGZpbGUgY29udGFpbnM6CnwJLSBleGFtcGxlICJDYWxsLU91dCJzIHJlcXVpcmVkIGJ5IGJvdGggdGhlIElTUCBhbmQgRlBTUC4KfAoKI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KCnwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwp8IEVYQU1QTEUgQ0FMTC1PVVRTCQkjCnwJCQkJIwp8IF8wNjBfZG1lbV93cml0ZSgpCQkjCnwgXzA2MF9kbWVtX3JlYWQoKQkJIwp8IF8wNjBfaW1lbV9yZWFkKCkJCSMKfCBfMDYwX2RtZW1fcmVhZF9ieXRlKCkJCSMKfCBfMDYwX2RtZW1fcmVhZF93b3JkKCkJCSMKfCBfMDYwX2RtZW1fcmVhZF9sb25nKCkJCSMKfCBfMDYwX2ltZW1fcmVhZF93b3JkKCkJCSMKfCBfMDYwX2ltZW1fcmVhZF9sb25nKCkJCSMKfCBfMDYwX2RtZW1fd3JpdGVfYnl0ZSgpCSMKfCBfMDYwX2RtZW1fd3JpdGVfd29yZCgpCSMKfCBfMDYwX2RtZW1fd3JpdGVfbG9uZygpCSMKfAkJCQkjCnwgXzA2MF9yZWFsX3RyYWNlKCkJCSMKfCBfMDYwX3JlYWxfYWNjZXNzKCkJCSMKfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgp8CnwgRWFjaCBJTyByb3V0aW5lIGNoZWNrcyB0byBzZWUgaWYgdGhlIG1lbW9yeSB3cml0ZS9yZWFkIGlzIHRvL2Zyb20gdXNlcgp8IG9yIHN1cGVydmlzb3IgYXBwbGljYXRpb24gc3BhY2UuIFRoZSBleGFtcGxlcyBiZWxvdyB1c2Ugc2ltcGxlICJtb3ZlIgp8IGluc3RydWN0aW9ucyBmb3Igc3VwZXJ2aXNvciBtb2RlIGFwcGxpY2F0aW9ucyBhbmQgY2FsbCBfY29weWluKCkvX2NvcHlvdXQoKQp8IGZvciB1c2VyIG1vZGUgYXBwbGljYXRpb25zLgp8IFdoZW4gaW5zdGFsbGluZyB0aGUgMDYwU1AsIHRoZSBfY29weWluKCkvX2NvcHlvdXQoKSBlcXVpdmFsZW50cyBmb3IgYQp8IGdpdmVuIG9wZXJhdGluZyBzeXN0ZW0gc2hvdWxkIGJlIHN1YnN0aXR1dGVkLgp8CnwgVGhlIGFkZHJlc3NlcyB3aXRoaW4gdGhlIDA2MFNQIGFyZSBndWFyYW50ZWVkIHRvIGJlIG9uIHRoZSBzdGFjay4KfCBUaGUgcmVzdWx0IGlzIHRoYXQgVW5peCBwcm9jZXNzZXMgYXJlIGFsbG93ZWQgdG8gc2xlZXAgYXMgYSBjb25zZXF1ZW5jZQp8IG9mIGEgcGFnZSBmYXVsdCBkdXJpbmcgYSBfY29weW91dC4KfAp8IExpbnV4LzY4azogVGhlIF8wNjBfW2lkXW1lbV97cmVhZCx3cml0ZX1fe2J5dGUsd29yZCxsb25nfSBmdW5jdGlvbnMKfCAoaS5lLiBhbGwgdGhlIGtub3duIGxlbmd0aCA8PSA0KSBhcmUgaW1wbGVtZW50ZWQgYnkgc2luZ2xlIG1vdmVzCnwgc3RhdGVtZW50cyBpbnN0ZWFkIG9mIChtb3JlIGV4cGVuc2l2ZSkgY29weXtpbixvdXR9IGNhbGxzLCBpZgp8IHdvcmtpbmcgaW4gdXNlciBzcGFjZQoKfAp8IF8wNjBfZG1lbV93cml0ZSgpOgp8CnwgV3JpdGVzIHRvIGRhdGEgbWVtb3J5IHdoaWxlIGluIHN1cGVydmlzb3IgbW9kZS4KfAp8IElOUFVUUzoKfAlhMCAtIHN1cGVydmlzb3Igc291cmNlIGFkZHJlc3MKfAlhMSAtIHVzZXIgZGVzdGluYXRpb24gYWRkcmVzcwp8CWQwIC0gbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlCnwJMHg0KCVhNiksYml0NSAtIDEgPSBzdXBlcnZpc29yIG1vZGUsIDAgPSB1c2VyIG1vZGUKfCBPVVRQVVRTOgp8CWQxIC0gMCA9IHN1Y2Nlc3MsICEwID0gZmFpbHVyZQp8CgkuZ2xvYmFsCQlfMDYwX2RtZW1fd3JpdGUKXzA2MF9kbWVtX3dyaXRlOgoJc3VicS5sCQkjMSwlZDAKCWJ0c3QJCSMweDUsMHg0KCVhNikJCXwgY2hlY2sgZm9yIHN1cGVydmlzb3Igc3RhdGUKCWJlcXMJCXVzZXJfd3JpdGUKc3VwZXJfd3JpdGU6Cgltb3ZlLmIJCSglYTApKywoJWExKSsJCXwgY29weSAxIGJ5dGUKCWRicmEJCSVkMCxzdXBlcl93cml0ZQkJfCBxdWl0IGlmIC0tY3RyIDwgMAoJY2xyLmwJCSVkMQkJCXwgcmV0dXJuIHN1Y2Nlc3MKCXJ0cwp1c2VyX3dyaXRlOgoJbW92ZS5iCQkoJWEwKSssJWQxCQl8IGNvcHkgMSBieXRlCmNvcHlvdXRhZToKCW1vdnMuYgkJJWQxLCglYTEpKwoJZGJyYQkJJWQwLHVzZXJfd3JpdGUJCXwgcXVpdCBpZiAtLWN0ciA8IDAKCWNsci5sCQklZDEJCQl8IHJldHVybiBzdWNjZXNzCglydHMKCnwKfCBfMDYwX2ltZW1fcmVhZCgpLCBfMDYwX2RtZW1fcmVhZCgpOgp8CnwgUmVhZHMgZnJvbSBkYXRhL2luc3RydWN0aW9uIG1lbW9yeSB3aGlsZSBpbiBzdXBlcnZpc29yIG1vZGUuCnwKfCBJTlBVVFM6CnwJYTAgLSB1c2VyIHNvdXJjZSBhZGRyZXNzCnwJYTEgLSBzdXBlcnZpc29yIGRlc3RpbmF0aW9uIGFkZHJlc3MKfAlkMCAtIG51bWJlciBvZiBieXRlcyB0byByZWFkCnwJMHg0KCVhNiksYml0NSAtIDEgPSBzdXBlcnZpc29yIG1vZGUsIDAgPSB1c2VyIG1vZGUKfCBPVVRQVVRTOgp8CWQxIC0gMCA9IHN1Y2Nlc3MsICEwID0gZmFpbHVyZQp8CgkuZ2xvYmFsCQlfMDYwX2ltZW1fcmVhZAoJLmdsb2JhbAkJXzA2MF9kbWVtX3JlYWQKXzA2MF9pbWVtX3JlYWQ6Cl8wNjBfZG1lbV9yZWFkOgoJc3VicS5sCQkjMSwlZDAKCWJ0c3QJCSMweDUsMHg0KCVhNikJCXwgY2hlY2sgZm9yIHN1cGVydmlzb3Igc3RhdGUKCWJlcXMJCXVzZXJfcmVhZApzdXBlcl9yZWFkOgoJbW92ZS5iCQkoJWEwKSssKCVhMSkrCQl8IGNvcHkgMSBieXRlCglkYnJhCQklZDAsc3VwZXJfcmVhZAkJfCBxdWl0IGlmIC0tY3RyIDwgMAoJY2xyLmwJCSVkMQkJCXwgcmV0dXJuIHN1Y2Nlc3MKCXJ0cwp1c2VyX3JlYWQ6CmNvcHlpbmFlOgoJbW92cy5iCQkoJWEwKSssJWQxCgltb3ZlLmIJCSVkMSwoJWExKSsJCXwgY29weSAxIGJ5dGUKCWRicmEJCSVkMCx1c2VyX3JlYWQJCXwgcXVpdCBpZiAtLWN0ciA8IDAKCWNsci5sCQklZDEJCQl8IHJldHVybiBzdWNjZXNzCglydHMKCnwKfCBfMDYwX2RtZW1fcmVhZF9ieXRlKCk6CnwKfCBSZWFkIGEgZGF0YSBieXRlIGZyb20gdXNlciBtZW1vcnkuCnwKfCBJTlBVVFM6CnwJYTAgLSB1c2VyIHNvdXJjZSBhZGRyZXNzCnwJMHg0KCVhNiksYml0NSAtIDEgPSBzdXBlcnZpc29yIG1vZGUsIDAgPSB1c2VyIG1vZGUKfCBPVVRQVVRTOgp8CWQwIC0gZGF0YSBieXRlIGluIGQwCnwJZDEgLSAwID0gc3VjY2VzcywgITAgPSBmYWlsdXJlCnwKCS5nbG9iYWwJCV8wNjBfZG1lbV9yZWFkX2J5dGUKXzA2MF9kbWVtX3JlYWRfYnl0ZToKCWNsci5sCQklZDAJCQl8IGNsZWFyIHdob2xlIGxvbmd3b3JkCgljbHIubAkJJWQxCQkJfCBhc3N1bWUgc3VjY2VzcwoJYnRzdAkJIzB4NSwweDQoJWE2KQkJfCBjaGVjayBmb3Igc3VwZXJ2aXNvciBzdGF0ZQoJYm5lcwkJZG1yYnMJCQl8IHN1cGVydmlzb3IKZG1yYnVhZTptb3ZzLmIJCSglYTApLCVkMAkJfCBmZXRjaCB1c2VyIGJ5dGUKCXJ0cwpkbXJiczoJbW92ZS5iCQkoJWEwKSwlZDAJCXwgZmV0Y2ggc3VwZXIgYnl0ZQoJcnRzCgp8CnwgXzA2MF9kbWVtX3JlYWRfd29yZCgpOgp8CnwgUmVhZCBhIGRhdGEgd29yZCBmcm9tIHVzZXIgbWVtb3J5Lgp8CnwgSU5QVVRTOgp8CWEwIC0gdXNlciBzb3VyY2UgYWRkcmVzcwp8CTB4NCglYTYpLGJpdDUgLSAxID0gc3VwZXJ2aXNvciBtb2RlLCAwID0gdXNlciBtb2RlCnwgT1VUUFVUUzoKfAlkMCAtIGRhdGEgd29yZCBpbiBkMAp8CWQxIC0gMCA9IHN1Y2Nlc3MsICEwID0gZmFpbHVyZQp8CnwgXzA2MF9pbWVtX3JlYWRfd29yZCgpOgp8CnwgUmVhZCBhbiBpbnN0cnVjdGlvbiB3b3JkIGZyb20gdXNlciBtZW1vcnkuCnwKfCBJTlBVVFM6CnwJYTAgLSB1c2VyIHNvdXJjZSBhZGRyZXNzCnwJMHg0KCVhNiksYml0NSAtIDEgPSBzdXBlcnZpc29yIG1vZGUsIDAgPSB1c2VyIG1vZGUKfCBPVVRQVVRTOgp8CWQwIC0gaW5zdHJ1Y3Rpb24gd29yZCBpbiBkMAp8CWQxIC0gMCA9IHN1Y2Nlc3MsICEwID0gZmFpbHVyZQp8CgkuZ2xvYmFsCQlfMDYwX2RtZW1fcmVhZF93b3JkCgkuZ2xvYmFsCQlfMDYwX2ltZW1fcmVhZF93b3JkCl8wNjBfZG1lbV9yZWFkX3dvcmQ6Cl8wNjBfaW1lbV9yZWFkX3dvcmQ6CgljbHIubAkJJWQxCQkJfCBhc3N1bWUgc3VjY2VzcwoJY2xyLmwJCSVkMAkJCXwgY2xlYXIgd2hvbGUgbG9uZ3dvcmQKCWJ0c3QJCSMweDUsMHg0KCVhNikJCXwgY2hlY2sgZm9yIHN1cGVydmlzb3Igc3RhdGUKCWJuZXMJCWRtcndzCQkJfCBzdXBlcnZpc29yCmRtcnd1YWU6bW92cy53CQkoJWEwKSwgJWQwCQl8IGZldGNoIHVzZXIgd29yZAoJcnRzCmRtcndzOgltb3ZlLncJCSglYTApLCAlZDAJCXwgZmV0Y2ggc3VwZXIgd29yZAoJcnRzCgp8CnwgXzA2MF9kbWVtX3JlYWRfbG9uZygpOgp8Cgp8CnwgSU5QVVRTOgp8CWEwIC0gdXNlciBzb3VyY2UgYWRkcmVzcwp8CTB4NCglYTYpLGJpdDUgLSAxID0gc3VwZXJ2aXNvciBtb2RlLCAwID0gdXNlciBtb2RlCnwgT1VUUFVUUzoKfAlkMCAtIGRhdGEgbG9uZ3dvcmQgaW4gZDAKfAlkMSAtIDAgPSBzdWNjZXNzLCAhMCA9IGZhaWx1cmUKfAp8IF8wNjBfaW1lbV9yZWFkX2xvbmcoKToKfAp8IFJlYWQgYW4gaW5zdHJ1Y3Rpb24gbG9uZ3dvcmQgZnJvbSB1c2VyIG1lbW9yeS4KfAp8IElOUFVUUzoKfAlhMCAtIHVzZXIgc291cmNlIGFkZHJlc3MKfAkweDQoJWE2KSxiaXQ1IC0gMSA9IHN1cGVydmlzb3IgbW9kZSwgMCA9IHVzZXIgbW9kZQp8IE9VVFBVVFM6CnwJZDAgLSBpbnN0cnVjdGlvbiBsb25nd29yZCBpbiBkMAp8CWQxIC0gMCA9IHN1Y2Nlc3MsICEwID0gZmFpbHVyZQp8CgkuZ2xvYmFsCQlfMDYwX2RtZW1fcmVhZF9sb25nCgkuZ2xvYmFsCQlfMDYwX2ltZW1fcmVhZF9sb25nCl8wNjBfZG1lbV9yZWFkX2xvbmc6Cl8wNjBfaW1lbV9yZWFkX2xvbmc6CgljbHIubAkJJWQxCQkJfCBhc3N1bWUgc3VjY2VzcwoJYnRzdAkJIzB4NSwweDQoJWE2KQkJfCBjaGVjayBmb3Igc3VwZXJ2aXNvciBzdGF0ZQoJYm5lcwkJZG1ybHMJCQl8IHN1cGVydmlzb3IKZG1ybHVhZTptb3ZzLmwJCSglYTApLCVkMAkJfCBmZXRjaCB1c2VyIGxvbmd3b3JkCglydHMKZG1ybHM6CW1vdmUubAkJKCVhMCksJWQwCQl8IGZldGNoIHN1cGVyIGxvbmd3b3JkCglydHMKCnwKfCBfMDYwX2RtZW1fd3JpdGVfYnl0ZSgpOgp8CnwgV3JpdGUgYSBkYXRhIGJ5dGUgdG8gdXNlciBtZW1vcnkuCnwKfCBJTlBVVFM6CnwJYTAgLSB1c2VyIGRlc3RpbmF0aW9uIGFkZHJlc3MKfAlkMCAtIGRhdGEgYnl0ZSBpbiBkMAp8CTB4NCglYTYpLGJpdDUgLSAxID0gc3VwZXJ2aXNvciBtb2RlLCAwID0gdXNlciBtb2RlCnwgT1VUUFVUUzoKfAlkMSAtIDAgPSBzdWNjZXNzLCAhMCA9IGZhaWx1cmUKfAoJLmdsb2JhbAkJXzA2MF9kbWVtX3dyaXRlX2J5dGUKXzA2MF9kbWVtX3dyaXRlX2J5dGU6CgljbHIubAkJJWQxCQkJfCBhc3N1bWUgc3VjY2VzcwoJYnRzdAkJIzB4NSwweDQoJWE2KQkJfCBjaGVjayBmb3Igc3VwZXJ2aXNvciBzdGF0ZQoJYm5lcwkJZG13YnMJCQl8IHN1cGVydmlzb3IKZG13YnVhZTptb3ZzLmIJCSVkMCwoJWEwKQkJfCBzdG9yZSB1c2VyIGJ5dGUKCXJ0cwpkbXdiczoJbW92ZS5iCQklZDAsKCVhMCkJCXwgc3RvcmUgc3VwZXIgYnl0ZQoJcnRzCgp8CnwgXzA2MF9kbWVtX3dyaXRlX3dvcmQoKToKfAp8IFdyaXRlIGEgZGF0YSB3b3JkIHRvIHVzZXIgbWVtb3J5Lgp8CnwgSU5QVVRTOgp8CWEwIC0gdXNlciBkZXN0aW5hdGlvbiBhZGRyZXNzCnwJZDAgLSBkYXRhIHdvcmQgaW4gZDAKfAkweDQoJWE2KSxiaXQ1IC0gMSA9IHN1cGVydmlzb3IgbW9kZSwgMCA9IHVzZXIgbW9kZQp8IE9VVFBVVFM6CnwJZDEgLSAwID0gc3VjY2VzcywgITAgPSBmYWlsdXJlCnwKCS5nbG9iYWwJCV8wNjBfZG1lbV93cml0ZV93b3JkCl8wNjBfZG1lbV93cml0ZV93b3JkOgoJY2xyLmwJCSVkMQkJCXwgYXNzdW1lIHN1Y2Nlc3MKCWJ0c3QJCSMweDUsMHg0KCVhNikJCXwgY2hlY2sgZm9yIHN1cGVydmlzb3Igc3RhdGUKCWJuZXMJCWRtd3dzCQkJfCBzdXBlcnZpc29yCmRtd3d1OgpkbXd3dWFlOm1vdnMudwkJJWQwLCglYTApCQl8IHN0b3JlIHVzZXIgd29yZAoJYnJhcwkJZG13d3IKZG13d3M6CW1vdmUudwkJJWQwLCglYTApCQl8IHN0b3JlIHN1cGVyIHdvcmQKZG13d3I6CWNsci5sCQklZDEJCQl8IHJldHVybiBzdWNjZXNzCglydHMKCnwKfCBfMDYwX2RtZW1fd3JpdGVfbG9uZygpOgp8CnwgV3JpdGUgYSBkYXRhIGxvbmd3b3JkIHRvIHVzZXIgbWVtb3J5Lgp8CnwgSU5QVVRTOgp8CWEwIC0gdXNlciBkZXN0aW5hdGlvbiBhZGRyZXNzCnwJZDAgLSBkYXRhIGxvbmd3b3JkIGluIGQwCnwJMHg0KCVhNiksYml0NSAtIDEgPSBzdXBlcnZpc29yIG1vZGUsIDAgPSB1c2VyIG1vZGUKfCBPVVRQVVRTOgp8CWQxIC0gMCA9IHN1Y2Nlc3MsICEwID0gZmFpbHVyZQp8CgkuZ2xvYmFsCQlfMDYwX2RtZW1fd3JpdGVfbG9uZwpfMDYwX2RtZW1fd3JpdGVfbG9uZzoKCWNsci5sCQklZDEJCQl8IGFzc3VtZSBzdWNjZXNzCglidHN0CQkjMHg1LDB4NCglYTYpCQl8IGNoZWNrIGZvciBzdXBlcnZpc29yIHN0YXRlCglibmVzCQlkbXdscwkJCXwgc3VwZXJ2aXNvcgpkbXdsdWFlOm1vdnMubAkJJWQwLCglYTApCQl8IHN0b3JlIHVzZXIgbG9uZ3dvcmQKCXJ0cwpkbXdsczoJbW92ZS5sCQklZDAsKCVhMCkJCXwgc3RvcmUgc3VwZXIgbG9uZ3dvcmQKCXJ0cwoKCiNpZiAwCnwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKfAp8IFVzZSB0aGVzZSByb3V0aW5lcyBpZiB5b3VyIGtlcm5lbCBkb2Vzbid0IGhhdmUgX2NvcHlvdXQvX2NvcHlpbiBlcXVpdmFsZW50cy4KfCBBc3N1bWVzIHRoYXQgRDAvRDEvQTAvQTEgYXJlIHNjcmF0Y2ggcmVnaXN0ZXJzLiBUaGUgX2NvcHlpbi9fY29weW91dAp8IGJlbG93IGFzc3VtZSB0aGF0IHRoZSBTRkMvREZDIGhhdmUgYmVlbiBzZXQgcHJldmlvdXNseS4KfAp8IExpbnV4LzY4azogVGhlc2UgYXJlIGJhc2ljYWxseSBub24taW5saW5lZCB2ZXJzaW9ucyBvZgp8IG1lbWNweV97dG8sZnJvbX1mcywgYnV0IHdpdGhvdXQgbG9uZy10cmFuc2ZlciBvcHRpbWl6YXRpb24KfCBOb3RlOiBBc3N1bWVkIHRoYXQgU0ZDL0RGQyBhcmUgcG9pbnRpbmcgY29ycmVjdGx5IHRvIHVzZXIgZGF0YQp8IHNwYWNlLi4uIFNob3VsZCBiZSByaWdodCwgb3IgYXJlIHRoZXJlIGFueSBleGNlcHRpb25zPwoKfAp8IGludCBfY29weW91dChzdXBlcnZpc29yX2FkZHIsIHVzZXJfYWRkciwgbmJ5dGVzKQp8CgkuZ2xvYmFsCQlfY29weW91dApfY29weW91dDoKCW1vdmUubAkJNCglc3ApLCVhMAkJfCBzb3VyY2UKCW1vdmUubAkJOCglc3ApLCVhMQkJfCBkZXN0aW5hdGlvbgoJbW92ZS5sCQkxMiglc3ApLCVkMAkJfCBjb3VudAoJc3VicS5sCQkjMSwlZDAKbW9yZW91dDoKCW1vdmUuYgkJKCVhMCkrLCVkMQkJfCBmZXRjaCBzdXBlcnZpc29yIGJ5dGUKY29weW91dGFlOgoJbW92cy5iCQklZDEsKCVhMSkrCQl8IHN0b3JlIHVzZXIgYnl0ZQoJZGJyYQkJJWQwLG1vcmVvdXQJCXwgYXJlIHdlIHRocm91Z2ggeWV0PwoJbW92ZXEJCSMwLCVkMAkJCXwgcmV0dXJuIHN1Y2Nlc3MKCXJ0cwoKfAp8IGludCBfY29weWluKHVzZXJfYWRkciwgc3VwZXJ2aXNvcl9hZGRyLCBuYnl0ZXMpCnwKCS5nbG9iYWwJCV9jb3B5aW4KX2NvcHlpbjoKCW1vdmUubAkJNCglc3ApLCVhMAkJfCBzb3VyY2UKCW1vdmUubAkJOCglc3ApLCVhMQkJfCBkZXN0aW5hdGlvbgoJbW92ZS5sCQkxMiglc3ApLCVkMAkJfCBjb3VudAogICAgc3VicS5sICAgICAgIzEsJWQwCm1vcmVpbjoKY29weWluYWU6Cgltb3ZzLmIJCSglYTApKywlZDEJCXwgZmV0Y2ggdXNlciBieXRlCgltb3ZlLmIJCSVkMSwoJWExKSsJCXwgd3JpdGUgc3VwZXJ2aXNvciBieXRlCglkYnJhCQklZDAsbW9yZWluCQl8IGFyZSB3ZSB0aHJvdWdoIHlldD8KCW1vdmVxCQkjMCwlZDAJCQl8IHJldHVybiBzdWNjZXNzCglydHMKI2VuZGlmCgp8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgp8CnwgXzA2MF9yZWFsX3RyYWNlKCk6CnwKfCBUaGlzIGlzIHRoZSBleGl0IHBvaW50IGZvciB0aGUgMDYwRlBTUCB3aGVuIGFuIGluc3RydWN0aW9uIGlzIGJlaW5nIHRyYWNlZAp8IGFuZCB0aGVyZSBhcmUgbm8gb3RoZXIgaGlnaGVyIHByaW9yaXR5IGV4Y2VwdGlvbnMgcGVuZGluZyBmb3IgdGhpcyBpbnN0cnVjdGlvbgp8IG9yIHRoZXkgaGF2ZSBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkLgp8CnwgVGhlIHNhbXBsZSBjb2RlIGJlbG93IHNpbXBseSBleGVjdXRlcyBhbiAicnRlIi4KfAoJLmdsb2JhbAkJXzA2MF9yZWFsX3RyYWNlCl8wNjBfcmVhbF90cmFjZToKCWJyYWwJdHJhcAoKfAp8IF8wNjBfcmVhbF9hY2Nlc3MoKToKfAp8IFRoaXMgaXMgdGhlIGV4aXQgcG9pbnQgZm9yIHRoZSAwNjBGUFNQIHdoZW4gYW4gYWNjZXNzIGVycm9yIGV4Y2VwdGlvbgp8IGlzIGVuY291bnRlcmVkLiBUaGUgcm91dGluZSBiZWxvdyBzaG91bGQgcG9pbnQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0KfCBoYW5kbGVyIGZvciBhY2Nlc3MgZXJyb3IgZXhjZXB0aW9ucy4gVGhlIGV4Y2VwdGlvbiBzdGFjayBmcmFtZSBpcyBhbgp8IDgtd29yZCBhY2Nlc3MgZXJyb3IgZnJhbWUuCnwKfCBUaGUgc2FtcGxlIHJvdXRpbmUgYmVsb3cgc2ltcGx5IGV4ZWN1dGVzIGFuICJydGUiIGluc3RydWN0aW9uIHdoaWNoCnwgaXMgbW9zdCBsaWtlbHkgdGhlIGluY29ycmVjdCB0aGluZyB0byBkbyBhbmQgY291bGQgcHV0IHRoZSBzeXN0ZW0KfCBpbnRvIGFuIGluZmluaXRlIGxvb3AuCnwKCS5nbG9iYWwJCV8wNjBfcmVhbF9hY2Nlc3MKXzA2MF9yZWFsX2FjY2VzczoKCWJyYWwJYnVzZXJyCgoKCnwgRXhlY3B0aW9uIGhhbmRsaW5nIGZvciBtb3ZzIGFjY2VzcyB0byBpbGxlZ2FsIG1lbW9yeQoJLnNlY3Rpb24gLmZpeHVwLCNhbGxvYywjZXhlY2luc3RyCgkuZXZlbgoxOgltb3ZlcQkJIy0xLCVkMQoJcnRzCi5zZWN0aW9uIF9fZXhfdGFibGUsI2FsbG9jCgkuYWxpZ24gNAoJLmxvbmcJZG1yYnVhZSwxYgoJLmxvbmcJZG1yd3VhZSwxYgoJLmxvbmcJZG1ybHVhZSwxYgoJLmxvbmcJZG13YnVhZSwxYgoJLmxvbmcJZG13d3VhZSwxYgoJLmxvbmcJZG13bHVhZSwxYgoJLmxvbmcJY29weW91dGFlLDFiCgkubG9uZwljb3B5aW5hZSwxYgoJLnRleHQK