LyoKICogWENPUFkgLSBXaW5lLWNvbXBhdGlibGUgeGNvcHkgcHJvZ3JhbQogKiBLb3JlYW4gbGFuZ3VhZ2Ugc3VwcG9ydAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDcgSi4gRWRtZWFkZXMKICogQ29weXJpZ2h0IChDKSAyMDA3IFl1blNvbmcgSHdhbmcoaHlzNTQ1QGRyZWFtd2l6LmNvbSkKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInhjb3B5LmgiCgpMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ERUZBVUxUCgpTVFJJTkdUQUJMRQp7CiAgICBTVFJJTkdfSU5WUEFSTVMsICK/w7nZuKPB9iC+ysC6ILjFsLO6r7z2wMcgsLm89iAtIHhjb3B5IC8/t84gtbW/8ri7wLsguri9w7/AXG4iCiAgICBTVFJJTkdfSU5WUEFSTSwgICK/w7nZuKPB9iC+ysC6ILjFsLO6r7z2ICclcycgLSAgeGNvcHkgLz+3ziC1tb/yuLvAuyC6uL3Dv8BcbiIKICAgIFNUUklOR19QQVVTRSwgICAgIjxlbnRlcj4guKYgtKm4o7jpILq5u+ewoSC9w8DbtckgsM3A1LTPtNlcbiIKICAgIFNUUklOR19TSU1DT1BZLCAgIiVkIMbEwM/AzCC6ubvntckgsM3A1LTPtNlcbiIKICAgIFNUUklOR19DT1BZLCAgICAgIiVkIMbEwM/AzCC6ubvntce++r3AtM+02VxuIgogICAgU1RSSU5HX1FJU0RJUiwgICAiJyVzJ8DMILq5u+fH0iDGxMDPwMyzqiC18Le6xeS4rj9cbiIgXAogICAgICAgICAgICAgICAgICAgICAiwNS0z7HuP1xuIiBcCiAgICAgICAgICAgICAgICAgICAgICIoRiAtIMbEwM8sIEQgLSC18Le6xeS4rilcbiIKICAgIFNUUklOR19TUkNQUk9NUFQsIiVzPyAov7l8vsa0z7/AKVxuIgogICAgU1RSSU5HX09WRVJXUklURSwiJXO4piC1pL7uvrKw2r3AtM+x7j8gKL+5fL7GtM+/wHy48LXOKVxuIgogICAgU1RSSU5HX0NPUFlGQUlMLCAiQ29weWluZyBvZiAnJXMnIHRvICclcycgZmFpbGVkIHdpdGggci9jICVkXG4iCiAgICBTVFJJTkdfT1BFTkZBSUwsICInJXMnIL+tseIgvcfG0FxuIgogICAgU1RSSU5HX1JFQURGQUlMLCAiJyVzuKYgwNDB9iC4+MffvcC0z7TZJ1xuIgogICAgU1RSSU5HX1lFU19DSEFSLCAiWSIKICAgIFNUUklOR19OT19DSEFSLCAgIk4iCiAgICBTVFJJTkdfQUxMX0NIQVIsICJBIgogICAgU1RSSU5HX0ZJTEVfQ0hBUiwiRiIKICAgIFNUUklOR19ESVJfQ0hBUiwgIkQiCgogICAgU1RSSU5HX0hFTFAsCiJYQ09QWSAtIL/4ursgxsTAz8DMs6ogtfC3usXkuK4gsbjBtrimILjxwPvB9rfOILq5u+dcblwKXG5cCrmuuf06XG5cClhDT1BZIL/4ursgW7Tru/NdIFsvSV0gWy9TXSBbL1FdIFsvRl0gWy9MXSBbL1ddIFsvVF0gWy9OXSBbL1VdXG5cClx0ICAgICBbL1JdIFsvSF0gWy9DXSBbL1BdIFsvQV0gWy9NXSBbL0VdIFsvRF0gWy9ZXSBbLy1ZXVxuXApcblwKV2hlcmU6XG5cClxuXApbL0ldICBBc3N1bWUgZGlyZWN0b3J5IGlmIGRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0IGFuZCBjb3B5aW5nIDIgb3JcblwKXHRtb3JlIGZpbGVzXG5cClsvU10gILXwt7rF5Liux8+w7SDHz8CnILXwt7rF5LiuILq5u+dcblwKWy9FXSAguvMgtfC3usXkuK64piDG98fUx9i8rSC18Le6xeS4rr/NIMfPwKcgtfC3usXkuK4gurm751xuXApbL1FdICDBtr/rx8+w1CC6ubvntce0wiDGxMDPwMyzqiC18Le6xeS4rrimIMelvcPHz8H2IL7KsO0gurm75y5cblwKWy9GXSAgurm758fPtMIgtb++yCC/z8D8x9Egv/i6u7D6ILTru/Mguri/qcHWseJcblwKWy9MXSAgurm757XJILDNwLsguri/qcHWuOm8rSCwobvzwLi3ziDA2773XG5cClsvV10gILq5u+e9w8DbIMfPseIgwPy/oSDIrsDOx8+x4lxuXApbL1RdICDGxMDPwLogurm758fPwfYgvsqw7SC68yC18Le6xeS4riCxuMG2uLggurm751xuXApbL1ldICDGxMDPILWkvu4gvrUgtqcgyK7AzsfPwfYgvsqx4lxuXApbLy1ZXSDGxMDPwLsgtaS+7iC+tSC2pyDIrsDOx8+x4lxuXApbL1BdICC6ubvnx8+0wiC1v77Iv6EgsKKwocDHIL/4ursgxsTAz7i2tNkgyK7AzlxuXApbL05dICDCqsC6IMDMuKfAuyC757/rx9i8rSC6ubvnXG5cClsvVV0gIMDMucwgtOu78yC18Le6xeS4rr+hIMG4wOfHz7TCIMbEwM+4uCC6ubvnXG5cClsvUl0gIMDQseIgwPy/6yDGxMDPtbUgtaS+7iC+srHiXG5cClsvSF0gILz7wLogxsTAz8DMs6ogvcO9usXbIMbEwM+1tSDG98fUx9i8rSC6ubvnXG5cClsvQ10gILq5u+fHz7TCILW/vsi/oSC/obevsKEgud+7/cfYtbUgsOi80yDB+MfgXG5cClsvQV0gIL/AwfcgvtDD4CC807y6wMwgvLPBpLXHvu7A1rTCIMbEwM+4uCC6ubvnXG5cClsvTV0gIL/AwfcgvtDD4CC807y6wLsgwaawxcfPuOm8rSAgvtDD4CC807y6wMwgvLPBpLXHvu7A1rTCXG5cClzGxMDPuLggurm751xuXApbL0QgfCAvRDptLWQteV0gwfbBpLXIILOvwqUgyMS/oSC89sGktcewxbOqILv1t86/7iDGxMDPILq5u+cuXG5cClx0XHRJuLi+4CC+7rawx9Egs6/CpbW1IMH2waS1x8H2IL7KwLi46Sy/wMH3IL/4uru6uLTZXG5cClx0XHS067vzwMwgv8C3obXIILDNuLggurm751xuXG4iCgp9Cg==