LyoNCiAqIFdyaXR0ZW4gYnkgSi5ULiBDb25rbGluIDxqdGNAbmV0YnNkLm9yZz4uDQogKiBQdWJsaWMgZG9tYWluLg0KICogUmVtb3ZlZCBoZWFkZXIgZmlsZSBkZXBlbmRlbmN5IGZvciB1c2UgaW4gbGlibWluZ3dleC5hIGJ5DQogKiAgIERhbm55IFNtaXRoIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4NCiAqLw0KDQoJLmZpbGUJImxvZzFwZi5TIg0KCS50ZXh0DQoJLmFsaWduIDQNCgkvKiBUaGUgZnlsMnhwMSBjYW4gb25seSBiZSB1c2VkIGZvciB2YWx1ZXMgaW4NCgkgICAtMSArIHNxcnQoMikgLyAyIDw9IHggPD0gMSAtIHNxcnQoMikgLyAyDQoJICAgMC4yOSBpcyBhIHNhZmUgdmFsdWUuDQoJICovDQpsaW1pdDoJLmZsb2F0IDAuMjkNCm9uZToJLmZsb2F0IDEuMA0KLyoNCiAqIFVzZSB0aGUgZnlsMnhwMSBmdW5jdGlvbiB3aGVuIHRoZSBhcmd1bWVudCBpcyBpbiB0aGUgcmFuZ2UgLTAuMjkgdG8gMC4yOSwNCiAqIG90aGVyd2lzZSBmeWwyeCB3aXRoIHRoZSBuZWVkZWQgZXh0cmEgY29tcHV0YXRpb24uDQogKi8NCi5nbG9ibCBfbG9nMXBmOyANCgkuZGVmCV9sb2cxcGY7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZg0KX2xvZzFwZjoNCglmbGRsbjINCglmbGRzCTQoJWVzcCkNCglmeGFtDQoJZm5zdHN3DQoJZmxkCSVzdA0KCXNhaGYNCglqYwkzZgkJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mDQoNCjQ6CWZhYnMNCglmY29tcHMJbGltaXQNCglmbnN0c3cNCglzYWhmDQoJamMJMmYNCglmYWRkcwlvbmUNCglmeWwyeA0KCXJldA0KDQoyOglmeWwyeHAxDQoJcmV0DQoNCjM6CWpwCTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZg0KCWZzdHAJJXN0KDEpDQoJZnN0cAklc3QoMSkNCglyZXQNCg==