LyoKICogQ29weXJpZ2h0IDIwMDYgQW5kcmFzIEtvdmFjcwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0hVTkdBUklBTiwgU1VCTEFOR19ERUZBVUxUCgpNQUlOTUVOVSBNRU5VIERJU0NBUkRBQkxFIApCRUdJTgogICAgUE9QVVAgIiZG4WpsIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJtpqXHRDdHJsK04iLCAgICAgICAgICAgSURfRklMRV9ORVcKICAgICAgICBNRU5VSVRFTSAiJk1lZ255aXThc1x0Q3RybCtPIiwgICAgSURfRklMRV9PUEVOCiAgICAgICAgTUVOVUlURU0gIk0mZW506XNcdEN0cmwrUyIsICAgICAgIElEX0ZJTEVfU0FWRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS2ls6XDpcyIsICAgICAgSURfRklMRV9FWElUCiAgICBFTkQKICAgIFBPUFVQICJTeiZlcmtlc3p06XMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImVmlzc3phdm9u4XNcdEN0cmwrWiIsICAgICAgICBJRF9FRElUX1VORE8KICAgICAgICBNRU5VSVRFTSAiJkVs9XJlXHRDdHJsK1kiLCAgICAgICAgICAgICAgSURfRURJVF9SRURPCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIktpdibhZ+FzXHRDdHJsK1giLCAgICAgICAgICAgIElEX0VESVRfQ1VUCiAgICAgICAgTUVOVUlURU0gIk3hJnNvbOFzXHRDdHJsK0MiLCAgICAgICAgICAgIElEX0VESVRfQ09QWQogICAgICAgIE1FTlVJVEVNICImQmVpbGxlc3p06XNcdEN0cmwrViIsICAgICAgICBJRF9FRElUX1BBU1RFCiAgICAgICAgTUVOVUlURU0gIlT2ciZs6XNcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfQ0xFQVIKICAgICAgICBNRU5VSVRFTSAiTSZpbmRldCBraWplbPZsaVx0Q3RybCtBIiwgICAgSURfRURJVF9TRUxFQ1RBTEwKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ3NhayAmb2x2YXNoYXTzIiwgICAgICAgICAgICAgSURfRURJVF9SRUFET05MWQogICAgICAgIE1FTlVJVEVNICJN8yZkb3PtdHZhIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGSUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZFeHRy4WsiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIktpamVs9mzpcyAmaW5mb3Jt4WNp8yIsICAgICAgIElEX0VESVRfU0VMRUNUSU9OSU5GTwogICAgICAgICAgICBNRU5VSVRFTSAiS2FyYWt0ZXImZm9ybeF0dW0iLCAgICAgICAgICAgSURfRURJVF9DSEFSRk9STUFUCiAgICAgICAgICAgIE1FTlVJVEVNICJBJmxhcHJ0ZWxtZXpldHQga2FyYWt0ZXIgZm9ybeF0dW0iLCAgICAgICAgICAgSURfRURJVF9ERUZDSEFSRk9STUFUCiAgICAgICAgICAgIE1FTlVJVEVNICImQmVrZXpk6XMgZm9ybeF0dW0iLCAgICAgICAgICBJRF9FRElUX1BBUkFGT1JNQVQKICAgICAgICAgICAgTUVOVUlURU0gIlN6JvZ2ZWdzemVyeulzIiwgICAgICAgICAgICAgIElEX0VESVRfR0VUVEVYVAogICAgICAgIEVORAogICAgRU5ECiAgICBQT1BVUCAiRiZvcm3hdHVtIgogICAgQkVHSU4KICAgICAgICBQT1BVUCAiJkjhdHTpciIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJlJlbmRzemVyXHRDdHJsKzEiLCAgICAgICAgIElEX0JBQ0tfMQogICAgICAgICAgICBNRU5VSVRFTSAiJlPhcmfhYmFuIGvpcmVtXHRDdHJsKzIiLCAgSURfQkFDS18yCiAgICAgICAgRU5ECiAgICAgICAgUE9QVVAgIiZJZ2F67XThcyIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkJhbHJhXHRDdHJsK0wiLCAgICAgICAgIElEX0FMSUdOX0xFRlQKICAgICAgICAgICAgTUVOVUlURU0gIiZL9nrpcHJlXHRDdHJsK0UiLCAgICAgICBJRF9BTElHTl9DRU5URVIKICAgICAgICAgICAgTUVOVUlURU0gIiZKb2JicmFcdEN0cmwrUiIsICAgICAgICBJRF9BTElHTl9SSUdIVAogICAgICAgIEVORAogICAgRU5ECkVORAo=