LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBHcmVlawogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTMpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0dSRUVLLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDhiXHg4MDAwXHgzODQ5XHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAxIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjMwIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MyIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiNzM3IgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjMwIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI3MyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwOCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDYiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5NyIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDA4IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMCIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIvDsIgogIExPQ0FMRV9TMjM1OSAi7OwiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiR1JDIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIsTl9SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLU8ekiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi1OX0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgItDl7CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICLQ4fEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi0+HiIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIsr18SIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJFTEwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICLJ4e0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICLW5eIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLM4fEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLB8PEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICLM4foiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLJ7/XtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiye/16yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsH14yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgItPl8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLP6vQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAize/lIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIsTl6iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJHcmVlY2UiCiAgTE9DQUxFX1NDVVJSRU5DWSAigCIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAixOX19N3x4SIKICBMT0NBTEVfU0RBWU5BTUUyICLU8d/05yIKICBMT0NBTEVfU0RBWU5BTUUzICLU5fTc8fTnIgogIExPQ0FMRV9TREFZTkFNRTQgItDd7PD05yIKICBMT0NBTEVfU0RBWU5BTUU1ICLQ4fHh8+rl9d4iCiAgTE9DQUxFX1NEQVlOQU1FNiAi09zi4uH07yIKICBMT0NBTEVfU0RBWU5BTUU3ICLK9fHp4ereIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkdyZWVjZSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJFdXJvIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkdyZWVrIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkVVUiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiR1IiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZWwiCiAgTE9DQUxFX1NMQU5HVUFHRSAiR3JlZWsiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQsIGQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICLJ4e3v9dzx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi1uXi8e/13PHp7/IiCiAgTE9DQUxFX1NNT05USE5BTUUzICLM3PH06e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiwfDx3+vp7/IiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLM3Onv8iIKICBMT0NBTEVfU01PTlRITkFNRTYgIsnv/e3p7/IiCiAgTE9DQUxFX1NNT05USE5BTUU3ICLJ7/3r6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiwf3j7/Xz9O/yIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAi0+Xw9N3s4vHp7/IiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiz+r0/uLx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIs3v3ezi8env8iIKICBMT0NBTEVfU01PTlRITkFNRTEyICLE5erd7OLx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIuIgogIExPQ0FMRV9TTkFNRSAiZWwtR1IiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAixevr3OThIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIuX18f4iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVESVNQTEFZTkFNRSAi5evr5+3p6twgKMXr69zk4SkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi5evr5+3p6twiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NPUEVOVFlQRUxBTkdVQUdFVEFHICJFTEwgIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJHcmVrOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZC9NL3l5eXkiCiAgTE9DQUxFX1NTSE9SVFRJTUUgImg6bW0gdHQiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIuIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgImg6bW06c3MgdHQiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=