LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBLb3JlYW4KICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSg5NDkpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19LT1JFQU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMmE3XHg4MDAwXHg3Y2Y5XHgzOWQ3XHgwMDEwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjgyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMCIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMiIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiOTQ5IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI5NDkiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiODIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODMzIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDEyIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjk0OSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDEyIgogIExPQ0FMRV9JTERBVEUgIjIiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjEiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjUiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjAiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjEiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICK/wMD8IgogIExPQ0FMRV9TMjM1OSAiv8DIxCIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJLT1IiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiv/kiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiyK0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAivPYiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiuPEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAisd0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAixeQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiwM8iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiS09SIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiMSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIjIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICIzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiNCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIjUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICI2IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiNyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIjgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICI5IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIjEwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIjExIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIjEyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIktvcmVhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgTCJceDIwYTkiCiAgTE9DQUxFX1NEQVRFICItIgogIExPQ0FMRV9TREFZTkFNRTEgIr/5v+TAzyIKICBMT0NBTEVfU0RBWU5BTUUyICLIrb/kwM8iCiAgTE9DQUxFX1NEQVlOQU1FMyAivPa/5MDPIgogIExPQ0FMRV9TREFZTkFNRTQgIrjxv+TAzyIKICBMT0NBTEVfU0RBWU5BTUU1ICKx3b/kwM8iCiAgTE9DQUxFX1NEQVlOQU1FNiAixeS/5MDPIgogIExPQ0FMRV9TREFZTkFNRTcgIsDPv+TAzyIKICBMT0NBTEVfU0RFQ0lNQUwgIi4iCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJLb3JlYSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJLb3JlYW4gV29uIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIktvcmVhbiIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJLUlciCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIktSIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImtvIgogIExPQ0FMRV9TTEFOR1VBR0UgIktvcmVhbiIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAieXl5eSez4icgTSe/+ScgZCfAzycgZGRkZCIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiMb/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiMr/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMyAiM7/5IgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiNL/5IgogIExPQ0FMRV9TTU9OVEhOQU1FNSAiNb/5IgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiNr/5IgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiN7/5IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiOL/5IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiOb/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIjEwv/kiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAiMTG/+SIKICBMT0NBTEVfU01PTlRITkFNRTEyICIxMr/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFNRSAia28tS1IiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAitOvH0bnOsbkiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiv/giCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAix9Gxub7uIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJIYW5nO0hhbmk7IgogIExPQ0FMRV9TU0hPUlREQVRFICJ5eXl5LU1NLWRkIgogIExPQ0FMRV9TU09SVE5BTUUgIkRpY3Rpb25hcnkiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJ0dCBoOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJ5eXl5J7PiJyBNJ7/5JyIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=