LyoKICogVmlldwogKiBKYXBhbmVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAxOTk4IERvdWdsYXMgUmlkZ3dheQogKiBDb3B5cmlnaHQgMjAwMyBNYXJjZWxvIER1YXJ0ZQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0pBUEFORVNFLCBTVUJMQU5HX0RFRkFVTFQKCi8qCiAqCiAqIE1lbnUKICoKICovCgpWSUVXIE1FTlUKQkVHSU4KICAgIFBPUFVQICKDdINAg0ODiygmRikiCiAgICBCRUdJTgoJTUVOVUlURU0gIopKgq0oJk8pIiwJCQlJRE1fT1BFTgogICAgICAgIE1FTlVJVEVNICKPSZe5KCZYKSIsICAgICAgICAgICAgICAgICAgICAgICBJRE1fRVhJVAogICAgRU5ECiAgICBQT1BVUCAig3CDkygmUCkiCiAgICBCRUdJTgogICAgICBNRU5VSVRFTSAig0WDQoOTg2iDRYLJjYeC7YK5gukoJlMpIiwgICAgICAgICAgICAgIElETV9TRVRfRVhUX1RPX1dJTgogICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgTUVOVUlURU0gIo22KCZMKSIsCQkJCUlETV9MRUZUCiAgICAgIE1FTlVJVEVNICKJRSgmUikiLAkJCUlETV9SSUdIVAogICAgICBNRU5VSVRFTSAij+MoJlUpIiwJCQkJSURNX1VQCiAgICAgIE1FTlVJVEVNICKJuigmRCkiLAkJCQlJRE1fRE9XTgogICAgRU5ECkVORAoKCi8qCiAqCiAqIEFjY2VsZXJhdG9yCiAqCiAqLwoKVklFVyBBQ0NFTEVSQVRPUlMKQkVHSU4KICAgICJRIiwgSURNX0VYSVQsIFZJUlRLRVksIENPTlRST0wKRU5ECgoKLyoKICoKICogU3RyaW5nIFRhYmxlCiAqCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19ERVNDUklQVElPTiAgICAgICAgICKVV4+Ag4GDXoN0g0CDQ4OLIINyg4WDQYFbIgpFTkQK