IyAKIyAgJElkJAojIAojICBDb3B5cmlnaHQgqSAyMDAzIEtlaXRoIFBhY2thcmQKIyAKIyAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCiMgIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0CiMgIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdAojICBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nCiMgIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIEtlaXRoIFBhY2thcmQgbm90IGJlIHVzZWQgaW4KIyAgYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0CiMgIHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBLZWl0aCBQYWNrYXJkIG1ha2VzIG5vCiMgIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdAojICBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgojIAojICBLRUlUSCBQQUNLQVJEIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAojICBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MsIElOIE5PCiMgIEVWRU5UIFNIQUxMIEtFSVRIIFBBQ0tBUkQgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsCiMgIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIKIyAgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgojICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgoKU1VCRElSUz1mb250Y29uZmlnIGZjLWxhbmcgZmMtZ2x5cGhuYW1lIHNyYyBmYy1jYWNoZSBmYy1saXN0IGZjLW1hdGNoIGRvYyB0ZXN0CgpFWFRSQV9ESVNUID0gXAogICAgICAgIGZvbnRjb25maWcucGMuaW4gXAogICAgICAgIGZvbnRzLmNvbmYuaW4gXAoJZm9udHMuZHRkIFwKCWxvY2FsLmNvbmYgXAogICAgICAgIGZvbnRjb25maWcuc3BlYy5pbiBcCiAgICAgICAgZm9udGNvbmZpZy5zcGVjIFwKCWZvbnRjb25maWctemlwLmluCgpwa2djb25maWdkaXI9JChsaWJkaXIpL3BrZ2NvbmZpZwpwa2djb25maWdfREFUQSA9IGZvbnRjb25maWcucGMKCmNvbmZpZ2Rpcj0kKENPTkZESVIpCmNvbmZpZ19EQVRBPWZvbnRzLmNvbmYgZm9udHMuZHRkCgppbnN0YWxsLWRhdGEtbG9jYWw6CglpZiBbIC1mICQoREVTVERJUikkKGNvbmZpZ2RpcikvbG9jYWwuY29uZiBdOyB0aGVuIFwKCSAgZWNobyAibm90IG92ZXJ3cml0aW5nIGV4aXN0aW5nICQoREVTVERJUikkKGNvbmZpZ2RpcikvbG9jYWwuY29uZiI7IFwKCWVsc2UgaWYgWyAtZiAkKHNyY2RpcikvbG9jYWwuY29uZiBdOyB0aGVuIFwKCSAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvbG9jYWwuY29uZiAkKERFU1RESVIpJChjb25maWdkaXIpL2xvY2FsLmNvbmYiOyBcCgkgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvbG9jYWwuY29uZiAkKERFU1RESVIpJChjb25maWdkaXIpL2xvY2FsLmNvbmY7IFwKCWVsc2UgaWYgWyAtZiBsb2NhbC5jb25mIF07IHRoZW4gXAoJICBlY2hvICIgJChJTlNUQUxMX0RBVEEpIGxvY2FsLmNvbmYgJChERVNURElSKSQoY29uZmlnZGlyKS9sb2NhbC5jb25mIjsgXAoJICAkKElOU1RBTExfREFUQSkgbG9jYWwuY29uZiAkKERFU1RESVIpJChjb25maWdkaXIpL2xvY2FsLmNvbmY7IFwKCWZpOyBmaTsgZmkKCWlmIFsgeCQoREVTVERJUikgPSB4IF07IHRoZW4gZmMtY2FjaGUvZmMtY2FjaGUgLWYgLXY7IGZpCg==