LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGYWVyb2VzZQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0ZBRVJPRVNFLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjI5OCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTIiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIyOTgiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwMjc3IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDM4IgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDA3OSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NjA1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMiIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MzgiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMTIiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICI0IgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJGUk8iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAibeFuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgInT9cyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJtaWsiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiaPNzIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgImZy7SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJsZXlnIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgInN1biIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJGT1MiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJqYW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJmZWIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJtYXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJhcHIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYWkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJqdW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJqdWwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhdWciCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJzZXAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2t0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIm5vdiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJkZXMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiRmFlcm9lIElzbGFuZHMiCiAgTE9DQUxFX1NDVVJSRU5DWSAia3IiCiAgTE9DQUxFX1NEQVRFICItIgogIExPQ0FMRV9TREFZTkFNRTEgIm3hbmFkYWd1ciIKICBMT0NBTEVfU0RBWU5BTUUyICJ0/XNkYWd1ciIKICBMT0NBTEVfU0RBWU5BTUUzICJtaWt1ZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FNCAiaPNzZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FNSAiZnLtZ2dqYWRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTYgImxleWdhcmRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTcgInN1bm51ZGFndXIiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiRmFlcm9lIElzbGFuZHMiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiRGFuaXNoIEtyb25lIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkZhZXJvZXNlIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkRLSyIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiRk8iCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZm8iCiAgTE9DQUxFX1NMQU5HVUFHRSAiRmFlcm9lc2UiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQuIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiamFudWFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZmVicnVhciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhcHLtbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1haSIKICBMT0NBTEVfU01PTlRITkFNRTYgImp1bmkiCiAgTE9DQUxFX1NNT05USE5BTUU3ICJqdWxpIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYXVndXN0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2VwdGVtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIm9rdG9iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibm92ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZGVzZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQU1FICJmby1GTyIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJG+HJveWFyIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIkRhbnNrIGtyb25lIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgImb4cm95c2t0IChG+HJveWFyKSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJm+HJveXNrdCIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU09QRU5UWVBFTEFOR1VBR0VUQUcgIkZPUyAiCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC1NTS15eXl5IgogIExPQ0FMRV9TU0hPUlRUSU1FICJISC5tbSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICIuIgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEgubW0uc3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=