LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogRElTQ0xBSU1FUg0KKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCiogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCiogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQoqIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQoqIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQoqIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQoqIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCiogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCiogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCiogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQoqIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQoqIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQoqIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQoqIGZvbGxvd2luZyBsaW5rOg0KKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCioNCiogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogRmlsZSBOYW1lICAgICA6IG9zdG1faW9kZWZpbmUuaA0KKiBWZXJzaW9uICAgICAgIDogMC4wMQ0KKiBEZXZpY2UocykgICAgIDogQXJhZ29uDQoqIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjgNCiogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCiogICAgICAgICAgICAgICA6IA0KKiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KKiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIHZlY290ci5zDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KKiAgICAgICAgIDogMjcuMDcuMjAxMiAwLjAxCQmOUY1sjpGXv4FGc2VjMTFfT1NUTV8xMjA2MDEucGRmDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KI2lmbmRlZiBfX09TVE1fSU9ERUZJTkVfSF9fDQojZGVmaW5lIF9fT1NUTV9JT0RFRklORV9IX18NCg0KI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCg0Kc3RydWN0IHN0X29zdG1fbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IE9TVE0gICovDQogICAgICAgX1VEV09SRCBPU1RNbkNNUDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBPU1RNbkNNUCAgICAgKi8NCiAgICAgICBfVURXT1JEIE9TVE1uQ05UOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9TVE1uQ05UICAgICAqLw0KICAgICAgIF9VQllURSB3azBbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPU1RNblRFICAgICAgKi8NCiAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQogICAgICAgICAgICAgICAgICAgIF9VQllURSBPU1RNblRFOjE7ICAgICAgICAgICAvKiAgIE9TVE1uVEUgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgfSBPU1RNblRFOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICBfVUJZVEUgd2sxWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogT1NUTW5UUyAgICAgICovDQogICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCiAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1NUTW5UUzoxOyAgICAgICAgICAgLyogICBPU1RNblRTICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgIH0gT1NUTW5UUzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgX1VCWVRFIHdrMlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9TVE1uVFQgICAgICAqLw0KICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQogICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9TVE1uVFQ6MTsgICAgICAgICAgIC8qICAgT1NUTW5UVCAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICB9IE9TVE1uVFQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgIF9VQllURSB3azNbN107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPU1RNbkNUTCAgICAgKi8NCiAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQogICAgICAgICAgICAgICAgICAgIF9VQllURSBPU1RNbk1EMDoxOyAgICAgICAgICAvKiAgIE9TVE1uTUQwICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9TVE1uTUQxOjE7ICAgICAgICAgIC8qICAgT1NUTW5NRDEgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICB9IE9TVE1uQ1RMOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQoNCiNkZWZpbmUJT1NUTTAJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9vc3RtX24gKikweEZDRkVDMDAwKSAgIC8qIE9TVE0wIEFkZHJlc3MgKi8NCiNkZWZpbmUJT1NUTTEJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9vc3RtX24gKikweEZDRkVDNDAwKSAgIC8qIE9TVE0xIEFkZHJlc3MgKi8NCg0KDQojZW5kaWYgLyogX19PU1RNX0lPREVGSU5FX0hfXyAqLw0KDQovKiBFbmQgb2YgRmlsZSAqLw0K