LyoKICogWENPUFkgLSBXaW5lLWNvbXBhdGlibGUgeGNvcHkgcHJvZ3JhbQogKiBSdXNzaWFuIGxhbmd1YWdlIHN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDA3IEouIEVkbWVhZGVzCiAqIENvcHlyaWdodCAoQykgMjAwNyBLaXJpbGwgSy4gU21pcm5vdgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgoKTEFOR1VBR0UgTEFOR19SVVNTSUFOLCBTVUJMQU5HX0RFRkFVTFQKClNUUklOR1RBQkxFCnsKICAgIFNUUklOR19JTlZQQVJNUywKIs3l5O7v8/Hy6Ozu5SD36PHr7iDv4PDg7OXy8O7iIC0g7+7v8O7h8+ny5SAneGNvcHkgLz8nIOTr/yDv7uvz9+Xt6P9cblwK7+7k8O7h7e7j7iDu7+jx4O3o/y5cbiIKICAgIFNUUklOR19JTlZQQVJNLAoizeXk7u/z8fLo7PvpIO/g8ODs5fLwICclcycgLSDv7u/w7uHz6fLlICd4Y29weSAvPycg5Ov/IO/u6/P35e3o/yDv7uTw7uHt7uPuXG5cCu7v6PHg7ej/LlxuIgogICAgU1RSSU5HX1BBVVNFLCAgICAizeDm7Ojy5SDq6+Di6PjzIDxlbnRlcj4sIPfy7uH7IO3g9+Dy/CDq7u/o8O7i4O3o5S5cbiIKICAgIFNUUklOR19TSU1DT1BZLCAgIiVkIPTg6eso7uIpIOH76+4g4fsg8eru7+jw7uLg7e4uXG4iCiAgICBTVFJJTkdfQ09QWSwgICAgICIlZCD04OnrKO7iKSDx6u7v6PDu4uDt7i5cbiIKICAgIFNUUklOR19RSVNESVIsICAgIiclcycg/+Lr/+Xy8f8g9ODp6+7sIOjr6CDv4O/q7uk/XG4iIFwKICAgICAgICAgICAgICAgICAgICAgIihGIC0g1ODp6ywgRCAtIM/g7+rgKVxuIgogICAgU1RSSU5HX1NSQ1BST01QVCwiJXM/IChZZXN8Tm8pXG4iCiAgICBTVFJJTkdfT1ZFUldSSVRFLCLP5fDl7+jx4PL8ICVzPyAoWWVzfE5vfEFsbClcbiIKICAgIFNUUklOR19DT1BZRkFJTCwgIs/w6CDq7u/o8O7i4O3o6CAnJXMnIOIgJyVzJyDv8O7o5+746+Ag7vjo4ergOiAlZFxuIgogICAgU1RSSU5HX09QRU5GQUlMLCAizeXi7ufs7ubt7iDu8urw+/L8ICclcydcbiIKICAgIFNUUklOR19SRUFERkFJTCwgIs/w6CD38uXt6OggJyVzJyDv8O7o5+746+Ag7vjo4ergXG4iCiAgICBTVFJJTkdfWUVTX0NIQVIsICJZIgogICAgU1RSSU5HX05PX0NIQVIsICAiTiIKICAgIFNUUklOR19BTExfQ0hBUiwgIkEiCiAgICBTVFJJTkdfRklMRV9DSEFSLCJGIgogICAgU1RSSU5HX0RJUl9DSEFSLCAiRCIKCiAgICBTVFJJTkdfSEVMUCwKIlhDT1BZIC0gyu7v6PDz5fIg9ODp6/sg6CDk5fDl4vz/IO/g7+7qXG5cClxuXArR6O3y4Orx6PE6XG5cClhDT1BZIHNvdXJjZSBbZGVzdF0gWy9JXSBbL1NdIFsvUV0gWy9GXSBbL0xdIFsvV10gWy9UXSBbL05dIFsvVV1cblwKXHQgICAgIFsvUl0gWy9IXSBbL0NdIFsvUF0gWy9BXSBbL01dIFsvRV0gWy9EXSBbL1ldIFsvLVldXG5cClxuXArD5OU6XG5cClxuXApbL0ldICDF8evoIOru7eX37eD/IO/g7+rgIO7y8fPy8fLi8+XyIOgg6u7v6PDz5fLx/yDh7uvl5SDu5O3u4+4g9ODp6+AsXG5cCiAgICAgIPLuIO/w5eTv7uvg4+Dl8vH/IO/g7+rgIOIg6uD35fHy4uUg7OXx8uAg7eDn7eD35e3o/y5cblwKWy9TXSAgyu7v6PDz5fIg7+Dv6ugg6CDv7uTv4O/q6C5cblwKWy9FXSAgyu7v6PDz5fIg7+Dv6ugg6CDv7uTv4O/q6Cwg4urr/vfg/yDv8/Hy++UuXG5cClsvUV0gIM3lIO7y7uHw4Obg5fIg6Ozl7eAg6u7v6PDz5ez79SD04Onr7uIuXG5cClsvRl0gIM7y7uHw4Obg5fIg7+7r7fvlIOjs5e3gIOjx9e7k7fv1IOgg6u7t5fft+/Ug9ODp6+7iLlxuXApbL0xdICDC++Lu5OjyIPHv6PHu6iD04Onr7uIsIOru8u7w++Ug4fPk8/Ig8eru7+jw7uLg7fsuXG5cClsvV10gIMfg7/Dg+Oji4OXyIO/u5PLi5fDm5OXt6OUg7+Xw5eQg7eD34Ovu7CDq7u/o8O7i4O3o/y5cblwKWy9UXSAg0e7n5ODl8iDx8vDz6vLz8PMg7+Dv7uosIO3uIO3lIOru7+jw8+XyIPTg6ev7LlxuXApbL1ldICDP7uTg4uv/5fIg5+Dv8O7xIO3gIO/u5PLi5fDm5OXt6OUg7+Xw5efg7+jx6CD04Onr7uIuXG5cClsvLVldIMfg7/Dg+Oji4OXyIO/u5PLi5fDm5OXt6OUg7eAg7+Xw5efg7+jx/CD04Onr7uIuXG5cClsvUF0gIMfg7/Dg+Oji4OXyIO/u5PLi5fDm5OXt6OUg5Ov/IOrg5uTu4+4g6u7v6PDz5ezu4+4g9ODp6+AuXG5cClsvTl0gIMjx7+7r/Ofz5fIg6u7w7vLq6OUg6Ozl7eAg9ODp6+7iIO/w6CDq7u/o8O7i4O3o6C5cblwKWy9VXSAgyu7v6PDz5fIg8u7r/OruIPLlIPTg6ev7LCDq7vLu8PvlIPPm5SDx8/nl8fLi8/7yIOIg6u7t5fft7ukg7+Dv6uUuXG5cClsvUl0gIM/l8OXn4O/o8fvi4OXyIPTg6ev7LCDk7vHy8+/t++Ug8u7r/OruIOTr/yD38uXt6P8uXG5cClsvSF0gIMru7+jw8+XyIPHq8Pvy++Ug6CDx6PHy5ezt++Ug9ODp6/suXG5cClsvQ10gIM/w7uTu6+bg5fIg8ODh7vLzLCDk4OblIOXx6+gg7/Du6Ofu+OvgIO746OHq4C5cblwKWy9BXSAgyu7v6PDz5fIg8u7r/OruIPLlIPTg6ev7LCDk6/8g6u7y7vD79SDz8fLg7e7i6+XtIODy8Ojh8/IgXCLg8PXo4u376VwiLlxuXApbL01dICDK7u/o8PPl8iDy7uv86u4g8uUg9ODp6/ssIOTr/yDq7vLu8Pv1IPPx8uDt7uLr5e0g4PLw6OHz8iBcIuDw9eji7fvpXCIsXG5cCiAgICAgIO/w6CD98u7sIODy8Ojh8/Ig8+Tg6//l8vH/LlxuXApbL0QgfCAvRDptLWQteV0gyu7v6PDz5fIg8u7r/OruIO3u4vvlIPTg6ev7IOjr6CDy5Swg6u7y7vD75SDh++voIOjn7OXt5e37XG5cCiAgICAgICAgICAgICAgICDv7vHr5SDz6uDn4O3t7ukg5ODy+y4gxfHr6CDk4PLgIO3lIPPq4Ofg7eAsIOru7+jw8+XyIPLu6/zq7lxuXAogICAgICAgICAgICAgICAg8uUg9ODp6/ssIOru8u7w++Ug7e7i5eUg4iDo8fXu5O3u6SDv4O/q5S5cbiIKfQo=