LyoKICogQ29weXJpZ2h0IDE5OTYgUm9tYW4gRG9sZWpzaQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0NaRUNILCBTVUJMQU5HX0RFRkFVTFQKClNZU01FTlUgTUVOVSBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFCnsKIE1FTlVJVEVNICImT2Jub3YiLCA2MTcyOAogTUVOVUlURU0gIlD4ZSZzdfIiLCA2MTQ1NgogTUVOVUlURU0gIiZabezyIHZlbGlrb3N0IiwgNjE0NDAKIE1FTlVJVEVNICJNaSZuaW1hbGl6dWoiLCA2MTQ3MgogTUVOVUlURU0gIk1hJnhpbWFsaXp1aiIsIDYxNDg4CiBNRU5VSVRFTSBTRVBBUkFUT1IKIE1FTlVJVEVNICImWmF2+GlcdEFsdC1GNCIsIDYxNTM2CiBNRU5VSVRFTSBTRVBBUkFUT1IKIE1FTlVJVEVNICImUPhlcG5pIGRvIGppbukg+mxvaHkuLi5cdEN0cmwtRXNjIiwgNjE3NDQKIE1FTlVJVEVNIFNFUEFSQVRPUgogTUVOVUlURU0gIiZPIHByb2dyYW11IFdJTkUiLCA2MTc2MQp9CgpFRElUTUVOVSBNRU5VIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUKewoJUE9QVVAgIiIKCUJFR0lOCgkJTUVOVUlURU0gIiZVbmRvIiwgRU1fVU5ETwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDdSZ0IiwgV01fQ1VUCgkJTUVOVUlURU0gIiZDb3B5IiwgV01fQ09QWQoJCU1FTlVJVEVNICImUGFzdGUiLCBXTV9QQVNURQoJCU1FTlVJVEVNICImRGVsZXRlIiwgV01fQ0xFQVIKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiU2VsZWN0ICZBbGwiLCBFTV9TRVRTRUwKCUVORAp9CgpNU0dCT1ggRElBTE9HIDEwMCwgODAsIDIxNiwgMTY4ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpCRUdJTgogICAgICAgIElDT04gIiIsIDEwODgsIDgsIDIwLCAxNiwgMTYsIFdTX0NISUxEIHwgV1NfVklTSUJMRQogICAgICAgIExURVhUICIiLCAxMDAsIDMyLCA0LCAxNzYsIDQ4LCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19HUk9VUAogICAgICAgIFBVU0hCVVRUT04gIiZPayIsIDEsIDE2LCA1NiwgNDAsIDE0LCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19UQUJTVE9QCiAgICAgICAgUFVTSEJVVFRPTiAiJlN0b3JubyIsIDIsIDY0LCA1NiwgNDAsIDE0LCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19UQUJTVE9QCiAgICAgICAgUFVTSEJVVFRPTiAiJlD4ZXJ1mml0IiwgMywgMTEyLCA1NiwgNDAsIDE0LCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19UQUJTVE9QCiAgICAgICAgUFVTSEJVVFRPTiAiJlprdXNpdCB6bm92dSIsIDQsIDE2MCwgNTYsIDQwLCAxNCwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfVEFCU1RPUAogICAgICAgIFBVU0hCVVRUT04gIiZJZ25vcm92YXQiLCA1LCAyMDgsIDU2LCA0MCwgMTQsIFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX1RBQlNUT1AKICAgICAgICBQVVNIQlVUVE9OICImQW5vIiwgNiwgMjU2LCA1NiwgNDAsIDE0LCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19UQUJTVE9QCiAgICAgICAgUFVTSEJVVFRPTiAiJk5lIiwgNywgMzA0LCA1NiwgNDAsIDE0LCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19UQUJTVE9QCkVORAo=