LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBIdW5nYXJpYW4KICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUwKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19IVU5HQVJJQU4sIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMjdceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDBceDA0MDBceDAwMTJceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiMzYiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIyIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUwIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTIiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiMzYiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwZSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MiIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDBlIgogIExPQ0FMRV9JTERBVEUgIjIiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICJkZS4iCiAgTE9DQUxFX1MyMzU5ICJkdS4iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiSFVOIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIkgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiSyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJTemUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiQ3MiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiUCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJTem8iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiViIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJIVU4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJqYW4uIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiZmVici4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJt4XJjLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIuFwci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJt4WouIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiavpuLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImr6bC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhdWcuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAic3plcHQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIm9rdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibm92LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJkZWMuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkh1bmdhcnkiCiAgTE9DQUxFX1NDVVJSRU5DWSAiRnQiCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgImjpdGb1IgogIExPQ0FMRV9TREFZTkFNRTIgImtlZGQiCiAgTE9DQUxFX1NEQVlOQU1FMyAic3plcmRhIgogIExPQ0FMRV9TREFZTkFNRTQgImNz/HT2cnT2ayIKICBMT0NBTEVfU0RBWU5BTUU1ICJw6W50ZWsiCiAgTE9DQUxFX1NEQVlOQU1FNiAic3pvbWJhdCIKICBMT0NBTEVfU0RBWU5BTUU3ICJ2YXPhcm5hcCIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJIdW5nYXJ5IgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkh1bmdhcmlhbiBGb3JpbnQiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiSHVuZ2FyaWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkhVRiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiSFUiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiaHUiCiAgTE9DQUxFX1NMQU5HVUFHRSAiSHVuZ2FyaWFuIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJ5eXl5LiBNTU1NIGQuIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYW514XIiCiAgTE9DQUxFX1NNT05USE5BTUUyICJmZWJydeFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibeFyY2l1cyIKICBMT0NBTEVfU01PTlRITkFNRTQgIuFwcmlsaXMiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJt4Wp1cyIKICBMT0NBTEVfU01PTlRITkFNRTYgImr6bml1cyIKICBMT0NBTEVfU01PTlRITkFNRTcgImr6bGl1cyIKICBMT0NBTEVfU01PTlRITkFNRTggImF1Z3VzenR1cyIKICBMT0NBTEVfU01PTlRITkFNRTkgInN6ZXB0ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2t082JlciIKICBMT0NBTEVfU01PTlRITkFNRTExICJub3ZlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEyICJkZWNlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAioCIKICBMT0NBTEVfU05BTUUgImh1LUhVIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIk1hZ3lhcm9yc3rhZyIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJGb3JpbnQiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiTWFneWFyIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgInl5eXkuIE1NLiBkZC4iCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICKgIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggInl5eXkuIE1NTU0iCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K