LyoKICogWENPUFkgLSBXaW5lLWNvbXBhdGlibGUgeGNvcHkgcHJvZ3JhbQogKiBQb2xpc2ggbGFuZ3VhZ2Ugc3VwcG9ydAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDcgSi4gRWRtZWFkZXMKICogQ29weXJpZ2h0IChDKSAyMDA3IE1pa29sYWogWmFsZXdza2kKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKCkxBTkdVQUdFIExBTkdfUE9MSVNILCBTVUJMQU5HX0RFRkFVTFQKClNUUklOR1RBQkxFCnsKICAgIFNUUklOR19JTlZQQVJNUywgIk5pZXezYZxjaXdhIGxpY3piYSBwYXJhbWV0cvN3IC0gdXJ1Y2hvbSB4Y29weSAvPyBhYnkgd3mcd2lldGxp5iBwb21vY1xuIgogICAgU1RSSU5HX0lOVlBBUk0sICAiTmllem5hbnkgcGFyYW1ldGVyICclcycgLSAgdXJ1Y2hvbSB4Y29weSAvPyBhYnkgd3mcd2lldGxp5iBwb21vY1xuIgogICAgU1RSSU5HX1BBVVNFLCAgICAiTmFjaZxuaWogPGVudGVyPiBhYnkgcm96cG9jernmIGtvcGlvd2FuaWVcbiIKICAgIFNUUklOR19TSU1DT1BZLCAgIiVkIHBsaWso83cpIHpvc3Rhs29ieSBza29waW93YW55Y2hcbiIKICAgIFNUUklOR19DT1BZLCAgICAgIiVkIHBsaWso83cpIHNrb3Bpb3dhbnljaFxuIgogICAgU1RSSU5HX1FJU0RJUiwgICAiQ3p5ICclcycgamVzdCBuYXp3uSBwbGlrdSBjenkga2F0YWxvZ3VcbiIgXAogICAgICAgICAgICAgICAgICAgICAiZG9jZWxvd2Vnbz9cbiIgXAogICAgICAgICAgICAgICAgICAgICAiKFAgLSBwbGlrLCBLIC0ga2F0YWxvZylcbiIKICAgIFNUUklOR19TUkNQUk9NUFQsIiVzPyAoVGFrfE5pZSlcbiIKICAgIFNUUklOR19PVkVSV1JJVEUsIlphc3S5cGnmICVzPyAoVGFrfE5pZXxXc3p5c3RraWUpXG4iCiAgICBTVFJJTkdfQ09QWUZBSUwsICJLb3Bpb3dhbmllICclcycgZG8gJyVzJyBuaWUgcG93aW9ks28gc2nqIC0ga29kIGKz6mR1ICVkXG4iCiAgICBTVFJJTkdfT1BFTkZBSUwsICJOaWUgdWRhs28gc2nqIG90d29yennmICclcydcbiIKICAgIFNUUklOR19SRUFERkFJTCwgIkKzuWQgcG9kY3phcyBjenl0YW5pYSAnJXMnXG4iCiAgICBTVFJJTkdfWUVTX0NIQVIsICJUIgogICAgU1RSSU5HX05PX0NIQVIsICAiTiIKICAgIFNUUklOR19BTExfQ0hBUiwgIlciCiAgICBTVFJJTkdfRklMRV9DSEFSLCJQIgogICAgU1RSSU5HX0RJUl9DSEFSLCAiSyIKCiAgICBTVFJJTkdfSEVMUCwKIlhDT1BZIC0ga29waXVqZSBwbGlraSBsdWIgZHJ6ZXdhIGthdGFsb2fzd1xuXApcblwKU2uzYWRuaWE6XG5cClhDT1BZIJ9y82SzbyBbY2VsXSBbL0ldIFsvU10gWy9RXSBbL0ZdIFsvTF0gWy9XXSBbL1RdIFsvTl0gWy9VXSBcblwKXHQgICAgIFsvUl0gWy9IXSBbL0NdIFsvUF0gWy9BXSBbL01dIFsvRV0gWy9EXSBbL1ldIFsvLVldXG5cClxuXApHZHppZTpcblwKXG5cClsvSV0gIEplv2VsaSBcImNlbFwiIG5pZSBpc3RuaWVqZSBpIGtvcGlvd2FuZSBzuSBjbyBuYWptbmllaiBkd2EgcGxpa2ksXG5cClx0emFrs2FkYSwgv2UgXCJjZWxcIiBwb3dpZW4gYnnmIGthdGFsb2dpZW1cblwKWy9TXSAgS29waXVqZSBrYXRhbG9naSBpIHBvZGthdGFsb2dpXG5cClsvRV0gIEtvcGl1amUga2F0YWxvZ2kgaSBwb2RrYXRhbG9naSwgs7ljem5pZSB6IHB1c3R5bWlcblwKWy9RXSAgTmllIHd5cGlzdWplIG5hencgcGxpa/N3IHBvZGN6YXMga29waW93YW5pYSAodHJ5YiBjaWNoeSlcblwKWy9GXSAgV3lwaXN1amUgcGWzbmUgnGNpZb9raSCfcvNks293ZSBpIGRvY2Vsb3dlIHBvZGN6YXMga29waW93YW5pYVxuXApbL0xdICBKZWR5bmllIHN5bXVsdWplIG9wZXJhY2rqLCBwb2thenVquWMgcGxpa2ksIGt083JlIGJ5s3lieSBrb3Bpb3dhbmVcblwKWy9XXSAgUHJvc2kgbyBwb3R3aWVyZHplbmllIHByemVkIHJvenBvY3rqY2llbSBrb3Bpb3dhbmlhXG5cClsvVF0gIFR3b3J6eSBwdXN0ZSBrYXRhbG9naSwgYWxlIG5pZSBrb3BpdWplIHBsaWvzd1xuXApbL1ldICBaYXN06nB1amUgcGxpa2kgYmV6IHByb5xieSBvIHBvdHdpZXJkemVuaWVcblwKWy8tWV0gWmF3c3plIHByb3NpIG8gcG90d2llcmR6ZW5pZSBwcnplZCB6YXN0uXBpZW5pZW0gcGxpa3VcblwKWy9QXSAgUHJvc2kgbyBwb3R3aWVyZHplbmllIHByemVkIHNrb3Bpb3dhbmllbSBrYb9kZWdvIHBsaWt1XG5cClsvTl0gIEtvcGl1amUgdb95d2FquWMga3LzdGtpY2ggbmF6dyBwbGlr83dcblwKWy9VXSAgS29waXVqZSB0eWxrbyBwbGlraSwga3TzcmUganW/IGlzdG5pZWq5IHcgbWllanNjdSBkb2NlbG93eW1cblwKWy9SXSAgWmFzdOpwdWplIHBsaWtpIHR5bGtvIGRvIG9kY3p5dHVcblwKWy9IXSAgS29waXVqZSBy83duaWW/IHBsaWtpIHVrcnl0ZSBpIHN5c3RlbW93ZVxuXApbL0NdICBLb250eW51dWplIG5hd2V0IGplv2VsaSBwb2RjemFzIGtvcGlvd2FuaWEgd3lzdOpwabN5IGKz6mR5XG5cClsvQV0gIEtvcGl1amUgdHlsa28gcGxpa2kgeiBhdHJ5YnV0ZW0gYXJjaGl3YWxueVxuXApbL01dICBLb3BpdWplIHR5bGtvIHBsaWtpIHogYXRyeWJ1dGVtIGFyY2hpd2FsbnkgaSB1c3V3YSB0ZW4gYXRyeWJ1dFxuXApbL0QgfCAvRDptLWQteV0gS29waXVqZSB0eWxrbyBub3dlIHBsaWtpIGx1YiB0ZSB6bW9kaWZpa293YW5lIHBvIHBvZGFuZWogZGFjaWUuXG5cClx0XHRKZb9lbGkgbmllIHBvZGFubyC/YWRuZWogZGF0eSwgdG8ga29waW93YW5lIHO5IHBsaWtpLCBrdPNyZSBzuVxuXApcdFx0bm93c3plIG5pvyB3IGthdGFsb2d1IGRvY2Vsb3d5bVxuXG4iCgp9Cg==