LyoKICogQ29weXJpZ2h0IDIwMDYgRmF0aWggQf79Y/0KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19UVVJLSVNILCBTVUJMQU5HX0RFRkFVTFQKCklERF9TQVZFT1BUSU9OUyBESUFMT0cgRklYRUQgSU1QVVJFICA0MywgMzcsIDE5NiwgODIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlP9a/3+dP1ybWEgc2XnZW5la2xlcmkiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiQmlyIGFr/f4gc2Um52luOiIsLTEsMiw1LDExNCwxMAogICAgQ09NQk9CT1ggICAgICAgIElEQ19TVFJFQU0sMiwxOCwxMzQsNjEsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCAKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZTZedlbmVrbGVyLi4uIixJRENfT1BUSU9OUywxNDUsMTcsNDUsMTQKICAgIEFVVE9DSEVDS0JPWCAgICAiJkludGVybGVhdmUgZXZlcnkiLElEQ19JTlRFUkxFQVZFLDMsNDIsNjAsMTEsV1NfVEFCU1RPUAogICAgRURJVFRFWFQgICAgICAgIElEQ19JTlRFUkxFQVZFRVZFUlksNjYsNDEsMzIsMTIsRVNfQVVUT0hTQ1JPTEwKICAgIExURVhUICAgICAgICAgICAiZnJhbWVzIiwtMSwxMDQsNDMsMzYsOQogICAgTFRFWFQgICAgICAgICAgICJHZedlcmxpIGJp52ltOiIsLTEsMyw1Niw1Myw5CiAgICBMVEVYVCAgICAgICAgICAgIlRoaXMgc3BhY2UgZm9yIHJlbnQiLElEQ19GT1JNQVRURVhULDU1LDU2LDkwLDI2CiAgICBERUZQVVNIQlVUVE9OICAgIlRhbWFtIixJRE9LLDE0NSw0Miw0NSwxNAogICAgUFVTSEJVVFRPTiAgICAgICLdcHRhbCIsSURDQU5DRUwsMTQ1LDYxLDQ1LDE0CkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewogIElEU19XQVZFU1RSRUFNRk9STUFUCSJXYXZlZm9ybTogJXMiCiAgSURTX1dBVkVGSUxFVFlQRQkiV2F2ZWZvcm0iCiAgSURTX0FMTE1VTFRJTUVESUEJIlT8bSDnb2tsdW9ydGFtIGRvc3lhbGFy/SIKICBJRFNfQUxMRklMRVMJCSJU/G0gZG9zeWFsYXIgKCouKilAKi4qIgogIElEU19WSURFTwkJInZpZHlvIgogIElEU19BVURJTwkJInNlcyIKICBJRFNfQVZJU1RSRUFNRk9STUFUCSIlcyAlcyAjJWQiCiAgSURTX0FWSUZJTEVUWVBFCSJXaW5lIEFWSS1kZWZhdWx0LWZpbGVoYW5kbGVyIgogIElEU19VTkNPTVBSRVNTRUQgICAgICAic/1r/f50/XL9bG1hbf3+Igp9Cg==