LyoKICogWENPUFkgLSBXaW5lLWNvbXBhdGlibGUgeGNvcHkgcHJvZ3JhbQogKiBLb3JlYW4gbGFuZ3VhZ2Ugc3VwcG9ydAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDcgSi4gRWRtZWFkZXMKICogQ29weXJpZ2h0IChDKSAyMDA3IFl1blNvbmcgSHdhbmcoaHlzNTQ1QGRyZWFtd2l6LmNvbSkKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKCkxBTkdVQUdFIExBTkdfS09SRUFOLCBTVUJMQU5HX0RFRkFVTFQKClNUUklOR1RBQkxFCnsKICAgIFNUUklOR19JTlZQQVJNUywgIr/Dudm4o8H2IL7KwLoguMWws7qvvPbAxyCwubz2IC0geGNvcHkgLz+3ziC1tb/yuLvAuyC6uL3Dv8BcbiIKICAgIFNUUklOR19JTlZQQVJNLCAgIr/Dudm4o8H2IL7KwLoguMWws7qvvPYgJyVzJyAtICB4Y29weSAvP7fOILW1v/K4u8C7ILq4vcO/wFxuIgogICAgU1RSSU5HX1BBVVNFLCAgICAiPGVudGVyPiC4piC0qbijuOkgurm757ChIL3DwNu1ySCwzcDUtM+02VxuIgogICAgU1RSSU5HX1NJTUNPUFksICAiJWQgxsTAz8DMILq5u+e1ySCwzcDUtM+02VxuIgogICAgU1RSSU5HX0NPUFksICAgICAiJWQgxsTAz8DMILq5u+e1x776vcC0z7TZXG4iCiAgICBTVFJJTkdfUUlTRElSLCAgICInJXMnwMwgurm758fSIMbEwM/AzLOqILXwt7rF5LiuP1xuIiBcCiAgICAgICAgICAgICAgICAgICAgICLA1LTPse4/XG4iIFwKICAgICAgICAgICAgICAgICAgICAgIihGIC0gxsTAzywgRCAtILXwt7rF5LiuKVxuIgogICAgU1RSSU5HX1NSQ1BST01QVCwiJXM/ICi/uXy+xrTPv8ApXG4iCiAgICBTVFJJTkdfT1ZFUldSSVRFLCIlc7imILWkvu6+srDavcC0z7HuPyAov7l8vsa0z7/AfLjwtc4pXG4iCiAgICBTVFJJTkdfQ09QWUZBSUwsICJDb3B5aW5nIG9mICclcycgdG8gJyVzJyBmYWlsZWQgd2l0aCByL2MgJWRcbiIKICAgIFNUUklOR19PUEVORkFJTCwgIiclcycgv62x4iC9x8bQXG4iCiAgICBTVFJJTkdfUkVBREZBSUwsICInJXO4piDA0MH2ILj4x9+9wLTPtNknXG4iCiAgICBTVFJJTkdfWUVTX0NIQVIsICJZIgogICAgU1RSSU5HX05PX0NIQVIsICAiTiIKICAgIFNUUklOR19BTExfQ0hBUiwgIkEiCiAgICBTVFJJTkdfRklMRV9DSEFSLCJGIgogICAgU1RSSU5HX0RJUl9DSEFSLCAiRCIKCiAgICBTVFJJTkdfSEVMUCwKIlhDT1BZIC0gv/i6uyDGxMDPwMyzqiC18Le6xeS4riCxuMG2uKYguPHA+8H2t84gurm751xuXApcblwKua65/TpcblwKWENPUFkgv/i6uyBbtOu7810gWy9JXSBbL1NdIFsvUV0gWy9GXSBbL0xdIFsvV10gWy9UXSBbL05dIFsvVV0gXG5cClx0ICAgICBbL1JdIFsvSF0gWy9DXSBbL1BdIFsvQV0gWy9NXSBbL0VdIFsvRF0gWy9ZXSBbLy1ZXVxuXApcblwKV2hlcmU6XG5cClxuXApbL0ldICBBc3N1bWUgZGlyZWN0b3J5IGlmIGRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0IGFuZCBjb3B5aW5nIDIgb3IgXG5cClx0bW9yZSBmaWxlc1xuXApbL1NdICC18Le6xeS4rsfPsO0gx8/ApyC18Le6xeS4riC6ubvnXG5cClsvRV0gILrzILXwt7rF5LiuuKYgxvfH1MfYvK0gtfC3usXkuK6/zSDHz8CnILXwt7rF5LiuILq5u+dcblwKWy9RXSAgwba/68fPsNQgurm757XHtMIgxsTAz8DMs6ogtfC3usXkuK64piDHpb3Dx8/B9iC+yrDtILq5u+cuXG5cClsvRl0gILq5u+fHz7TCILW/vsggv8/A/MfRIL/4uruw+iC067vzILq4v6nB1rHiXG5cClsvTF0gILq5u+e1ySCwzcC7ILq4v6nB1rjpvK0gsKG788C4t84gwNu+91xuXApbL1ddICC6ubvnvcPA2yDHz7HiIMD8v6EgyK7AzsfPseJcblwKWy9UXSAgxsTAz8C6ILq5u+fHz8H2IL7KsO0guvMgtfC3usXkuK4gsbjBtri4ILq5u+dcblwKWy9ZXSAgxsTAzyC1pL7uIL61ILanIMiuwM7Hz8H2IL7KseJcblwKWy8tWV0gxsTAz8C7ILWkvu4gvrUgtqcgyK7AzsfPseJcblwKWy9QXSAgurm758fPtMIgtb++yL+hILCisKHAxyC/+Lq7IMbEwM+4trTZIMiuwM5cblwKWy9OXSAgwqrAuiDAzLinwLsgu+e/68fYvK0gurm751xuXApbL1VdICDAzLnMILTru/MgtfC3usXkuK6/oSDBuMDnx8+0wiDGxMDPuLggurm751xuXApbL1JdICDA0LHiIMD8v+sgxsTAz7W1ILWkvu4gvrKx4lxuXApbL0hdICC8+8C6IMbEwM/AzLOqIL3DvbrF2yDGxMDPtbUgxvfH1MfYvK0gurm751xuXApbL0NdICC6ubvnx8+0wiC1v77Iv6Egv6G3r7ChILnfu/3H2LW1ILDovNMgwfjH4FxuXApbL0FdICC/wMH3IL7Qw+AgvNO8usDMILyzwaS1x77uwNa0wiDGxMDPuLggurm751xuXApbL01dICC/wMH3IL7Qw+AgvNO8usC7IMGmsMXHz7jpvK0gIL7Qw+AgvNO8usDMILyzwaS1x77uwNa0wiAgXG5cClzGxMDPuLggurm75yBcblwKWy9EIHwgL0Q6bS1kLXldIENvcHkgbmV3IGZpbGVzIG9yIHRob3NlIG1vZGlmaWVkIGFmdGVyIHRoZSBzdXBwbGllZCBkYXRlLlxuXApcdFx0SWYgbm8gZGF0ZSBpcyBzdXBwbGllZCwgb25seSBjb3B5IGlmIGRlc3RpbmF0aW9uIGlzIG9sZGVyXG5cClx0XHR0aGFuIHNvdXJjZVxuXG4iCgp9Cg==