IyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiMqILDmyKjL+dPQIChDKTIwMTUsINbQ0MvNqNG2ucm33dPQz965q8u+oaMNCiMqIA0KIyogzsS8/sP7s8Y6ICAgICBNYWtlZmlsZQ0KIyogzsS8/rHqyrY6ICAgICBNYWtlZmlsZQ0KIyogxNrI3dWq0qo6ICAgICBNYWtlZmlsZSBvZiBaVEUgbGlicmFyeXMNCiMqIMq508O3vbeoOiAgICAgdm9pZA0KIyogDQojKiDQ3rjEyNXG2iAgICAgICAgsOaxvrrFICAgICAg0N64xLHqvMcgICAgICAgINDeuMTIyyAgICAgICAgICDQ3rjExNrI3Q0KIyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMqIDIwMTgvMDEvMTUgICAgIFYxLjAgICAgICAgIENyZWF0ZSAgICAgICAgICBjaGVudGlhbm1pbmcgICAgICAgILS0vagNCiMqIA0KIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojIGluY2x1ZGUgWlRFIGxpYnJhcnkgbWFrZWZpbGUNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQppbmNsdWRlICQoQ09NTU9OX01LKQ0KDQoNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojIGxpYnJhcnkNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpMSUJfU0hBUkVEID0gbGlidGlueWFsc2Euc28NCkxJQl9TVEFUSUMgPSBsaWJ0aW55YWxzYS5hDQoNCmlmZXEgKCQoX0FQUF9BVURJT19UWVBFXyksd2F0Y2hfY2FwKQ0KT0JKUyA9IG1peGVyLm8gcGNtLm8gbWl4ZXJfY3RybF93YXRjaF9jYXAubw0KZWxzZQ0KT0JKUyA9IG1peGVyLm8gcGNtLm8gYXVkaW9fbWl4ZXJfY3RybC5vDQplbmRpZg0KQ0ZMQUdTICs9IC1nDQpMREZMQUdTICs9IC1scHRocmVhZA0KDQojIyMjIyMjIyMjIyMjI1VTRVIgQ09NSVpFIEVORCMjIyMjIyMjIyMjIyMjIyMjIw0KDQpDRkxBR1MgKz0gLUkkKHp0ZV9saWJfcGF0aCkvbGlidGlueWFsc2EvaW5jbHVkZQ0KQ0ZMQUdTICs9IC1JJChTVEFHRURJUikvaW5jbHVkZQ0KQ0ZMQUdTICs9IC1JJChBUFBfRElSKS9pbmNsdWRlDQpDRkxBR1MgKz0gLUkkKExJTlVYX0RJUikvaW5jbHVkZQ0KQ0ZMQUdTICs9IC1mUElDDQoNCkxERkxBR1NfU0hBUkVEICs9IC1zaGFyZWQNCg0KDQojKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KIyBjb21wIHRlc3QgYXBwIGFuZCANCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCQ0KRVhFQ190aW55cGxheSA9IHRpbnlwbGF5IA0KRVhFQ190aW55Y2FwID0gdGlueWNhcCANCkVYRUNfdGlueW1peCA9IHRpbnltaXggDQpFWEVDX3RpbnlwY21pbmZvID0gdGlueWluZm8gDQpFWEVDX2Fsc2F0ZXN0ID0gYWxzYXRlc3QJDQpFWEVDX3ZvbHRlc3QgPSB2b2x0ZXN0CQ0KCQ0KIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiMgb2JqZWN0cw0KIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCnRpbnlwbGF5X09CSkVDVFMgKz0gbWl4ZXIubyBwY20ubyB0aW55cGxheS5vDQp0aW55Y2FwX09CSkVDVFMgKz0gbWl4ZXIubyBwY20ubyB0aW55Y2FwLm8NCnRpbnltaXhfT0JKRUNUUyArPSBtaXhlci5vIHBjbS5vIHRpbnltaXgubw0KdGlueXBjbWluZm9fT0JKRUNUUyArPSBtaXhlci5vIHBjbS5vIHRpbnlwY21pbmZvLm8NCmFsc2F0ZXN0X09CSkVDVFMgKz0gbWl4ZXIubyBwY20ubyBhbHNhdGVzdC5vDQp2b2x0ZXN0X09CSkVDVFMgKz0gdm9sX3Rlc3QubyANCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNmb3IgbGludXgjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQppZmVxICgkKFYzUEhPTkVfVFlQRSksIEszMTgpDQoJQ0ZMQUdTICs9IC1EX1VTRV83NTIwVjNfUEhPTkVfVFlQRV9LMzE4DQplbmRpZg0KaWZlcSAoJChWM1BIT05FX1RZUEUpLCBDMzFGKQ0KCUNGTEFHUyArPSAtRF9VU0VfNzUyMFYzX1BIT05FX1RZUEVfQzMxRg0KZW5kaWYNCmlmZXEgKCQoVjNQSE9ORV9UWVBFKSwgWFJTRCkNCglDRkxBR1MgKz0gLURfVVNFXzc1MjBWM19QSE9ORV9UWVBFX1hSU0QNCmVuZGlmDQppZmVxICgkKFYzUEhPTkVfVFlQRSksIEZXUCkNCglDRkxBR1MgKz0gLURfVVNFXzc1MjBWM19QSE9ORV9UWVBFX0ZXUA0KZW5kaWYNCmlmZXEgKCQoVjNQSE9ORV9UWVBFKSwgV1RXRCkNCglDRkxBR1MgKz0gLURfVVNFXzc1MjBWM19QSE9ORV9UWVBFX1dUV0QNCmVuZGlmDQoNCg0KQ0ZMQUdTCSs9IC1JLi9pbmNsdWRlLw0KQ0ZMQUdTICs9IC1nIC1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24NClNIQVJFREZMQUcgOj0gLXNoYXJlZCAtbGMNCkxETElCUyArPSAtTCQoTElCX0RJUikvbGlidGlueWFsc2ENCkxETElCUyArPSAtbHRpbnlhbHNhDQoNCmFsbDogJChMSUJfU1RBVElDKSAkKExJQl9TSEFSRUQpICQoRVhFQ190aW55cGxheSkgJChFWEVDX3RpbnljYXApICQoRVhFQ190aW55bWl4KSAkKEVYRUNfdGlueXBjbWluZm8pIA0KDQokKExJQl9TVEFUSUMpIDogJChPQkpTKQ0KCSQoQVIpIHJjcyAkKExJQl9TVEFUSUMpICQoT0JKUykNCg0KJChMSUJfU0hBUkVEKTogJChPQkpTKQ0KCSQoQ0MpICQoTERGTEFHUykgJChMREZMQUdTX1NIQVJFRCkgLW8gJEAgJF4NCg0KCQ0KJChFWEVDX3RpbnlwbGF5KTogJCh0aW55cGxheV9PQkpFQ1RTKQ0KCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJCh0aW55cGxheV9PQkpFQ1RTKSAtV2wsLS1zdGFydC1ncm91cCAkKExETElCUykgLVdsLC0tZW5kLWdyb3VwDQokKEVYRUNfdGlueWNhcCk6ICQodGlueWNhcF9PQkpFQ1RTKQ0KCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJCh0aW55Y2FwX09CSkVDVFMpIC1XbCwtLXN0YXJ0LWdyb3VwICQoTERMSUJTKSAtV2wsLS1lbmQtZ3JvdXANCiQoRVhFQ190aW55bWl4KTogJCh0aW55bWl4X09CSkVDVFMpDQoJJChDQykgJChMREZMQUdTKSAtbyAkQCAkKHRpbnltaXhfT0JKRUNUUykgLVdsLC0tc3RhcnQtZ3JvdXAgJChMRExJQlMpIC1XbCwtLWVuZC1ncm91cA0KJChFWEVDX3RpbnlwY21pbmZvKTogJCh0aW55cGNtaW5mb19PQkpFQ1RTKQ0KCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJCh0aW55cGNtaW5mb19PQkpFQ1RTKSAtV2wsLS1zdGFydC1ncm91cCAkKExETElCUykgLVdsLC0tZW5kLWdyb3VwDQojJChFWEVDX2Fsc2F0ZXN0KTogJChhbHNhdGVzdF9PQkpFQ1RTKQ0KIwkkKENDKSAkKExERkxBR1MpIC1vICRAICQoYWxzYXRlc3RfT0JKRUNUUykgLVdsLC0tc3RhcnQtZ3JvdXAgJChMRExJQlMpIC1XbCwtLWVuZC1ncm91cA0KIyQoRVhFQ192b2x0ZXN0KTogJCh2b2x0ZXN0X09CSkVDVFMpDQojCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJCh2b2x0ZXN0X09CSkVDVFMpIC1XbCwtLXN0YXJ0LWdyb3VwICQoTERMSUJTKSAtbG0gLVdsLC0tZW5kLWdyb3VwDQoJDQpjbGVhbjoNCglybSAtZiAkKHRpbnlwbGF5X09CSkVDVFMpICQodGlueWNhcF9PQkpFQ1RTKSAkKHRpbnltaXhfT0JKRUNUUykgJCh0aW55cGNtaW5mb19PQkpFQ1RTKSAkKGxpYl9PQkpFQ1RTKSAkKExJQl9TSEFSRUQpICQoTElCX1NUQVRJQykgJChFWEVDX3RpbnlwbGF5KSAkKEVYRUNfdGlueWNhcCkgJChFWEVDX3RpbnltaXgpICQoRVhFQ190aW55cGNtaW5mbykgJChFWEVDX2Fsc2F0ZXN0KSAqLmVsZiAqLmdkYiAqLm8gY29yZQ0KDQpyb21mczoNCgkkKFJPTUZTSU5TVCkgJChMSUJfU0hBUkVEKSAvbGliLyQoTElCX1NIQVJFRCkNCgkkKFJPTUZTSU5TVCkgJChFWEVDX3RpbnlwbGF5KSAvYmluLyQoRVhFQ190aW55cGxheSkNCgkkKFJPTUZTSU5TVCkgJChFWEVDX3RpbnljYXApICAJL2Jpbi8kKEVYRUNfdGlueWNhcCkNCgkkKFJPTUZTSU5TVCkgJChFWEVDX3RpbnltaXgpICAJL2Jpbi8kKEVYRUNfdGlueW1peCkNCgkjJChST01GU0lOU1QpICQoRVhFQ190aW55cGNtaW5mbykgL2Jpbi8kKEVYRUNfdGlueXBjbWluZm8pDQoJIyQoUk9NRlNJTlNUKSAkKEVYRUNfdm9sdGVzdCkgL2Jpbi8kKEVYRUNfdm9sdGVzdCkNCgljcCAtdiAkKEVYRUNfdGlueXBsYXkpICAgICQoQVBQX0RJUikvdGVzdF90b29scy8NCgljcCAtdiAkKEVYRUNfdGlueWNhcCkgICAgICQoQVBQX0RJUikvdGVzdF90b29scy8NCgljcCAtdiAkKEVYRUNfdGlueW1peCkgICAgICQoQVBQX0RJUikvdGVzdF90b29scy8NCgljcCAtdiAkKEVYRUNfdGlueXBjbWluZm8pICQoQVBQX0RJUikvdGVzdF90b29scy8NCiMJJChST01GU0lOU1QpICQoRVhFQ19hbHNhdGVzdCkgIAkJL2Jpbi8kKEVYRUNfYWxzYXRlc3QpDQoJDQoNCiMJY3AgJChFWEVDX3RpbnlwbGF5KSAgICAkKEVYRUNfdGlueXBsYXkpLmVsZg0KIwljcCAkKEVYRUNfdGlueWNhcCkgICAgICQoRVhFQ190aW55Y2FwKS5lbGYNCg0KIwljcCAkKEVYRUNfdGlueW1peCkgICAgICQoRVhFQ190aW55bWl4KS5lbGYNCiMJY3AgJChFWEVDX3RpbnlwY21pbmZvKSAkKEVYRUNfdGlueXBjbWluZm8pLmVsZg0KIwljcCAkKEVYRUNfYWxzYXRlc3QpICAgICQoRVhFQ19hbHNhdGVzdCkuZWxmDQo=