Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IFN5bnRhY29yZSBMTEMgqSAyMDE2LTIwMjEKLy8gCi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwovLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAovLyBTUERYLUZpbGVDb250cmlidXRvcjogU3ludGFjb3JlIExMQwovLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLy8gQGZpbGUgICAgICAgPHNjcjFfY3NyLnN2aD4KLy8vIEBicmllZiAgICAgIENTUiBtYXBwaW5nL2Rlc2NyaXB0aW9uIGZpbGUKLy8vCgpgaWZuZGVmIFNDUjFfQ1NSX1NWSApgZGVmaW5lIFNDUjFfQ1NSX1NWSAoKYGluY2x1ZGUgInNjcjFfYXJjaF9kZXNjcmlwdGlvbi5zdmgiCmBpbmNsdWRlICJzY3IxX2FyY2hfdHlwZXMuc3ZoIgpgaW5jbHVkZSAic2NyMV9pcGljLnN2aCIKCmBpZmRlZiBTQ1IxX1JWRV9FWFQKYGRlZmluZSBTQ1IxX0NTUl9SRURVQ0VEX0NOVApgZW5kaWYgLy8gU0NSMV9SVkVfRVhUCgpgaWZkZWYgU0NSMV9DU1JfUkVEVUNFRF9DTlQKYHVuZGVmIFNDUjFfTUNPVU5URU5fRU4KYGVuZGlmIC8vIFNDUjFfQ1NSX1JFRFVDRURfQ05UCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQ1NSIGFkZHJlc3NlcyAoc3RhbmRhcmQpCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gTWFjaGluZSBJbmZvcm1hdGlvbiBSZWdpc3RlcnMgKHJlYWQtb25seSkKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfTVZFTkRPUklEICAgICA9ICdoRjExOwpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9NQVJDSElEICAgICAgID0gJ2hGMTI7CnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX01JTVBJRCAgICAgICAgPSAnaEYxMzsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfTUhBUlRJRCAgICAgICA9ICdoRjE0OwoKLy8gTWFjaGluZSBUcmFwIFNldHVwIChyZWFkLXdyaXRlKQpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9NU1RBVFVTICAgICAgID0gJ2gzMDA7CnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX01JU0EgICAgICAgICAgPSAnaDMwMTsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfTUlFICAgICAgICAgICA9ICdoMzA0OwpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9NVFZFQyAgICAgICAgID0gJ2gzMDU7CgovLyBNYWNoaW5lIFRyYXAgSGFuZGxpbmcgKHJlYWQtd3JpdGUpCnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX01TQ1JBVENIICAgICAgPSAnaDM0MDsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfTUVQQyAgICAgICAgICA9ICdoMzQxOwpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9NQ0FVU0UgICAgICAgID0gJ2gzNDI7CnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX01UVkFMICAgICAgICAgPSAnaDM0MzsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfTUlQICAgICAgICAgICA9ICdoMzQ0OwoKLy8gTWFjaGluZSBDb3VudGVycy9UaW1lcnMgKHJlYWQtd3JpdGUpCmBpZm5kZWYgU0NSMV9DU1JfUkVEVUNFRF9DTlQKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfTUNZQ0xFICAgICAgICA9ICdoQjAwOwpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9NSU5TVFJFVCAgICAgID0gJ2hCMDI7CnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX01DWUNMRUggICAgICAgPSAnaEI4MDsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfTUlOU1RSRVRIICAgICA9ICdoQjgyOwpgZW5kaWYgLy8gU0NSMV9DU1JfUkVEVUNFRF9DTlQKCi8vIFNoYWRvdyBDb3VudGVycy9UaW1lcnMgKHJlYWQtb25seSkKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfVElNRSAgICAgICAgICA9ICdoQzAxOwpgaWZuZGVmIFNDUjFfQ1NSX1JFRFVDRURfQ05UCnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX0NZQ0xFICAgICAgICAgPSAnaEMwMDsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfSU5TVFJFVCAgICAgICA9ICdoQzAyOwpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9USU1FSCAgICAgICAgID0gJ2hDODE7CnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX0NZQ0xFSCAgICAgICAgPSAnaEM4MDsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfSU5TVFJFVEggICAgICA9ICdoQzgyOwpgZW5kaWYgLy8gU0NSMV9DU1JfUkVEVUNFRF9DTlQKCmBpZmRlZiBTQ1IxX0RCR19FTgovL3BhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX0RCR0NfU0NSQVRDSCAgPSAnaDdDODsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfSERVX01CQVNFICAgID0gJ2g3QjA7CnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX0hEVV9NU1BBTiAgICA9ICdoMDA0OyAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDIKYGVuZGlmIC8vIFNDUjFfREJHX0VOCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQ1NSIGFkZHJlc3NlcyAobm9uLXN0YW5kYXJkKQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYGlmZGVmIFNDUjFfTUNPVU5URU5fRU4KcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfTUNPVU5URU4gICAgICA9ICdoN0UwOwpgZW5kaWYgLy8gU0NSMV9NQ09VTlRFTl9FTgoKYGlmZGVmIFNDUjFfVERVX0VOCnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX1REVV9NQkFTRSAgICA9ICdoN0EwOwpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9URFVfTVNQQU4gICAgPSAnaDAwODsgICAgLy8gbXVzdCBiZSBwb3dlciBvZiAyCmBlbmRpZiAvLyBTQ1IxX1REVV9FTgoKYGlmZGVmIFNDUjFfSVBJQ19FTgpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9JUElDX0JBU0UgICAgID0gJ2hCRjA7CnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX0lQSUNfQ0lTViAgICAgPSAoU0NSMV9DU1JfQUREUl9JUElDX0JBU0UgKyBTQ1IxX0lQSUNfQ0lTViApOwpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9JUElDX0NJQ1NSICAgID0gKFNDUjFfQ1NSX0FERFJfSVBJQ19CQVNFICsgU0NSMV9JUElDX0NJQ1NSKTsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfSVBJQ19JUFIgICAgICA9IChTQ1IxX0NTUl9BRERSX0lQSUNfQkFTRSArIFNDUjFfSVBJQ19JUFIgICk7CnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX0lQSUNfSVNWUiAgICAgPSAoU0NSMV9DU1JfQUREUl9JUElDX0JBU0UgKyBTQ1IxX0lQSUNfSVNWUiApOwpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9JUElDX0VPSSAgICAgID0gKFNDUjFfQ1NSX0FERFJfSVBJQ19CQVNFICsgU0NSMV9JUElDX0VPSSAgKTsKcGFyYW1ldGVyIGJpdCBbU0NSMV9DU1JfQUREUl9XSURUSC0xOjBdIFNDUjFfQ1NSX0FERFJfSVBJQ19TT0kgICAgICA9IChTQ1IxX0NTUl9BRERSX0lQSUNfQkFTRSArIFNDUjFfSVBJQ19TT0kgICk7CnBhcmFtZXRlciBiaXQgW1NDUjFfQ1NSX0FERFJfV0lEVEgtMTowXSBTQ1IxX0NTUl9BRERSX0lQSUNfSURYICAgICAgPSAoU0NSMV9DU1JfQUREUl9JUElDX0JBU0UgKyBTQ1IxX0lQSUNfSURYICApOwpwYXJhbWV0ZXIgYml0IFtTQ1IxX0NTUl9BRERSX1dJRFRILTE6MF0gU0NSMV9DU1JfQUREUl9JUElDX0lDU1IgICAgID0gKFNDUjFfQ1NSX0FERFJfSVBJQ19CQVNFICsgU0NSMV9JUElDX0lDU1IgKTsKYGVuZGlmIC8vIFNDUjFfSVBJQ19FTgoKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBDU1IgZGVmaW5pdGlvbnMKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBHZW5lcmFsCnBhcmFtZXRlciBiaXQgW2BTQ1IxX1hMRU4tMTowXSBTQ1IxX1JTVF9WRUNUT1IgICAgICA9IFNDUjFfQVJDSF9SU1RfVkVDVE9SOwoKLy8gUmVzZXQgdmFsdWVzIFRCRApwYXJhbWV0ZXIgYml0IFNDUjFfQ1NSX01JRV9NU0lFX1JTVF9WQUwgICAgICAgICAgICAgPSAxJ2IwOwpwYXJhbWV0ZXIgYml0IFNDUjFfQ1NSX01JRV9NVElFX1JTVF9WQUwgICAgICAgICAgICAgPSAxJ2IwOwpwYXJhbWV0ZXIgYml0IFNDUjFfQ1NSX01JRV9NRUlFX1JTVF9WQUwgICAgICAgICAgICAgPSAxJ2IwOwoKcGFyYW1ldGVyIGJpdCBTQ1IxX0NTUl9NSVBfTVNJUF9SU1RfVkFMICAgICAgICAgICAgID0gMSdiMDsKcGFyYW1ldGVyIGJpdCBTQ1IxX0NTUl9NSVBfTVRJUF9SU1RfVkFMICAgICAgICAgICAgID0gMSdiMDsKcGFyYW1ldGVyIGJpdCBTQ1IxX0NTUl9NSVBfTUVJUF9SU1RfVkFMICAgICAgICAgICAgID0gMSdiMDsKCnBhcmFtZXRlciBiaXQgU0NSMV9DU1JfTVNUQVRVU19NSUVfUlNUX1ZBTCAgICAgICAgICA9IDEnYjA7CnBhcmFtZXRlciBiaXQgU0NSMV9DU1JfTVNUQVRVU19NUElFX1JTVF9WQUwgICAgICAgICA9IDEnYjE7CgovLyBNSVNBCmBkZWZpbmUgU0NSMV9SVkNfRU5DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgU0NSMV9YTEVOJ2gwMDA0CmBkZWZpbmUgU0NSMV9SVkVfRU5DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgU0NSMV9YTEVOJ2gwMDEwCmBkZWZpbmUgU0NSMV9SVklfRU5DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgU0NSMV9YTEVOJ2gwMTAwCmBkZWZpbmUgU0NSMV9SVk1fRU5DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgU0NSMV9YTEVOJ2gxMDAwCnBhcmFtZXRlciBiaXQgWzE6MF0gICAgICAgICAgICAgU0NSMV9NSVNBX01YTF8zMiAgICA9IDInZDE7CnBhcmFtZXRlciBiaXQgW2BTQ1IxX1hMRU4tMTowXSAgU0NSMV9DU1JfTUlTQSAgICAgICA9IChTQ1IxX01JU0FfTVhMXzMyIDw8IChgU0NSMV9YTEVOLTIpKQpgaWZuZGVmIFNDUjFfUlZFX0VYVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgU0NSMV9SVklfRU5DCmBlbHNlIC8vIFNDUjFfUlZFX0VYVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgU0NSMV9SVkVfRU5DCmBlbmRpZiAvLyBTQ1IxX1JWRV9FWFQKYGlmZGVmIFNDUjFfUlZDX0VYVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgU0NSMV9SVkNfRU5DCmBlbmRpZiAvLyBTQ1IxX1JWQ19FWFQKYGlmZGVmIFNDUjFfUlZNX0VYVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgU0NSMV9SVk1fRU5DCmBlbmRpZiAvLyBTQ1IxX1JWTV9FWFQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCi8vIE1WRU5ET1JJRApwYXJhbWV0ZXIgYml0IFtgU0NSMV9YTEVOLTE6MF0gU0NSMV9DU1JfTVZFTkRPUklEICAgPSBgU0NSMV9NVkVORE9SSUQ7CgovLyBNQVJDSElECnBhcmFtZXRlciBiaXQgW2BTQ1IxX1hMRU4tMTowXSBTQ1IxX0NTUl9NQVJDSElEICAgICA9IGBTQ1IxX1hMRU4nZDg7CgovLyBNSU1QSUQKcGFyYW1ldGVyIGJpdCBbYFNDUjFfWExFTi0xOjBdIFNDUjFfQ1NSX01JTVBJRCAgICAgID0gYFNDUjFfTUlNUElEOwoKLy8gTVNUQVRVUwpwYXJhbWV0ZXIgYml0IFsxOjBdIFNDUjFfQ1NSX01TVEFUVVNfTVBQICAgICAgICAgICAgPSAyJ2IxMTsKcGFyYW1ldGVyIGludCB1bnNpZ25lZCBTQ1IxX0NTUl9NU1RBVFVTX01JRV9PRkZTRVQgID0gMzsKcGFyYW1ldGVyIGludCB1bnNpZ25lZCBTQ1IxX0NTUl9NU1RBVFVTX01QSUVfT0ZGU0VUID0gNzsKcGFyYW1ldGVyIGludCB1bnNpZ25lZCBTQ1IxX0NTUl9NU1RBVFVTX01QUF9PRkZTRVQgID0gMTE7CgovLyBNVFZFQwovLyBiaXRzIFs1OjBdIGFyZSBhbHdheXMgemVybwpwYXJhbWV0ZXIgYml0IFtgU0NSMV9YTEVOLTE6U0NSMV9DU1JfTVRWRUNfQkFTRV9aRVJPX0JJVFNdIFNDUjFfQ1NSX01UVkVDX0JBU0VfUlNUX1ZBTCAgPSBTQ1IxX0NTUl9NVFZFQ19CQVNFX1dSX1JTVF9WQUw7CgpwYXJhbWV0ZXIgYml0IFNDUjFfQ1NSX01UVkVDX01PREVfRElSRUNUICAgICAgICAgICAgPSAxJ2IwOwpgaWZkZWYgU0NSMV9NVFZFQ19NT0RFX0VOCnBhcmFtZXRlciBiaXQgU0NSMV9DU1JfTVRWRUNfTU9ERV9WRUNUT1JFRCAgICAgICAgICA9IDEnYjE7CmBlbmRpZiAvLyBTQ1IxX01UVkVDX01PREVfRU4KCi8vIE1JRSwgTUlQCnBhcmFtZXRlciBpbnQgdW5zaWduZWQgU0NSMV9DU1JfTUlFX01TSUVfT0ZGU0VUICAgICA9IDM7CnBhcmFtZXRlciBpbnQgdW5zaWduZWQgU0NSMV9DU1JfTUlFX01USUVfT0ZGU0VUICAgICA9IDc7CnBhcmFtZXRlciBpbnQgdW5zaWduZWQgU0NSMV9DU1JfTUlFX01FSUVfT0ZGU0VUICAgICA9IDExOwoKYGlmZGVmIFNDUjFfTUNPVU5URU5fRU4KLy8gTUNPVU5URU4KcGFyYW1ldGVyIGludCB1bnNpZ25lZCBTQ1IxX0NTUl9NQ09VTlRFTl9DWV9PRkZTRVQgID0gMDsKcGFyYW1ldGVyIGludCB1bnNpZ25lZCBTQ1IxX0NTUl9NQ09VTlRFTl9JUl9PRkZTRVQgID0gMjsKYGVuZGlmIC8vIFNDUjFfTUNPVU5URU5fRU4KCi8vIE1DQVVTRQp0eXBlZGVmIGxvZ2ljIFtgU0NSMV9YTEVOLTI6MF0gICAgICB0eXBlX3NjcjFfY3NyX21jYXVzZV9lY192OwoKLy8gTUNZQ0xFLCBNSU5TVFJFVApgaWZkZWYgU0NSMV9DU1JfUkVEVUNFRF9DTlQKcGFyYW1ldGVyIGludCB1bnNpZ25lZCBTQ1IxX0NTUl9DT1VOVEVSU19XSURUSCAgICAgID0gMzI7CmBlbHNlIC8vIH5TQ1IxX0NTUl9SRURVQ0VEX0NOVApwYXJhbWV0ZXIgaW50IHVuc2lnbmVkIFNDUjFfQ1NSX0NPVU5URVJTX1dJRFRIICAgICAgPSA2NDsKYGVuZGlmIC8vIH5TQ1IxX0NTUl9SRURVQ0VEX0NOVAoKLy8gSFBNCnBhcmFtZXRlciBiaXQgWzY6MF0gU0NSMV9DU1JfQUREUl9IUE1DT1VOVEVSX01BU0sgICA9IDcnYjExMDAwMDA7CnBhcmFtZXRlciBiaXQgWzY6MF0gU0NSMV9DU1JfQUREUl9IUE1DT1VOVEVSSF9NQVNLICA9IDcnYjExMDAxMDA7CnBhcmFtZXRlciBiaXQgWzY6MF0gU0NSMV9DU1JfQUREUl9NSFBNQ09VTlRFUl9NQVNLICA9IDcnYjEwMTEwMDA7CnBhcmFtZXRlciBiaXQgWzY6MF0gU0NSMV9DU1JfQUREUl9NSFBNQ09VTlRFUkhfTUFTSyA9IDcnYjEwMTExMDA7CnBhcmFtZXRlciBiaXQgWzY6MF0gU0NSMV9DU1JfQUREUl9NSFBNRVZFTlRfTUFTSyAgICA9IDcnYjAwMTEwMDE7CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVHlwZXMgZGVjbGFyYXRpb24KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnR5cGVkZWYgZW51bSBsb2dpYyB7CiAgICBTQ1IxX0NTUl9SRVNQX09LLAogICAgU0NSMV9DU1JfUkVTUF9FUgpgaWZkZWYgU0NSMV9YUFJPUF9FTgogICAgLAogICAgU0NSMV9DU1JfUkVTUF9FUlJPUiA9ICd4CmBlbmRpZiAvLyBTQ1IxX1hQUk9QX0VOCn0gdHlwZV9zY3IxX2Nzcl9yZXNwX2U7CgpgZW5kaWYgLy8gU0NSMV9DU1JfU1ZICg==