Z3JvdXAgYmFzaWMgIkJhc2ljIFRlc3RzIgoKCWNhc2UgY29ycmVjdF9waGFzZXMKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjZGVmaW5lIGUgKzEKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW1lZGl1bXAgaW50IG4gPSAxZTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9pZGVudGlmaWVyCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2RlZmluZSBlICsxCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQltZWRpdW1wIGludCAxeHl6ID0gMTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbnVsbF9kaXJlY3RpdmUKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMC4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoKCQkJIwoJCSMgLy8gY29tbWVudAoJLypzZmQqLwkJIyAvKiAqLwoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IDAuMDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9kaXJlY3RpdmUKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjZGVmaW4gQUFBCgkJCSR7REVDTEFSQVRJT05TfQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtaXNzaW5nX2lkZW50aWZpZXIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjZGVmaW5lCgkJCSR7REVDTEFSQVRJT05TfQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlbXB0eV9vYmplY3QKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gLTEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCSMgZGVmaW5lIFZBTFVFCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMVUUgLSAxLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGVtcHR5X2Z1bmN0aW9uCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IC0xLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgoJCQkjIGRlZmluZSBWQUxVRShhKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTFVFKDIuMCkgLSAxLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGVtcHR5X2RpcmVjdGl2ZQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgoJCQkjCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gMS4wOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBiYXNpYwoKZ3JvdXAgZGVmaW5pdGlvbnMgIlN5bWJvbCBEZWZpbml0aW9uIFRlc3RzIgoKCWNhc2UgZGVmaW5lX3ZhbHVlX2FuZF9mdW5jdGlvbgoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA2LjA7IH0KCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TOnNpbmdsZS1saW5lfQoJCQkjCWRlZmluZQkJVkFMVUUJCQkoMS41ICsgMi41KQoJCQkjCWRlZmluZQkJRlVOQ1RJT04oX19MSU5FX18sIGIpCV9fTElORV9fK2IKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBGVU5DVElPTihWQUxVRSwgKCgwLjIpICsgMS44KSApOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZmluZV9vYmplY3RfaW52YWxpZF9zeW50YXgKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI2RlZmluZQkJVkFMCQkJMi4wCgkJCSN1bmRlZgkJVkFMCXNkZmxramZkcwoJCQkjZGVmaW5lCQlWQUwJCQkxLjAKCQkJJHtERUNMQVJBVElPTlN9CgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChWQUwpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW5kZWZpbmVfaW52YWxpZF9vYmplY3RfMQoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjdW5kZWYgX19MSU5FX18KCQkJJHtERUNMQVJBVElPTlN9CgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChfX0xJTkVfXyk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZmluZV9pbnZhbGlkX29iamVjdF8yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSN1bmRlZiBfX0ZJTEVfXwoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KF9fRklMRV9fKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuZGVmaW5lX2ludmFsaWRfb2JqZWN0XzMKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI3VuZGVmIF9fVkVSU0lPTl9fCgkJCSR7REVDTEFSQVRJT05TfQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoX19WRVJTSU9OX18pOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW5kZWZpbmVfaW52YWxpZF9vYmplY3RfNAoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjdW5kZWYgR0xfRVMKCQkJJHtERUNMQVJBVElPTlN9CgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChHTF9FUyk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZmluZV9mdW5jdGlvbgoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI2RlZmluZQkJRlVOQ1RJT04oYSxiKSBhK2IKCQkJI3VuZGVmCQlGVU5DVElPTgoJCQkjZGVmaW5lCQlGVU5DVElPTihhLGIpIGEtYgoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBGVU5DVElPTigzLjAsIDIuMCk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCmVuZCAjIGRlZmluaXRpb25zCgpncm91cCBpbnZhbGlkX2RlZmluaXRpb25zICJJbnZhbGlkIERlZmluaXRpb24gVGVzdHMiCgoJY2FzZSBkZWZpbmVfbm9uX2lkZW50aWZpZXIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI2RlZmluZSAxMjMgMzIxCgkJCSR7REVDTEFSQVRJT05TfQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuZGVmX25vbl9pZGVudGlmaWVyXzEKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI3VuZGVmIDEyMwoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZl9ub25faWRlbnRpZmllcl8yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSN1bmRlZiBmb28uYmFyCgkJCSR7REVDTEFSQVRJT05TfQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgplbmQgIyBpbnZhbGlkX2RlZmluaXRpb25zCgpncm91cCBvYmplY3RfcmVkZWZpbml0aW9ucyAiT2JqZWN0IFJlZGVmaW5pdGlvbiBUZXN0cyIKCgljYXNlIGludmFsaWRfb2JqZWN0X2lkZW50CgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBBQUEJCQkyLjAKCQkJIyBkZWZpbmUgQUFBQQkJCTIuMQoJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMS4wKQoJCQkjIGRlZmluZSBWQUxVRSAoQUFBQSAtIDEuMCkKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KFZBTFVFKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfb2JqZWN0X3doaXRlc3BhY2UKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEFBQQkJCTIuMAoJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMS4wKQoJCQkjIGRlZmluZSBWQUxVRSAoQUFBLSAxLjApCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChWQUxVRSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX29iamVjdF9vcAoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJIyBkZWZpbmUgQUFBCQkJMi4wCgkJCSMgZGVmaW5lIFZBTFVFIChBQUEgLSAxLjApCgkJCSMgZGVmaW5lIFZBTFVFIChBQUEgKyAxLjApCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChWQUxVRSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX29iamVjdF9mbG9hdHZhbF8xCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBBQUEJCQkyLjAKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMCkKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMSkKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KFZBTFVFKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfb2JqZWN0X2Zsb2F0dmFsXzIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEFBQQkJCTIuMAoJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMS4wKQoJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMS4wZS0xKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoVkFMVUUpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9vYmplY3RfaW50dmFsXzEKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEFBQQkJCTIKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEpCgkJCSMgZGVmaW5lIFZBTFVFIChBQUEgLSAyKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoVkFMVUUpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9vYmplY3RfaW50dmFsXzIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEFBQQkJCTIKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEpCgkJCSMgZGVmaW5lIFZBTFVFIChBQUEgLSAweDEpCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChWQUxVRSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWRlZmluZV9vYmplY3RfMQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA2LjA7IH0KCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjCWRlZmluZSAgVkFMMSAxLjAKCQkJI2RlZmluZQkJVkFMMiAyLjAKCgkJCSNkZWZpbmUgUkVTMiAoUkVTMSAqIFZBTDIpCgkJCSNkZWZpbmUgUkVTMQkoVkFMMiAvIFZBTDEpCgkJCSNkZWZpbmUgUkVTMgkoUkVTMSAqIFZBTDIpCgkJCSNkZWZpbmUgVkFMVUUJKFJFUzIgKyBSRVMxKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTFVFOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWRlZmluZV9vYmplY3RfaWZkZWYKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJI2RlZmluZSBBREVGSU5FIDEKCQkJI2RlZmluZSBBREVGSU5FIDEKCgkJCSNpZmRlZiBBREVGSU5FCgkJCSNkZWZpbmUgVkFMVUUgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMVUUgMC4wCgkJCSNlbmRpZgoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTFVFOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWRlZmluZV9vYmplY3RfdW5kZWZfaWZkZWYKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJI2RlZmluZSBBREVGSU5FIDEKCQkJI2RlZmluZSBBREVGSU5FIDEKCQkJI3VuZGVmIEFERUZJTkUKCgkJCSNpZmRlZiBBREVGSU5FCgkJCSNkZWZpbmUgVkFMVUUgMC4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMVUUgMS4wCgkJCSNlbmRpZgoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTFVFOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWRlZmluZV9vYmplY3RfaWZuZGVmCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgQURFRklORSAxCgkJCSNkZWZpbmUgQURFRklORSAxCgoJCQkjaWZuZGVmIEFERUZJTkUKCQkJI2RlZmluZSBWQUxVRSAwLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUxVRSAxLjAKCQkJI2VuZGlmCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMVUU7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHJlZGVmaW5lX29iamVjdF9kZWZpbmVkXzEKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJI2RlZmluZSBBREVGSU5FIDEKCQkJI2RlZmluZSBBREVGSU5FIDEKCgkJCSNpZiBkZWZpbmVkKEFERUZJTkUpCgkJCSNkZWZpbmUgVkFMVUUgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMVUUgMC4wCgkJCSNlbmRpZgoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTFVFOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWRlZmluZV9vYmplY3RfZGVmaW5lZF8yCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgQURFRklORSAxCgkJCSNkZWZpbmUgQURFRklORSAxCgoJCQkjaWYgZGVmaW5lZCBBREVGSU5FCgkJCSNkZWZpbmUgVkFMVUUgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMVUUgMC4wCgkJCSNlbmRpZgoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTFVFOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWRlZmluZV9vYmplY3RfY29tbWVudAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA2LjA7IH0KCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjCWRlZmluZSAgVkFMMSAxLjAKCQkJI2RlZmluZQkJVkFMMiAyLjAKCgkJCSNkZWZpbmUgUkVTMiAvKiBmZHNqa2xmZHNqa2wgZHNmamtoZmRzamtoIGZkc2prbGhmZHNqa2ggKi8gKFJFUzEgKiBWQUwyKQoJCQkjZGVmaW5lIFJFUzEJKFZBTDIgLyBWQUwxKQoJCQkjZGVmaW5lIFJFUzIJLyogZXdybGtqaHNhZGYgKi8gKFJFUzEgKiBWQUwyKQoJCQkjZGVmaW5lIFZBTFVFCShSRVMyICsgUkVTMSkKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUxVRTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVkZWZpbmVfb2JqZWN0X211bHRpbGluZV9jb21tZW50CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDYuMDsgfQoKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMJZGVmaW5lICBWQUwxIDEuMAoJCQkjZGVmaW5lCQlWQUwyIDIuMAoKCQkJI2RlZmluZSBSRVMyIC8qIGZkc2prbGZkc2prbAoJCQkJCQkJZHNmamtoZmRzamtoCgkJCQkJCQlmZHNqa2xoZmRzamtoICovIChSRVMxICogVkFMMikKCQkJI2RlZmluZSBSRVMxCShWQUwyIC8gVkFMMSkKCQkJI2RlZmluZSBSRVMyCS8qIGV3cmxramhzYWRmICovIChSRVMxICogVkFMMikKCQkJI2RlZmluZSBWQUxVRQkoUkVTMiArIFJFUzEpCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMVUU7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCmVuZCAjIG9iamVjdF9yZWRlZmluaXRpb25zCgpncm91cCBpbnZhbGlkX3JlZGVmaW5pdGlvbnMgIkludmFsaWQgUmVkZWZpbml0aW9ucyBUZXN0cyIKCgljYXNlIGludmFsaWRfaWRlbnRpZmllcl8xCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgaW50IG91dDAgPSAxOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBfX1ZBTFVFX18JMQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IF9fVkFMVUVfXzsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9pZGVudGlmaWVyXzIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEdMX1ZBTFVFCTEuMAoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoR0xfVkFMVUUpOwoJCQl9CgkJIiIKCWVuZAoKZW5kICMgaW52YWxpZF9yZWRlZmluaXRpb25zCgpncm91cCBjb21tZW50cyAiQ29tbWVudCBUZXN0cyIKCgljYXNlIG11bHRpbGluZV9jb21tZW50X2RlZmluZQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA0LjI7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgVkFMVUUgLyogY3VycmVudAoJCQkJCQl2YWx1ZSAqLyA0LjIKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUxVRTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbmVzdGVkX2NvbW1lbnQKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gMC4wOwoJCQkJLyogLyogKi8KCQkJCW91dDAgPSAxLjA7CgkJCQkvLyAqLwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2NvbW1lbnQKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCS8qIC8qICovICovCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gMS4wOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW50ZXJtaW5hdGVkX2NvbW1lbnRfMQoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJLyoKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9jb21tZW50XzIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkvKgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJfQoJCSIiCgllbmQKCmVuZCAjIGNvbW1lbnRzCgpncm91cCBsaW5lX2NvbnRpbnVhdGlvbiAiTGluZSBDb250aW51YXRpb24gVGVzdHMiCgoJY2FzZSBjb21tZW50CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbiAoKQoJCQl7CgkJCQlvdXQwID0gMS4wOwoJCQkJLy8gY29tbWVudCBcXAoJCQkJb3V0MCA9IC0xLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGRlZmluZQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgQShYKSBcXAoJCQkJKC0xLjAqKFgpKQoKCQkJdm9pZCBtYWluICgpCgkJCXsKCQkJCW91dDAgPSBBKC0xLjApOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBwcmVwcm9jZXNzaW5nX3Rva2VuCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJI2RlZlxcCgkJCWluZSBBKFgpICgtMS4wKihYKSkKCgkJCXZvaWQgbWFpbiAoKQoJCQl7CgkJCQlvdXQwID0gQSgtMS4wKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdG9rZW4KCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoKCQkJdm9pZCBtYWluICgpCgkJCXsKCQkJCWZsb2F0IGZcXAoJCQlvbyA9IDEuMDsKCQkJCW91dDAgPSBmb287CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG1pZGRsZV9vZl9saW5lCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJI2RlZmluZSBBIGEgXFwgYgoJCQkjZGVmaW5lIEIgMS4wCgoJCQl2b2lkIG1haW4gKCkKCQkJewoJCQkJb3V0MCA9IEI7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCmVuZCAjIGxpbmVfY29udGludWF0aW9uCgpncm91cCBmdW5jdGlvbl9kZWZpbml0aW9ucyAiRnVuY3Rpb24gRGVmaW5pdGlvbnMgVGVzdHMiCgoJY2FzZSBzYW1lX29iamVjdF9hbmRfZnVuY3Rpb25fcGFyYW0KCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJI2RlZmluZSBWQUxVRSAxLjAKCQkJI2RlZmluZSBGVU5DVElPTihWQUxVRSwgQikJKFZBTFVFLUIpCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gRlVOQ1RJT04oMy4wLCAyLjApOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBjb21wbGV4X2Z1bmMKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNTE4LjU7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgQUFBKGEsYikJYSooQkJCKGEsYikpCgkJCSNkZWZpbmUgQkJCKGEsYikJYS1iCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gQkJCKEFBQSg4LjAvNC4wLCAyLjApKkJCQigyLjAqMi4wLDAuNzUqMi4wKSwgQUFBKDQwLjAsMTAuMCpCQkIoNS4wLDMuMCkpKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZnVuY3Rpb25fZGVmaW5pdGlvbl93aXRoX2NvbW1lbnRzCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJLyogc2RmbGprICovCQkJIy8qIHNkZmxqayAqL2RlZmluZSAvKiBzZGZsamsgKi8gRlVOQyggLyogamtsc2ZkKi9hIC8qc2ZkamtsaCovLCAvKnNkZmtsaiAqL2IgLypzZGZrbGoqLykJCWErYgoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IEZVTkMoMS4wLCAyLjApOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBmdW5jdGlvbl9kZWZpbml0aW9ucwoKZ3JvdXAgcmVjdXJzaW9uICJSZWN1cnNpb25zIFRlc3RzIgoKCWNhc2UgcmVjdXJzaW9uXzEKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEFBQQlBQUEKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEFBQSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWN1cnNpb25fMgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJIyBkZWZpbmUgQUFBCUJCQgoJCQkjZGVmaW5lIEJCQgkJQUFBCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChBQUEpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVjdXJzaW9uXzMKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEFBQQkoMS4wK0JCQikKCQkJI2RlZmluZSBCQkIJCSgyLjArQUFBKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoQUFBKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHJlY3Vyc2lvbl80CgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBBQUEoYSkJQUFBKGEpCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChBQUEoMS4wKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWN1cnNpb25fNQoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJIyBkZWZpbmUgQUFBKGEsIGIpCUFBQShiLCBhKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoQUFBKDEuMCwgMi4wKSk7CgkJCX0KCQkiIgoJZW5kCgplbmQgIyByZWN1cnNpb24KCmdyb3VwIGZ1bmN0aW9uX3JlZGVmaW5pdGlvbnMgIkZ1bmN0aW9uIFJlZGVmaW5pdGlvbiBUZXN0cyIKCgljYXNlIGZ1bmN0aW9uX3JlZGVmaW5pdGlvbl8xCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDMuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgoJCQkjIGRlZmluZSBGVU5DKCBhLCBiKQkJYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IEZVTkMoMS4wLCAyLjApOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBmdW5jdGlvbl9yZWRlZmluaXRpb25fMgoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQkoYSAgK2IpCgkJCSMgZGVmaW5lIEZVTkMoIGEsIGIgKShhCQkJK2IpCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IEZVTkMoMS4wLCAyLjApOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBmdW5jdGlvbl9yZWRlZmluaXRpb25fMwoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQkoYSAgK2IpCgkJCSMgZGVmaW5lIEZVTkMoYSxiKShhCS8qIGNvbW1lbnQKCQkJCQkJCQkJICovICtiKQoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBGVU5DKDEuMCwgMi4wKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9mdW5jdGlvbl9yZWRlZmluaXRpb25fcGFyYW1fMQoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgoJCQkjIGRlZmluZSBGVU5DKEEsYikJCUErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLCAyLjApKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZnVuY3Rpb25fcmVkZWZpbml0aW9uX3BhcmFtXzIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKCQkJIyBkZWZpbmUgRlVOQyhhLGIsYykJYStiK2MKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwgMi4wLCAzLjApKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZnVuY3Rpb25fcmVkZWZpbml0aW9uX3BhcmFtXzMKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQliK2EKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwgMi4wKSk7CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBmdW5jdGlvbnNfcmVkZWZpbml0aW9ucwoKZ3JvdXAgaW52YWxpZF9mdW5jdGlvbl9kZWZpbml0aW9ucyAiSW52YWxpZCBGdW5jdGlvbiBEZWZpbml0aW9uIFRlc3RzIgoKCWNhc2UgYXJndW1lbnRzXzEKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGFyZ3VtZW50c18yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygpKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGFyZ3VtZW50c18zCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygoKCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhcmd1bWVudHNfNAoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMpKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGFyZ3VtZW50c181CgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjApKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGFyZ3VtZW50c182CgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGFyZ3VtZW50c183CgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhcmd1bWVudHNfOAoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLCAyLjAsIDMuMCkpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW5pcXVlX3BhcmFtX25hbWUKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGEpCQlhK2EKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwyLjApKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGFyZ3VtZW50X2xpc3RfMQoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEgYikJCWErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCkpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYXJndW1lbnRfbGlzdF8yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSArIGIpCQlhK2IKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwyLjApKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGFyZ3VtZW50X2xpc3RfMwoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKCxhLGIpCQlhK2IKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwyLjApKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIG5vX2Nsb3NpbmdfcGFyZW50aGVzaXNfMQoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKAoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCkpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugbm9fY2xvc2luZ19wYXJlbnRoZXNpc18yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoQSAgYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBub19jbG9zaW5nX3BhcmVudGhlc2lzXzMKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhBLEIsQyAgYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBub19jbG9zaW5nX3BhcmVudGhlc2lzXzQKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQygKCQkiIgoJZW5kCgplbmQgIyBpbnZhbGlkX2Z1bmN0aW9uX2RlZmluaXRpb25zCgpncm91cCBzZW1hbnRpYyAiU2VtYW50aWMgVGVzdHMiCgoJY2FzZSBvcHNfYXNfYXJndW1lbnRzCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDIwLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgRk9PKGEsIGIpCQkoMSBhIDkpIGIgMgoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IGZsb2F0KEZPTygrLCAqKSk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGNvcnJlY3Rfb3JkZXIKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjZGVmaW5lIEZVTkMoQSkgQQoJCQkjZGVmaW5lIEEgMi4wCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gRlVOQyhBIC0gMS4wKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKZW5kICMgc2VtYW50aWMKCmdyb3VwIHByZWRlZmluZWRfbWFjcm9zICJQcmVkZWZpbmVkIE1hY3JvcyBUZXN0cyIKCgljYXNlIHZlcnNpb24KCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMzAwLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgQUFBIF9fVkVSU0lPTl9fCgkJCQlvdXQwID0gZmxvYXQoQUFBKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZ2xfZXNfMQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gZmxvYXQoR0xfRVMpOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBnbF9lc18yCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJI2RlZmluZSBBQUEoQSkgQQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IGZsb2F0KEFBQShHTF9FUykpOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBsaW5lXzEKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMi4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJY29uc3QgbWVkaXVtcCBpbnQgbGluZSA9IF9fTElORV9fOwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBmbG9hdChsaW5lKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZmlsZQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAwLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBmbG9hdChfX0ZJTEVfXyk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGlmX2dsX2VzCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIEdMX0VTCgkJCQlvdXQwID0gMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAtMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGlmX3ZlcnNpb24KCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgX19WRVJTSU9OX18gPT0gMzAwCgkJCQlvdXQwID0gMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAtMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfdG9rZW5fcGFzdGluZwoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJI2RlZmluZSBPVVQoTikgdG9rZW4jI04KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCWZsb2F0IHRva2VuMCA9IDEuMDsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KE9VVCgwKSk7CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBwcmVkZWZpbmVkX21hY3JvcwoKZ3JvdXAgY29uZGl0aW9uYWxfaW5jbHVzaW9uICJDb25kaXRpb25hbCBJbmNsdXNpb24gVGVzdHMiCgoJY2FzZSBiYXNpY18xCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2RlZmluZSBBQUEgYXNkZgoKCSNpZiBkZWZpbmVkIEFBQSAmJiAhZGVmaW5lZChCQkIpCgkJCQlvdXQwID0gMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAwLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYmFzaWNfMgoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNkZWZpbmUgQUFBIGRlZmluZWQoQkJCKQoKCSNpZiAhQUFBCgkJCQlvdXQwID0gMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAwLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYmFzaWNfMwoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAwCgkJCQlvdXQwID0gLTEuMDsKCSNlbGlmIDAKCQkJCW91dDAgPSAtMi4wOwoJI2VsaWYgMQoJCQkJb3V0MCA9IDEuMDsKCSNlbHNlCgkJCQlvdXQwID0gLTMuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBiYXNpY180CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDAKCQkJCW91dDAgPSAtMS4wOwoJI2VsaWYgMAoJCQkJb3V0MCA9IC0yLjA7CgkjZWxzZQoJCQkJb3V0MCA9IDEuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBiYXNpY181CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEKCQkJCW91dDAgPSAxLjA7CgkjZWxpZiAwCgkJCQlvdXQwID0gLTIuMDsKCSNlbHNlCgkJCQlvdXQwID0gLTEuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBleHByZXNzaW9uCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmICEoKH4yID4+IDEpICYgMSkKCQkJCW91dDAgPSAxLjA7CgkjZWxzZQoJCQkJb3V0MCA9IC0xLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKZW5kICMgY29uZGl0aW9uYWxfaW5jbHVzaW9uCgpncm91cCBpbnZhbGlkX29wcyAiSW52YWxpZCBPcGVyYXRpb25zIFRlc3RzIgoKCWNhc2UgaW52YWxpZF9vcF8xCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgISgofigrICsrMSAtIC0gLSAtMSkgPj4gMSkgJiAxKQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9vcF8yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgISgofigrICsgKzEgLSAtLSAtMSkgPj4gMSkgJiAxKQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9kZWZpbmVkX2V4cGVjdGVkX2lkZW50aWZpZXJfMQoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjZGVmaW5lIEFBQSAxCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIGRlZmluZWQKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZGVmaW5lZF9leHBlY3RlZF9pZGVudGlmaWVyXzIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI2RlZmluZSBBQUEgMQoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBkZWZpbmVkKCkKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZGVmaW5lZF9leHBlY3RlZF9pZGVudGlmaWVyXzMKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI2RlZmluZSBBQUEgMQoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBkZWZpbmVkKAoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9kZWZpbmVkX2V4cGVjdGVkX2lkZW50aWZpZXJfNAoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjZGVmaW5lIEFBQSAxCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIGRlZmluZWQpCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2RlZmluZWRfZXhwZWN0ZWRfaWRlbnRpZmllcl81CgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSNkZWZpbmUgQUFBIDEKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgZGVmaW5lZCgoQUFBKSkKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZGVmaW5lZF9leHBlY3RlZF9ycGFyZW4KCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI2RlZmluZSBBQUEgMQoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBkZWZpbmVkKEFBQQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZGVmaW5lZF9kZWZpbmUKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJI2RlZmluZSBkZWZpbmUgMQoJI2RlZmluZSBBQUEgMS4wCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gQUFBOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBpbnZhbGlkX29wcwoKZ3JvdXAgdW5kZWZpbmVkX2lkZW50aWZpZXJzICJVbmRlZmluZWQgSWRlbnRpZmllcnMgVGVzdHMiCgoJY2FzZSB2YWxpZF91bmRlZmluZWRfaWRlbnRpZmllcl8xCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEgfHwgQUFBCgkJCQlvdXQwID0gMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAtMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHZhbGlkX3VuZGVmaW5lZF9pZGVudGlmaWVyXzIKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMCAmJiBBQUEKCQkJCW91dDAgPSAtMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAxLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW5kZWZpbmVkX2lkZW50aWZpZXJfMQoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEgLSBDQ0MgKyAoLUFBQSB8fCBCQkIpCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2Vsc2UKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmllcl8yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgIUEKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuZGVmaW5lZF9pZGVudGlmaWVyXzMKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAtQQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbHNlCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW5kZWZpbmVkX2lkZW50aWZpZXJfNAoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIH5BCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2Vsc2UKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmllcl81CgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgQSAmJiBCCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2Vsc2UKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZmluZWRfaWRlbnRpZmllcl82CgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CiAgICAjZGVmaW5lIEEgMQoJI2lmIEEgJiYgQgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbHNlCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW5kZWZpbmVkX2lkZW50aWZpZXJfNwoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewogICAgI2RlZmluZSBCIDEKCSNpZiBBICYmIEIKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuZGVmaW5lZF9pZGVudGlmaWVyXzgKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKICAgICNkZWZpbmUgQiAxCgkjZGVmaW5lIEEgMgoJI3VuZGVmIEEKCSNpZiBBICYmIEIKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuZGVmaW5lZF9pZGVudGlmaWVyXzkKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBBIHx8IEIKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuZGVmaW5lZF9pZGVudGlmaWVyXzEwCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CiAgICAjZGVmaW5lIEEgMAoJI2lmIEEgfHwgQgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbHNlCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW5kZWZpbmVkX2lkZW50aWZpZXJfMTEKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKICAgICNkZWZpbmUgQSAwCgkjZGVmaW5lIEIgMgoJI3VuZGVmIEIKCSNpZiBBIHx8IEIKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuZGVmaW5lZF9pZGVudGlmaWVyXzEyCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CiAgICAjZGVmaW5lIEIgMQoJI2lmIEEgfHwgQgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbHNlCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgtMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKZW5kICMgdW5kZWZpbmVkX2lkZW50aWZpZXJzCgpncm91cCBpbnZhbGlkX2NvbmRpdGlvbmFscyAiSW52YWxpZCBDb25kaXRpb25hbHMgVGVzdHMiCgoJY2FzZSBlbXB0eV9pZgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZW1wdHlfaWZkZWYKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZmRlZgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGVtcHR5X2lmbmRlZgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmbmRlZgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfaWZkZWYKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZmRlZiAxCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2lmbmRlZgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmbmRlZiAxCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlbXB0eV9pZl9kZWZpbmVkCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgZGVmaW5lZAoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9pZl8xCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9pZl8yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMAoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9pZmRlZgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmZGVmIEZPT0JBUgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9pZm5kZWYKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZm5kZWYgR0xfRVMKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bnRlcm1pbmF0ZWRfZWxzZV8xCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMQoJI2Vsc2UKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bnRlcm1pbmF0ZWRfZWxzZV8yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMAoJI2Vsc2UKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bnRlcm1pbmF0ZWRfZWxpZl8xCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMAoJI2VsaWYgMQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9lbGlmXzIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAxCgkjZWxpZiAwCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW50ZXJtaW5hdGVkX2VsaWZfMwoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDAKCSNlbGlmIDAKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDIuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlbGlmX2FmdGVyX2Vsc2UKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAwCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2Vsc2UKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwoJI2VsaWYgMQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZWxzZV93aXRob3V0X2lmCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZWxpZl93aXRob3V0X2lmCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjZWxpZiAxCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlbmRpZl93aXRob3V0X2lmCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlbHNlX2FmdGVyX2Vsc2UKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAhR0xfRVMKCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbHNlCgkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwoJI2Vsc2UKCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIG5lc3RlZF9lbGlmX3dpdGhvdXRfaWYKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAxCgkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjCWVsaWYKCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKCSMJZW5kaWYKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaWZfZmxvYXQKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAxLjIzMQoJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJIwllbGlmCgkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7CgkjCWVuZGlmCgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIHRva2Vuc19hZnRlcl9pZgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEgZm9vYmFyCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB0b2tlbnNfYWZ0ZXJfZWxpZgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDAKCSNlbGlmIGZvb2JhcgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdG9rZW5zX2FmdGVyX2Vsc2UKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAxCgkjZWxzZSBmb29iYXIgMS4yMzEKCSNlbmRpZgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHRva2Vuc19hZnRlcl9lbmRpZgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEKCSNlbHNlCgkjZW5kaWYgZm9vYmFyCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdG9rZW5zX2FmdGVyX2lmZGVmCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWZkZWYgRk9PQkFSIGZvb2JhcgoJI2Vsc2UKCSNlbmRpZgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHRva2Vuc19hZnRlcl9pZm5kZWYKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZm5kZWYgRk9PQkFSICwsICstIDw8IGJhcmJhcgoJI2Vsc2UKCSNlbmRpZgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9uZXN0ZWRfYmxvY2tzCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMQoJIwlpZiAxCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKZW5kICMgaW52YWxpZF9jb25kaXRpb25hbHMKCmdyb3VwIGNvbmRpdGlvbmFscyAiQ29uZGl0aW9uYWxzIFRlc3RzIgoKCWNhc2UgaWZkZWZfMQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkjdmVyc2lvbiAzMDAgZXMKCSNkZWZpbmUgQUFBCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmZGVmIEFBQQoJCQkJb3V0MCA9IDEuMDsKCSNlbHNlCgkJCQlvdXQwID0gLTEuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpZmRlZl8yCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCSN2ZXJzaW9uIDMwMCBlcwoJI2RlZmluZSBBQUEKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgZGVmaW5lZCAgKCBBQUEpCgkJCQlvdXQwID0gMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAtMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGlmZGVmXzMKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWZkZWYgQUFBCgkJCQlvdXQwID0gLTEuMDsKCSNlbHNlCgkJCQlvdXQwID0gMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGlmbmRlZl8xCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmbmRlZiBBQUEKCQkJCW91dDAgPSAxLjA7CgkjZWxzZQoJCQkJb3V0MCA9IC0xLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaWZuZGVmXzIKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJI2RlZmluZSBBQUEKCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmbmRlZiBBQUEKCQkJCW91dDAgPSAtMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAxLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbWl4ZWRfY29uZGl0aW9uYWxfaW5jbHVzaW9uCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmbmRlZiBBQUEKCQkJCW91dDAgPSAxLjA7CgkjZWxpZiAxCgkJCQlvdXQwID0gLTEuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBuZXN0ZWRfaWZfMQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBHTF9FUwoJIwlpZiBfX1ZFUlNJT05fXyAhPSAzMDAKCQkJCW91dDAgPSAtMS4wOwoJIwllbHNlCgkJCQlvdXQwID0gMS4wOwoJIwllbmRpZgoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG5lc3RlZF9pZl8yCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEKCSMJaWYgMAoJCQkJb3V0MCA9IC0xLjA7CgkjCWVsc2UKCSMJCWlmIDAKCQkJCW91dDAgPSAtMS4wOwoJIwkJZWxpZiAxCgkJCQlvdXQwID0gMS4wOwoJIwkJZWxzZQoJCQkJb3V0MCA9IC0xLjA7CgkjCQllbmRpZgoJIwllbmRpZgoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG5lc3RlZF9pZl8zCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDAKCSMJaWYgMQoJCQkJb3V0MCA9IC0xLjA7CgkjCWVuZGlmCgkjZWxzZQoJCQkJb3V0MCA9IDEuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBjb25kaXRpb25hbHMKCmdyb3VwIGRpcmVjdGl2ZSAiRGlyZWN0aXZlIFRlc3RzIgoKCWNhc2UgdmVyc2lvbl9pc19sZXNzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCXZlcnNpb24gMzAwIGVzCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHZlcnNpb25faXNfbW9yZQoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQl2ZXJzaW9uIDMwMCBlcwoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB2ZXJzaW9uX21pc3NpbmdfZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJdmVyc2lvbiAzMDAgZXMKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB2ZXJzaW9uX21pc3NpbmcKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJdmVyc2lvbiAzMDAgZXMKCQlib3RoICIiCgkJCSN2ZXJzaW9uCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHZlcnNpb25fbm90X2ZpcnN0X3N0YXRlbWVudF8xCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCXZlcnNpb24gMzAwIGVzCgkJYm90aCAiIgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdmVyc2lvbl9ub3RfZmlyc3Rfc3RhdGVtZW50XzIKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJdmVyc2lvbiAzMDAgZXMKCQlib3RoICIiCgkJCSNkZWZpbmUgRk9PIEJBUgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdmVyc2lvbl9pbnZhbGlkX3Rva2VuXzEKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJdmVyc2lvbiAzMDAgZXMKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcy4wCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHZlcnNpb25faW52YWxpZF90b2tlbl8yCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCXZlcnNpb24gMzAwIGVzCgkJYm90aCAiIgoJCQkjdmVyc2lvbiBmb29iYXIKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF92ZXJzaW9uCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCXZlcnNpb24gMzAwIGVzCgkJYm90aCAiIgoJCQkjdmVyc2lvbiBBQUEKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYWRkaXRpb25hbF90b2tlbnMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJdmVyc2lvbiAzMDAgZXMKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcyBmb29iYXIKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZXJyb3Jfd2l0aF9ub190b2tlbnMKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjZXJyb3IKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZXJyb3IKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjZGVmaW5lIEFBQSBhc2RmCgkJCSNlcnJvciAxICogQUFBIC8qIGNvbW1lbnQgKi8KCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKZW5kICMgZGlyZWN0aXZlCgpncm91cCBidWlsdGluICJCdWlsdC1pbiBTeW1ib2wgVGVzdHMiCgoJY2FzZSBsaW5lCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkjbGluZSAxCgkJCQlvdXQwID0gZmxvYXQoX19MSU5FX18pOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBsaW5lX2FuZF9maWxlCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgdmVjNCBvdXQwID0gdmVjNCgyMzQuMCwgMjM0LjAsIDEwLjAsIDEwLjApOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjbGluZSAyMzQgMTAKCQkJCW91dDAgPSB2ZWM0KF9fTElORV9fLCBfX0xJTkVfXywgX19GSUxFX18sIF9fRklMRV9fKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKZW5kICMgYnVpbHRpbgoKZ3JvdXAgcHJhZ21hcyAiUHJhZ21hIFRlc3RzIgoKCWNhc2UgcHJhZ21hX3ZlcnRleAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQl2ZXJ0ZXggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNwcmFnbWEKCQkJI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxsKQoJCQkjcHJhZ21hIGRlYnVnKG9mZikKCQkJI3ByYWdtYSBvcHRpbWl6ZShvZmYpCgoJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7VkVSVEVYX09VVFBVVH0KCQkJfQoJCSIiCgkJZnJhZ21lbnQgIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IDEuMDsKCQkJCSR7RlJBR01FTlRfT1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcHJhZ21hX2ZyYWdtZW50CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCXZlcnRleCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJJHtWRVJURVhfREVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1ZFUlRFWF9PVVRQVVR9CgkJCX0KCQkiIgoJCWZyYWdtZW50ICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjcHJhZ21hCgkJCSNwcmFnbWEgZGVidWcob2ZmKQoJCQkjcHJhZ21hIG9wdGltaXplKG9mZikKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0ZSQUdNRU5UX0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IDEuMDsKCQkJCSR7RlJBR01FTlRfT1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcHJhZ21hX21hY3JvX2V4cAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkjdmVyc2lvbiAzMDAgZXMKCSNkZWZpbmUgb2ZmCUlOVkFMSUQKCS8qIHByYWdtYSBsaW5lIG5vdCBtYWNybyBleHBhbmRlZCAqLwoJI3ByYWdtYSBkZWJ1ZyhvZmYpCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSAxLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCmVuZCAjIHByYWdtYXMKCmdyb3VwIGV4dGVuc2lvbnMgIkV4dGVuc2lvbiBUZXN0cyIKCgljYXNlIGJhc2ljCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNleHRlbnNpb24gYWxsIDogd2FybgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gMS4wOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtYWNyb19leHAKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2RlZmluZSB3YXJuIGVuYWJsZQoKCQkJI2V4dGVuc2lvbiBhbGwgOiB3YXJuCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSAxLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG1pc3NpbmdfZXh0ZW5zaW9uX25hbWUKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjZXh0ZW5zaW9uCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZXh0ZW5zaW9uX25hbWUKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjZXh0ZW5zaW9uIDIgOiBhbGwKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbWlzc2luZ19jb2xvbgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNleHRlbnNpb24gYWxsCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGV4cGVjdGVkX2NvbG9uCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2V4dGVuc2lvbiBhbGwgOwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtaXNzaW5nX2JlaGF2aW9yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2V4dGVuc2lvbiBhbGwgOgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2JlaGF2aW9yXzEKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjZXh0ZW5zaW9uIGFsbCA6IFdBUk4KCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9iZWhhdmlvcl8yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2V4dGVuc2lvbiBhbGwgOiByZXF1aXJlCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfYmVoYXZpb3JfMwoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNleHRlbnNpb24gYWxsIDogZW5hYmxlCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfY2hhcl9pbl9uYW1lCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2V4dGVuc2lvbiBhbGykIDogd2FybgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2NoYXJfaW5fYmVoYXZpb3IKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjZXh0ZW5zaW9uIGFsbCA6IHdhcqRuCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9jb21tZW50CgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2V4dGVuc2lvbiBhbGwgOiB3YXJuIC8qYXNkCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGFmdGVyX25vbl9wcmVwcm9jZXNzaW5nX3Rva2VucwoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNleHRlbnNpb24gYWxsIDogd2FybgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCSNleHRlbnNpb24gYWxsIDogZGlzYWJsZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKZW5kICMgZXh0ZW5zaW9ucwoKZ3JvdXAgZXhwcmVzc2lvbnMgIkV4cHJlc3Npb24gVGVzdHMiCgoJY2FzZSBzaGlmdF9sZWZ0CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2RlZmluZSBWQUwgNAoJCQkJb3V0MCA9IDAuMDsKCQkJCSNpZiAoVkFMIDw8IDIpID09IDE2CgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBzaGlmdF9yaWdodAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDUKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgKFZBTCA+PiAxKSA9PSAyCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBjbXBfbGVzc190aGFuCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2RlZmluZSBWQUwgNQoJCQkJb3V0MCA9IDAuMDsKCQkJCSNpZiAoVkFMIDwgNikgJiYgKC1WQUwgPCAtNCkKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGxlc3Nfb3JfZXF1YWwKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCA2CgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmIChWQUwgPD0gNikgJiYgKC1WQUwgPD0gLTYpCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBvcgoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDYKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgKFZBTCB8IDUpID09IDcKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGFuZAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDYKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgKFZBTCAmIDUpID09IDQKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHhvcgoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDYKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgKFZBTCBeIDUpID09IDMKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG1vZAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDEyCgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmIChWQUwgJSA1KSA9PSAyCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBwYXJlbnRoZXNpc192YWx1ZQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMICgoICAoNCAgICkgKSAgKQoJCQkJb3V0MCA9IDAuMDsKCQkJCSNpZiBWQUwgPj0gNAoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcGFyZW50aGVzaXNfdHJpY2t5CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2RlZmluZSBWQUwgKCggICg0ICAgKSApCgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmIFZBTCkgPj0gNAoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcGFyZW50aGVzaXNfaWZfbm8KCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCA0CgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmIFZBTCA+PSA0CgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBwYXJlbnRoZXNpc19pZgoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDQKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgKFZBTCA+PSA0KQoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcGFyZW50aGVzaXNfbXVsdGlfaWYKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCAoNCkKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgKCgoVkFMKSkgPj0gKDQpKQoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcGFyZW50aGVzaXNfc2luZ2xlX2lmCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2RlZmluZSBWQUwgNAoJCQkJb3V0MCA9IDAuMDsKCQkJCSNpZiAoVkFMID49IDQpCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBwYXJlbnRoZXNpc19pZmVsc2VfdHJ1ZQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDQKCQkJCSNpZiAoVkFMID49IDQpCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbHNlCgkJCQkJb3V0MCA9IDAuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBwYXJlbnRoZXNpc19pZmVsc2VfZmFsc2UKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCA0CgkJCQkjaWYgKFZBTCA+IDQpCgkJCQkJb3V0MCA9IDAuMDsKCQkJCSNlbHNlCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBldmFsX2Jhc2ljXzAKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjaWYgLTQgKyA1ID09IDEKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2Vsc2UKCQkJCQlvdXQwID0gMC4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGV2YWxfYmFzaWNfMQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNpZiAoMiAqIDIpIC0gMyA+PSAwCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbHNlCgkJCQkJb3V0MCA9IDAuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBldmFsX3NpbXBsZV9wcmVjZWRlbmNlXzAKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjaWYgMiAqIDMgLSAzID09IDMKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2Vsc2UKCQkJCQlvdXQwID0gMC4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGV2YWxfc2ltcGxlX3ByZWNlZGVuY2VfMQoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNpZiAyIC0gMiAvIDIgPT0gMQoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZWxzZQoJCQkJCW91dDAgPSAwLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKZW5kICMgZXhwcmVzc2lvbnMKCmdyb3VwIGludmFsaWRfZXhwcmVzc2lvbnMgIkludmFsaWQgRXhwcmVzc2lvbiBUZXN0cyIKCgljYXNlIGludmFsaWRfdW5hcnlfZXhwcgoJCXZlcnNpb24gMzAwIGVzCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkjaWYgIQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfYmluYXJ5X2V4cHIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJI2lmIDMrNCsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtaXNzaW5nX2V4cHIKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJI2lmCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9leHByXzEKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJI2lmIDQgNAoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZXhwcl8yCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCSNpZiA0ICogKiA0CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9leHByXzMKCQl2ZXJzaW9uIDMwMCBlcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJI2lmICg0KSg0KQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVub3BlbmVkX3BhcmVudGhlc2lzCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCSNpZiA0KQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuY2xvc2VkX3BhcmVudGhlc2lzCgkJdmVyc2lvbiAzMDAgZXMKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCSNpZiAoKDQgKyA3KQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCmVuZCAjIGludmFsaWRfZXhwcmVzc2lvbnMKCmdyb3VwIG9wZXJhdG9yX3ByZWNlZGVuY2UgIk9wZXJhdG9yIHByZWNlZGVuY2UiCgoKCWNhc2UgbW9kdWxvX3ZzX25vdAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4ICUgISAwICkgPT0gMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBkaXZfdnNfbm90CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggLyAhIDAgKSA9PSA4CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG11bF92c19ub3QKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCAqICEgMCApID09IDgKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbW9kdWxvX3ZzX2JpdF9pbnZlcnQKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCAlIH4gNCApID09IDMKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbW9kdWxvX3ZzX21pbnVzCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggJSAtIDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG1vZHVsb192c19wbHVzCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggJSArIDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGRpdl92c19iaXRfaW52ZXJ0CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggLyB+IDIgKSA9PSAtMgoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBkaXZfdnNfbWludXMKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCAvIC0gMiApID09IC00CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGRpdl92c19wbHVzCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggLyArIDIgKSA9PSA0CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG11bF92c19iaXRfaW52ZXJ0CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggKiB+IDIgKSA9PSAtMjQKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbXVsX3ZzX21pbnVzCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggKiAtIDIgKSA9PSAtMTYKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbXVsX3ZzX3BsdXMKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCAqICsgMiApID09IDE2CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHN1Yl92c19tb2R1bG8KCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCAtIDMgJSAyICkgPT0gNwoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBzdWJfdnNfZGl2CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggLSAzIC8gMiApID09IDcKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugc3ViX3ZzX211bAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4IC0gMyAqIDIgKSA9PSAyCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGFkZF92c19tb2R1bG8KCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCArIDMgJSAyICkgPT0gOQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhZGRfdnNfZGl2CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggKyAzIC8gMiApID09IDkKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYWRkX3ZzX211bAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4ICsgMyAqIDIgKSA9PSAxNAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByc2hpZnRfdnNfc3ViCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggPj4gMyAtIDIgKSA9PSA0CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHJzaGlmdF92c19hZGQKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCA+PiAzICsgMiApID09IDAKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbHNoaWZ0X3ZzX3N1YgoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4IDw8IDMgLSAyICkgPT0gMTYKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbHNoaWZ0X3ZzX2FkZAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4IDw8IDMgKyAyICkgPT0gMjU2CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGdyZWF0ZXJfb3JfZXF1YWxfdnNfcnNoaWZ0CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggPj0gMyA+PiAyICkgPT0gMQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBncmVhdGVyX29yX2VxdWFsX3ZzX2xzaGlmdAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4ID49IDMgPDwgMiApID09IDAKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbGVzc19vcl9lcXVhbF92c19yc2hpZnQKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCA8PSAzID4+IDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGxlc3Nfb3JfZXF1YWxfdnNfbHNoaWZ0CgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggPD0gMyA8PCAyICkgPT0gMQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBncmVhdGVyX3ZzX3JzaGlmdAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4ID4gMyA+PiAyICkgPT0gMQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBncmVhdGVyX3ZzX2xzaGlmdAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4ID4gMyA8PCAyICkgPT0gMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBsZXNzX3ZzX3JzaGlmdAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4IDwgMyA+PiAyICkgPT0gMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBsZXNzX3ZzX2xzaGlmdAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4IDwgMyA8PCAyICkgPT0gMQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBub3RfZXF1YWxfdnNfZ3JlYXRlcl9vcl9lcXVhbAoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4ICE9IDMgPj0gMiApID09IDEKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugbm90X2VxdWFsX3ZzX2xlc3Nfb3JfZXF1YWwKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCAhPSAzIDw9IDIgKSA9PSAxCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG5vdF9lcXVhbF92c19ncmVhdGVyCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggIT0gMyA+IDIgKSA9PSAxCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG5vdF9lcXVhbF92c19sZXNzCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggIT0gMyA8IDIgKSA9PSAxCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGVxdWFsX3ZzX2dyZWF0ZXJfb3JfZXF1YWwKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCA9PSAzID49IDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGVxdWFsX3ZzX2xlc3Nfb3JfZXF1YWwKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCA9PSAzIDw9IDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGVxdWFsX3ZzX2dyZWF0ZXIKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCA9PSAzID4gMiApID09IDAKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZXF1YWxfdnNfbGVzcwoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCA4ID09IDMgPCAyICkgPT0gMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBiaXR3aXNlX2FuZF92c19ub3RfZXF1YWwKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCAmIDMgIT0gMiApID09IDAKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYml0d2lzZV9hbmRfdnNfZXF1YWwKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggOCAmIDMgPT0gMiApID09IDAKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgeG9yX3ZzX2JpdHdpc2VfYW5kCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggXiAzICYgMiApID09IDEwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGJpdHdpc2Vfb3JfdnNfeG9yCgkJdmVyc2lvbiAzMDAgZXMKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzAwIGVzCgkJCSNpZiAoIDggfCAzIF4gMiApID09IDkKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbG9naWNhbF9hbmRfdnNfYml0d2lzZV9vcgoJCXZlcnNpb24gMzAwIGVzCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMwMCBlcwoJCQkjaWYgKCAwICYmIDMgfCAyICkKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbG9naWNhbF9hbmRfdnNfYml0d2lzZV9hbmQKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggMCAmJiA0ICYgMiApCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGxvZ2ljYWxfb3JfdnNfbG9naWNhbF9hbmQKCQl2ZXJzaW9uIDMwMCBlcwoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMDAgZXMKCQkJI2lmICggMCB8fCA0ICYmIDAgKQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBvcGVyYXRvcl9wcmVjZWRlbmNlCg==