IwojIE1ha2VmaWxlIGZvciBGcmVlVHlwZTIgbGluayBsaWJyYXJ5IHVzaW5nIHBwYy1tb3JwaG9zLWdjYy0yLjk1LjMtYmluLnRnegojIChnY2MgMi45NS4zIGhvc3RlZCBvbiA2OGstQW1pZ2EgcHJvZHVjaW5nIE1vcnBoT1MtUFBDLWJpbmFyaWVzIGZyb20KIyBodHRwOi8vd3d3Lm1vcnBob3MuZGUpCiMKCgojIENvcHlyaWdodCAyMDA1LTIwMTUgYnkKIyBXZXJuZXIgTGVtYmVyZyBhbmQgRGV0bGVmIFf8cmtuZXIuCiMKIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAojIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQojIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CiMgZnVsbHkuCgoKIwojIHRvIGJ1aWxkIGZyb20gdGhlIGJ1aWxkcy9hbWlnYSBkaXJlY3RvcnkgY2FsbAojCiMgIG1ha2UgYXNzaWduCiMgIG1ha2UKIwojIFlvdXIgcHJvZ3JhbXMgc291cmNlIGNvZGUgc2hvdWxkIHN0YXJ0IHdpdGggdGhpcwojICh1bmNvbW1lbnQgdGhlIHBhcnRzIHlvdSBkbyBub3QgbmVlZCB0byBrZWVwIHRoZSBwcm9ncmFtIHNtYWxsKToKIyAtLS04PC0tLQojZGVmaW5lIEZUX1VTRV9BVVRPRklUIC8vIGF1dG9maXR0ZXIKI2RlZmluZSBGVF9VU0VfUkFTVEVSICAvLyBtb25vY2hyb21lIHJhc3Rlcml6ZXIKI2RlZmluZSBGVF9VU0VfU01PT1RIICAvLyBhbnRpLWFsaWFzaW5nIHJhc3Rlcml6ZXIKI2RlZmluZSBGVF9VU0VfVFQgICAgICAvLyB0cnVldHlwZSBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9UMSAgICAgIC8vIHR5cGUxIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1Q0MiAgICAgLy8gdHlwZTQyIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1QxQ0lEICAgLy8gY2lkLWtleWVkIHR5cGUxIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX0NGRiAgICAgLy8gb3BlbnR5cGUgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfQkRGICAgICAvLyBiZGYgYml0bWFwIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1BDRiAgICAgLy8gcGNmIGJpdG1hcCBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9QRlIgICAgIC8vIHBmciBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9XSU5GTlQgIC8vIHdpbmRvd3MgLmZudHwuZm9uIGJpdG1hcCBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9PVFYgICAgIC8vIG9wZW50eXBlIHZhbGlkYXRvcgojZGVmaW5lIEZUX1VTRV9HWFYgICAgIC8vIHRydWV0eXBlIGd4IHZhbGlkYXRvcgojaW5jbHVkZSAiRlQ6c3JjL2Jhc2UvZnRpbml0LmMiCiMgLS0tODwtLS0KIwojIGxpbmsgeW91ciBwcm9ncmFtcyB3aXRoIGxpYmZ0Ml9wcGMuYSBhbmQgZWl0aGVyIGZ0c3lzdGVtLnBwYy5vIG9yIGZ0c3lzdGVtcHVyZS5wcGMubwojIChhbmQgZWl0aGVyIGZ0ZGVidWcucHBjLm8gb3IgZnRkZWJ1Z3B1cmUucHBjLm8gaWYgeW91IGVuYWJsZWQgRlRfREVCVUdfTEVWRUxfRVJST1Igb3IKIyBGVF9ERUJVR19MRVZFTF9UUkFDRSBpbiBpbmNsdWRlL2NvbmZpZy9mdG9wdGlvbi5oKS4KCmFsbDoJbGliZnQyX3BwYy5hIGZ0c3lzdGVtLnBwYy5vIGZ0c3lzdGVtcHVyZS5wcGMubwoKYXNzaWduOgoJYXNzaWduIEZUOiAvLwoKRlRTUkMgPSAvRlQvc3JjCgpDQyA9ICAgICBwcGMtbW9ycGhvcy1nY2MKQVIgPSAgICAgcHBjLW1vcnBob3MtYXIgcmMKUkFOTElCID0gcHBjLW1vcnBob3MtcmFubGliCkxEID0gICAgIHBwYy1tb3JwaG9zLWxkCkNGTEFHUyA9IC1ERlQyX0JVSUxEX0xJQlJBUlkgLU8yIC1JL2VtdS9lbXVsaW5jbHVkZS9pbmNsdWRlZ2NjIC1JL2VtdS9pbmNsdWRlIC1JaW5jbHVkZSAtSSQoRlRTUkMpIC1JL0ZUL2luY2x1ZGUKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBiYXNlCiMKZnRiYXNlLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0YmFzZS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0aW5pdC5wcGMubzogJChGVFNSQykvYmFzZS9mdGluaXQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHN5c3RlbS5wcGMubzogJChGVFNSQykvYmFzZS9mdHN5c3RlbS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMgcHVyZSB2ZXJzaW9uIGZvciB1c2UgaW4gcnVuLXRpbWUgbGlicmFyeSBldGMKZnRzeXN0ZW1wdXJlLnBwYy5vOiBzcmMvYmFzZS9mdHN5c3RlbS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0ZGVidWcucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRkZWJ1Zy5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMgcHVyZSB2ZXJzaW9uIGZvciB1c2UgaW4gcnVuLXRpbWUgbGlicmFyeSBldGMKZnRkZWJ1Z3B1cmUucHBjLm86IHNyYy9iYXNlL2Z0ZGVidWcuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgYmFzZSBleHRlbnNpb25zCiMKZnRiYm94LnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0YmJveC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0YmRmLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0YmRmLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRiaXRtYXAucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRiaXRtYXAuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGNpZC5wcGMubzogJChGVFNSQykvYmFzZS9mdGNpZC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0Zm50Zm10LnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0Zm50Zm10LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRmc3R5cGUucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRmc3R5cGUuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGdhc3AucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRnYXNwLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRnbHlwaC5wcGMubzogJChGVFNSQykvYmFzZS9mdGdseXBoLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRneHZhbC5wcGMubzogJChGVFNSQykvYmFzZS9mdGd4dmFsLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRsY2RmaWwucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRsY2RmaWwuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdG1tLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0bW0uYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdG90dmFsLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0b3R2YWwuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHBhdGVudC5wcGMubzogJChGVFNSQykvYmFzZS9mdHBhdGVudC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0cGZyLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0cGZyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRzdHJva2UucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRzdHJva2UuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHN5bnRoLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0c3ludGguYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHR5cGUxLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0dHlwZTEuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHdpbmZudC5wcGMubzogJChGVFNSQykvYmFzZS9mdHdpbmZudC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBhdXRvZml0dGluZyBtb2R1bGUKIwphdXRvZml0LnBwYy5vOiAkKEZUU1JDKS9hdXRvZml0L2F1dG9maXQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgcG9zdHNjcmlwdCBoaW50aW5nIG1vZHVsZQojCnBzaGludGVyLnBwYy5vOiAkKEZUU1JDKS9wc2hpbnRlci9wc2hpbnRlci5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQUyBzdXBwb3J0IG1vZHVsZQojCnBzYXV4LnBwYy5vOiAkKEZUU1JDKS9wc2F1eC9wc2F1eC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQUyBnbHlwaCBuYW1lcyBtb2R1bGUKIwpwc25hbWVzLnBwYy5vOiAkKEZUU1JDKS9wc25hbWVzL3BzbmFtZXMuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgbW9ub2Nocm9tZSByYXN0ZXIgbW9kdWxlCiMKcmFzdGVyLnBwYy5vOiAkKEZUU1JDKS9yYXN0ZXIvcmFzdGVyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGFudGktYWxpYXNpbmcgcmFzdGVyIG1vZHVsZQojCnNtb290aC5wcGMubzogJChGVFNSQykvc21vb3RoL3Ntb290aC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSAnc2ZudCcgbW9kdWxlCiMKc2ZudC5wcGMubzogJChGVFNSQykvc2ZudC9zZm50LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGdseXBoIGFuZCBpbWFnZSBjYWNoaW5nIHN5c3RlbQojCmZ0Y2FjaGUucHBjLm86ICQoRlRTUkMpL2NhY2hlL2Z0Y2FjaGUuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgT3BlblR5cGUgZm9udCBkcml2ZXIKIwpjZmYucHBjLm86ICQoRlRTUkMpL2NmZi9jZmYuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHJ1ZVR5cGUgZm9udCBkcml2ZXIKIwp0cnVldHlwZS5wcGMubzogJChGVFNSQykvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTEgZm9udCBkcml2ZXIKIwp0eXBlMS5wcGMubzogJChGVFNSQykvdHlwZTEvdHlwZTEuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTQyIGZvbnQgZHJpdmVyCiMKdHlwZTQyLnBwYy5vOiAkKEZUU1JDKS90eXBlNDIvdHlwZTQyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IENJRC1rZXllZCBUeXBlMSBmb250IGRyaXZlcgojCnR5cGUxY2lkLnBwYy5vOiAkKEZUU1JDKS9jaWQvdHlwZTFjaWQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgQkRGIGJpdG1hcCBmb250IGRyaXZlcgojCmJkZi5wcGMubzogJChGVFNSQykvYmRmL2JkZi5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQQ0YgYml0bWFwIGZvbnQgZHJpdmVyCiMKcGNmLnBwYy5vOiAkKEZUU1JDKS9wY2YvcGNmLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGd6aXAgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzCiMKZ3ppcC5wcGMubzogJChGVFNSQykvZ3ppcC9mdGd6aXAuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojIEZyZWVUeXBlMiBsaWJyYXJ5IGJ6aXAyIHN1cHBvcnQgZm9yIGNvbXByZXNzZWQgUENGIGJpdG1hcCBmb250cwojCmJ6aXAyLnBwYy5vOiAkKEZUU1JDKS9iemlwMi9mdGJ6aXAyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGNvbXByZXNzIHN1cHBvcnQgZm9yIGNvbXByZXNzZWQgUENGIGJpdG1hcCBmb250cwojCmx6dy5wcGMubzogJChGVFNSQykvbHp3L2Z0bHp3LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFBGUiBmb250IGRyaXZlcgojCnBmci5wcGMubzogJChGVFNSQykvcGZyL3Bmci5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBXaW5kb3dzIEZOVC9GT04gYml0bWFwIGZvbnQgZHJpdmVyCiMKd2luZm50LnBwYy5vOiAkKEZUU1JDKS93aW5mb250cy93aW5mbnQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHJ1ZVR5cGVHWCBWYWxpZGF0b3IKIwpneHZhbGlkLnBwYy5vOiAkKEZUU1JDKS9neHZhbGlkL2d4dmFsaWQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgT3BlblR5cGUgdmFsaWRhdG9yCiMKb3R2YWxpZC5wcGMubzogJChGVFNSQykvb3R2YWxpZC9vdHZhbGlkLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKQkFTRVBQQyA9IGZ0YmFzZS5wcGMubyBmdGJib3gucHBjLm8gZnRiZGYucHBjLm8gZnRiaXRtYXAucHBjLm8gZnRjaWQucHBjLm8gXAoJICBmdGZudGZtdC5wcGMub2Z0ZnN0eXBlLnBwYy5vIGZ0Z2FzcC5wcGMubyBmdGdseXBoLnBwYy5vICAgICAgICAgIFwKCSAgZnRneHZhbC5wcGMubyBmdGxjZGZpbC5wcGMubyBmdG1tLnBwYy5vIGZ0b3R2YWwucHBjLm8gICAgICAgICAgICBcCgkgIGZ0cGF0ZW50LnBwYy5vIGZ0cGZyLnBwYy5vIGZ0c3Ryb2tlLnBwYy5vIGZ0c3ludGgucHBjLm8gICAgICAgICAgXAoJICBmdHR5cGUxLnBwYy5vIGZ0d2luZm50LnBwYy5vCgpERUJVR1BQQyA9IGZ0ZGVidWcucHBjLm8gZnRkZWJ1Z3B1cmUucHBjLm8KCkFGSVRQUEMgPSBhdXRvZml0LnBwYy5vCgpHWFZQUEMgPSBneHZhbGlkLnBwYy5vCgpPVFZQUEMgPSBvdHZhbGlkLnBwYy5vCgpQU1BQQyA9IHBzYXV4LnBwYy5vIHBzbmFtZXMucHBjLm8gcHNoaW50ZXIucHBjLm8KClJBU1RFUlBQQyA9IHJhc3Rlci5wcGMubyBzbW9vdGgucHBjLm8KCkZPTlREUFBDID0gY2ZmLnBwYy5vIHR5cGUxLnBwYy5vIHR5cGU0Mi5wcGMubyB0eXBlMWNpZC5wcGMubyB0cnVldHlwZS5wcGMub1wKCSAgIGJkZi5wcGMubyBwY2YucHBjLm8gcGZyLnBwYy5vIHdpbmZudC5wcGMubwoKbGliZnQyX3BwYy5hOiAgICAkKEJBU0VQUEMpICQoQUZJVFBQQykgJChHWFZQUEMpICQoT1RWUFBDKSAkKFBTUFBDKSAkKFJBU1RFUlBQQykgc2ZudC5wcGMubyBmdGNhY2hlLnBwYy5vICQoRk9OVERQUEMpIGd6aXAucHBjLm8gYnppcDIucHBjLm8gbHp3LnBwYy5vCgkkKEFSKSAkQCAkKEJBU0VQUEMpICQoQUZJVFBQQykgJChHWFZQUEMpICQoT1RWUFBDKSAkKFBTUFBDKSAkKFJBU1RFUlBQQykgc2ZudC5wcGMubyBmdGNhY2hlLnBwYy5vICQoRk9OVERQUEMpIGd6aXAucHBjLm8gYnppcDIucHBjLm8gbHp3LnBwYy5vCgktQCAoJChSQU5MSUIpICRAIHx8IHRydWUpID4vZGV2L251bGwgMj4mMQoKI0xvY2FsIFZhcmlhYmxlczoKI2NvZGluZzogbGF0aW4tMQojRW5kOgo=