LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgUGVvcGxlJ3MgcmVwdWJsaWMgb2YgQ2hpbmEKICoKICoJKGNoaW5lc2Ugc3RyaW5ncyBpbiA4Yml0IEd1b0JpYW8pCiAqCiAqIENvcHlyaWdodCAxOTk4IE1hcmNlbCBCYXVyCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCIwODA0IikKTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIrq60+8iKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwiQ2hpbmVzZSAoUGVvcGxlJ3MgcmVwdWJsaWMgb2YgQ2hpbmEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiemhpIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIrq60+8iKQovKiBMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCIiKSAqLwpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCLW0Ln6IikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiUGVvcGxlJ3MgcmVwdWJsaWMgb2YgQ2hpbmEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiQ0hOIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsItbQufoiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjA4MDQiKQovKiBMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiIikgKi8KTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPREVQQUdFLCI5MzYiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFLCI5MzYiKQovKiBMT0NWQUwoTE9DQUxFX1NMSVNULCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NERUNJTUFMLCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NUSE9VU0FORCwiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcpICovCi8qIExPQ1ZBTChMT0NBTEVfSURJR0lUUywiMiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSUxaRVJPLCIxIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSKSAqLwpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMsICIwMTIzNDU2Nzg5IikKTE9DVkFMKExPQ0FMRV9TQ1VSUkVOQ1ksItSqIikKTE9DVkFMKExPQ0FMRV9TSU5UTFNZTUJPTCwiQ05ZIikKLyogTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwiLCIpICovCi8qIExPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQLCIuIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcpICovCi8qIExPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykgKi8KLyogTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikgKi8KTE9DVkFMKExPQ0FMRV9TREFURSwiLSIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsInl5eS1NTS1kZCIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCJ5eXl5xOpNTU1NZC66xWRkZCIpCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQsICJISMqxbW231nNzw+siKQovKiBMT0NWQUwoTE9DQUxFX0lEQVRFLCIxIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTERBVEUpICovCkxPQ1ZBTChMT0NBTEVfSVRJTUUsIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04pICovCi8qIExPQ1ZBTChMT0NBTEVfSUNFTlRVUlkpICovCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSURBWUxaRVJPKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lNT05MWkVSTykgKi8KLyogTE9DVkFMKExPQ0FMRV9TMTE1OSwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfUzIzNTksICIiKSAqLwpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUsICIxIikKLyogTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUikgKi8KLyogTE9DVkFMKExPQ0FMRV9JRklSU1REQVlPRldFRUspICovCi8qIExPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUikgKi8KCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCLQx8ba0rsiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwi0MfG2rb+IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTMsItDHxtrI/SIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCLQx8bay8QiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNSwi0MfG2s7lIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTYsItDHxtrB+SIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCLQx8bazOwiKQoKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsItK7IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsIrb+IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIsj9IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsIsvEIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsIs7lIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsIsH5IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsIszsIikKCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEsItK71MIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCK2/tTCIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywiyP3UwiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsIsvE1MIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCLO5dTCIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNiwiwfnUwiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsIsbf1MIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCKwy9TCIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOSwivsXUwiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCLKrtTCIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsIsqu0rvUwiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCLKrrb+1MIiKQovKiBMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikgKi8KCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsIjHUwiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsIjLUwiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIjPUwiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsIjTUwiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIjXUwiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsIjbUwiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsIjfUwiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsIjjUwiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksIjnUwiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCIxMNTCIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsIjEx1MIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwiMTLUwiIpCi8qIExPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKSAqLwoKLyogTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04sICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTSUdOUE9TTiwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfRk9OVFNJR05BVFVSRSwgIiIpICovCkxPQ1ZBTChMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCJ6aCIpCkxPQ1ZBTChMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwiQ04iKQogCg==