LyoKICogWENPUFkgLSBXaW5lLWNvbXBhdGlibGUgeGNvcHkgcHJvZ3JhbQogKiBHZXJtYW4gbGFuZ3VhZ2Ugc3VwcG9ydAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDcgSi4gRWRtZWFkZXMKICogQ29weXJpZ2h0IChDKSAyMDA4IE0uIEthcmNoZXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInhjb3B5LmgiCgpMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19ORVVUUkFMCgpTVFJJTkdUQUJMRQp7CiAgICBTVFJJTkdfSU5WUEFSTVMsICJGYWxzY2hlIFBhcmFtZXRlcmFuemFobCAtICB4Y29weSAvPyB6ZWlndCBIaWxmZSBhblxuIgogICAgU1RSSU5HX0lOVlBBUk0sICAiVW5iZWthbm50ZXIgUGFyYW1ldGVyICclcycgLSB4Y29weSAvPyB6ZWlndCBIaWxmZSBhblxuIgogICAgU1RSSU5HX1BBVVNFLCAgICAiRWluZ2FiZXRhc3RlIGJldOR0aWdlbiwgdW0gbWl0IGRlbSBLb3BpZXJlbiB6dSBiZWdpbm5lblxuIgogICAgU1RSSU5HX1NJTUNPUFksICAiJWQgRGF0ZWkoZW4pIHf8cmRlbiBrb3BpZXJ0XG4iCiAgICBTVFJJTkdfQ09QWSwgICAgICIlZCBEYXRlaShlbikga29waWVydFxuIgogICAgU1RSSU5HX1FJU0RJUiwgICAiSXN0ICclcycgZWluZSBEYXRlaSBvZGVyIGVpbiBWZXJ6ZWljaG5pc1xuIiBcCiAgICAgICAgICAgICAgICAgICAgICJhbSBaaWVsc29ydD9cbiIgXAogICAgICAgICAgICAgICAgICAgICAiKEQgLSBEYXRlaSwgViAtIFZlcnplaWNobmlzKVxuIgogICAgU1RSSU5HX1NSQ1BST01QVCwiJXM/IChKYXxOZWluKVxuIgogICAgU1RSSU5HX09WRVJXUklURSwiJXMg/GJlcnNjaHJlaWJlbj8gKEphfE5laW58QWxsZSlcbiIKICAgIFNUUklOR19DT1BZRkFJTCwgIktvcGllcmVuIHZvbiAnJXMnIG5hY2ggJyVzJyBmZWhsZ2VzY2hsYWdlbi4gRmVobGVybnVtbWVyOiAlZFxuIgogICAgU1RSSU5HX09QRU5GQUlMLCAiRmVobGVyIGJlaW0g1mZmbmVuIHZvbiAnJXMnXG4iCiAgICBTVFJJTkdfUkVBREZBSUwsICJGZWhsZXIgYmVpbSBMZXNlbiB2b24gJyVzJ1xuIgogICAgU1RSSU5HX1lFU19DSEFSLCAiSiIKICAgIFNUUklOR19OT19DSEFSLCAgIk4iCiAgICBTVFJJTkdfQUxMX0NIQVIsICJBIgogICAgU1RSSU5HX0ZJTEVfQ0hBUiwiRCIKICAgIFNUUklOR19ESVJfQ0hBUiwgIlYiCgogICAgU1RSSU5HX0hFTFAsCiJYQ09QWSAtIEtvcGllcnQgRGF0ZWllbiBvZGVyIFZlcnplaWNobmlzc2UgYW4gZWluZW4gWmllbG9ydFxuXApcblwKU3ludGF4OlxuXApYQ09QWSBRdWVsbGUgW1ppZWxdIFsvSV0gWy9TXSBbL1FdIFsvRl0gWy9MXSBbL1ddIFsvVF0gWy9OXSBbL1VdXG5cClx0ICAgICBbL1JdIFsvSF0gWy9DXSBbL1BdIFsvQV0gWy9NXSBbL0VdIFsvRF0gWy9ZXSBbLy1ZXVxuXApcblwKTWl0OlxuXApcblwKWy9JXSAgQmVoYW5kbGUgWmllbCBhbHMgVmVyemVpY2huaXNuYW1lbiwgd2VubiBlcyBuaWNodCBleGlzdGllcnQgdW5kXG5cClx0bWVocmVyZSBEYXRlaWVuIGtvcGllcnQgd2VyZGVuLlxuXApbL1NdICBLb3BpZXJlIFZlcnplaWNobmlzc2UgdW5kIFVudGVydmVyemVpY2huaXNzZVxuXApbL0VdICBLb3BpZXJlIFZlcnplaWNobmlzc2UgdW5kIFVudGVydmVyemVpY2huaXNzZSwgYXVjaCBsZWVyZVxuXApbL1FdICBaZWlnZSBkaWUgRGF0ZWluYW1lbiBiZWltIEtvcGllcmVuIG5pY2h0IGFuXG5cClsvRl0gIFplaWdlIHZvbGxzdORuZGlnZSBEYXRlaW5hbWVuIHZvbiBRdWVsbGUgdW5kIFppZWwgYW5cblwKWy9MXSAgU2ltdWxhdGlvbjogWmVpZ2UgZGllIE5hbWVuIGRlciBEYXRlaW4sIGRpZSBrb3BpZXJ0IHf8cmRlblxuXApbL1ddICBXYXJ0ZXQgdm9yIEJlZ2lubiBkZXMgS29waWVyZW5zIGF1ZiBCZXN05HRpZ3VuZ1xuXApbL1RdICBFcnpldWdlIGVpbmUgbGVlcmUgVmVyemVpY2huaXNzdHJ1a3R1ciwgb2huZSBEYXRlaWVuIHp1IGtvcGllcmVuXG5cClsvWV0gIEtlaW5lIE5hY2hmcmFnZSB2b3IgZGVtINxiZXJzY2hyZWliZW4gdm9uIERhdGVpZW5cblwKWy8tWV0gTmFjaHJhZ2Ugdm9yIGRlbSDcYmVyc2NocmVpYmVuIHZvbiBEYXRlaWVuXG5cClsvUF0gIEZyYWd0IGb8ciBqZWRlIFF1ZWxsZGF0ZWksIG9iIHNpZSBrb3BpZXJ0IHdlcmRlbiBzb2xsXG5cClsvTl0gIEtvcGllcnQgZGllIERhdGVpZW4gdW50ZXIgaWhyZW0gS3Vyem5hbWVuXG5cClsvVV0gIEtvcGllcnQgbnVyIERhdGVpZW4sIGRpZSBhbSBaaWVsIGJlcmVpdHMgZXhpc3RpZXJlblxuXApbL1JdICDcYmVyc2NocmVpYnQgc2NocmVpYmdlc2No/HR6dGUgRGF0ZWllblxuXApbL0hdICBLb3BpZXJlIGF1Y2ggdmVyc3RlY2t0ZSB1bmQgU3lzdGVtZGF0ZWllblxuXApbL0NdICBOYWNoIEZlaGxlcm4gZGVuIEtvcGllcnZvcmdhbmcgZm9ydHNldHplblxuXApbL0FdICBOdXIgRGF0ZWllbiBtaXQgQXJjaGl2Yml0IGtvcGllcmVuXG5cClsvTV0gIE51ciBEYXRlaWVuIG1pdCBBcmNoaXZiaXQga29waWVyZW4sIGRhbmFjaCBBcmNoaXZiaXQgbPZzY2hlblxuXApbL0QgfCAvRDptLWQteV0gS29waWVyZSBuZXVlIERhdGVpZW4gdW5kIERhdGVpZW4sIGRpZSBuZXVlciBhbHMgZGFzXG5cClx0XHRhbmdlZ2ViZW5lIERhdHVtIHNpbmQuIFdpcmQga2VpbiBEYXR1bSBhbmdlZ2VnZWJuLCB3ZXJkZW4gbnVyXG5cClx0XHRRdWVsbGRhdGVpZW4ga29waWVydCwgZGllIG5ldWVyIHNpbmQgYWxzIGRpZSBaaWVsZGF0ZWlcblxuIgoKfQo=