LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBEdXRjaCAoQmVsZ2l1bSkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19EVVRDSCwgU1VCTEFOR19EVVRDSF9CRUxHSUFOCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDAxM1x4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIzMiIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTIiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIzMiIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiNTAwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwODEzIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NjA1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA4MTMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJCRUwiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAibWEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiZGkiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAid28iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiZG8iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAidnIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiemEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiem8iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiTkxCIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiamFuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiZmViIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAibXJ0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiYXByIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWVpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAianVuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAianVsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiYXVnIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAic2VwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIm9rdCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJub3YiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiZGVjIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkJlbGdpdW0iCiAgTE9DQUxFX1NDVVJSRU5DWSAigCIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAibWFhbmRhZyIKICBMT0NBTEVfU0RBWU5BTUUyICJkaW5zZGFnIgogIExPQ0FMRV9TREFZTkFNRTMgIndvZW5zZGFnIgogIExPQ0FMRV9TREFZTkFNRTQgImRvbmRlcmRhZyIKICBMT0NBTEVfU0RBWU5BTUU1ICJ2cmlqZGFnIgogIExPQ0FMRV9TREFZTkFNRTYgInphdGVyZGFnIgogIExPQ0FMRV9TREFZTkFNRTcgInpvbmRhZyIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJCZWxnaXVtIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkV1cm8iCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiRHV0Y2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiRVVSIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJCRSIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJubCIKICBMT0NBTEVfU0xBTkdVQUdFICJEdXRjaCAoQmVsZ2l1bSkiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQgZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImphbnVhcmkiCiAgTE9DQUxFX1NNT05USE5BTUUyICJmZWJydWFyaSIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hYXJ0IgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiYXByaWwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJtZWkiCiAgTE9DQUxFX1NNT05USE5BTUU2ICJqdW5pIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAianVsaSIKICBMT0NBTEVfU01PTlRITkFNRTggImF1Z3VzdHVzIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2VwdGVtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIm9rdG9iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibm92ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZGVjZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQU1FICJubC1CRSIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJCZWxnaesiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiZXVybyIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJOZWRlcmxhbmRzIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJMYXRuOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZC9NTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLiIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3QgRXVyb3BhIGVuIFZlcmVuaWdkZSBTdGF0ZW4iCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhYWwgRXVyb3BhIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aXNjaCIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmlla3MiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaXNjaCIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtzIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFucyIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFhbnMiCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25lZWwgQ2hpbmVlcyIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVmVyZWVudm91ZGlnZCBDaGluZWVzIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaXMiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJlZXV3cyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmlzY2giCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZWVzIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGlzY2giCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2Vvcmdpc2NoIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVlbnMiCn0K