LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBHcmVlawogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGV3ZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTMpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0dSRUVLLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDhiXHg4MDAwXHgzODQ5XHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAxIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjMwIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MyIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiNzM3IgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjMwIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI3MyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwOCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDYiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICIwIgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQwOCIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjAiCiAgTE9DQUxFX0lORUdDVVJSICI4IgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIxIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAi8OwiCiAgTE9DQUxFX1MyMzU5ICLs7CIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJHUkMiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAixOX1IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgItTx6SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLU5fQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi0OXsIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgItDh8SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLT4eIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiyvXxIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkVMTCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIsnh7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgItbl4iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIszh8SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIsHw8SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIszh+iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIsnv9e0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLJ7/XrIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiwfXjIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi0+XwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIs/q9CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLN7+UiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAixOXqIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkdyZWVjZSIKICBMT0NBTEVfU0NVUlJFTkNZICKAIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICLE5fX03fHhIgogIExPQ0FMRV9TREFZTkFNRTIgItTx3/TnIgogIExPQ0FMRV9TREFZTkFNRTMgItTl9Nzx9OciCiAgTE9DQUxFX1NEQVlOQU1FNCAi0N3s8PTnIgogIExPQ0FMRV9TREFZTkFNRTUgItDh8eHz6uX13iIKICBMT0NBTEVfU0RBWU5BTUU2ICLT3OLi4fTvIgogIExPQ0FMRV9TREFZTkFNRTcgIsr18enh6t4iCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiR3JlZWNlIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkV1cm8iCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiR3JlZWsiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiRVVSIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJHUiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJlbCIKICBMT0NBTEVfU0xBTkdVQUdFICJHcmVlayIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZGRkZCwgZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIsnh7e/13PHp7/IiCiAgTE9DQUxFX1NNT05USE5BTUUyICLW5eLx7/Xc8env8iIKICBMT0NBTEVfU01PTlRITkFNRTMgIszc8fTp7/IiCiAgTE9DQUxFX1NNT05USE5BTUU0ICLB8PHf6+nv8iIKICBMT0NBTEVfU01PTlRITkFNRTUgIszc6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiye/97env8iIKICBMT0NBTEVfU01PTlRITkFNRTcgIsnv/evp7/IiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLB/ePv9fP07/IiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLT5fD03ezi8env8iIKICBMT0NBTEVfU01PTlRITkFNRTEwICLP6vT+4vHp7/IiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAize/d7OLx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIsTl6t3s4vHp7/IiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAixevr3OThIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIuX18f4iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi5evr5+3p6twiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZC9NL3l5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIuIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgImg6bW06c3MgdHQiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKfQo=