IwojIE1ha2VmaWxlIGZvciBGcmVlVHlwZTIgbGluayBsaWJyYXJ5IHVzaW5nIHBwYy1tb3JwaG9zLWdjYy0yLjk1LjMtYmluLnRnegojIChnY2MgMi45NS4zIGhvc3RlZCBvbiA2OGstQW1pZ2EgcHJvZHVjaW5nIE1vcnBoT1MtUFBDLWJpbmFyaWVzIGZyb20KIyBodHRwOi8vd3d3Lm1vcnBob3MuZGUpCiMKCgojIENvcHlyaWdodCAyMDA1LTIwMTggYnkKIyBXZXJuZXIgTGVtYmVyZyBhbmQgRGV0bGVmIFf8cmtuZXIuCiMKIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAojIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQojIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CiMgZnVsbHkuCgoKIwojIHRvIGJ1aWxkIGZyb20gdGhlIGJ1aWxkcy9hbWlnYSBkaXJlY3RvcnkgY2FsbAojCiMgIG1ha2UgYXNzaWduCiMgIG1ha2UKIwojIFlvdXIgcHJvZ3JhbXMgc291cmNlIGNvZGUgc2hvdWxkIHN0YXJ0IHdpdGggdGhpcwojICh1bmNvbW1lbnQgdGhlIHBhcnRzIHlvdSBkbyBub3QgbmVlZCB0byBrZWVwIHRoZSBwcm9ncmFtIHNtYWxsKToKIyAtLS04PC0tLQojZGVmaW5lIEZUX1VTRV9BVVRPRklUIC8vIGF1dG9maXR0ZXIKI2RlZmluZSBGVF9VU0VfUkFTVEVSICAvLyBtb25vY2hyb21lIHJhc3Rlcml6ZXIKI2RlZmluZSBGVF9VU0VfU01PT1RIICAvLyBhbnRpLWFsaWFzaW5nIHJhc3Rlcml6ZXIKI2RlZmluZSBGVF9VU0VfVFQgICAgICAvLyB0cnVldHlwZSBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9UMSAgICAgIC8vIHR5cGUxIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1Q0MiAgICAgLy8gdHlwZTQyIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1QxQ0lEICAgLy8gY2lkLWtleWVkIHR5cGUxIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX0NGRiAgICAgLy8gb3BlbnR5cGUgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfQkRGICAgICAvLyBiZGYgYml0bWFwIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1BDRiAgICAgLy8gcGNmIGJpdG1hcCBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9QRlIgICAgIC8vIHBmciBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9XSU5GTlQgIC8vIHdpbmRvd3MgLmZudHwuZm9uIGJpdG1hcCBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9PVFYgICAgIC8vIG9wZW50eXBlIHZhbGlkYXRvcgojZGVmaW5lIEZUX1VTRV9HWFYgICAgIC8vIHRydWV0eXBlIGd4IHZhbGlkYXRvcgojaW5jbHVkZSAiRlQ6c3JjL2Jhc2UvZnRpbml0LmMiCiMgLS0tODwtLS0KIwojIGxpbmsgeW91ciBwcm9ncmFtcyB3aXRoIGxpYmZ0Ml9wcGMuYSBhbmQgZWl0aGVyIGZ0c3lzdGVtLnBwYy5vIG9yIGZ0c3lzdGVtcHVyZS5wcGMubwojIChhbmQgZWl0aGVyIGZ0ZGVidWcucHBjLm8gb3IgZnRkZWJ1Z3B1cmUucHBjLm8gaWYgeW91IGVuYWJsZWQgRlRfREVCVUdfTEVWRUxfRVJST1Igb3IKIyBGVF9ERUJVR19MRVZFTF9UUkFDRSBpbiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oKS4KCmFsbDoJbGliZnQyX3BwYy5hIGZ0c3lzdGVtLnBwYy5vIGZ0c3lzdGVtcHVyZS5wcGMubwoKYXNzaWduOgoJYXNzaWduIEZUOiAvLwoKRlRTUkMgPSAvRlQvc3JjCgpDQyA9ICAgICBwcGMtbW9ycGhvcy1nY2MKQVIgPSAgICAgcHBjLW1vcnBob3MtYXIgcmMKUkFOTElCID0gcHBjLW1vcnBob3MtcmFubGliCkxEID0gICAgIHBwYy1tb3JwaG9zLWxkCkNGTEFHUyA9IC1ERlQyX0JVSUxEX0xJQlJBUlkgLU8yIC1JL2VtdS9lbXVsaW5jbHVkZS9pbmNsdWRlZ2NjIC1JL2VtdS9pbmNsdWRlIC1JaW5jbHVkZSAtSSQoRlRTUkMpIC1JL0ZUL2luY2x1ZGUKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBiYXNlCiMKZnRiYXNlLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0YmFzZS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0aW5pdC5wcGMubzogJChGVFNSQykvYmFzZS9mdGluaXQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHN5c3RlbS5wcGMubzogJChGVFNSQykvYmFzZS9mdHN5c3RlbS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMgcHVyZSB2ZXJzaW9uIGZvciB1c2UgaW4gcnVuLXRpbWUgbGlicmFyeSBldGMKZnRzeXN0ZW1wdXJlLnBwYy5vOiBzcmMvYmFzZS9mdHN5c3RlbS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0ZGVidWcucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRkZWJ1Zy5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMgcHVyZSB2ZXJzaW9uIGZvciB1c2UgaW4gcnVuLXRpbWUgbGlicmFyeSBldGMKZnRkZWJ1Z3B1cmUucHBjLm86IHNyYy9iYXNlL2Z0ZGVidWcuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgYmFzZSBleHRlbnNpb25zCiMKZnRiYm94LnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0YmJveC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0YmRmLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0YmRmLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRiaXRtYXAucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRiaXRtYXAuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGNpZC5wcGMubzogJChGVFNSQykvYmFzZS9mdGNpZC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0ZnN0eXBlLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0ZnN0eXBlLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRnYXNwLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0Z2FzcC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0Z2x5cGgucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRnbHlwaC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0Z3h2YWwucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRneHZhbC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0bW0ucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRtbS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0b3R2YWwucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRvdHZhbC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0cGF0ZW50LnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0cGF0ZW50LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRwZnIucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRwZnIuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHN0cm9rZS5wcGMubzogJChGVFNSQykvYmFzZS9mdHN0cm9rZS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0c3ludGgucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRzeW50aC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0dHlwZTEucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnR0eXBlMS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0d2luZm50LnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0d2luZm50LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGF1dG9maXR0aW5nIG1vZHVsZQojCmF1dG9maXQucHBjLm86ICQoRlRTUkMpL2F1dG9maXQvYXV0b2ZpdC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBwb3N0c2NyaXB0IGhpbnRpbmcgbW9kdWxlCiMKcHNoaW50ZXIucHBjLm86ICQoRlRTUkMpL3BzaGludGVyL3BzaGludGVyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFBTIHN1cHBvcnQgbW9kdWxlCiMKcHNhdXgucHBjLm86ICQoRlRTUkMpL3BzYXV4L3BzYXV4LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFBTIGdseXBoIG5hbWVzIG1vZHVsZQojCnBzbmFtZXMucHBjLm86ICQoRlRTUkMpL3BzbmFtZXMvcHNuYW1lcy5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBtb25vY2hyb21lIHJhc3RlciBtb2R1bGUKIwpyYXN0ZXIucHBjLm86ICQoRlRTUkMpL3Jhc3Rlci9yYXN0ZXIuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgYW50aS1hbGlhc2luZyByYXN0ZXIgbW9kdWxlCiMKc21vb3RoLnBwYy5vOiAkKEZUU1JDKS9zbW9vdGgvc21vb3RoLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5ICdzZm50JyBtb2R1bGUKIwpzZm50LnBwYy5vOiAkKEZUU1JDKS9zZm50L3NmbnQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgZ2x5cGggYW5kIGltYWdlIGNhY2hpbmcgc3lzdGVtCiMKZnRjYWNoZS5wcGMubzogJChGVFNSQykvY2FjaGUvZnRjYWNoZS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBPcGVuVHlwZSBmb250IGRyaXZlcgojCmNmZi5wcGMubzogJChGVFNSQykvY2ZmL2NmZi5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBUcnVlVHlwZSBmb250IGRyaXZlcgojCnRydWV0eXBlLnBwYy5vOiAkKEZUU1JDKS90cnVldHlwZS90cnVldHlwZS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBUeXBlMSBmb250IGRyaXZlcgojCnR5cGUxLnBwYy5vOiAkKEZUU1JDKS90eXBlMS90eXBlMS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBUeXBlNDIgZm9udCBkcml2ZXIKIwp0eXBlNDIucHBjLm86ICQoRlRTUkMpL3R5cGU0Mi90eXBlNDIuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgQ0lELWtleWVkIFR5cGUxIGZvbnQgZHJpdmVyCiMKdHlwZTFjaWQucHBjLm86ICQoRlRTUkMpL2NpZC90eXBlMWNpZC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBCREYgYml0bWFwIGZvbnQgZHJpdmVyCiMKYmRmLnBwYy5vOiAkKEZUU1JDKS9iZGYvYmRmLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFBDRiBiaXRtYXAgZm9udCBkcml2ZXIKIwpwY2YucHBjLm86ICQoRlRTUkMpL3BjZi9wY2YuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgZ3ppcCBzdXBwb3J0IGZvciBjb21wcmVzc2VkIFBDRiBiaXRtYXAgZm9udHMKIwpnemlwLnBwYy5vOiAkKEZUU1JDKS9nemlwL2Z0Z3ppcC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMgRnJlZVR5cGUyIGxpYnJhcnkgYnppcDIgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzCiMKYnppcDIucHBjLm86ICQoRlRTUkMpL2J6aXAyL2Z0YnppcDIuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgY29tcHJlc3Mgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzCiMKbHp3LnBwYy5vOiAkKEZUU1JDKS9sencvZnRsencuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgUEZSIGZvbnQgZHJpdmVyCiMKcGZyLnBwYy5vOiAkKEZUU1JDKS9wZnIvcGZyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFdpbmRvd3MgRk5UL0ZPTiBiaXRtYXAgZm9udCBkcml2ZXIKIwp3aW5mbnQucHBjLm86ICQoRlRTUkMpL3dpbmZvbnRzL3dpbmZudC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBUcnVlVHlwZUdYIFZhbGlkYXRvcgojCmd4dmFsaWQucHBjLm86ICQoRlRTUkMpL2d4dmFsaWQvZ3h2YWxpZC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBPcGVuVHlwZSB2YWxpZGF0b3IKIwpvdHZhbGlkLnBwYy5vOiAkKEZUU1JDKS9vdHZhbGlkL290dmFsaWQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpCQVNFUFBDID0gZnRiYXNlLnBwYy5vIGZ0YmJveC5wcGMubyBmdGJkZi5wcGMubyBmdGJpdG1hcC5wcGMubyBmdGNpZC5wcGMubyBcCgkgIG9mdGZzdHlwZS5wcGMubyBmdGdhc3AucHBjLm8gZnRnbHlwaC5wcGMubyAgICAgICAgICAgICAgICAgICAgICAgXAoJICBmdGd4dmFsLnBwYy5vIGZ0bW0ucHBjLm8gZnRvdHZhbC5wcGMubyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKCSAgZnRwYXRlbnQucHBjLm8gZnRwZnIucHBjLm8gZnRzdHJva2UucHBjLm8gZnRzeW50aC5wcGMubyAgICAgICAgICBcCgkgIGZ0dHlwZTEucHBjLm8gZnR3aW5mbnQucHBjLm8KCkRFQlVHUFBDID0gZnRkZWJ1Zy5wcGMubyBmdGRlYnVncHVyZS5wcGMubwoKQUZJVFBQQyA9IGF1dG9maXQucHBjLm8KCkdYVlBQQyA9IGd4dmFsaWQucHBjLm8KCk9UVlBQQyA9IG90dmFsaWQucHBjLm8KClBTUFBDID0gcHNhdXgucHBjLm8gcHNuYW1lcy5wcGMubyBwc2hpbnRlci5wcGMubwoKUkFTVEVSUFBDID0gcmFzdGVyLnBwYy5vIHNtb290aC5wcGMubwoKRk9OVERQUEMgPSBjZmYucHBjLm8gdHlwZTEucHBjLm8gdHlwZTQyLnBwYy5vIHR5cGUxY2lkLnBwYy5vIHRydWV0eXBlLnBwYy5vXAoJICAgYmRmLnBwYy5vIHBjZi5wcGMubyBwZnIucHBjLm8gd2luZm50LnBwYy5vCgpsaWJmdDJfcHBjLmE6ICAgICQoQkFTRVBQQykgJChBRklUUFBDKSAkKEdYVlBQQykgJChPVFZQUEMpICQoUFNQUEMpICQoUkFTVEVSUFBDKSBzZm50LnBwYy5vIGZ0Y2FjaGUucHBjLm8gJChGT05URFBQQykgZ3ppcC5wcGMubyBiemlwMi5wcGMubyBsencucHBjLm8KCSQoQVIpICRAICQoQkFTRVBQQykgJChBRklUUFBDKSAkKEdYVlBQQykgJChPVFZQUEMpICQoUFNQUEMpICQoUkFTVEVSUFBDKSBzZm50LnBwYy5vIGZ0Y2FjaGUucHBjLm8gJChGT05URFBQQykgZ3ppcC5wcGMubyBiemlwMi5wcGMubyBsencucHBjLm8KCS1AICgkKFJBTkxJQikgJEAgfHwgdHJ1ZSkgPi9kZXYvbnVsbCAyPiYxCgojTG9jYWwgVmFyaWFibGVzOgojY29kaW5nOiBsYXRpbi0xCiNFbmQ6Cg==