LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBLYXpha2gKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUxKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19LQVpBSywgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDIwM1x4ODAwMFx4Mzg0OFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwNFx4MDAwMFx4MDAwMFx4MDAwMlx4MDAwNFx4MDAwMFx4MDAwMFx4MDIwMiIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICI3IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MSIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODY2IgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjciCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODgwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDNmIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0M2YiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMSIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMyIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMyIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJLQVoiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAixPEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi0fEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi0fAiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiwfEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAixuwiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi0e0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAixuoiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiS0taIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSBMIlx4MDQ5YVx4MDQzMFx4MDRhMyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgTCJceDA0MTBceDA0OWJceDA0M2YiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLN4PMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0IEwiXHgwNDIxXHgwNGQ5XHgwNDQzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAizODsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAizODzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAi2LPrIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAi0uDsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSBMIlx4MDQ5YVx4MDQ0Ylx4MDQ0MCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwIEwiXHgwNDlhXHgwNDMwXHgwNDM3IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgTCJceDA0OWFceDA0MzBceDA0NDAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAixuXrIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkthemFraHN0YW4iCiAgTE9DQUxFX1NDVVJSRU5DWSAi0iIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSBMIlx4MDQxNFx4MDRhZlx4MDQzOVx4MDQ0MVx4MDQzNVx4MDQzZFx4MDQzMVx4MDQ1NiIKICBMT0NBTEVfU0RBWU5BTUUyICLR5enx5e3hsyIKICBMT0NBTEVfU0RBWU5BTUUzIEwiXHgwNDIxXHgwNGQ5XHgwNDQwXHgwNDQxXHgwNDM1XHgwNDNkXHgwNDMxXHgwNDU2IgogIExPQ0FMRV9TREFZTkFNRTQgIsHl6fHl7eGzIgogIExPQ0FMRV9TREFZTkFNRTUgTCJceDA0MTZceDA0YjFceDA0M2NceDA0MzAiCiAgTE9DQUxFX1NEQVlOQU1FNiAi0eXt4bMiCiAgTE9DQUxFX1NEQVlOQU1FNyAixuXq8eXt4bMiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiS2F6YWtoc3RhbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJUZW5nZSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJLYXpha2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiS1pUIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJLWiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJrayIKICBMT0NBTEVfU0xBTkdVQUdFICJLYXpha2giCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQgTU1NTSB5eXl5ICfmLiciCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICItIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgTCJceDA0OWJceDA0MzBceDA0YTNceDA0NDJceDA0MzBceDA0NDAiCiAgTE9DQUxFX1NNT05USE5BTUUyIEwiXHgwNDMwXHgwNDliXHgwNDNmXHgwNDMwXHgwNDNkIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAi7eDz8PvnIgogIExPQ0FMRV9TTU9OVEhOQU1FNCBMIlx4MDQ0MVx4MDRkOVx4MDQ0M1x4MDQ1Nlx4MDQ0MCIKICBMT0NBTEVfU01PTlRITkFNRTUgIuzg7PvwIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi7ODz8fvsIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAi+LPr5OUiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLy4Oz75yIKICBMT0NBTEVfU01PTlRITkFNRTkgTCJceDA0OWJceDA0NGJceDA0NDBceDA0M2FceDA0YWZceDA0MzlceDA0MzVceDA0M2EiCiAgTE9DQUxFX1NNT05USE5BTUUxMCBMIlx4MDQ5Ylx4MDQzMFx4MDQzN1x4MDQzMFx4MDQzZCIKICBMT0NBTEVfU01PTlRITkFNRTExIEwiXHgwNDliXHgwNDMwXHgwNDQwXHgwNDMwXHgwNDQ4XHgwNDMwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgTCJceDA0MzZceDA0MzVceDA0M2JceDA0NDJceDA0M2VceDA0OWJceDA0NDFceDA0MzBceDA0M2QiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIqAiCiAgTE9DQUxFX1NOQU1FICJray1LWiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FIEwiXHgwNDlhXHgwNDMwXHgwNDM3XHgwNDMwXHgwNDliXHgwNDQxXHgwNDQyXHgwNDMwXHgwNDNkIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgItIiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSBMIlx4MDQ5YVx4MDQzMFx4MDQzN1x4MDQzMFx4MDQ5YiIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC5NTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K