Edit C:\Users\Administrator\AppData\Local\TSBrowser\User Data\Default\GPUCache\data_3
?? ? ??? MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AQABAAEAAAABAAAAAQAAAFCLAADyjQAACgAAAGF0dHJWZXJ0ZXgMAAAAX3VhdHRyVmVydGV4AAAAAAEAAAAAAAAAAAAAAAEAAABQiwAA8o0AAA0AAAB1bmlmb3JtT2Zmc2V0DwAAAF91dW5pZm9ybU9mZnNldAAAAAABAAAAAAAAAP////////////////////8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIwAAAAAAAAAAAAAAQAAAAYUAAABAAEAAQAAAAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAwAAABQUAACMAAAAAAAAAAAAAAAAsQAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////8QAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAEAAAAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAD/////AAAAAP////8BAAAAAAAAAAAAAAAAAAAAEgUAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQyIHgwLCBpbnQgeDEsIGludCB4MikKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdDIgX3VuaWZvcm1PZmZzZXQgOiByZWdpc3RlcihjMCk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBBdHRyaWJ1dGVzCnN0YXRpYyBmbG9hdDIgX2F0dHJWZXJ0ZXggPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDIgX3ZhcnlpblRleENvb3JkaW5hdGUgPSB7MCwgMH07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQyIGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgIDogcGFja29mZnNldChjMyk7Cn07Cgp2b2lkIGdsX21haW4oKQp7CihnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLjAsIDAuMCwgMC4wLCAwLjApKTsKKF92YXJ5aW5UZXhDb29yZGluYXRlID0gKF9hdHRyVmVydGV4ICsgX3VuaWZvcm1PZmZzZXQpKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKF9hdHRyVmVydGV4LCAwLCAxKSk7Cn0KCkBAIFZFUlRFWCBBVFRSSUJVVEVTIEBACnN0cnVjdCBWU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7Cn07CgpWU19PVVRQVVQgbWFpbihWU19JTlBVVCBpbnB1dCkKewogICAgaW5pdEF0dHJpYnV0ZXMoaW5wdXQpOwoKICAgIGdsX21haW4oKTsKCiAgICBWU19PVVRQVVQgb3V0cHV0OwogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gZ2xfUG9zaXRpb247CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLng7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueSA9IC0gZ2xfUG9zaXRpb24ueTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udzsKICAgIG91dHB1dC52MCA9IF92YXJ5aW5UZXhDb29yZGluYXRlOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAA1QIAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQyIHgwLCBpbnQgeDEsIGludCB4MikKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyKTsKfQojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDIgX3ZhcnlpblRleENvb3JkaW5hdGUgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgp2b2lkIGdsX21haW4oKQp7CihnbF9Db2xvclswXSA9IHZlYzRfY3RvcihfdmFyeWluVGV4Q29vcmRpbmF0ZSwgMCwgMSkpOwp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX3ZhcnlpblRleENvb3JkaW5hdGUgPSBpbnB1dC52MC54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAAQIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBpbnB1dC52MDsgCiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgogICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gaW5wdXQuZHhfUG9zaXRpb247CiNlbmRpZiAgLy8gQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgp9CgEAAAABAAAAUgAAAIADAABEWEJDW6/cjKDoqZOS2wi2APtjDwEAAACAAwAABQAAADQAAABIAQAAfAEAAOwBAADkAgAAUkRFRgwBAAABAAAAaAAAAAEAAAA8AAAAAAX+/wDBAADkAAAAUkQxMTwAAAAYAAAAIAAAACgAAAAkAAAADAAAAAAAAABcAAAAAAAAAAAAAAAAAAAA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MCwgeDEsIHgyLCB4Myk7Cn0KI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfYV92ZXJ0ZXggPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKF9hX3ZlcnRleC54LCBfYV92ZXJ0ZXgueSwgMC4wLCAxLjApKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMDsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAALQIAAC8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0NCBfdV9jb2xvciA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgp2b2lkIGdsX21haW4oKQp7CihnbF9Db2xvclswXSA9IF91X2NvbG9yKTsKfQpzdHJ1Y3QgUFNfSU5QVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDA7Cn07CgpAQCBQSVhFTCBPVVRQVVQgQEAKUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpCnsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAsAEAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMDsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDA7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dDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0NCBfdmNvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKc3RhdGljICBmbG9hdDIgX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9IHswLCAwfTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9jb2xvciA9IF9pbkNvbG9yOwooX3Zjb2xvcl9TdGFnZTAgPSBfY29sb3IpOwpmbG9hdDIgX3BvczIgPSBfaW5Qb3NpdGlvbjsKKF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSBtdWwodHJhbnNwb3NlKF91Q29vcmRUcmFuc2Zvcm1NYXRyaXhfMF9TdGFnZTApLCB2ZWMzX2N0b3IoX2luTG9jYWxDb29yZCwgMS4wKSkueHkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX3Zjb2xvcl9TdGFnZTA7CiAgICBvdXRwdXQudjEgPSBfdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAA3gUAAC8vIFVuaWZvcm1zCgpzdGF0aWMgY29uc3QgdWludCBfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxID0gMDsKdW5pZm9ybSBUZXh0dXJlMkQ8ZmxvYXQ0PiB0ZXh0dXJlczJEWzFdIDogcmVnaXN0ZXIodDApOwp1bmlmb3JtIFNhbXBsZXJTdGF0ZSBzYW1wbGVyczJEWzFdIDogcmVnaXN0ZXIoczApOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3Zjb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9vdXRwdXRDb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnsKKF9vdXRwdXRDb2xvcl9TdGFnZTAgPSBfdmNvbG9yX1N0YWdlMCk7Cn0KZmxvYXQ0IF9vdXRwdXRfU3RhZ2UxID0gezAsIDAsIDAsIDB9Owp7Cihfb3V0cHV0X1N0YWdlMSA9IChfb3V0cHV0Q29sb3JfU3RhZ2UwICogZ2xfdGV4dHVyZTJEKF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEsIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTApLnh5encpKTsKfQp7CihnbF9Db2xvclswXSA9IF9vdXRwdXRfU3RhZ2UxKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX3Zjb2xvcl9TdGFnZTAgPSBpbnB1dC52MDsKICAgIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSBpbnB1dC52MS54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAUgIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBpbnB1dC52MDsgCiAgICBvdXRwdXQudjEgPSBpbnB1dC52MTsgCiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgogICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gaW5wdXQuZHhfUG9zaXRpb247CiNlbmRpZiAgLy8gQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgp9CgEAAAADAAAAUgAAAFQAAABSAAAA9AQAAERYQkMbK9ACfXJlxLbGGIatM1zmAQAAAPQEAAAFAAAANAAAALwBAAAgAgAAqAIAAFgEAABSREVGgAEAAAEAAABoAAAAAQAAADwAAAAABf7/AMEAAFgBAABSRDExPAAAABgAAAAgAAAAKAAAACQAAAAMAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAJEdsb2JhbHMAq6urXAAAAAIAAACAAAAAQAAAAAAAAAAAAAAA0AAAAAAAAAAQAAAAAgAAAOQAAAAAAAAA/////wAAAAD/////AAAAAAgBAAAQAAAALAAAAAIAAAA0AQAAAAAAAP////8AAAAA/////wAAAABfc2tfUlRBZGp1c3QAZmxvYXQ0AAEAAwABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3QAAAF91Q29vcmRUcmFuc2Zvcm1NYXRyaXhfMF9TdGFnZTAAZmxvYXQzeDMAq6urAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAQAATWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciAxMC4xAElTR05cAAAAAwAAAAgAAABQAAAAAAAAAAAAAAADAAAAAAAAAAMDAABQAAAAAQAAAAAAAAADAAAAAQAAAA8PAABQAAAAAgAAAAAAAAADAAAAAgAAAAMDAABURVhDT09SRACrq6tPU0dOgAAAAAQAAAAIAAAAaAAAAAAAAAABAAAAAwAAAAAAAAAPAAAAdAAAAAIAAAAAAAAAAwAAAAEAAAAPAAAAdAAAAAAAAAAAAAAAAwAAAAIAAAAPAAAAdAAAAAEAAAAAAAAAAwAAAAMAAAADDAAAU1ZfUG9zaXRpb24AVEVYQ09PUkQAq6urU0hFWKgBAABQAAEAagAAAGoIAAFZAAAERo4gAAAAAAADAAAAXwAAAzIQEAAAAAAAXwAAA/IQEAABAAAAXwAAAzIQEAACAAAAZwAABPIgEAAAAAAAAQAAAGUAAAPyIBAAAQAAAGUAAAPyIBAAAgAAAGUAAAMyIBAAAwAAAGgAAAIBAAAANgAACMIgEAAAAAAAAkAAAAAAAAAAAAAAAAAAPwAAgD8yAAALMgAQAAAAAABGEBAAAAAAAIaAIAAAAAAAAAAAANaFIAAAAAAAAAAAADYAAAYiIBAAAAAAABoAEIBBAAAAAAAAADYAAAUSIBAAAAAAAAoAEAAAAAAANgAABTIgEAABAAAARgAQAAAAAAA2AAAIwiAQAAEAAAACQAAAAAAAAAAAAAAAAAAAAACAPzYAAAXyIBAAAgAAAEYeEAABAAAANgAABTIAEAAAAAAARhAQAAIAAAA2AAAFQgAQAAAAAAABQAAAAACAPxAAAAgSIBAAAwAAAEaCIAAAAAAAAQAAAEYCEAAAAAAAEAAACCIgEAADAAAARoIgAAAAAAACAAAARgIQAAAAAAA+AAABU1RBVJQAAAAMAAAAAQAAAAAAAAAHAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAADgjAAA/AIAAERYQkNrI9XdZCZsoHnFORqQarbWAQAAAPwCAAAFAAAANAAAAPwAAACEAQAAuAEAAGACAABSREVGwAAAAAAAAAAAAAAAAgAAADwAAAAABf//AMEAAJgAAABSRDExPAAAABgAAAAgAAAAKAAAACQAAAAMAAAAAAAAAHwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAigAAAAIAAAAFAAAABAAAAP////8AAAAAAQAAAA0AAABzYW1wbGVyczJEWzBdAHRleHR1cmVzMkRbMF0ATWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciAxMC4xAElTR06AAAAABAAAAAgAAABoAAAAAAAAAAEAAAADAAAAAAAAAA8AAAB0AAAAAgAAAAAAAAADAAAAAQAAAA8AAAB0AAAAAAAAAAAAAAADAAAAAgAAAA8PAAB0AAAAAQAAAAAAAAADAAAAAwAAAAMDAABTVl9Qb3NpdGlvbgBURVhDT09SRACrq6tPU0dOLAAAAAEAAAAIAAAAIAAAAAAAAAAAAAAAAwAAAAAAAAAPAAAAU1ZfVEFSR0VUAKurU0hFWKAAAABQAAAAKAAAAGoIAAFaAAADAGAQAAAAAABYGAAEAHAQAAAAAABVVQAAYhAAA/IQEAACAAAAYhAAAzIQEAADAAAAZQAAA/IgEAAAAAAAaAAAAgEAAABFAACLwgAAgENVFQDyABAAAAAAAEYQEAADAAAARn4QAAAAAAAAYBAAAAAAADgAAAfyIBAAAAAAAEYOEAAAAAAARh4QAAIAAAA+AAABU1RBVJQAAAADAAAAAQAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AQABAAEAAAABAAAAAQAAAFCLAADxjQAACAAAAGFfdmVydGV4CgAAAF91YV92ZXJ0ZXgAAAAAAQAAAAAAAAAAAAAAAQAAAFKLAADxjQAABwAAAHVfY29sb3IJAAAAX3V1X2NvbG9yAAAAAAEAAAAAAAAA/////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAP///////////////////////////////////////////////////////////////////////////////xAAAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAAAjBAAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfYV92ZXJ0ZXggPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKF9hX3ZlcnRleC54LCBfYV92ZXJ0ZXgueSwgMC4wLCAxLjApKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMDsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAALQIAAC8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0NCBfdV9jb2xvciA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgp2b2lkIGdsX21haW4oKQp7CihnbF9Db2xvclswXSA9IF91X2NvbG9yKTsKfQpzdHJ1Y3QgUFNfSU5QVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDA7Cn07CgpAQCBQSVhFTCBPVVRQVVQgQEAKUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpCnsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAsAEAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMDsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDA7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4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAD/////AAAAAP////8BAAAAAAAAAAAAAAD/////AQAAAP////8BAAAAAAAAAAEAAAAAAAAA//////////8BAAAAAAAAAAAAAAAAAAAAAAUAAC8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0NCBfdV90ZXhDb29yZFhmb3JtIDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0NCBfdV9wb3NYZm9ybSA6IHJlZ2lzdGVyKGMxKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfYV92ZXJ0ZXggPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDIgX3ZfdGV4Q29vcmQgPSB7MCwgMH07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQyIGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgIDogcGFja29mZnNldChjMyk7Cn07Cgp2b2lkIGdsX21haW4oKQp7Cihfdl90ZXhDb29yZCA9ICgoX2FfdmVydGV4Lnh5ICogX3VfdGV4Q29vcmRYZm9ybS54eSkgKyBfdV90ZXhDb29yZFhmb3JtLnp3KSk7CihnbF9Qb3NpdGlvbi54eSA9ICgoX2FfdmVydGV4ICogX3VfcG9zWGZvcm0ueHkpICsgX3VfcG9zWGZvcm0uencpKTsKKGdsX1Bvc2l0aW9uLnp3ID0gZmxvYXQyKDAuMCwgMS4wKSk7Cn0KCkBAIFZFUlRFWCBBVFRSSUJVVEVTIEBACnN0cnVjdCBWU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7Cn07CgpWU19PVVRQVVQgbWFpbihWU19JTlBVVCBpbnB1dCkKewogICAgaW5pdEF0dHJpYnV0ZXMoaW5wdXQpOwoKICAgIGdsX21haW4oKTsKCiAgICBWU19PVVRQVVQgb3V0cHV0OwogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gZ2xfUG9zaXRpb247CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLng7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueSA9IC0gZ2xfUG9zaXRpb24ueTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udzsKICAgIG91dHB1dC52MCA9IF92X3RleENvb3JkOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAAYAQAAC8vIFVuaWZvcm1zCgpzdGF0aWMgY29uc3QgdWludCBfdV90ZXh0dXJlID0gMDsKdW5pZm9ybSBUZXh0dXJlMkQ8ZmxvYXQ0PiB0ZXh0dXJlczJEWzFdIDogcmVnaXN0ZXIodDApOwp1bmlmb3JtIFNhbXBsZXJTdGF0ZSBzYW1wbGVyczJEWzFdIDogcmVnaXN0ZXIoczApOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDIgX3ZfdGV4Q29vcmQgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKKGdsX0NvbG9yWzBdID0gZ2xfdGV4dHVyZTJEKF91X3RleHR1cmUsIF92X3RleENvb3JkKSk7Cn0Kc3RydWN0IFBTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQyIHYwIDogVEVYQ09PUkQwOwp9OwoKQEAgUElYRUwgT1VUUFVUIEBAClBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KQp7CiAgICBfdl90ZXhDb29yZCA9IGlucHV0LnYwLnh5OwoKICAgIGdsX21haW4oKTsKCiAgICByZXR1cm4gZ2VuZXJhdGVPdXRwdXQoKTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABSiwAACQAAAGdsX0NvbG9yMAsAAABnbF9Db2xvclswXQAAAAABAgAAc3RydWN0IEdTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0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AAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAQAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAACZBgAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfcG9zaXRpb24gPSB7MCwgMH07CnN0YXRpYyBmbG9hdDIgX3RleHR1cmVDb29yZHMgPSB7MCwgMH07CnN0YXRpYyBmbG9hdDQgX2NvbG9yID0gezAsIDAsIDAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQ0IF92Y29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgIGZsb2F0MiBfdnRleHR1cmVDb29yZHNfU3RhZ2UwID0gezAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewpmbG9hdDIgX3BvczIgPSBfcG9zaXRpb247CihfdmNvbG9yX1N0YWdlMCA9IF9jb2xvcik7CihfdnRleHR1cmVDb29yZHNfU3RhZ2UwID0gX3RleHR1cmVDb29yZHMpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX3Zjb2xvcl9TdGFnZTA7CiAgICBvdXRwdXQudjEgPSBfdnRleHR1cmVDb29yZHNfU3RhZ2UwOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAA2wUAAC8vIFVuaWZvcm1zCgpzdGF0aWMgY29uc3QgdWludCBfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwID0gMDsKdW5pZm9ybSBUZXh0dXJlMkQ8ZmxvYXQ0PiB0ZXh0dXJlczJEWzFdIDogcmVnaXN0ZXIodDApOwp1bmlmb3JtIFNhbXBsZXJTdGF0ZSBzYW1wbGVyczJEWzFdIDogcmVnaXN0ZXIoczApOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3Zjb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQyIF92dGV4dHVyZUNvb3Jkc19TdGFnZTAgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9vdXRwdXRDb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnsKKF9vdXRwdXRDb2xvcl9TdGFnZTAgPSBfdmNvbG9yX1N0YWdlMCk7CmZsb2F0MiBfdGV4Q29vcmQgPSB7MCwgMH07CihfdGV4Q29vcmQgPSBfdnRleHR1cmVDb29yZHNfU3RhZ2UwKTsKKF9vdXRwdXRDb2xvcl9TdGFnZTAgPSAoX291dHB1dENvbG9yX1N0YWdlMCAqIGdsX3RleHR1cmUyRChfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwLCBfdGV4Q29vcmQpKSk7Cn0KewooZ2xfQ29sb3JbMF0gPSBfb3V0cHV0Q29sb3JfU3RhZ2UwKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX3Zjb2xvcl9TdGFnZTAgPSBpbnB1dC52MDsKICAgIF92dGV4dHVyZUNvb3Jkc19TdGFnZTAgPSBpbnB1dC52MS54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAUgIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCnN0cnVjdCBH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dDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0NCBfdmNvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKc3RhdGljICBmbG9hdDIgX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9IHswLCAwfTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9jb2xvciA9IF9pbkNvbG9yOwooX3Zjb2xvcl9TdGFnZTAgPSBfY29sb3IpOwpmbG9hdDIgX3BvczIgPSBfaW5Qb3NpdGlvbjsKKF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSBtdWwodHJhbnNwb3NlKF91Q29vcmRUcmFuc2Zvcm1NYXRyaXhfMF9TdGFnZTApLCB2ZWMzX2N0b3IoX2luTG9jYWxDb29yZCwgMS4wKSkueHkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX3Zjb2xvcl9TdGFnZTA7CiAgICBvdXRwdXQudjEgPSBfdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAA3gUAAC8vIFVuaWZvcm1zCgpzdGF0aWMgY29uc3QgdWludCBfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxID0gMDsKdW5pZm9ybSBUZXh0dXJlMkQ8ZmxvYXQ0PiB0ZXh0dXJlczJEWzFdIDogcmVnaXN0ZXIodDApOwp1bmlmb3JtIFNhbXBsZXJTdGF0ZSBzYW1wbGVyczJEWzFdIDogcmVnaXN0ZXIoczApOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3Zjb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9vdXRwdXRDb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnsKKF9vdXRwdXRDb2xvcl9TdGFnZTAgPSBfdmNvbG9yX1N0YWdlMCk7Cn0KZmxvYXQ0IF9vdXRwdXRfU3RhZ2UxID0gezAsIDAsIDAsIDB9Owp7Cihfb3V0cHV0X1N0YWdlMSA9IChfb3V0cHV0Q29sb3JfU3RhZ2UwICogZ2xfdGV4dHVyZTJEKF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEsIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTApLnh5encpKTsKfQp7CihnbF9Db2xvclswXSA9IF9vdXRwdXRfU3RhZ2UxKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX3Zjb2xvcl9TdGFnZTAgPSBpbnB1dC52MDsKICAgIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSBpbnB1dC52MS54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAUgIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBpbnB1dC52MDsgCiAgICBvdXRwdXQudjEgPSBpbnB1dC52MTsgCiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgogICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gaW5wdXQuZHhfUG9zaXRpb247CiNlbmRpZiAgLy8gQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgp9CgEAAAADAAAAUgAAAFQAAABSAAAA9AQAAERYQkMbK9ACfXJlxLbGGIatM1zmAQAAAPQEAAAFAAAANAAA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AEYQEAADAAAARn4QAAAAAAAAYBAAAAAAADgAAAfyIBAAAAAAAEYOEAAAAAAARh4QAAIAAAA+AAABU1RBVJQAAAADAAAAAQAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AQABAAEAAAABAAAAAQAAAFCLAADyjQAADAAAAGluX3RleF9jb29yZA4AAABfdWluX3RleF9jb29yZAAAAAABAAAAAAAAAAAAAAADAAAAUIsAAPKNAAAIAAAAdGNfc2NhbGUKAAAAX3V0Y19zY2FsZQAAAAABAAAAAAAAAP////////////////////8AAAAAUIsAAPKNAAAJAAAAdGNfb2Zmc2V0CwAAAF91dGNfb2Zmc2V0AAAAAAEAAAAAAAAA/////////////////////wAAAABeiwAAAAAAAAoAAABpbl90ZXh0dXJlDAAAAF91aW5fdGV4dHVyZQAAAAABAAAAAAAAAP////////////////////8AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIwAAAAAAAAAAAAAAQAAAAYUAAABAAEAAQAAAAIAAAADAAAAAQAAAOENAAABAAAAAAAAAAMAAAADAAAAAAAAAAMAAAADAAAAAwAAABQUAACMAAAAAAAAAAAAAAAAsQAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////8QAAAAAQAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAEAAAAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAD/////AAAAAP////8BAAAAAAAAAAAAAAD/////AQAAAP////8BAAAAAAAAAAEAAAAAAAAA//////////8BAAAAAAAAAAAAAAAAAAAARQUAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxLCBmbG9hdCB4MiwgZmxvYXQgeDMpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxLCB4MiwgeDMpOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0MiBfdGNfc2NhbGUgOiByZWdpc3RlcihjMCk7CnVuaWZvcm0gZmxvYXQyIF90Y19vZmZzZXQgOiByZWdpc3RlcihjMSk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBBdHRyaWJ1dGVzCnN0YXRpYyBmbG9hdDIgX2luX3RleF9jb29yZCA9IHswLCAwfTsKCnN0YXRpYyBmbG9hdDQgZ2xfUG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0MiBfdGV4X2Nvb3JkID0gezAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChfaW5fdGV4X2Nvb3JkLnggKiAyLjApIC0gMS4wKSwgKDEuMCAtIChfaW5fdGV4X2Nvb3JkLnkgKiAyLjApKSwgMC4wLCAxLjApKTsKKF90ZXhfY29vcmQgPSAoKF90Y19zY2FsZSAqIF9pbl90ZXhfY29vcmQpICsgX3RjX29mZnNldCkpOwp9CgpAQCBWRVJURVggQVRUUklCVVRFUyBAQApzdHJ1Y3QgVlNfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQyIHYwIDogVEVYQ09PUkQwOwp9OwoKVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpCnsKICAgIGluaXRBdHRyaWJ1dGVzKGlucHV0KTsKCiAgICBnbF9tYWluKCk7CgogICAgVlNfT1VUUFVUIG91dHB1dDsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtIGdsX1Bvc2l0aW9uLnk7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7CiAgICBvdXRwdXQudjAgPSBfdGV4X2Nvb3JkOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAAZAQAAC8vIFVuaWZvcm1zCgpzdGF0aWMgY29uc3QgdWludCBfaW5fdGV4dHVyZSA9IDA7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFsxXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFsxXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQyIF90ZXhfY29vcmQgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKKGdsX0NvbG9yWzBdID0gZ2xfdGV4dHVyZTJEKF9pbl90ZXh0dXJlLCBfdGV4X2Nvb3JkKS54eXp3KTsKfQpzdHJ1Y3QgUFNfSU5QVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7Cn07CgpAQCBQSVhFTCBPVVRQVVQgQEAKUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpCnsKICAgIF90ZXhfY29vcmQgPSBpbnB1dC52MC54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAAQIA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AAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAD/////AAAAAP////8BAAAAAAAAAAAAAAD/////AQAAAP////8BAAAAAAAAAAEAAAAAAAAA//////////8BAAAAAAAAAAAAAAAAAAAARQUAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxLCBmbG9hdCB4MiwgZmxvYXQgeDMpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxLCB4MiwgeDMpOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0MiBfdGNfc2NhbGUgOiByZWdpc3RlcihjMCk7CnVuaWZvcm0gZmxvYXQyIF90Y19vZmZzZXQgOiByZWdpc3RlcihjMSk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBBdHRyaWJ1dGVzCnN0YXRpYyBmbG9hdDIgX2luX3RleF9jb29yZCA9IHswLCAwfTsKCnN0YXRpYyBmbG9hdDQgZ2xfUG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0MiBfdGV4X2Nvb3JkID0gezAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChfaW5fdGV4X2Nvb3JkLnggKiAyLjApIC0gMS4wKSwgKChfaW5fdGV4X2Nvb3JkLnkgKiAyLjApIC0gMS4wKSwgMC4wLCAxLjApKTsKKF90ZXhfY29vcmQgPSAoKF90Y19zY2FsZSAqIF9pbl90ZXhfY29vcmQpICsgX3RjX29mZnNldCkpOwp9CgpAQCBWRVJURVggQVRUUklCVVRFUyBAQApzdHJ1Y3QgVlNfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQyIHYwIDogVEVYQ09PUkQwOwp9OwoKVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpCnsKICAgIGluaXRBdHRyaWJ1dGVzKGlucHV0KTsKCiAgICBnbF9tYWluKCk7CgogICAgVlNfT1VUUFVUIG91dHB1dDsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtIGdsX1Bvc2l0aW9uLnk7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7CiAgICBvdXRwdXQudjAgPSBfdGV4X2Nvb3JkOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAAZAQAAC8vIFVuaWZvcm1zCgpzdGF0aWMgY29uc3QgdWludCBfaW5fdGV4dHVyZSA9IDA7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFsxXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFsxXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQyIF90ZXhfY29vcmQgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKKGdsX0NvbG9yWzBdID0gZ2xfdGV4dHVyZTJEKF9pbl90ZXh0dXJlLCBfdGV4X2Nvb3JkKS54eXp3KTsKfQpzdHJ1Y3QgUFNfSU5QVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7Cn07CgpAQCBQSVhFTCBPVVRQVVQgQEAKUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpCnsKICAgIF90ZXhfY29vcmQgPSBpbnB1dC52MC54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAAQIA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Q29tcGlsZXIgMTAuMQBJU0dOaAAAAAMAAAAIAAAAUAAAAAAAAAABAAAAAwAAAAAAAAAPAAAAXAAAAAEAAAAAAAAAAwAAAAEAAAAPAAAAXAAAAAAAAAAAAAAAAwAAAAIAAAADAwAAU1ZfUG9zaXRpb24AVEVYQ09PUkQAq6urT1NHTiwAAAABAAAACAAAACAAAAAAAAAAAAAAAAMAAAAAAAAADwAAAFNWX1RBUkdFVACrq1NIRVhwAAAAUAAAABwAAABqCAABWgAAAwBgEAAAAAAAWBgABABwEAAAAAAAVVUAAGIQAAMyEBAAAgAAAGUAAAPyIBAAAAAAAEUAAIvCAACAQ1UVAPIgEAAAAAAARhAQAAIAAABGfhAAAAAAAABgEAAAAAAAPgAAAVNUQVSUAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AQABAAEAAAABAAAAAQAAAFCLAADyjQAADAAAAGluX3RleF9jb29yZA4AAABfdWluX3RleF9jb29yZAAAAAABAAAAAAAAAAAAAAAGAAAAUIsAAPKNAAAOAAAAdmlkZW9fdGNfc2NhbGUQAAAAX3V2aWRlb190Y19zY2FsZQAAAAABAAAAAAAAAP////////////////////8AAAAAUIsAAPKNAAAPAAAAdmlkZW9fdGNfb2Zmc2V0EQAAAF91dmlkZW9fdGNfb2Zmc2V0AAAAAAEAAAAAAAAA/////////////////////wAAAABQiwAA8o0AAA8AAABjYW52YXNfdGNfc2NhbGURAAAAX3VjYW52YXNfdGNfc2NhbGUAAAAAAQAAAAAAAAD/////////////////////AAAAAFCLAADyjQAAEAAAAGNhbnZhc190Y19vZmZzZXQSAAAAX3VjYW52YXNfdGNfb2Zmc2V0AAAAAAEAAAAAAAAA/////////////////////wAAAABeiwAAAAAAAA0AAAB2aWRlb190ZXh0dXJlDwAAAF91dmlkZW9fdGV4dHVyZQAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAOAAAAY2FudmFzX3RleHR1cmUQAAAAX3VjYW52YXNfdGV4dHVyZQAAAAABAAAAAAAAAP////////////////////8AAAAABgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIwAAAAAAAAAAAAAAQAAAAYUAAABAAEAAQAAAAQAAAAGAAAAAgAAAOENAAABAAAAAAAAAOENAAABAAAAAAAAAAYAAAAGAAAAAAAAAAYAAAAGAAAAAwAAABQUAACMAAAAAAAAAAAAAAAAsQAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////8QAAAAAQAAAAAAAADhDQAAAQAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAEAAAAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAABgAAAAAAAAD/////AAAAAP////8BAAAAAAAAAAAAAAD/////AQAAAP////8BAAAAAAAAAAAAAAD/////AgAAAP////8BAAAAAAAAAAAAAAD/////AwAAAP////8BAAAAAAAAAAEAAAAAAAAA//////////8BAAAAAAAAAAEAAAABAAAA//////////8BAAAAAAAAAAAAAAAAAAAAiQYAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxLCBmbG9hdCB4MiwgZmxvYXQgeDMpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxLCB4MiwgeDMpOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0MiBfdmlkZW9fdGNfc2NhbGUgOiByZWdpc3RlcihjMCk7CnVuaWZvcm0gZmxvYXQyIF92aWRlb190Y19vZmZzZXQgOiByZWdpc3RlcihjMSk7CnVuaWZvcm0gZmxvYXQyIF9jYW52YXNfdGNfc2NhbGUgOiByZWdpc3RlcihjMik7CnVuaWZvcm0gZmxvYXQyIF9jYW52YXNfdGNfb2Zmc2V0IDogcmVnaXN0ZXIoYzMpOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gQXR0cmlidXRlcwpzdGF0aWMgZmxvYXQyIF9pbl90ZXhfY29vcmQgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDIgX3ZpZGVvX3RleF9jb29yZCA9IHswLCAwfTsKc3RhdGljICBmbG9hdDIgX2NhbnZhc190ZXhfY29vcmQgPSB7MCwgMH07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQyIGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgIDogcGFja29mZnNldChjMyk7Cn07Cgp2b2lkIGdsX21haW4oKQp7CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcigoKF9pbl90ZXhfY29vcmQueCAqIDIuMCkgLSAxLjApLCAoKF9pbl90ZXhfY29vcmQueSAqIDIuMCkgLSAxLjApLCAwLjAsIDEuMCkpOwooX3ZpZGVvX3RleF9jb29yZCA9ICgoX3ZpZGVvX3RjX3NjYWxlICogX2luX3RleF9jb29yZCkgKyBfdmlkZW9fdGNfb2Zmc2V0KSk7CihfY2FudmFzX3RleF9jb29yZCA9ICgoX2NhbnZhc190Y19zY2FsZSAqIF9pbl90ZXhfY29vcmQpICsgX2NhbnZhc190Y19vZmZzZXQpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX2NhbnZhc190ZXhfY29vcmQ7CiAgICBvdXRwdXQudjEgPSBfdmlkZW9fdGV4X2Nvb3JkOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAAfgUAAC8vIFVuaWZvcm1zCgpzdGF0aWMgY29uc3QgdWludCBfdmlkZW9fdGV4dHVyZSA9IDA7CnN0YXRpYyBjb25zdCB1aW50IF9jYW52YXNfdGV4dHVyZSA9IDE7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFsyXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFsyXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQyIF92aWRlb190ZXhfY29vcmQgPSB7MCwgMH07CnN0YXRpYyAgZmxvYXQyIF9jYW52YXNfdGV4X2Nvb3JkID0gezAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Db2xvclsxXSA9CnsKICAgIGZsb2F0NCgwLCAwLCAwLCAwKQp9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgc3RydWN0IFNhbXBsZXJNZXRhZGF0YQogICAgewogICAgICAgIGludCBiYXNlTGV2ZWw7CiAgICAgICAgaW50IGludGVybmFsRm9ybWF0Qml0czsKICAgICAgICBpbnQgd3JhcE1vZGVzOwogICAgICAgIGludCBwYWRkaW5nOwogICAgfTsKICAgIFNhbXBsZXJNZXRhZGF0YSBzYW1wbGVyTWV0YWRhdGFbMl0gOiBwYWNrb2Zmc2V0KGM0KTsKfTsKCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPTE9SCmZsb2F0NCBnbF90ZXh0dXJlMkQodWludCBzYW1wbGVySW5kZXgsIGZsb2F0MiB0KQp7CiAgICByZXR1cm4gdGV4dHVyZXMyRFtzYW1wbGVySW5kZXhdLlNhbXBsZShzYW1wbGVyczJEW3NhbXBsZXJJbmRleF0sIGZsb2F0Mih0LngsIHQueSkpOwp9Cgp2b2lkIGdsX21haW4oKQp7CmZsb2F0NCBfdmlkZW8gPSBnbF90ZXh0dXJlMkQoX3ZpZGVvX3RleHR1cmUsIF92aWRlb190ZXhfY29vcmQpOwpmbG9hdDQgX2NhbnZhcyA9IGdsX3RleHR1cmUyRChfY2FudmFzX3RleHR1cmUsIF9jYW52YXNfdGV4X2Nvb3JkKTsKKGdsX0NvbG9yWzBdID0gbGVycChfdmlkZW8sIF9jYW52YXMsIF9jYW52YXMudykpOwp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX2NhbnZhc190ZXhfY29vcmQgPSBpbnB1dC52MC54eTsKICAgIF92aWRlb190ZXhfY29vcmQgPSBpbnB1dC52MS54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAUgIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBpbnB1dC52MDsgCiAgICBvdXRwdXQudjEgPSBpbnB1dC52MTsgCiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgogICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gaW5wdXQuZHhfUG9zaXRpb247CiNlbmRpZiAgLy8gQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgp9CgEAAAABAAAAUgAAAMQEAABEWEJDOfPg2h9oxjeCMM2+hDvpqgEAAADEBAAABQAAADQAAAD0AQAAKAIAALACAAAoBAAAUkRFRrgBAAABAAAAaAAAAAEAAAA8AAAAAAX+/wDBAACQAQAAUkQxMTwAAAAYAAAAIAAAACgAAAAkAAAADAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAACRHbG9iYWxzAKurq1wAAAAEAAAAgAAAAEAAAAAAAAAAAAAAACABAAAA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AAAAAAAAAEYOEAABAAAAMgAACfIgEAAAAAAA9g8QAAEAAABGDhAAAgAAAEYOEAAAAAAAPgAAAVNUQVSUAAAABQAAAAMAAAAAAAAAAwAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AQABAAEAAAABAAAAAQAAAFCLAADyjQAADAAAAGluX3RleF9jb29yZA4AAABfdWluX3RleF9jb29yZAAAAAABAAAAAAAAAAAAAAAHAAAAUIsAAPKNAAAIAAAAdGNfc2NhbGUKAAAAX3V0Y19zY2FsZQAAAAABAAAAAAAAAP////////////////////8AAAAAUIsAAPKNAAAJAAAAdGNfb2Zmc2V0CwAAAF91dGNfb2Zmc2V0AAAAAAEAAAAAAAAA/////////////////////wAAAAAGFAAA8Y0AAAUAAAB5X2FkagcAAABfdXlfYWRqAAAAAAEAAAAAAAAA/////////////////////wAAAABbiwAA8Y0AAAkAAABjY19tYXRyaXgLAAAAX3VjY19tYXRyaXgAAAAAAQAAAAAAAAD/////////////////////AAAAAF6LAAAAAAAACQAAAHlfdGV4dHVyZQsAAABfdXlfdGV4dHVyZQAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAJAAAAdV90ZXh0dXJlCwAAAF91dV90ZXh0dXJlAAAAAAEAAAAAAAAA/////////////////////wAAAABeiwAAAAAAAAkAAAB2X3RleHR1cmULAAAAX3V2X3RleHR1cmUAAAAAAQAAAAAAAAD/////////////////////AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAAAAAAAABAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyMAAAAAAAAAAAAAAEAAAAGFAAAAQABAAEAAAAEAAAABwAAAAMAAADhDQAAAQAAAAAAAADhDQAAAQAAAAAAAADhDQAAAQAAAAAAAAAHAAAABwAAAAAAAAAHAAAABwAAAAMAAAAUFAAAjAAAAAAAAAAAAAAAALEAAAAAAAAAAAAA////////////////////////////////////////////////////////////////////////////////EAAAAAEAAAAAAAAA4Q0AAAEAAAAAAAAA4Q0AAAEAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AABAAAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAcAAAAAAAAA/////wAAAAD/////AQAAAAAAAAAAAAAA/////wEAAAD/////AQAAAAAAAAAAAAAAAAAAAP//////////AQAAAAAAAAAAAAAAAQAAAP//////////AwAAAAAAAAABAAAAAAAAAP//////////AQAAAAAAAAABAAAAAQAAAP//////////AQAAAAAAAAABAAAAAgAAAP//////////AQAAAAAAAAAAAAAAAAAAAEUFAABmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIsIGZsb2F0IHgzKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSwgeDIsIHgzKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdDIgX3RjX3NjYWxlIDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0MiBfdGNfb2Zmc2V0IDogcmVnaXN0ZXIoYzEpOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gQXR0cmlidXRlcwpzdGF0aWMgZmxvYXQyIF9pbl90ZXhfY29vcmQgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDIgX3RleF9jb29yZCA9IHswLCAwfTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoX2luX3RleF9jb29yZC54ICogMi4wKSAtIDEuMCksICgxLjAgLSAoX2luX3RleF9jb29yZC55ICogMi4wKSksIDAuMCwgMS4wKSk7CihfdGV4X2Nvb3JkID0gKChfdGNfc2NhbGUgKiBfaW5fdGV4X2Nvb3JkKSArIF90Y19vZmZzZXQpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX3RleF9jb29yZDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAAG4GAABmbG9hdDMgdmVjM19jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIpCnsKICAgIHJldHVybiBmbG9hdDMoeDAsIHgxLCB4Mik7Cn0KZmxvYXQ0IHZlYzRfY3RvcihmbG9hdDMgeDAsIGZsb2F0IHgxKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQgX3lfYWRqIDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0M3gzIF9jY19tYXRyaXggOiByZWdpc3RlcihjMSk7CnN0YXRpYyBjb25zdCB1aW50IF95X3RleHR1cmUgPSAwOwpzdGF0aWMgY29uc3QgdWludCBfdV90ZXh0dXJlID0gMTsKc3RhdGljIGNvbnN0IHVpbnQgX3ZfdGV4dHVyZSA9IDI7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFszXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFszXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQyIF90ZXhfY29vcmQgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVszXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQgX3kgPSAoZ2xfdGV4dHVyZTJEKF95X3RleHR1cmUsIF90ZXhfY29vcmQpLnggKyBfeV9hZGopOwpmbG9hdCBfdSA9IChnbF90ZXh0dXJlMkQoX3VfdGV4dHVyZSwgX3RleF9jb29yZCkueCAtIDAuNSk7CmZsb2F0IF92ID0gKGdsX3RleHR1cmUyRChfdl90ZXh0dXJlLCBfdGV4X2Nvb3JkKS54IC0gMC41KTsKZmxvYXQzIF9yZ2IgPSBtdWwodHJhbnNwb3NlKF9jY19tYXRyaXgpLCB2ZWMzX2N0b3IoX3ksIF91LCBfdikpOwooZ2xfQ29sb3JbMF0gPSB2ZWM0X2N0b3IoX3JnYiwgMS4wKSk7Cn0Kc3RydWN0IFBTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQyIHYwIDogVEVYQ09PUkQwOwp9OwoKQEAgUElYRUwgT1VUUFVUIEBAClBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KQp7CiAgICBfdGV4X2Nvb3JkID0gaW5wdXQudjAueHk7CgogICAgZ2xfbWFpbigpOwoKICAgIHJldHVybiBnZW5lcmF0ZU91dHB1dCgpOwp9CgAAAAAAAAAAAAAAAAAA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EAAAAAAACoAgAAAAAAAAAAAARQAAi8IAAIBDVRUAggAQAAAAAABGEBAAAgAAAJZzEAABAAAAAGAQAAEAAAAAAAAHIgAQAAAAAAA6ABAAAAAAAAFAAAAAAAC/RQAAi8IAAIBDVRUAggAQAAAAAABGEBAAAgAAAJZzEAACAAAAAGAQAAIAAAAAAAAHQgAQAAAAAAA6ABAAAAAAAAFAAAAAAAC/EAAACBIgEAAAAAAARoIgAAAAAAABAAAARgIQAAAAAAAQAAAIIiAQAAAAAABGgiAAAAAAAAIAAABGAhAAAAAAABAAAAhCIBAAAAAAAEaCIAAAAAAAAwAAAEYCEAAAAAAAPgAAAVNUQVSUAAAACwAAAAEAAAAAAAAAAgAAAAYAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AQABAAEAAAABAAAAAQAAAFCLAADyjQAADAAAAGluX3RleF9jb29yZA4AAABfdWluX3RleF9jb29yZAAAAAABAAAAAAAAAAAAAAAKAAAAUIsAAPKNAAAOAAAAdmlkZW9fdGNfc2NhbGUQAAAAX3V2aWRlb190Y19zY2FsZQAAAAABAAAAAAAAAP////////////////////8AAAAAUIsAAPKNAAAPAAAAdmlkZW9fdGNfb2Zmc2V0EQAAAF91dmlkZW9fdGNfb2Zmc2V0AAAAAAEAAAAAAAAA/////////////////////wAAAABQiwAA8o0AAA8AAABjYW52YXNfdGNfc2NhbGURAAAAX3VjYW52YXNfdGNfc2NhbGUAAAAAAQAAAAAAAAD/////////////////////AAAAAFCLAADyjQAAEAAAAGNhbnZhc190Y19vZmZzZXQSAAAAX3VjYW52YXNfdGNfb2Zmc2V0AAAAAAEAAAAAAAAA/////////////////////wAAAAAGFAAA8Y0AAAUAAAB5X2FkagcAAABfdXlfYWRqAAAAAAEAAAAAAAAA/////////////////////wAAAABbiwAA8Y0AAAkAAABjY19tYXRyaXgLAAAAX3VjY19tYXRyaXgAAAAAAQAAAAAAAAD/////////////////////AAAAAF6LAAAAAAAACQAAAHlfdGV4dHVyZQsAAABfdXlfdGV4dHVyZQAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAJAAAAdV90ZXh0dXJlCwAAAF91dV90ZXh0dXJlAAAAAAEAAAAAAAAA/////////////////////wAAAABeiwAAAAAAAAkAAAB2X3RleHR1cmULAAAAX3V2X3RleHR1cmUAAAAAAQAAAAAAAAD/////////////////////AAAAAF6LAAAAAAAADgAAAGNhbnZhc190ZXh0dXJlEAAAAF91Y2FudmFzX3RleHR1cmUAAAAAAQAAAAAAAAD/////////////////////AAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAAAAAAAABAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABgAAAAAAAAAAAAAABwAAAAAAAAAAAAAACAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyMAAAAAAAAAAAAAAEAAAAGFAAAAQABAAEAAAAGAAAACgAAAAQAAADhDQAAAQAAAAAAAADhDQAAAQAAAAAAAADhDQAAAQAAAAAAAADhDQAAAQAAAAAAAAAKAAAACgAAAAAAAAAKAAAACgAAAAMAAAAUFAAAjAAAAAAAAAAAAAAAALEAAAAAAAAAAAAA////////////////////////////////////////////////////////////////////////////////EAAAAAEAAAAAAAAA4Q0AAAEAAAAAAAAA4Q0AAAEAAAAAAAAA4Q0AAAEAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AABAAAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAA/////wAAAAD/////AQAAAAAAAAAAAAAA/////wEAAAD/////AQAAAAAAAAAAAAAA/////wIAAAD/////AQAAAAAAAAAAAAAA/////wMAAAD/////AQAAAAAAAAAAAAAAAAAAAP//////////AQAAAAAAAAAAAAAAAQAAAP//////////AwAAAAAAAAABAAAAAAAAAP//////////AQAAAAAAAAABAAAAAQAAAP//////////AQAAAAAAAAABAAAAAgAAAP//////////AQAAAAAAAAABAAAAAwAAAP//////////AQAAAAAAAAAAAAAAAAAAAIkGAABmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIsIGZsb2F0IHgzKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSwgeDIsIHgzKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdDIgX3ZpZGVvX3RjX3NjYWxlIDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0MiBfdmlkZW9fdGNfb2Zmc2V0IDogcmVnaXN0ZXIoYzEpOwp1bmlmb3JtIGZsb2F0MiBfY2FudmFzX3RjX3NjYWxlIDogcmVnaXN0ZXIoYzIpOwp1bmlmb3JtIGZsb2F0MiBfY2FudmFzX3RjX29mZnNldCA6IHJlZ2lzdGVyKGMzKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5fdGV4X2Nvb3JkID0gezAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQyIF92aWRlb190ZXhfY29vcmQgPSB7MCwgMH07CnN0YXRpYyAgZmxvYXQyIF9jYW52YXNfdGV4X2Nvb3JkID0gezAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChfaW5fdGV4X2Nvb3JkLnggKiAyLjApIC0gMS4wKSwgKDEuMCAtIChfaW5fdGV4X2Nvb3JkLnkgKiAyLjApKSwgMC4wLCAxLjApKTsKKF92aWRlb190ZXhfY29vcmQgPSAoKF92aWRlb190Y19zY2FsZSAqIF9pbl90ZXhfY29vcmQpICsgX3ZpZGVvX3RjX29mZnNldCkpOwooX2NhbnZhc190ZXhfY29vcmQgPSAoKF9jYW52YXNfdGNfc2NhbGUgKiBfaW5fdGV4X2Nvb3JkKSArIF9jYW52YXNfdGNfb2Zmc2V0KSk7Cn0KCkBAIFZFUlRFWCBBVFRSSUJVVEVTIEBACnN0cnVjdCBWU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07CgpWU19PVVRQVVQgbWFpbihWU19JTlBVVCBpbnB1dCkKewogICAgaW5pdEF0dHJpYnV0ZXMoaW5wdXQpOwoKICAgIGdsX21haW4oKTsKCiAgICBWU19PVVRQVVQgb3V0cHV0OwogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gZ2xfUG9zaXRpb247CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLng7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueSA9IC0gZ2xfUG9zaXRpb24ueTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udzsKICAgIG91dHB1dC52MCA9IF9jYW52YXNfdGV4X2Nvb3JkOwogICAgb3V0cHV0LnYxID0gX3ZpZGVvX3RleF9jb29yZDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAAJMHAABmbG9hdDMgdmVjM19jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIpCnsKICAgIHJldHVybiBmbG9hdDMoeDAsIHgxLCB4Mik7Cn0KZmxvYXQ0IHZlYzRfY3RvcihmbG9hdDMgeDAsIGZsb2F0IHgxKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQgX3lfYWRqIDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0M3gzIF9jY19tYXRyaXggOiByZWdpc3RlcihjMSk7CnN0YXRpYyBjb25zdCB1aW50IF95X3RleHR1cmUgPSAwOwpzdGF0aWMgY29uc3QgdWludCBfdV90ZXh0dXJlID0gMTsKc3RhdGljIGNvbnN0IHVpbnQgX3ZfdGV4dHVyZSA9IDI7CnN0YXRpYyBjb25zdCB1aW50IF9jYW52YXNfdGV4dHVyZSA9IDM7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFs0XSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFs0XSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQyIF92aWRlb190ZXhfY29vcmQgPSB7MCwgMH07CnN0YXRpYyAgZmxvYXQyIF9jYW52YXNfdGV4X2Nvb3JkID0gezAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Db2xvclsxXSA9CnsKICAgIGZsb2F0NCgwLCAwLCAwLCAwKQp9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgc3RydWN0IFNhbXBsZXJNZXRhZGF0YQogICAgewogICAgICAgIGludCBiYXNlTGV2ZWw7CiAgICAgICAgaW50IGludGVybmFsRm9ybWF0Qml0czsKICAgICAgICBpbnQgd3JhcE1vZGVzOwogICAgICAgIGludCBwYWRkaW5nOwogICAgfTsKICAgIFNhbXBsZXJNZXRhZGF0YSBzYW1wbGVyTWV0YWRhdGFbNF0gOiBwYWNrb2Zmc2V0KGM0KTsKfTsKCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPTE9SCmZsb2F0NCBnbF90ZXh0dXJlMkQodWludCBzYW1wbGVySW5kZXgsIGZsb2F0MiB0KQp7CiAgICByZXR1cm4gdGV4dHVyZXMyRFtzYW1wbGVySW5kZXhdLlNhbXBsZShzYW1wbGVyczJEW3NhbXBsZXJJbmRleF0sIGZsb2F0Mih0LngsIHQueSkpOwp9Cgp2b2lkIGdsX21haW4oKQp7CmZsb2F0IF95ID0gKGdsX3RleHR1cmUyRChfeV90ZXh0dXJlLCBfdmlkZW9fdGV4X2Nvb3JkKS54ICsgX3lfYWRqKTsKZmxvYXQgX3UgPSAoZ2xfdGV4dHVyZTJEKF91X3RleHR1cmUsIF92aWRlb190ZXhfY29vcmQpLnggLSAwLjUpOwpmbG9hdCBfdiA9IChnbF90ZXh0dXJlMkQoX3ZfdGV4dHVyZSwgX3ZpZGVvX3RleF9jb29yZCkueCAtIDAuNSk7CmZsb2F0MyBfcmdiID0gbXVsKHRyYW5zcG9zZShfY2NfbWF0cml4KSwgdmVjM19jdG9yKF95LCBfdSwgX3YpKTsKZmxvYXQ0IF92aWRlbyA9IHZlYzRfY3RvcihfcmdiLCAxLjApOwpmbG9hdDQgX2NhbnZhcyA9IGdsX3RleHR1cmUyRChfY2FudmFzX3RleHR1cmUsIF9jYW52YXNfdGV4X2Nvb3JkKTsKKGdsX0NvbG9yWzBdID0gbGVycChfdmlkZW8sIF9jYW52YXMsIF9jYW52YXMudykpOwp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX2NhbnZhc190ZXhfY29vcmQgPSBpbnB1dC52MC54eTsKICAgIF92aWRlb190ZXhfY29vcmQgPSBpbnB1dC52MS54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAUgIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBpbnB1dC52MDsgCiAgICBvdXRwdXQudjEgPSBpbnB1dC52MTsgCiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgogICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gaW5wdXQuZHhfUG9zaXRpb247CiNlbmRpZiAgLy8gQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgp9CgEAAAABAAAAUgAAAMQEAABEWEJDIxJyDp/6yv2HcbmhKU9MtAEAAADEBAAABQAAADQAAAD0AQAAKAIAALACAAAoBAAAUkRFRrgBAAABAAAAaAAAAAEAAAA8AAAAAAX+/wDBAACQAQAAUkQxMTwAAAAYAAAAIAAAACgAAAAkAAAADAAAAAAAAABcAAAAAAAAAAAAAAAAAAAA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NCh4MCwgeDEsIHgyKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdDIgX3VuaWZvcm1PZmZzZXQgOiByZWdpc3RlcihjMCk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBBdHRyaWJ1dGVzCnN0YXRpYyBmbG9hdDIgX2F0dHJWZXJ0ZXggPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDIgX3ZhcnlpblRleENvb3JkaW5hdGUgPSB7MCwgMH07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQyIGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgIDogcGFja29mZnNldChjMyk7Cn07Cgp2b2lkIGdsX21haW4oKQp7CihnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLjAsIDAuMCwgMC4wLCAwLjApKTsKKF92YXJ5aW5UZXhDb29yZGluYXRlID0gKF9hdHRyVmVydGV4ICsgX3VuaWZvcm1PZmZzZXQpKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKF9hdHRyVmVydGV4LCAwLCAxKSk7Cn0KCkBAIFZFUlRFWCBBVFRSSUJVVEVTIEBACnN0cnVjdCBWU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7Cn07CgpWU19PVVRQVVQgbWFpbihWU19JTlBVVCBpbnB1dCkKewogICAgaW5pdEF0dHJpYnV0ZXMoaW5wdXQpOwoKICAgIGdsX21haW4oKTsKCiAgICBWU19PVVRQVVQgb3V0cHV0OwogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gZ2xfUG9zaXRpb247CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLng7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueSA9IC0gZ2xfUG9zaXRpb24ueTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udzsKICAgIG91dHB1dC52MCA9IF92YXJ5aW5UZXhDb29yZGluYXRlOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAA1QIAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQyIHgwLCBpbnQgeDEsIGludCB4MikKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyKTsKfQojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDIgX3ZhcnlpblRleENvb3JkaW5hdGUgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgp2b2lkIGdsX21haW4oKQp7CihnbF9Db2xvclswXSA9IHZlYzRfY3RvcihfdmFyeWluVGV4Q29vcmRpbmF0ZSwgMCwgMSkpOwp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX3ZhcnlpblRleENvb3JkaW5hdGUgPSBpbnB1dC52MC54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAAQIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBpbnB1dC52MDsgCiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgogICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gaW5wdXQuZHhfUG9zaXRpb247CiNlbmRpZiAgLy8gQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgp9CgEAAAABAAAAUgAAAIwDAABEWEJD/tHIIRYsA1Q2uS+x7LovggEAAACMAwAABQAAADQAAABUAQAAiAEAAPgBAADwAgAAUkRFRhgBAAABAAAAaAAAAAEAAAA8AAAAAAX+/wDBAADkAAAAUkQxMTwAAAAYAAAAIAAAACgAAAAkAAAADAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAACRHbG9iYWxzAKurq1wAAAABAAAAgAAAABAAAAAAAAAAAAAAAKgAAAAAAAAACAAAAAIAAADAAAAAAAAAAP////8AAAAA/////wAAAABfdW5pZm9ybU9mZnNldABmbG9hdDIAq6sBAAMAAQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALcAAABNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0AKurSVNHTiwAAAABAAAACAAAACAAAAAAAAAAAAAAAAMAAAAAAAAAAwMAAFRFWENPT1JEAKurq09TR05oAAAAAwAAAAgAAABQAAAAAAAAAAEAAAADAAAAAAAAAA8AAABcAAAAAQAAAAAAAAADAAAAAQAAAA8AAABcAAAAAAAAAAAAAAADAAAAAgAAAAMMAABTVl9Qb3NpdGlvbgBURVhDT09SRACrq6tTSEVY8AAAAFAAAQA8AAAAaggAAVkAAARGjiAAAAAAAAEAAABfAAADMhAQAAAAAABnAAAE8iAQAAAAAAABAAAAZQAAA/IgEAABAAAAZQAAAzIgEAACAAAAOAAACjIgEAAAAAAARhAQAAAAAAACQAAAAACAPwAAgL8AAAAAAAAAADYAAAjCIBAAAAAAAAJAAAAAAAAAAAAAAAAAAD8AAIA/NgAABTIgEAABAAAARhAQAAAAAAA2AAAIwiAQAAEAAAACQAAAAAAAAAAAAAAAAAAAAACAPwAAAAgyIBAAAgAAAEYQEAAAAAAARoAgAAAAAAAAAAAAPgAAAVNUQVSUAAAABgAAAAAAAAAAAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAA4IwAAFACAABEWEJD+pR60cQrkvjEEgIvi4w2mgEAAABQAgAABQAAADQAAACsAAAAHAEAAFABAAC0AQAAUkRFRnAAAAAAAAAAAAAAAAAAAAA8AAAAAAX//wDBAAA8AAAAUkQxMTwAAAAYAAAAIAAAACgAAAAkAAAADAAAAAAAAABNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0AKurSVNHTmgAAAADAAAACAAAAFAAAAAAAAAAAQAAAAMAAAAAAAAADwAAAFwAAAABAAAAAAAAAAMAAAABAAAADwAAAFwAAAAAAAAAAAAAAAMAAAACAAAAAwMAAFNWX1Bvc2l0aW9uAFRFWENPT1JEAKurq09TR04sAAAAAQAAAAgAAAAgAAAAAAAAAAAAAAADAAAAAAAAAA8AAABTVl9UQVJHRVQAq6tTSEVYXAAAAFAAAAAXAAAAaggAAWIQAAMyEBAAAgAAAGUAAAPyIBAAAAAAADYAAAUyIBAAAAAAAEYQEAACAAAANgAACMIgEAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAgD8+AAABU1RBVJQAAAADAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=AAABAAAACAAAACAAAAAAAAAAAAAAAAMAAAAAAAAADwAAAFNWX1RBUkdFVACrq1NIRVg8AAAAUAAAAA8AAABqCAABYhAAA/IQEAACAAAAZQAAA/IgEAAAAAAANgAABfIgEAAAAAAARh4QAAIAAAA+AAABU1RBVJQAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AwADAAMAAAADAAAAAgAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAFKLAADxjQAABwAAAGluQ29sb3IJAAAAX3VpbkNvbG9yAAAAAAEAAAAAAAAAAQAAAAEAAABSiwAA8o0AAAsAAABza19SVEFkanVzdA0AAABfdXNrX1JUQWRqdXN0AAAAAAEAAAAAAAAA/////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAD//////////////////////////////////////////////////////////////////////////xAAAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAAAAAAD0BQAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5Qb3NpdGlvbiA9IHswLCAwfTsKc3RhdGljIGZsb2F0NCBfaW5Db2xvciA9IHswLCAwLCAwLCAwfTsKCnN0YXRpYyBmbG9hdDQgZ2xfUG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0NCBfdmNvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9jb2xvciA9IF9pbkNvbG9yOwooX3Zjb2xvcl9TdGFnZTAgPSBfY29sb3IpOwpmbG9hdDIgX3BvczIgPSBfaW5Qb3NpdGlvbjsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKF9wb3MyLngsIF9wb3MyLnksIDAuMCwgMS4wKSk7CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcigoKGdsX1Bvc2l0aW9uLnggKiBfc2tfUlRBZGp1c3QueCkgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC55KSksICgoZ2xfUG9zaXRpb24ueSAqIF9za19SVEFkanVzdC56KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LncpKSwgMC4wLCBnbF9Qb3NpdGlvbi53KSk7Cn0KCkBAIFZFUlRFWCBBVFRSSUJVVEVTIEBACnN0cnVjdCBWU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7Cn07CgpWU19PVVRQVVQgbWFpbihWU19JTlBVVCBpbnB1dCkKewogICAgaW5pdEF0dHJpYnV0ZXMoaW5wdXQpOwoKICAgIGdsX21haW4oKTsKCiAgICBWU19PVVRQVVQgb3V0cHV0OwogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gZ2xfUG9zaXRpb247CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLng7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueSA9IC0gZ2xfUG9zaXRpb24ueTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udzsKICAgIG91dHB1dC52MCA9IF92Y29sb3JfU3RhZ2UwOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAAxgIAACNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0NCBfdmNvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKCnN0YXRpYyBmbG9hdDQgZ2xfQ29sb3JbMV0gPQp7CiAgICBmbG9hdDQoMCwgMCwgMCwgMCkKfTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKfTsKCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPTE9SCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9vdXRwdXRDb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnsKKF9vdXRwdXRDb2xvcl9TdGFnZTAgPSBfdmNvbG9yX1N0YWdlMCk7Cn0KewooZ2xfQ29sb3JbMF0gPSBfb3V0cHV0Q29sb3JfU3RhZ2UwKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX3Zjb2xvcl9TdGFnZTAgPSBpbnB1dC52MDsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAAQIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBpbnB1dC52MDsgCiNpZm5kZWYgQU5HTEVf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 MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////BwAHAAcAAAAHAAAAAwAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAFKLAADxjQAABwAAAGluQ29sb3IJAAAAX3VpbkNvbG9yAAAAAAEAAAAAAAAAAQAAAFCLAADyjQAADwAAAGluVGV4dHVyZUNvb3JkcxEAAABfdWluVGV4dHVyZUNvb3JkcwAAAAABAAAAAAAAAAIAAAAEAAAAUosAAPKNAAALAAAAc2tfUlRBZGp1c3QNAAAAX3Vza19SVEFkanVzdAAAAAABAAAAAAAAAP////////////////////8AAAAAUIsAAPKNAAAUAAAAdUF0bGFzU2l6ZUludl9TdGFnZTAWAAAAX3V1QXRsYXNTaXplSW52X1N0YWdlMAAAAAABAAAAAAAAAP////////////////////8AAAAABhQAAPGNAAANAAAAdWFscGhhX1N0YWdlMQ8AAABfdXVhbHBoYV9TdGFnZTEAAAAAAQAAAAAAAAD/////////////////////AAAAAF6LAAAAAAAAGAAAAHVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMBoAAABfdXVUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMAAAAAABAAAAAAAAAP////////////////////8AAAAABAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIwAAAAAAAAAAAAAAQAAAAYUAAABAAEAAQAAAAMAAAAEAAAAAQAAAOENAAABAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAwAAABQUAACMAAAAAAAAAAAAAAAAsQAAAAAAAAAAAAABAAAAAgAAAP////////////////////////////////////////////////////////////////////8QAAAAAQAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAEAAAAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAD/////AAAAAP////8BAAAAAAAAAAAAAAD/////AQAAAP////8BAAAAAAAAAAAAAAAAAAAA//////////8BAAAAAAAAAAEAAAAAAAAA//////////8BAAAAAAAAAAAAAAAAAAAAJQgAAGZsb2F0MiB2ZWMyX2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxKQp7CiAgICByZXR1cm4gZmxvYXQyKHgwLCB4MSk7Cn0KZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKdW5pZm9ybSBmbG9hdDIgX3VBdGxhc1NpemVJbnZfU3RhZ2UwIDogcmVnaXN0ZXIoYzEpOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gQXR0cmlidXRlcwpzdGF0aWMgZmxvYXQyIF9pblBvc2l0aW9uID0gezAsIDB9OwpzdGF0aWMgZmxvYXQ0IF9pbkNvbG9yID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgZmxvYXQyIF9pblRleHR1cmVDb29yZHMgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDIgX3ZUZXh0dXJlQ29vcmRzX1N0YWdlMCA9IHswLCAwfTsKc3RhdGljICBmbG9hdCBfdlRleEluZGV4X1N0YWdlMCA9IHswfTsKc3RhdGljICBmbG9hdDQgX3ZpbkNvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQyIF9pbmRleFRleENvb3JkcyA9IHZlYzJfY3RvcihfaW5UZXh0dXJlQ29vcmRzLngsIF9pblRleHR1cmVDb29yZHMueSk7CmZsb2F0MiBfaW50Q29vcmRzID0gZmxvb3IoKDAuNSAqIF9pbmRleFRleENvb3JkcykpOwpmbG9hdDIgX2RpZmYgPSAoX2luZGV4VGV4Q29vcmRzIC0gKDIuMCAqIF9pbnRDb29yZHMpKTsKZmxvYXQgX3RleElkeCA9ICgoMi4wICogX2RpZmYueCkgKyBfZGlmZi55KTsKKF92VGV4dHVyZUNvb3Jkc19TdGFnZTAgPSAoX2ludENvb3JkcyAqIF91QXRsYXNTaXplSW52X1N0YWdlMCkpOwooX3ZUZXhJbmRleF9TdGFnZTAgPSBfdGV4SWR4KTsKKF92aW5Db2xvcl9TdGFnZTAgPSBfaW5Db2xvcik7CmZsb2F0MiBfcG9zMiA9IF9pblBvc2l0aW9uOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX3ZUZXh0dXJlQ29vcmRzX1N0YWdlMDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAAPsFAAAvLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdCBfdWFscGhhX1N0YWdlMSA6IHJlZ2lzdGVyKGMwKTsKc3RhdGljIGNvbnN0IHVpbnQgX3VUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMCA9IDA7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFsxXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFsxXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQyIF92VGV4dHVyZUNvb3Jkc19TdGFnZTAgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnsKZmxvYXQ0IF90ZXhDb2xvciA9IHswLCAwLCAwLCAwfTsKewooX3RleENvbG9yID0gZ2xfdGV4dHVyZTJEKF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTAsIF92VGV4dHVyZUNvb3Jkc19TdGFnZTApKTsKfQooX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IF90ZXhDb2xvcik7Cn0KewooX291dHB1dENvdmVyYWdlX1N0YWdlMC53ID0gbWF4KG1heChfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwLngsIF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTAueSksIF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTAueikpOwooZ2xfQ29sb3JbMF0gPSAoX3VhbHBoYV9TdGFnZTEgKiBfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwKSk7Cn0KfQpzdHJ1Y3QgUFNfSU5QVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7Cn07CgpAQCBQSVhFTCBPVVRQVVQgQEAKUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpCnsKICAgIF92VGV4dHVyZUNvb3Jkc19TdGFnZTAgPSBpbnB1dC52MC54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAAQIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQu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//////////8AAAAAXosAAAAAAAAYAAAAdVRleHR1cmVTYW1wbGVyXzJfU3RhZ2UxGgAAAF91dVRleHR1cmVTYW1wbGVyXzJfU3RhZ2UxAAAAAAEAAAAAAAAA/////////////////////wAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAABQAAAAgAAAADAAAA4Q0AAAEAAAAAAAAA4Q0AAAEAAAAAAAAA4Q0AAAEAAAAAAAAACAAAAAgAAAAAAAAACAAAAAgAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAACAAAA/////////////////////////////////////////////////////////////////////xAAAAABAAAAAAAAAOENAAABAAAAAAAAAOENAAABAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAP////8BAAAA/////wMAAAAAAAAAAAAAAP////8EAAAA/////wMAAAAAAAAAAAAAAP////8HAAAA/////wMAAAAAAAAAAAAAAAAAAAD//////////wQAAAAAAAAAAQAAAAAAAAD//////////wEAAAAAAAAAAQAAAAEAAAD//////////wEAAAAAAAAAAQAAAAIAAAD//////////wEAAAAAAAAAAAAAAAAAAADACQAAZmxvYXQzIHZlYzNfY3RvcihmbG9hdDIgeDAsIGZsb2F0IHgxKQp7CiAgICByZXR1cm4gZmxvYXQzKHgwLCB4MSk7Cn0KZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKdW5pZm9ybSBmbG9hdDN4MyBfdUNvb3JkVHJhbnNmb3JtTWF0cml4XzBfU3RhZ2UwIDogcmVnaXN0ZXIoYzEpOwp1bmlmb3JtIGZsb2F0M3gzIF91Q29vcmRUcmFuc2Zvcm1NYXRyaXhfMV9TdGFnZTAgOiByZWdpc3RlcihjNCk7CnVuaWZvcm0gZmxvYXQzeDMgX3VDb29yZFRyYW5zZm9ybU1hdHJpeF8yX1N0YWdlMCA6IHJlZ2lzdGVyKGM3KTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5Qb3NpdGlvbiA9IHswLCAwfTsKc3RhdGljIGZsb2F0NCBfaW5Db2xvciA9IHswLCAwLCAwLCAwfTsKc3RhdGljIGZsb2F0MiBfaW5Mb2NhbENvb3JkID0gezAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQ0IF92Y29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgIGZsb2F0MiBfdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwID0gezAsIDB9OwpzdGF0aWMgIGZsb2F0MiBfdlRyYW5zZm9ybWVkQ29vcmRzXzFfU3RhZ2UwID0gezAsIDB9OwpzdGF0aWMgIGZsb2F0MiBfdlRyYW5zZm9ybWVkQ29vcmRzXzJfU3RhZ2UwID0gezAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewpmbG9hdDQgX2NvbG9yID0gX2luQ29sb3I7CihfdmNvbG9yX1N0YWdlMCA9IF9jb2xvcik7CmZsb2F0MiBfcG9zMiA9IF9pblBvc2l0aW9uOwooX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9IG11bCh0cmFuc3Bvc2UoX3VDb29yZFRyYW5zZm9ybU1hdHJpeF8wX1N0YWdlMCksIHZlYzNfY3RvcihfaW5Mb2NhbENvb3JkLCAxLjApKS54eSk7CihfdlRyYW5zZm9ybWVkQ29vcmRzXzFfU3RhZ2UwID0gbXVsKHRyYW5zcG9zZShfdUNvb3JkVHJhbnNmb3JtTWF0cml4XzFfU3RhZ2UwKSwgdmVjM19jdG9yKF9pbkxvY2FsQ29vcmQsIDEuMCkpLnh5KTsKKF92VHJhbnNmb3JtZWRDb29yZHNfMl9TdGFnZTAgPSBtdWwodHJhbnNwb3NlKF91Q29vcmRUcmFuc2Zvcm1NYXRyaXhfMl9TdGFnZTApLCB2ZWMzX2N0b3IoX2luTG9jYWxDb29yZCwgMS4wKSkueHkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMzsKICAgIGZsb2F0MiB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKICAgIGZsb2F0MiB2MiA6IFRFWENPT1JEMjsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMDsKICAgIG91dHB1dC52MSA9IF92VHJhbnNmb3JtZWRDb29yZHNfMV9TdGFnZTA7CiAgICBvdXRwdXQudjIgPSBfdlRyYW5zZm9ybWVkQ29vcmRzXzJfU3RhZ2UwOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAA4wcAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxLCBmbG9hdCB4MiwgZmxvYXQgeDMpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxLCB4MiwgeDMpOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0NHg0IF91Y29sb3JTcGFjZU1hdHJpeF9TdGFnZTEgOiByZWdpc3RlcihjMCk7CnN0YXRpYyBjb25zdCB1aW50IF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEgPSAwOwpzdGF0aWMgY29uc3QgdWludCBfdVRleHR1cmVTYW1wbGVyXzFfU3RhZ2UxID0gMTsKc3RhdGljIGNvbnN0IHVpbnQgX3VUZXh0dXJlU2FtcGxlcl8yX1N0YWdlMSA9IDI7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFszXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFszXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSB7MCwgMH07CnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMV9TdGFnZTAgPSB7MCwgMH07CnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMl9TdGFnZTAgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVszXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9vdXRwdXRfU3RhZ2UxID0gezAsIDAsIDAsIDB9Owp7CnsKKF9vdXRwdXRfU3RhZ2UxID0gbXVsKHZlYzRfY3RvcihnbF90ZXh0dXJlMkQoX3VUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMSwgX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCkueHh4eC54LCBnbF90ZXh0dXJlMkQoX3VUZXh0dXJlU2FtcGxlcl8xX1N0YWdlMSwgX3ZUcmFuc2Zvcm1lZENvb3Jkc18xX1N0YWdlMCkueHh4eC54LCBnbF90ZXh0dXJlMkQoX3VUZXh0dXJlU2FtcGxlcl8yX1N0YWdlMSwgX3ZUcmFuc2Zvcm1lZENvb3Jkc18yX1N0YWdlMCkueHh4eC54LCAxLjApLCB0cmFuc3Bvc2UoX3Vjb2xvclNwYWNlTWF0cml4X1N0YWdlMSkpKTsKfQp9CnsKKGdsX0NvbG9yWzBdID0gX291dHB1dF9TdGFnZTEpOwp9Cn0Kc3RydWN0IFBTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQzOwogICAgZmxvYXQyIHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQyIHYxIDogVEVYQ09PUkQxOwogICAgZmxvYXQyIHYyIDogVEVYQ09PUkQyOwp9OwoKQEAgUElYRUwgT1VUUFVUIEBAClBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KQp7CiAgICBfdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwID0gaW5wdXQudjAueHk7CiAgICBfdlRyYW5zZm9ybWVkQ29vcmRzXzFfU3RhZ2UwID0gaW5wdXQudjEueHk7CiAgICBfdlRyYW5zZm9ybWVkQ29vcmRzXzJfU3RhZ2UwID0gaW5wdXQudjIueHk7CgogICAgZ2xfbWFpbigpOwoKICAgIHJldHVybiBnZW5lcmF0ZU91dHB1dCgpOwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAFKLAAAJAAAAZ2xfQ29sb3IwCwAAAGdsX0NvbG9yWzBdAAAAAKMCAABzdHJ1Y3QgR1NfSU5QVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDM7CiAgICBmbG9hdDIgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjIgOiBURVhDT09SRDI7Cn07CgpzdHJ1Y3QgR1NfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQzOwogICAgZmxvYXQyIHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQyIHYxIDogVEVYQ09PUkQxOwogICAgZmxvYXQyIHYyIDogVEVYQ09PUkQyOwp9OwoKdm9pZCBjb3B5VmVydGV4KGlub3V0IEdTX09VVFBVVCBvdXRwdXQsIEdTX0lOUFVUIGlucHV0LCBHU19JTlBVVCBmbGF0aW5wdXQpCnsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGlucHV0LmdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LnYwID0gaW5wdXQudjA7IAogICAgb3V0cHV0LnYxID0gaW5wdXQudjE7IAogICAgb3V0cHV0LnYyID0gaW5wdXQudjI7IAojaWZuZGVmIEFOR0xFX1BPSU5UX1NQUklURV9TSEFERVIKICAgIG91dHB1dC5keF9Qb3NpdGlvbiA9IGlucHV0LmR4X1Bvc2l0aW9uOwojZW5kaWYgIC8vIEFOR0xFX1BPSU5UX1NQ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AABFAACLwgAAgENVFQASABAAAQAAAEYQEAACAAAARn4QAAAAAAAAYBAAAAAAADIAAAryABAAAAAAAAYAEAABAAAARo4gAAAAAAAAAAAARg4QAAAAAABFAACLwgAAgENVFQASABAAAQAAAEYQEAADAAAARn4QAAIAAAAAYBAAAgAAADIAAAryABAAAAAAAAYAEAABAAAARo4gAAAAAAACAAAARg4QAAAAAAAAAAAI8iAQAAAAAABGDhAAAAAAAEaOIAAAAAAAAwAAAD4AAAFTVEFUlAAAAAgAAAACAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////BwAHAAcAAAAHAAAAAwAAAFCLAADyjQAACAAAAHBvc2l0aW9uCgAAAF91cG9zaXRpb24AAAAAAQAAAAAAAAAAAAAAUIsAAPKNAAANAAAAdGV4dHVyZUNvb3Jkcw8AAABfdXRleHR1cmVDb29yZHMAAAAAAQAAAAAAAAABAAAAUosAAPGNAAAFAAAAY29sb3IHAAAAX3Vjb2xvcgAAAAABAAAAAAAAAAIAAAAEAAAAUosAAPKNAAALAAAAc2tfUlRBZGp1c3QNAAAAX3Vza19SVEFkanVzdAAAAAABAAAAAAAAAP////////////////////8AAAAABhQAAPKNAAAMAAAAdV9za1JUSGVpZ2h0DgAAAF91dV9za1JUSGVpZ2h0AAAAAAEAAAAAAAAA/////////////////////wAAAABSiwAA8o0AABMAAAB1cmVjdFVuaWZvcm1fU3RhZ2UxFQAAAF91dXJlY3RVbmlmb3JtX1N0YWdlMQAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAYAAAAdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwGgAAAF91dVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwAAAAAAEAAAAAAAAA/////////////////////wAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAAAwAAAAQAAAABAAAA4Q0AAAEAAAAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAACAAAA/////////////////////////////////////////////////////////////////////xAAAAABAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAAAAAAD//////////wEAAAAAAAAAAAAAAAEAAAD//////////wEAAAAAAAAAAQAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAADlBgAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfcG9zaXRpb24gPSB7MCwgMH07CnN0YXRpYyBmbG9hdDIgX3RleHR1cmVDb29yZHMgPSB7MCwgMH07CnN0YXRpYyBmbG9hdDQgX2NvbG9yID0gezAsIDAsIDAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQ0IF92Y29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgIGZsb2F0MiBfdnRleHR1cmVDb29yZHNfU3RhZ2UwID0gezAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewpmbG9hdDIgX3BvczIgPSBfcG9zaXRpb247CihfdmNvbG9yX1N0YWdlMCA9IF9jb2xvcik7CihfdnRleHR1cmVDb29yZHNfU3RhZ2UwID0gX3RleHR1cmVDb29yZHMpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDM7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07CgpWU19PVVRQVVQgbWFpbihWU19JTlBVVCBpbnB1dCkKewogICAgaW5pdEF0dHJpYnV0ZXMoaW5wdXQpOwoKICAgIGdsX21haW4oKTsKCiAgICBWU19PVVRQVVQgb3V0cHV0OwogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gZ2xfUG9zaXRpb247CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLng7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueSA9IC0gZ2xfUG9zaXRpb24ueTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udzsKICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC52MCA9IF92Y29sb3JfU3RhZ2UwOwogICAgb3V0cHV0LnYxID0gX3Z0ZXh0dXJlQ29vcmRzX1N0YWdlMDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAACkLAABmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MCwgeDAsIHgwKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIsIGZsb2F0IHgzKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSwgeDIsIHgzKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdCBfdV9za1JUSGVpZ2h0IDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0NCBfdXJlY3RVbmlmb3JtX1N0YWdlMSA6IHJlZ2lzdGVyKGMxKTsKc3RhdGljIGNvbnN0IHVpbnQgX3VUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMCA9IDA7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFsxXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFsxXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQ0IF92Y29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgIGZsb2F0MiBfdnRleHR1cmVDb29yZHNfU3RhZ2UwID0gezAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Db2xvclsxXSA9CnsKICAgIGZsb2F0NCgwLCAwLCAwLCAwKQp9OwpzdGF0aWMgZmxvYXQ0IGdsX0ZyYWdDb29yZCA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDMgZHhfRGVwdGhGcm9udCA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSA6IHBhY2tvZmZzZXQoYzMpOwogICAgc3RydWN0IFNhbXBsZXJNZXRhZGF0YQogICAgewogICAgICAgIGludCBiYXNlTGV2ZWw7CiAgICAgICAgaW50IGludGVybmFsRm9ybWF0Qml0czsKICAgICAgICBpbnQgd3JhcE1vZGVzOwogICAgICAgIGludCBwYWRkaW5nOwogICAgfTsKICAgIFNhbXBsZXJNZXRhZGF0YSBzYW1wbGVyTWV0YWRhdGFbMV0gOiBwYWNrb2Zmc2V0KGM0KTsKfTsKCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPTE9SCmZsb2F0NCBnbF90ZXh0dXJlMkQodWludCBzYW1wbGVySW5kZXgsIGZsb2F0MiB0KQp7CiAgICByZXR1cm4gdGV4dHVyZXMyRFtzYW1wbGVySW5kZXhdLlNhbXBsZShzYW1wbGVyczJEW3NhbXBsZXJJbmRleF0sIGZsb2F0Mih0LngsIHQueSkpOwp9CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT09SRAp2b2lkIGdsX21haW4oKQp7CmZsb2F0MiBfX3NrdG1wQ29vcmQgPSBnbF9GcmFnQ29vcmQueHk7CmZsb2F0NCBfc2tfRnJhZ0Nvb3JkID0gdmVjNF9jdG9yKF9fc2t0bXBDb29yZC54LCAoX3Vfc2tSVEhlaWdodCAtIF9fc2t0bXBDb29yZC55KSwgMS4wLCAxLjApOwpmbG9hdDQgX291dHB1dENvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKewooX291dHB1dENvbG9yX1N0YWdlMCA9IF92Y29sb3JfU3RhZ2UwKTsKZmxvYXQyIF90ZXhDb29yZCA9IHswLCAwfTsKKF90ZXhDb29yZCA9IF92dGV4dHVyZUNvb3Jkc19TdGFnZTApOwooX291dHB1dENvbG9yX1N0YWdlMCA9IChfb3V0cHV0Q29sb3JfU3RhZ2UwICogZ2xfdGV4dHVyZTJEKF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTAsIF90ZXhDb29yZCkpKTsKfQpmbG9hdDQgX291dHB1dF9TdGFnZTEgPSB7MCwgMCwgMCwgMH07CnsKZmxvYXQgX2FscGhhID0gezB9Owp7CmZsb2F0IF94U3ViID0gezB9OwpmbG9hdCBfeVN1YiA9IHswfTsKKF94U3ViID0gbWluKChfc2tfRnJhZ0Nvb3JkLnggLSBfdXJlY3RVbmlmb3JtX1N0YWdlMS54KSwgMC4wKSk7CihfeFN1YiArPSBtaW4oKF91cmVjdFVuaWZvcm1fU3RhZ2UxLnogLSBfc2tfRnJhZ0Nvb3JkLngpLCAwLjApKTsKKF95U3ViID0gbWluKChfc2tfRnJhZ0Nvb3JkLnkgLSBfdXJlY3RVbmlmb3JtX1N0YWdlMS55KSwgMC4wKSk7CihfeVN1YiArPSBtaW4oKF91cmVjdFVuaWZvcm1fU3RhZ2UxLncgLSBfc2tfRnJhZ0Nvb3JkLnkpLCAwLjApKTsKKF9hbHBoYSA9ICgoMS4wICsgbWF4KF94U3ViLCAtMS4wKSkgKiAoMS4wICsgbWF4KF95U3ViLCAtMS4wKSkpKTsKfQooX291dHB1dF9TdGFnZTEgPSB2ZWM0X2N0b3IoX2FscGhhKSk7Cn0KewooZ2xfQ29sb3JbMF0gPSAoX291dHB1dENvbG9yX1N0YWdlMCAqIF9vdXRwdXRfU3RhZ2UxKSk7Cn0KfQpzdHJ1Y3QgUFNfSU5QVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogVEVYQ09PUkQzOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQyIHYxIDogVEVYQ09PUkQxOwp9OwoKQEAgUElYRUwgT1VUUFVUIEBAClBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KQp7CiAgICBmbG9hdCByaHcgPSAxLjAgLyBpbnB1dC5nbF9GcmFnQ29vcmQudzsKICAgIGdsX0ZyYWdDb29yZC54ID0gaW5wdXQuZHhfUG9zaXRpb24ueDsKICAgIGdsX0ZyYWdDb29yZC55ID0gaW5wdXQuZHhfUG9zaXRpb24ueTsKICAgIGdsX0ZyYWdDb29yZC56ID0gKGlucHV0LmdsX0ZyYWdDb29yZC56ICogcmh3KSAqIGR4X0RlcHRoRnJvbnQueCArIGR4X0RlcHRoRnJvbnQueTsKICAgIGdsX0ZyYWdDb29yZC53ID0gcmh3OwogICAgX3Zjb2xvcl9TdGFnZTAgPSBpbnB1dC52MDsKICAgIF92dGV4dHVyZUNvb3Jkc19TdGFnZTAgPSBpbnB1dC52MS54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAygIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDM7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07CgpzdHJ1Y3QgR1NfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0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4Q0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAD/////AAAAAP////8BAAAAAAAAAAAAAAAAAAAA//////////8BAAAAAAAAAAAAAAAAAAAA3AUAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxLCBmbG9hdCB4MiwgZmxvYXQgeDMpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxLCB4MiwgeDMpOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0NCBfc2tfUlRBZGp1c3QgOiByZWdpc3RlcihjMCk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBBdHRyaWJ1dGVzCnN0YXRpYyBmbG9hdDIgX2luUG9zaXRpb24gPSB7MCwgMH07CnN0YXRpYyBmbG9hdCBfaW5Db3ZlcmFnZSA9IHswfTsKCnN0YXRpYyBmbG9hdDQgZ2xfUG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0IF92aW5Db3ZlcmFnZV9TdGFnZTAgPSB7MH07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQyIGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgIDogcGFja29mZnNldChjMyk7Cn07Cgp2b2lkIGdsX21haW4oKQp7CmZsb2F0MiBfcG9zMiA9IF9pblBvc2l0aW9uOwooX3ZpbkNvdmVyYWdlX1N0YWdlMCA9IF9pbkNvdmVyYWdlKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKF9wb3MyLngsIF9wb3MyLnksIDAuMCwgMS4wKSk7CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcigoKGdsX1Bvc2l0aW9uLnggKiBfc2tfUlRBZGp1c3QueCkgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC55KSksICgoZ2xfUG9zaXRpb24ueSAqIF9za19SVEFkanVzdC56KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LncpKSwgMC4wLCBnbF9Qb3NpdGlvbi53KSk7Cn0KCkBAIFZFUlRFWCBBVFRSSUJVVEVTIEBACnN0cnVjdCBWU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdCB2MCA6IFRFWENPT1JEMDsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX3ZpbkNvdmVyYWdlX1N0YWdlMDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAAPEDAABmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MCwgeDAsIHgwKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdDQgX3VDb2xvcl9TdGFnZTAgOiByZWdpc3RlcihjMCk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0IF92aW5Db3ZlcmFnZV9TdGFnZTAgPSB7MH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgp2b2lkIGdsX21haW4oKQp7CmZsb2F0NCBfb3V0cHV0Q29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpmbG9hdDQgX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKewooX291dHB1dENvbG9yX1N0YWdlMCA9IF91Q29sb3JfU3RhZ2UwKTsKZmxvYXQgX2FscGhhID0gezEuMH07CihfYWxwaGEgPSBfdmluQ292ZXJhZ2VfU3RhZ2UwKTsKKF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSB2ZWM0X2N0b3IoX2FscGhhKSk7Cn0KewooZ2xfQ29sb3JbMF0gPSAoX291dHB1dENvbG9yX1N0YWdlMCAqIF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTApKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0IHYwIDogVEVYQ09PUkQwOwp9OwoKQEAgUElYRUwgT1VUUFVUIEBAClBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KQp7CiAgICBfdmluQ292ZXJhZ2VfU3RhZ2UwID0gaW5wdXQudjAueDsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAA/wEAAHN0cnVjdCBHU19JTlBVVAp7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 MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////BwAHAAcAAAAHAAAAAwAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAFKLAADxjQAABwAAAGluQ29sb3IJAAAAX3VpbkNvbG9yAAAAAAEAAAAAAAAAAQAAAFKLAADxjQAACgAAAGluUXVhZEVkZ2UMAAAAX3VpblF1YWRFZGdlAAAAAAEAAAAAAAAAAgAAAAEAAABSiwAA8o0AAAsAAABza19SVEFkanVzdA0AAABfdXNrX1JUQWRqdXN0AAAAAAEAAAAAAAAA/////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAACAAAA/////////////////////////////////////////////////////////////////////xAAAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAAAAAACeBgAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5Qb3NpdGlvbiA9IHswLCAwfTsKc3RhdGljIGZsb2F0NCBfaW5Db2xvciA9IHswLCAwLCAwLCAwfTsKc3RhdGljIGZsb2F0NCBfaW5RdWFkRWRnZSA9IHswLCAwLCAwLCAwfTsKCnN0YXRpYyBmbG9hdDQgZ2xfUG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0NCBfdlF1YWRFZGdlX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKc3RhdGljICBmbG9hdDQgX3ZpbkNvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKKF92UXVhZEVkZ2VfU3RhZ2UwID0gX2luUXVhZEVkZ2UpOwooX3ZpbkNvbG9yX1N0YWdlMCA9IF9pbkNvbG9yKTsKZmxvYXQyIF9wb3MyID0gX2luUG9zaXRpb247CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcihfcG9zMi54LCBfcG9zMi55LCAwLjAsIDEuMCkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChnbF9Qb3NpdGlvbi54ICogX3NrX1JUQWRqdXN0LngpICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QueSkpLCAoKGdsX1Bvc2l0aW9uLnkgKiBfc2tfUlRBZGp1c3QueikgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC53KSksIDAuMCwgZ2xfUG9zaXRpb24udykpOwp9CgpAQCBWRVJURVggQVRUUklCVVRFUyBAQApzdHJ1Y3QgVlNfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQ0IHYxIDogVEVYQ09PUkQxOwp9OwoKVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpCnsKICAgIGluaXRBdHRyaWJ1dGVzKGlucHV0KTsKCiAgICBnbF9tYWluKCk7CgogICAgVlNfT1VUUFVUIG91dHB1dDsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtIGdsX1Bvc2l0aW9uLnk7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7CiAgICBvdXRwdXQudjAgPSBfdlF1YWRFZGdlX1N0YWdlMDsKICAgIG91dHB1dC52MSA9IF92aW5Db2xvcl9TdGFnZTA7CgogICAgcmV0dXJuIG91dHB1dDsKfQoAAABmBgAAZmxvYXQyIHZlYzJfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEpCnsKICAgIHJldHVybiBmbG9hdDIoeDAsIHgxKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MCwgeDAsIHgwKTsKfQojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3ZRdWFkRWRnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQ0IF92aW5Db2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgp2b2lkIGdsX21haW4oKQp7CmZsb2F0NCBfb3V0cHV0Q29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpmbG9hdDQgX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKewooX291dHB1dENvbG9yX1N0YWdlMCA9IF92aW5Db2xvcl9TdGFnZTApOwpmbG9hdCBfZWRnZUFscGhhID0gezB9OwpmbG9hdDIgX2R1dmR4ID0gZGR4KF92UXVhZEVkZ2VfU3RhZ2UwLnh5KTsKZmxvYXQyIF9kdXZkeSA9IGRkeShfdlF1YWRFZGdlX1N0YWdlMC54eSk7CmlmICgoKF92UXVhZEVkZ2VfU3RhZ2UwLnogPiAwLjApICYmIChfdlF1YWRFZGdlX1N0YWdlMC53ID4gMC4wKSkpCnsKKF9lZGdlQWxwaGEgPSBtaW4oKG1pbihfdlF1YWRFZGdlX1N0YWdlMC56LCBfdlF1YWRFZGdlX1N0YWdlMC53KSArIDAuNSksIDEuMCkpOwp9CmVsc2UKewpmbG9hdDIgX2dGID0gdmVjMl9jdG9yKCgoKDIuMCAqIF92UXVhZEVkZ2VfU3RhZ2UwLngpICogX2R1dmR4LngpIC0gX2R1dmR4LnkpLCAoKCgyLjAgKiBfdlF1YWRFZGdlX1N0YWdlMC54KSAqIF9kdXZkeS54KSAtIF9kdXZkeS55KSk7CihfZWRnZUFscGhhID0gKChfdlF1YWRFZGdlX1N0YWdlMC54ICogX3ZRdWFkRWRnZV9TdGFnZTAueCkgLSBfdlF1YWRFZGdlX1N0YWdlMC55KSk7CihfZWRnZUFscGhhID0gY2xhbXAoKDAuNSAtIChfZWRnZUFscGhhIC8gbGVuZ3RoKF9nRikpKSwgMC4wLCAxLjApKTsKfQooX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHZlYzRfY3RvcihfZWRnZUFscGhhKSk7Cn0KewooZ2xfQ29sb3JbMF0gPSAoX291dHB1dENvbG9yX1N0YWdlMCAqIF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTApKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0NCB2MSA6IFRFWENPT1JEMTsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX3ZRdWFkRWRnZV9TdGFnZTAgPSBpbnB1dC52MDsKICAgIF92aW5Db2xvcl9TdGFnZTAgPSBpbnB1dC52MTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAUgIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0NCB2MSA6IFRFWENPT1JEMTsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDQgdjEgOiBURVhDT09SRDE7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBpbnB1dC52MDsgCiAgICBvdXRwdXQudjEgPSBpbnB1dC52MTsgCiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgogICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gaW5wdXQuZHhfUG9zaXRpb247CiNlbmRpZiAgLy8gQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgp9CgEAAAADAAAAUgAAAFQAAABUAAAANAQAAERYQkO9J8lw1GMiYy/k2Kcg+2iYAQAAADQEAAAFAAAANAAAAFABAAC0AQAAPAIAAJgDAABSREVGFAEAAAEAAABoAAAAAQAAADwAAAAABf7/AMEAAOAAAABSRDExPAAAABgAAAAgAAAAKAAAACQAAAAMAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAJEdsb2JhbHMAq6urXAAAAAEAAACAAAAAEAAAAAAAAAAAAAAAqAAAAAAAAAAQAAAAAgAAALwAAAAAAAAA/////wAAAAD/////AAAAAF9za19SVEFkanVzdABmbG9hdDQAAQADAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1AAAATWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NACrq0lTR05cAAAAAwAAAAgAAABQAAAAAAAAAAAAAAADAAAAAAAAAAMDAABQAAAAAQAAAAAAAAADAAAAAQAAAA8PAABQAAAAAgAAAAAAAAADAAAAAgAAAA8PAABURVhDT09SRACrq6tPU0dOgAAAAAQAAAAIAAAAaAAAAAAAAAABAAAAAwAAAAAAAAAPAAAAdAAAAAIAAAAAAAAAAwAAAAEAAAAPAAAAdAAAAAAAAAAAAAAAAwAAAAIAAAAPAAAAdAAAAAEAAAAAAAAAAwAAAAMAAAAPAAAAU1ZfUG9zaXRpb24AVEVYQ09PUkQAq6urU0hFWFQBAABQAAEAVQAAAGoIAAFZAAAERo4gAAAAAAABAAAAXwAAAzIQEAAAAAAAXwAAA/IQEAABAAAAXwAAA/IQEAACAAAAZwAABPIgEAAAAAAAAQAAAGUAAAPyIBAAAQAAAGUAAAPyIBAAAgAAAGUAAAPyIBAAAwAAAGgAAAIBAAAANgAACMIgEAAAAAAAAkAAAAAAAAAAAAAAAAAAPwAAgD8yAAALMgAQAAAAAABGEBAAAAAAAIaAIAAAAAAAAAAAANaFIAAAAAAAAAAAADYAAAYiIBAAAAAAABoAEIBBAAAAAAAAADYAAAUSIBAAAAAAAAoAEAAAAAAANgAABTIgEAABAAAARgAQAAAAAAA2AAAIwiAQAAEAAAACQAAAAAAAAAAAAAAAAAAAAACAPzYAAAXyIBAAAgAAAEYeEAACAAAANgAABfIgEAADAAAARh4QAAEAAAA+AAABU1RBVJQAAAAJAAAAAQAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAADgjAAASAQAAERYQkOenFWBPnb73DStp7GAH1PfAQAAAEgEAAAFAAAANAAAAKwAAAA0AQAAaAEAAKwDAABSREVGcAAAAAAAAAAAAAAAAAAAADwAAAAABf//AMEAADwAAABSRDExPAAAABgAAAAgAAAAKAAAACQAAAAMAAAAAAAAAE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQAq6tJU0dOgAAAAAQAAAAIAAAAaAAAAAAAAAABAAAAAwAAAAAAAAAPAAAAdAAAAAIAAAAAAAAAAwAAAAEAAAAPAAAAdAAAAAAAAAAAAAAAAwAAAAIAAAAPDwAAdAAAAAEAAAAAAAAAAwAAAAMAAAAPDwAAU1ZfUG9zaXRpb24AVEVYQ09PUkQAq6urT1NHTiwAAAABAAAACAAAACAAAAAAAAAAAAAAAAMAAAAAAAAADwAAAFNWX1RBUkdFVACrq1NIRVg8AgAAUAAAAI8AAABqCAABYhAAA/IQEAACAAAAYhAAA/IQEAADAAAAZQAAA/IgEAAAAAAAaAAAAgIAAAB6AAAFMgAQAAAAAABGEBAAAgAAAAAAAAdCABAAAAAAAAoQEAACAAAAChAQAAIAAAAyAAAKEgAQAAAAAAAqABAAAAAAAAoAEAAAAAAAGgAQgEEAAAAAAAAAfAAABTIAEAABAAAARhAQAAIAAAAyAAAKIgAQAAAAAAAqABAAAAAAAAoAEAABAAAAGgAQgEEAAAABAAAADwAABxIAEAAAAAAARgAQAAAAAABGABAAAAAAAEsAAAUSABAAAAAAAAoAEAAAAAAAMgAACiIAEAAAAAAAChAQAAIAAAAKEBAAAgAAABoQEIBBAAAAAgAAAA4AAAcSABAAAAAAABoAEAAAAAAACgAQAAAAAAAAIAAIEgAQAAAAAAAKABCAQQAAAAAAAAABQAAAAAAAPzMAAAciABAAAAAAADoQEAACAAAAKhAQAAIAAAAAAAAHIgAQAAAAAAAaABAAAAAAAAFAAAAAAAA/MwAAByIAEAAAAAAAGgAQAAAAAAABQAAAAACAPzEAAArCABAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAph4QAAIAAAABAAAHQgAQAAAAAAA6ABAAAAAAACoAEAAAAAAANwAACRIAEAAAAAAAKgAQAAAAAAAaABAAAAAAAAoAEAAAAAAAOAAAB/IgEAAAAAAABgAQAAAAAABGHhAAAwAAAD4AAAFTVEFUlAAAABIAAAACAAAAAAAAAAMAAAAPAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==IC8vIEFOR0xFX1BPSU5UX1NQUklURV9TSEFERVIKfQoBAAAAAwAAAFIAAABUAAAAUgAAABQGAABEWEJDqHxrXxMqubjsaadJ5+B91QEAAAAUBgAABQAAADQAAABYAgAAvAIAAFwDAAB4BQAAUkRFRhwCAAABAAAAaAAAAAEAAAA8AAAAAAX+/wDBAADoAQAAUkQxMTwAAAAYAAAAIAAAACgAAAAkAAAADAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAACRHbG9iYWxzAKurq1wAAAAEAAAAgAAAAKAAAAAAAAAAAAAAACABAAAAAAAAEAAAAAIAAAA0AQAAAAAAAP////8AAAAA/////wAAAABYAQAAEAAAACwAAAACAAAAhAEAAAAAAAD/////AAAAAP////8AAAAAqAEAAEAAAAAsAAAAAgAAAIQBAAAAAAAA/////wAAAAD/////AAAAAMgBAABwAAAALAAAAAIAAACEAQAAAAAAAP////8AAAAA/////wAAAABfc2tfUlRBZGp1c3QAZmxvYXQ0AAEAAwABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQEAAF91Q29vcmRUcmFuc2Zvcm1NYXRyaXhfMF9TdGFnZTAAZmxvYXQzeDMAq6urAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AQAAX3VDb29yZFRyYW5zZm9ybU1hdHJpeF8xX1N0YWdlMABfdUNvb3JkVHJhbnNmb3JtTWF0cml4XzJfU3RhZ2UwAE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQAq6tJU0dOXAAAAAMAAAAIAAAAUAAAAAAAAAAAAAAAAwAAAAAAAAADAwAAUAAAAAEAAAAAAAAAAwAAAAEAAAAPAAAAUAAAAAIAAAAAAAAAAwAAAAIAAAADAwAAVEVYQ09PUkQAq6urT1NHTpgAAAAFAAAACAAAAIAAAAAAAAAAAQAAAAMAAAAAAAAADwAAAIwAAAADAAAAAAAAAAMAAAABAAAADwAAAIwAAAAAAAAAAAAAAAMAAAACAAAAAwwAAIwAAAABAAAAAAAAAAMAAAACAAAADAMAAIwAAAACAAAAAAAAAAMAAAADAAAAAwwAAFNWX1Bvc2l0aW9uAFRFWENPT1JEAKurq1NIRVgUAgAAUAABAIUAAABqCAABWQAABEaOIAAAAAAACQAAAF8AAAMyEBAAAAAAAF8AAAMyEBAAAgAAAGcAAATyIBAAAAAAAAEAAABlAAAD8iAQAAEAAABlAAADMiAQAAIAAABlAAADwiAQAAIAAABlAAADMiAQAAMAAABoAAACAQAAADYAAAjCIBAAAAAAAAJAAAAAAAAAAAAAAAAAAD8AAIA/MgAACzIAEAAAAAAARhAQAAAAAACGgCAAAAAAAAAAAADWhSAAAAAAAAAAAAA2AAAGIiAQAAAAAAAaABCAQQAAAAAAAAA2AAAFEiAQAAAAAAAKABAAAAAAADYAAAUyIBAAAQAAAEYAEAAAAAAANgAACMIgEAABAAAAAkAAAAAAAAAAAAAAAAAAAAAAgD82AAAFMgAQAAAAAABGEBAAAgAAADYAAAVCABAAAAAAAAFAAAAAAIA/EAAACBIgEAACAAAARoIgAAAAAAABAAAARgIQAAAAAAAQAAAIIiAQAAIAAABGgiAAAAAAAAIAAABGAhAAAAAAABAAAAhCIBAAAgAAAEaCIAAAAAAABAAAAEYCEAAAAAAAEAAACIIgEAACAAAARoIgAAAAAAAFAAAARgIQAAAAAAAQAAAIEiAQAAMAAABGgiAAAAAAAAcAAABGAhAAAAAAABAAAAgiIBAAAwAAAEaCIAAAAAAACAAAAEYCEAAAAAAAPgAAAVNUQVSUAAAADwAAAAEAAAAAAAAABwAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAA4IwAAKwFAABEWEJD3mxyWfanMOWc+SPpeLq9qQEAAACsBQAABQAAADQAAAB0AgAAFAMAAEgDAAAQBQAAUkRFRjgCAAABAAAAfAEAAAcAAAA8AAAAAAX//wDBAAAEAgAAUkQxMTwAAAAYAAAAIAAAACgAAAAkAAAADAAAAAAAAAAcAQAAAwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAACoBAAADAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAOAEAAAMAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAABGAQAAAgAAAAUAAAAEAAAA/////wAAAAABAAAADQAAAFQBAAACAAAABQAAAAQAAAD/////AQAAAAEAAAANAAAAYgEAAAIAAAAFAAAABAAAAP////8CAAAAAQAAAA0AAABwAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAHNhbXBsZXJzMkRbMF0Ac2FtcGxlcnMyRFsxXQBzYW1wbGVyczJEWzJdAHRleHR1cmVzMkRbMF0AdGV4dHVyZXMyRFsxXQB0ZXh0dXJlczJEWzJdACRHbG9iYWxzAKurq3ABAAABAAAAlAEAAEAAAAAAAAAAAAAAALwBAAAAAAAAQAAAAAIAAADgAQAAAAAAAP////8AAAAA/////wAAAABfdWNvbG9yU3BhY2VNYXRyaXhfU3RhZ2UxAGZsb2F0NHg0AKsDAAMABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANYBAABNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0AKurSVNHTpgAAAAFAAAACAAAAIAAAAAAAAAAAQAAAAMAAAAAAAAADwAAAIwAAAADAAAAAAAAAAMAAAABAAAADwAAAIwAAAAAAAAAAAAAAAMAAAACAAAAAwMAAIwAAAABAAAAAAAAAAMAAAACAAAADAwAAIwAAAACAAAAAAAAAAMAAAADAAAAAwMAAFNWX1Bvc2l0aW9uAFRFWENPT1JEAKurq09TR04sAAAAAQAAAAgAAAAgAAAAAAAAAAAAAAADAAAAAAAAAA8AAABTVl9UQVJHRVQAq6tTSEVYwAEAAFAAAABwAAAAaggAAVkAAARGjiAAAAAAAAQAAABaAAADAGAQAAAAAABaAAADAGAQAAEAAABaAAADAGAQAAIAAABYGAAEAHAQAAAAAABVVQAAWBgABABwEAABAAAAVVUAAFgYAAQAcBAAAgAAAFVVAABiEAADMhAQAAIAAABiEAADwhAQAAIAAABiEAADMhAQAAMAAABlAAAD8iAQAAAAAABoAAACAgAAAEUAAIvCAACAQ1UVABIAEAAAAAAA5hoQAAIAAABGfhAAAQAAAABgEAABAAAAOAAACPIAEAAAAAAABgAQAAAAAABGjiAAAAAAAAEAAABFAACLwgAAgENVFQASABAAAQAAAEYQEAACAAAARn4QAAAAAAAAYBAAAAAAADIAAAryABAAAAAAAAYAEAABAAAARo4gAAAAAAAAAAAARg4QAAAAAABFAACLwgAAgENVFQASABAAAQAAAEYQEAADAAAARn4QAAIAAAAAYBAAAgAAADIAAAryABAAAAAAAAYAEAABAAAARo4gAAAAAAACAAAARg4QAAAAAAAAAAAI8iAQAAAAAABGDhAAAAAAAEaOIAAAAAAAAwAAAD4AAAFTVEFUlAAAAAgAAAACAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////BwAHAAcAAAAHAAAAAwAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAFKLAADxjQAABwAAAGluQ29sb3IJAAAAX3VpbkNvbG9yAAAAAAEAAAAAAAAAAQAAAFKLAADyjQAADAAAAGluQ2lyY2xlRWRnZQ4AAABfdWluQ2lyY2xlRWRnZQAAAAABAAAAAAAAAAIAAAABAAAAUosAAPKNAAALAAAAc2tfUlRBZGp1c3QNAAAAX3Vza19SVEFkanVzdAAAAAABAAAAAAAAAP////////////////////8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIwAAAAAAAAAAAAAAQAAAAYUAAABAAEAAQAAAAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAwAAABQUAACMAAAAAAAAAAAAAAAAsQAAAAAAAAAAAAABAAAAAgAAAP////////////////////////////////////////////////////////////////////8QAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAEAAAAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAD/////AAAAAP////8BAAAAAAAAAAAAAAAAAAAArgYAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxLCBmbG9hdCB4MiwgZmxvYXQgeDMpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxLCB4MiwgeDMpOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0NCBfc2tfUlRBZGp1c3QgOiByZWdpc3RlcihjMCk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBBdHRyaWJ1dGVzCnN0YXRpYyBmbG9hdDIgX2luUG9zaXRpb24gPSB7MCwgMH07CnN0YXRpYyBmbG9hdDQgX2luQ29sb3IgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyBmbG9hdDQgX2luQ2lyY2xlRWRnZSA9IHswLCAwLCAwLCAwfTsKCnN0YXRpYyBmbG9hdDQgZ2xfUG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0NCBfdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQ0IF92aW5Db2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQyIGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgIDogcGFja29mZnNldChjMyk7Cn07Cgp2b2lkIGdsX21haW4oKQp7CihfdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBfaW5DaXJjbGVFZGdlKTsKKF92aW5Db2xvcl9TdGFnZTAgPSBfaW5Db2xvcik7CmZsb2F0MiBfcG9zMiA9IF9pblBvc2l0aW9uOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0NCB2MSA6IFRFWENPT1JEMTsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX3ZpbkNpcmNsZUVkZ2VfU3RhZ2UwOwogICAgb3V0cHV0LnYxID0gX3ZpbkNvbG9yX1N0YWdlMDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAAOEEAABmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MCwgeDAsIHgwKTsKfQojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3ZpbkNpcmNsZUVkZ2VfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgIGZsb2F0NCBfdmluQ29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Db2xvclsxXSA9CnsKICAgIGZsb2F0NCgwLCAwLCAwLCAwKQp9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKdm9pZCBnbF9tYWluKCkKewpmbG9hdDQgX291dHB1dENvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKZmxvYXQ0IF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnsKZmxvYXQ0IF9jaXJjbGVFZGdlID0gezAsIDAsIDAsIDB9OwooX2NpcmNsZUVkZ2UgPSBfdmluQ2lyY2xlRWRnZV9TdGFnZTApOwooX291dHB1dENvbG9yX1N0YWdlMCA9IF92aW5Db2xvcl9TdGFnZTApOwpmbG9hdCBfZCA9IGxlbmd0aChfY2lyY2xlRWRnZS54eSk7CmZsb2F0IF9kaXN0YW5jZVRvT3V0ZXJFZGdlID0gKF9jaXJjbGVFZGdlLnogKiAoMS4wIC0gX2QpKTsKZmxvYXQgX2VkZ2VBbHBoYSA9IGNsYW1wKF9kaXN0YW5jZVRvT3V0ZXJFZGdlLCAwLjAsIDEuMCk7Cihfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gdmVjNF9jdG9yKF9lZGdlQWxwaGEpKTsKfQp7CihnbF9Db2xvclswXSA9IChfb3V0cHV0Q29sb3JfU3RhZ2UwICogX291dHB1dENvdmVyYWdlX1N0YWdlMCkpOwp9Cn0Kc3RydWN0IFBTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQ0IHYxIDogVEVYQ09PUkQxOwp9OwoKQEAgUElYRUwgT1VUUFVUIEBAClBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KQp7CiAgICBfdmluQ2lyY2xlRWRnZV9TdGFnZTAgPSBpbnB1dC52MDsKICAgIF92aW5Db2xvcl9TdGFnZTAgPSBpbnB1dC52MTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAUgIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0NCB2MSA6IFRFWENPT1JEMTsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDQgdjEgOiBURVhDT09SRDE7Cn07Cgp2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dCkKewogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQuZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBpbnB1dC52MDsgCiAgICBvdXRwdXQudjEgPSBpbnB1dC52MTsgCiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgogICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gaW5wdXQuZHhfUG9zaXRpb247CiNlbmRpZiAgLy8gQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgp9CgEAAAADAAAAUgAAAFQAAABUAAAANAQAAERYQkO9J8lw1GMiYy/k2Kcg+2iYAQAAADQEAAAFAAAANAAAAFABAAC0AQAAPAIAAJgDAABSREVGFAEAAAEAAABoAAAAAQAAADwAAAAABf7/AMEAAOAAAABSRDExPAAAABgAAAAgAAAAKAAAACQAAAAMAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAJEdsb2JhbHMAq6urXAAAAAEAAACAAAAAEAAAAAAAAAAAAAAAqAAAAAAAAAAQAAAAAgAAALwAAAAAAAAA/////wAAAAD/////AAAAAF9za19SVEFkanVzdABmbG9hdDQAAQADAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1AAAATWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NACrq0lTR05cAAAAAwAAAAgAAABQAAAAAAAAAAAAAAADAAAAAAAAAAMDAABQAAAAAQAAAAAAAAADAAAAAQAAAA8PAABQAAAAAgAAAAAAAAADAAAAAgAAAA8PAABURVhDT09SRACrq6tPU0dOgAAAAAQAAAAIAAAAaAAAAAAAAAABAAAAAwAAAAAAAAAPAAAAdAAAAAIAAAAAAAAAAwAAAAEAAAAPAAAAdAAAAAAAAAAAAAAAAwAAAAIAAAAPAAAAdAAAAAEAAAAAAAAAAwAAAAMAAAAPAAAAU1ZfUG9zaXRpb24AVEVYQ09PUkQAq6urU0hFWFQBAABQAAEAVQAAAGoIAAFZAAAERo4gAAAAAAABAAAAXwAAAzIQEAAAAAAAXwAAA/IQEAABAAAAXwAAA/IQEAACAAAAZwAABPIgEAAAAAAAAQAAAGUAAAPyIBAAAQAAAGUAAAPyIBAAAgAAAGUAAAPyIBAAAwAAAGgAAAIBAAAANgAACMIgEAAAAAAAAkAAAAAAAAAAAAAAAAAAPwAAgD8yAAALMgAQAAAAAABGEBAAAAAAAIaAIAAAAAAAAAAAANaFIAAAAAAAAAAAADYAAAYiIBAAAAAAABoAEIBBAAAAAAAAADYAAAUSIBAAAAAAAAoAEAAAAAAANgAABTIgEAABAAAARgAQAAAAAAA2AAAIwiAQAAEAAAACQAAAAAAAAAAAAAAAAAAAAACAPzYAAAXyIBAAAgAAAEYeEAACAAAANgAABfIgEAADAAAARh4QAAEAAAA+AAABU1RBVJQAAAAJAAAAAQAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAADgjAAA0AIAAERYQkMZC/axBGpWKMqv3OqwEMwmAQAAANACAAAFAAAANAAAAKwAAAA0AQAAaAEAADQCAABSREVGcAAAAAAAAAAAAAAAAAAAADwAAAAABf//AMEAADwAAABSRDExPAAAABgAAAAgAAAAKAAAACQAAAAMAAAAAAAAAE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQAq6tJU0dOgAAAAAQAAAAIAAAAaAAAAAAAAAABAAAAAwAAAAAAAAAPAAAAdAAAAAIAAAAAAAAAAwAAAAEAAAAPAAAAdAAAAAAAAAAAAAAAAwAAAAIAAAAPBwAAdAAAAAEAAAAAAAAAAwAAAAMAAAAPDwAAU1ZfUG9zaXRpb24AVEVYQ09PUkQAq6urT1NHTiwAAAABAAAACAAAACAAAAAAAAAAAAAAAAMAAAAAAAAADwAAAFNWX1RBUkdFVACrq1NIRVjEAAAAUAAAADEAAABqCAABYhAAA3IQEAACAAAAYhAAA/IQEAADAAAAZQAAA/IgEAAAAAAAaAAAAgEAAAAPAAAHEgAQAAAAAABGEBAAAgAAAEYQEAACAAAASwAABRIAEAAAAAAACgAQAAAAAAAAAAAIEgAQAAAAAAAKABCAQQAAAAAAAAABQAAAAACAPzggAAcSABAAAAAAAAoAEAAAAAAAKhAQAAIAAAA4AAAH8iAQAAAAAAAGABAAAAAAAEYeEAADAAAAPgAAAVNUQVSUAAAABgAAAAEAAAAAAAAAAwAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF8AAAPyEBAAAQAAAF8AAAMyEBAAAgAAAGcAAATyIBAAAAAAAAEAAABlAAAD8iAQAAEAAABlAAAD8iAQAAIAAABlAAADMiAQAAMAAABoAAACAQAAADYAAAjCIBAAAAAAAAJAAAAAAAAAAAAAAAAAAD8AAIA/MgAACzIAEAAAAAAARhAQAAAAAACGgCAAAAAAAAAAAADWhSAAAAAAAAAAAAA2AAAGIiAQAAAAAAAaABCAQQAAAAAAAAA2AAAFEiAQAAAAAAAKABAAAAAAADYAAAUyIBAAAQAAAEYAEAAAAAAANgAACMIgEAABAAAAAkAAAAAAAAAAAAAAAAAAAAAAgD82AAAF8iAQAAIAAABGHhAAAQAAADYAAAUyABAAAAAAAEYQEAACAAAANgAABUIAEAAAAAAAAUAAAAAAgD8QAAAIEiAQAAMAAABGgiAAAAAAAAEAAABGAhAAAAAAABAAAAgiIBAAAwAAAEaCIAAAAAAAAgAAAEYCEAAAAAAAPgAAAVNUQVSUAAAADAAAAAEAAAAAAAAABwAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAA4IwAAHQEAABEWEJD7GfviOoKsXryDyujYBQcIAEAAAB0BAAABQAAADQAAAAIAQAAkAEAAMQBAADYAwAAUkRFRswAAAAAAAAAAAAAAAIAAAA8AAAAAAX//wDBAACYAAAAUkQxMTwAAAAYAAAAIAAAACgAAAAkAAAADAAAAAAAAAB8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAIoAAAACAAAABQAAAAQAAAD/////AAAAAAEAAAANAAAAc2FtcGxlcnMyRFswXQB0ZXh0dXJlczJEWzBdAE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQAq6tJU0dOgAAAAAQAAAAIAAAAaAAAAAAAAAABAAAAAwAAAAAAAAAPAAAAdAAAAAIAAAAAAAAAAwAAAAEAAAAPAAAAdAAAAAAAAAAAAAAAAwAAAAIAAAAPDwAAdAAAAAEAAAAAAAAAAwAAAAMAAAADAwAAU1ZfUG9zaXRpb24AVEVYQ09PUkQAq6urT1NHTiwAAAABAAAACAAAACAAAAAAAAAAAAAAAAMAAAAAAAAADwAAAFNWX1RBUkdFVACrq1NIRVgMAgAAUAAAAIMAAABqCAABWgAAAwBgEAAAAAAAWBgABABwEAAAAAAAVVUAAGIQAAPyEBAAAgAAAGIQAAMyEBAAAwAAAGUAAAPyIBAAAAAAAGgAAAICAAAARQAAi8IAAIBDVRUA8gAQAAAAAABGEBAAAwAAAEZ+EAAAAAAAAGAQAAAAAAA4AAAH8gAQAAAAAABGDhAAAAAAAEYeEAACAAAAMgAAD/IAEAAAAAAARg4QAAAAAAACQAAAAAB/QwAAf0MAAH9DAAB/QwJAAAAAAAA/AAAAPwAAAD8AAAA/QQAABfIAEAAAAAAARg4QAAAAAAA4AAAK8gAQAAEAAABGDhAAAAAAAAJAAACBgIA7gYCAO4GAgDuBgIA7HQAABxIAEAAAAAAAAUAAAAAAAAA6ABAAAAAAAA4AAAfiABAAAAAAAAYJEAABAAAA9g8QAAEAAAA2AAAFgiAQAAAAAAA6ABAAAQAAADIAAA/iABAAAAAAAFYOEAAAAAAAAkAAAAAAAAAAAH9DAAB/QwAAf0MCQAAAAAAAAAAAAD8AAAA/AAAAP0EAAAXiABAAAAAAAFYOEAAAAAAAOAAACuIAEAAAAAAAVg4QAAAAAAACQAAAAAAAAIGAgDuBgIA7gYCAOzcAAAxyIBAAAAAAAAYAEAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAACWBxAAAAAAAD4AAAFTVEFUlAAAAA0AAAACAAAAAAAAAAMAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////BwAHAAcAAAAHAAAAAwAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAFKLAADxjQAABwAAAGluQ29sb3IJAAAAX3VpbkNvbG9yAAAAAAEAAAAAAAAAAQAAAFCLAADyjQAADwAAAGluVGV4dHVyZUNvb3JkcxEAAABfdWluVGV4dHVyZUNvb3JkcwAAAAABAAAAAAAAAAIAAAADAAAAUosAAPKNAAALAAAAc2tfUlRBZGp1c3QNAAAAX3Vza19SVEFkanVzdAAAAAABAAAAAAAAAP////////////////////8AAAAAUIsAAPKNAAAUAAAAdUF0bGFzU2l6ZUludl9TdGFnZTAWAAAAX3V1QXRsYXNTaXplSW52X1N0YWdlMAAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAYAAAAdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwGgAAAF91dVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwAAAAAAEAAAAAAAAA/////////////////////wAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAAAgAAAAMAAAABAAAA4Q0AAAEAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAACAAAA/////////////////////////////////////////////////////////////////////xAAAAABAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAP////8BAAAA/////wEAAAAAAAAAAQAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAABiCAAAZmxvYXQyIHZlYzJfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEpCnsKICAgIHJldHVybiBmbG9hdDIoeDAsIHgxKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIsIGZsb2F0IHgzKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSwgeDIsIHgzKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdDQgX3NrX1JUQWRqdXN0IDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0MiBfdUF0bGFzU2l6ZUludl9TdGFnZTAgOiByZWdpc3RlcihjMSk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBBdHRyaWJ1dGVzCnN0YXRpYyBmbG9hdDIgX2luUG9zaXRpb24gPSB7MCwgMH07CnN0YXRpYyBmbG9hdDQgX2luQ29sb3IgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyBmbG9hdDIgX2luVGV4dHVyZUNvb3JkcyA9IHswLCAwfTsKCnN0YXRpYyBmbG9hdDQgZ2xfUG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0MiBfdlRleHR1cmVDb29yZHNfU3RhZ2UwID0gezAsIDB9OwpzdGF0aWMgIGZsb2F0IF92VGV4SW5kZXhfU3RhZ2UwID0gezB9OwpzdGF0aWMgIGZsb2F0NCBfdmluQ29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewpmbG9hdDIgX2luZGV4VGV4Q29vcmRzID0gdmVjMl9jdG9yKF9pblRleHR1cmVDb29yZHMueCwgX2luVGV4dHVyZUNvb3Jkcy55KTsKZmxvYXQyIF9pbnRDb29yZHMgPSBmbG9vcigoMC41ICogX2luZGV4VGV4Q29vcmRzKSk7CmZsb2F0MiBfZGlmZiA9IChfaW5kZXhUZXhDb29yZHMgLSAoMi4wICogX2ludENvb3JkcykpOwpmbG9hdCBfdGV4SWR4ID0gKCgyLjAgKiBfZGlmZi54KSArIF9kaWZmLnkpOwooX3ZUZXh0dXJlQ29vcmRzX1N0YWdlMCA9IChfaW50Q29vcmRzICogX3VBdGxhc1NpemVJbnZfU3RhZ2UwKSk7CihfdlRleEluZGV4X1N0YWdlMCA9IF90ZXhJZHgpOwooX3ZpbkNvbG9yX1N0YWdlMCA9IF9pbkNvbG9yKTsKZmxvYXQyIF9wb3MyID0gX2luUG9zaXRpb247CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcihfcG9zMi54LCBfcG9zMi55LCAwLjAsIDEuMCkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChnbF9Qb3NpdGlvbi54ICogX3NrX1JUQWRqdXN0LngpICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QueSkpLCAoKGdsX1Bvc2l0aW9uLnkgKiBfc2tfUlRBZGp1c3QueikgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC53KSksIDAuMCwgZ2xfUG9zaXRpb24udykpOwp9CgpAQCBWRVJURVggQVRUUklCVVRFUyBAQApzdHJ1Y3QgVlNfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQyIHYxIDogVEVYQ09PUkQxOwp9OwoKVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpCnsKICAgIGluaXRBdHRyaWJ1dGVzKGlucHV0KTsKCiAgICBnbF9tYWluKCk7CgogICAgVlNfT1VUUFVUIG91dHB1dDsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtIGdsX1Bvc2l0aW9uLnk7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7CiAgICBvdXRwdXQudjAgPSBfdmluQ29sb3JfU3RhZ2UwOwogICAgb3V0cHV0LnYxID0gX3ZUZXh0dXJlQ29vcmRzX1N0YWdlMDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAACQGAAAvLyBVbmlmb3JtcwoKc3RhdGljIGNvbnN0IHVpbnQgX3VUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMCA9IDA7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFsxXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFsxXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQyIF92VGV4dHVyZUNvb3Jkc19TdGFnZTAgPSB7MCwgMH07CnN0YXRpYyAgZmxvYXQ0IF92aW5Db2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQ0IF9vdXRwdXRDb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CmZsb2F0NCBfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gezAsIDAsIDAsIDB9Owp7Cihfb3V0cHV0Q29sb3JfU3RhZ2UwID0gX3ZpbkNvbG9yX1N0YWdlMCk7CmZsb2F0NCBfdGV4Q29sb3IgPSB7MCwgMCwgMCwgMH07CnsKKF90ZXhDb2xvciA9IGdsX3RleHR1cmUyRChfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwLCBfdlRleHR1cmVDb29yZHNfU3RhZ2UwKS54eHh4KTsKfQooX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IF90ZXhDb2xvcik7Cn0KewooZ2xfQ29sb3JbMF0gPSAoX291dHB1dENvbG9yX1N0YWdlMCAqIF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTApKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX3ZpbkNvbG9yX1N0YWdlMCA9IGlucHV0LnYwOwogICAgX3ZUZXh0dXJlQ29vcmRzX1N0YWdlMCA9IGlucHV0LnYxLnh5OwoKICAgIGdsX21haW4oKTsKCiAgICByZXR1cm4gZ2VuZXJhdGVPdXRwdXQoKTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABSiwAACQAAAGdsX0NvbG9yMAsAAABnbF9Db2xvclswXQAAAABSAgAAc3RydWN0IEdTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQyIHYxIDogVEVYQ09PUkQxOwp9OwoKc3RydWN0IEdTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCnZvaWQgY29weVZlcnRleChpbm91dCBHU19PVVRQVVQgb3V0cHV0LCBHU19JTlBVVCBpbnB1dCwgR1NfSU5QVVQgZmxhdGlucHV0KQp7CiAgICBvdXRwdXQu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DwAAAHQAAAACAAAAAAAAAAMAAAABAAAADwAAAHQAAAAAAAAAAAAAAAMAAAACAAAADw8AAHQAAAABAAAAAAAAAAMAAAADAAAAAwMAAFNWX1Bvc2l0aW9uAFRFWENPT1JEAKurq09TR04sAAAAAQAAAAgAAAAgAAAAAAAAAAAAAAADAAAAAAAAAA8AAABTVl9UQVJHRVQAq6tTSEVYoAAAAFAAAAAoAAAAaggAAVoAAAMAYBAAAAAAAFgYAAQAcBAAAAAAAFVVAABiEAAD8hAQAAIAAABiEAADMhAQAAMAAABlAAAD8iAQAAAAAABoAAACAQAAAEUAAIvCAACAQ1UVABIAEAAAAAAARhAQAAMAAABGfhAAAAAAAABgEAAAAAAAOAAAB/IgEAAAAAAABgAQAAAAAABGHhAAAgAAAD4AAAFTVEFUlAAAAAMAAAABAAAAAAAAAAMAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////BwAHAAcAAAAHAAAAAwAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAFKLAADxjQAABwAAAGluQ29sb3IJAAAAX3VpbkNvbG9yAAAAAAEAAAAAAAAAAQAAAFCLAADyjQAADwAAAGluVGV4dHVyZUNvb3JkcxEAAABfdWluVGV4dHVyZUNvb3JkcwAAAAABAAAAAAAAAAIAAAAFAAAAUosAAPKNAAALAAAAc2tfUlRBZGp1c3QNAAAAX3Vza19SVEFkanVzdAAAAAABAAAAAAAAAP////////////////////8AAAAAUIsAAPKNAAAUAAAAdUF0bGFzU2l6ZUludl9TdGFnZTAWAAAAX3V1QXRsYXNTaXplSW52X1N0YWdlMAAAAAABAAAAAAAAAP////////////////////8AAAAABhQAAPKNAAAMAAAAdV9za1JUSGVpZ2h0DgAAAF91dV9za1JUSGVpZ2h0AAAAAAEAAAAAAAAA/////////////////////wAAAABSiwAA8o0AABMAAAB1cmVjdFVuaWZvcm1fU3RhZ2UxFQAAAF91dXJlY3RVbmlmb3JtX1N0YWdlMQAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAYAAAAdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwGgAAAF91dVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwAAAAAAEAAAAAAAAA/////////////////////wAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAABAAAAAUAAAABAAAA4Q0AAAEAAAAAAAAABQAAAAUAAAAAAAAABQAAAAUAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAACAAAA/////////////////////////////////////////////////////////////////////xAAAAABAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAP////8BAAAA/////wEAAAAAAAAAAAAAAAAAAAD//////////wEAAAAAAAAAAAAAAAEAAAD//////////wEAAAAAAAAAAQAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAACuCAAAZmxvYXQyIHZlYzJfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEpCnsKICAgIHJldHVybiBmbG9hdDIoeDAsIHgxKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIsIGZsb2F0IHgzKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSwgeDIsIHgzKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdDQgX3NrX1JUQWRqdXN0IDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0MiBfdUF0bGFzU2l6ZUludl9TdGFnZTAgOiByZWdpc3RlcihjMSk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBBdHRyaWJ1dGVzCnN0YXRpYyBmbG9hdDIgX2luUG9zaXRpb24gPSB7MCwgMH07CnN0YXRpYyBmbG9hdDQgX2luQ29sb3IgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyBmbG9hdDIgX2luVGV4dHVyZUNvb3JkcyA9IHswLCAwfTsKCnN0YXRpYyBmbG9hdDQgZ2xfUG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMCk7CgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0MiBfdlRleHR1cmVDb29yZHNfU3RhZ2UwID0gezAsIDB9OwpzdGF0aWMgIGZsb2F0IF92VGV4SW5kZXhfU3RhZ2UwID0gezB9OwpzdGF0aWMgIGZsb2F0NCBfdmluQ29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewpmbG9hdDIgX2luZGV4VGV4Q29vcmRzID0gdmVjMl9jdG9yKF9pblRleHR1cmVDb29yZHMueCwgX2luVGV4dHVyZUNvb3Jkcy55KTsKZmxvYXQyIF9pbnRDb29yZHMgPSBmbG9vcigoMC41ICogX2luZGV4VGV4Q29vcmRzKSk7CmZsb2F0MiBfZGlmZiA9IChfaW5kZXhUZXhDb29yZHMgLSAoMi4wICogX2ludENvb3JkcykpOwpmbG9hdCBfdGV4SWR4ID0gKCgyLjAgKiBfZGlmZi54KSArIF9kaWZmLnkpOwooX3ZUZXh0dXJlQ29vcmRzX1N0YWdlMCA9IChfaW50Q29vcmRzICogX3VBdGxhc1NpemVJbnZfU3RhZ2UwKSk7CihfdlRleEluZGV4X1N0YWdlMCA9IF90ZXhJZHgpOwooX3ZpbkNvbG9yX1N0YWdlMCA9IF9pbkNvbG9yKTsKZmxvYXQyIF9wb3MyID0gX2luUG9zaXRpb247CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcihfcG9zMi54LCBfcG9zMi55LCAwLjAsIDEuMCkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChnbF9Qb3NpdGlvbi54ICogX3NrX1JUQWRqdXN0LngpICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QueSkpLCAoKGdsX1Bvc2l0aW9uLnkgKiBfc2tfUlRBZGp1c3QueikgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC53KSksIDAuMCwgZ2xfUG9zaXRpb24udykpOwp9CgpAQCBWRVJURVggQVRUUklCVVRFUyBAQApzdHJ1Y3QgVlNfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMzsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LmdsX0ZyYWdDb29yZCA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LnYwID0gX3ZpbkNvbG9yX1N0YWdlMDsKICAgIG91dHB1dC52MSA9IF92VGV4dHVyZUNvb3Jkc19TdGFnZTA7CgogICAgcmV0dXJuIG91dHB1dDsKfQoAAAAlCwAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQgX3Vfc2tSVEhlaWdodCA6IHJlZ2lzdGVyKGMwKTsKdW5pZm9ybSBmbG9hdDQgX3VyZWN0VW5pZm9ybV9TdGFnZTEgOiByZWdpc3RlcihjMSk7CnN0YXRpYyBjb25zdCB1aW50IF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTAgPSAwOwp1bmlmb3JtIFRleHR1cmUyRDxmbG9hdDQ+IHRleHR1cmVzMkRbMV0gOiByZWdpc3Rlcih0MCk7CnVuaWZvcm0gU2FtcGxlclN0YXRlIHNhbXBsZXJzMkRbMV0gOiByZWdpc3RlcihzMCk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0MiBfdlRleHR1cmVDb29yZHNfU3RhZ2UwID0gezAsIDB9OwpzdGF0aWMgIGZsb2F0NCBfdmluQ29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Db2xvclsxXSA9CnsKICAgIGZsb2F0NCgwLCAwLCAwLCAwKQp9OwpzdGF0aWMgZmxvYXQ0IGdsX0ZyYWdDb29yZCA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDMgZHhfRGVwdGhGcm9udCA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSA6IHBhY2tvZmZzZXQoYzMpOwogICAgc3RydWN0IFNhbXBsZXJNZXRhZGF0YQogICAgewogICAgICAgIGludCBiYXNlTGV2ZWw7CiAgICAgICAgaW50IGludGVybmFsRm9ybWF0Qml0czsKICAgICAgICBpbnQgd3JhcE1vZGVzOwogICAgICAgIGludCBwYWRkaW5nOwogICAgfTsKICAgIFNhbXBsZXJNZXRhZGF0YSBzYW1wbGVyTWV0YWRhdGFbMV0gOiBwYWNrb2Zmc2V0KGM0KTsKfTsKCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPTE9SCmZsb2F0NCBnbF90ZXh0dXJlMkQodWludCBzYW1wbGVySW5kZXgsIGZsb2F0MiB0KQp7CiAgICByZXR1cm4gdGV4dHVyZXMyRFtzYW1wbGVySW5kZXhdLlNhbXBsZShzYW1wbGVyczJEW3NhbXBsZXJJbmRleF0sIGZsb2F0Mih0LngsIHQueSkpOwp9CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT09SRAp2b2lkIGdsX21haW4oKQp7CmZsb2F0MiBfX3NrdG1wQ29vcmQgPSBnbF9GcmFnQ29vcmQueHk7CmZsb2F0NCBfc2tfRnJhZ0Nvb3JkID0gdmVjNF9jdG9yKF9fc2t0bXBDb29yZC54LCAoX3Vfc2tSVEhlaWdodCAtIF9fc2t0bXBDb29yZC55KSwgMS4wLCAxLjApOwpmbG9hdDQgX291dHB1dENvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKZmxvYXQ0IF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnsKKF9vdXRwdXRDb2xvcl9TdGFnZTAgPSBfdmluQ29sb3JfU3RhZ2UwKTsKZmxvYXQ0IF90ZXhDb2xvciA9IHswLCAwLCAwLCAwfTsKewooX3RleENvbG9yID0gZ2xfdGV4dHVyZTJEKF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTAsIF92VGV4dHVyZUNvb3Jkc19TdGFnZTApLnh4eHgpOwp9Cihfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gX3RleENvbG9yKTsKfQpmbG9hdDQgX291dHB1dF9TdGFnZTEgPSB7MCwgMCwgMCwgMH07CnsKZmxvYXQgX2FscGhhID0gezB9Owp7CmZsb2F0IF94U3ViID0gezB9OwpmbG9hdCBfeVN1YiA9IHswfTsKKF94U3ViID0gbWluKChfc2tfRnJhZ0Nvb3JkLnggLSBfdXJlY3RVbmlmb3JtX1N0YWdlMS54KSwgMC4wKSk7CihfeFN1YiArPSBtaW4oKF91cmVjdFVuaWZvcm1fU3RhZ2UxLnogLSBfc2tfRnJhZ0Nvb3JkLngpLCAwLjApKTsKKF95U3ViID0gbWluKChfc2tfRnJhZ0Nvb3JkLnkgLSBfdXJlY3RVbmlmb3JtX1N0YWdlMS55KSwgMC4wKSk7CihfeVN1YiArPSBtaW4oKF91cmVjdFVuaWZvcm1fU3RhZ2UxLncgLSBfc2tfRnJhZ0Nvb3JkLnkpLCAwLjApKTsKKF9hbHBoYSA9ICgoMS4wICsgbWF4KF94U3ViLCAtMS4wKSkgKiAoMS4wICsgbWF4KF95U3ViLCAtMS4wKSkpKTsKfQooX291dHB1dF9TdGFnZTEgPSAoX291dHB1dENvdmVyYWdlX1N0YWdlMCAqIF9hbHBoYSkpOwp9CnsKKGdsX0NvbG9yWzBdID0gKF9vdXRwdXRDb2xvcl9TdGFnZTAgKiBfb3V0cHV0X1N0YWdlMSkpOwp9Cn0Kc3RydWN0IFBTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMzsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgZmxvYXQgcmh3ID0gMS4wIC8gaW5wdXQuZ2xfRnJhZ0Nvb3JkLnc7CiAgICBnbF9GcmFnQ29vcmQueCA9IGlucHV0LmR4X1Bvc2l0aW9uLng7CiAgICBnbF9GcmFnQ29vcmQueSA9IGlucHV0LmR4X1Bvc2l0aW9uLnk7CiAgICBnbF9GcmFnQ29vcmQueiA9IChpbnB1dC5nbF9GcmFnQ29vcmQueiAqIHJodykgKiBkeF9EZXB0aEZyb250LnggKyBkeF9EZXB0aEZyb250Lnk7CiAgICBnbF9GcmFnQ29vcmQudyA9IHJodzsKICAgIF92aW5Db2xvcl9TdGFnZTAgPSBpbnB1dC52MDsKICAgIF92VGV4dHVyZUNvb3Jkc19TdGFnZTAgPSBpbnB1dC52MS54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAygIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDM7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07CgpzdHJ1Y3QgR1NfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMzsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCnZvaWQgY29weVZlcnRleChpbm91dCBHU19PVVRQVVQgb3V0cHV0LCBHU19JTlBVVCBpbnB1dCwgR1NfSU5QVVQgZmxhdGlucHV0KQp7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBpbnB1dC5nbF9Qb3NpdGlvbjsKICAgIG91dHB1dC52MCA9IGlucHV0LnYwOyAKICAgIG91dHB1dC52MSA9IGlucHV0LnYxOyAKICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBpbnB1dC5nbF9GcmFnQ29vcmQ7CiNp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AAAAGgAQAAAAAAA0AAAHIgAQAAAAAAAaABAAAAAAAAFAAAAAAIC/AAAACjIAEAAAAAAARgAQAAAAAAACQAAAAACAPwAAgD8AAAAAAAAAADgAAAcSABAAAAAAAAoAEAAAAAAAGgAQAAAAAABFAACLwgAAgENVFQAiABAAAAAAAEYQEAAEAAAAFn4QAAAAAAAAYBAAAAAAADgAAAcSABAAAAAAAAoAEAAAAAAAGgAQAAAAAAA4AAAH8iAQAAAAAAAGABAAAAAAAEYeEAADAAAAPgAAAVNUQVSUAAAAEQAAAAEAAAAAAAAABAAAAA8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AwADAAMAAAADAAAAAgAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAFKLAADxjQAADgAAAGluSGFpclF1YWRFZGdlEAAAAF91aW5IYWlyUXVhZEVkZ2UAAAAAAQAAAAAAAAABAAAAAgAAAFKLAADyjQAACwAAAHNrX1JUQWRqdXN0DQAAAF91c2tfUlRBZGp1c3QAAAAAAQAAAAAAAAD/////////////////////AAAAAFKLAADxjQAADQAAAHVDb2xvcl9TdGFnZTAPAAAAX3V1Q29sb3JfU3RhZ2UwAAAAAAEAAAAAAAAA/////////////////////wAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAD//////////////////////////////////////////////////////////////////////////xAAAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAAD/BQAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5Qb3NpdGlvbiA9IHswLCAwfTsKc3RhdGljIGZsb2F0NCBfaW5IYWlyUXVhZEVkZ2UgPSB7MCwgMCwgMCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewooX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwID0gX2luSGFpclF1YWRFZGdlKTsKZmxvYXQyIF9wb3MyID0gX2luUG9zaXRpb247CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcihfcG9zMi54LCBfcG9zMi55LCAwLjAsIDEuMCkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChnbF9Qb3NpdGlvbi54ICogX3NrX1JUQWRqdXN0LngpICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QueSkpLCAoKGdsX1Bvc2l0aW9uLnkgKiBfc2tfUlRBZGp1c3QueikgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC53KSksIDAuMCwgZ2xfUG9zaXRpb24udykpOwp9CgpAQCBWRVJURVggQVRUUklCVVRFUyBAQApzdHJ1Y3QgVlNfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwp9OwoKVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpCnsKICAgIGluaXRBdHRyaWJ1dGVzKGlucHV0KTsKCiAgICBnbF9tYWluKCk7CgogICAgVlNfT1VUUFVUIG91dHB1dDsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtIGdsX1Bvc2l0aW9uLnk7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7CiAgICBvdXRwdXQudjAgPSBfdkhhaXJRdWFkRWRnZV9TdGFnZTA7CgogICAgcmV0dXJuIG91dHB1dDsKfQoAAADjBQAAZmxvYXQyIHZlYzJfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEpCnsKICAgIHJldHVybiBmbG9hdDIoeDAsIHgxKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MCwgeDAsIHgwKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdDQgX3VDb2xvcl9TdGFnZTAgOiByZWdpc3RlcihjMCk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0NCBfdkhhaXJRdWFkRWRnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgp2b2lkIGdsX21haW4oKQp7CmZsb2F0NCBfb3V0cHV0Q29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpmbG9hdDQgX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKewooX291dHB1dENvbG9yX1N0YWdlMCA9IF91Q29sb3JfU3RhZ2UwKTsKZmxvYXQgX2VkZ2VBbHBoYSA9IHswfTsKZmxvYXQyIF9kdXZkeCA9IGRkeChfdkhhaXJRdWFkRWRnZV9TdGFnZTAueHkpOwpmbG9hdDIgX2R1dmR5ID0gZGR5KF92SGFpclF1YWRFZGdlX1N0YWdlMC54eSk7CmZsb2F0MiBfZ0YgPSB2ZWMyX2N0b3IoKCgoMi4wICogX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwLngpICogX2R1dmR4LngpIC0gX2R1dmR4LnkpLCAoKCgyLjAgKiBfdkhhaXJRdWFkRWRnZV9TdGFnZTAueCkgKiBfZHV2ZHkueCkgLSBfZHV2ZHkueSkpOwooX2VkZ2VBbHBoYSA9ICgoX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwLnggKiBfdkhhaXJRdWFkRWRnZV9TdGFnZTAueCkgLSBfdkhhaXJRdWFkRWRnZV9TdGFnZTAueSkpOwooX2VkZ2VBbHBoYSA9IHNxcnQoKChfZWRnZUFscGhhICogX2VkZ2VBbHBoYSkgLyBkb3QoX2dGLCBfZ0YpKSkpOwooX2VkZ2VBbHBoYSA9IG1heCgoMS4wIC0gX2VkZ2VBbHBoYSksIDAuMCkpOwooX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHZlYzRfY3RvcihfZWRnZUFscGhhKSk7Cn0KewooZ2xfQ29sb3JbMF0gPSAoX291dHB1dENvbG9yX1N0YWdlMCAqIF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTApKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwID0gaW5wdXQudjA7CgogICAgZ2xfbWFpbigpOwoKICAgIHJldHVybiBnZW5lcmF0ZU91dHB1dCgpOwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAFKLAAAJAAAAZ2xfQ29sb3IwCwAAAGdsX0NvbG9yWzBdAAAAAAECAABzdHJ1Y3QgR1NfSU5QVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7Cn07CgpzdHJ1Y3QgR1NfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwp9OwoKdm9pZCBjb3B5VmVydGV4KGlub3V0IEdTX09VVFBVVCBvdXRwdXQsIEdTX0lOUFVUIGlucHV0LCBHU19JTlBVVCBmbGF0aW5wdXQpCnsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGlucHV0LmdsX1Bvc2l0aW9uOwogICAgb3V0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AH9DAAB/QwAAAAACQAAAAAAAPwAAAD8AAAA/AAAAAEEAAAVyABAAAAAAAEYCEAAAAAAAOAAACnIgEAAAAAAARgIQAAAAAAACQAAAgYCAO4GAgDuBgIA7AAAAAD4AAAFTVEFUlAAAAAsAAAABAAAAAAAAAAMAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////BwAHAAcAAAAHAAAAAwAAAFCLAADyjQAACAAAAHBvc2l0aW9uCgAAAF91cG9zaXRpb24AAAAAAQAAAAAAAAAAAAAAUIsAAPKNAAANAAAAdGV4dHVyZUNvb3Jkcw8AAABfdXRleHR1cmVDb29yZHMAAAAAAQAAAAAAAAABAAAAUosAAPGNAAAFAAAAY29sb3IHAAAAX3Vjb2xvcgAAAAABAAAAAAAAAAIAAAAEAAAAUosAAPKNAAALAAAAc2tfUlRBZGp1c3QNAAAAX3Vza19SVEFkanVzdAAAAAABAAAAAAAAAP////////////////////8AAAAABhQAAPKNAAAMAAAAdV9za1JUSGVpZ2h0DgAAAF91dV9za1JUSGVpZ2h0AAAAAAEAAAAAAAAA/////////////////////wAAAABSiwAA8o0AABMAAAB1cmVjdFVuaWZvcm1fU3RhZ2UxFQAAAF91dXJlY3RVbmlmb3JtX1N0YWdlMQAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAYAAAAdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwGgAAAF91dVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UwAAAAAAEAAAAAAAAA/////////////////////wAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAAAwAAAAQAAAABAAAA4Q0AAAEAAAAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAACAAAA/////////////////////////////////////////////////////////////////////xAAAAABAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAAAAAAD//////////wEAAAAAAAAAAAAAAAEAAAD//////////wEAAAAAAAAAAQAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAADlBgAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfcG9zaXRpb24gPSB7MCwgMH07CnN0YXRpYyBmbG9hdDIgX3RleHR1cmVDb29yZHMgPSB7MCwgMH07CnN0YXRpYyBmbG9hdDQgX2NvbG9yID0gezAsIDAsIDAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQ0IF92Y29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgIGZsb2F0MiBfdnRleHR1cmVDb29yZHNfU3RhZ2UwID0gezAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewpmbG9hdDIgX3BvczIgPSBfcG9zaXRpb247CihfdmNvbG9yX1N0YWdlMCA9IF9jb2xvcik7CihfdnRleHR1cmVDb29yZHNfU3RhZ2UwID0gX3RleHR1cmVDb29yZHMpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDM7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07CgpWU19PVVRQVVQgbWFpbihWU19JTlBVVCBpbnB1dCkKewogICAgaW5pdEF0dHJpYnV0ZXMoaW5wdXQpOwoKICAgIGdsX21haW4oKTsKCiAgICBWU19PVVRQVVQgb3V0cHV0OwogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gZ2xfUG9zaXRpb247CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLng7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueSA9IC0gZ2xfUG9zaXRpb24ueTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udzsKICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC52MCA9IF92Y29sb3JfU3RhZ2UwOwogICAgb3V0cHV0LnYxID0gX3Z0ZXh0dXJlQ29vcmRzX1N0YWdlMDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAACkLAABmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MCwgeDAsIHgwKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIsIGZsb2F0IHgzKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSwgeDIsIHgzKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdCBfdV9za1JUSGVpZ2h0IDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0NCBfdXJlY3RVbmlmb3JtX1N0YWdlMSA6IHJlZ2lzdGVyKGMxKTsKc3RhdGljIGNvbnN0IHVpbnQgX3VUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMCA9IDA7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFsxXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFsxXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQ0IF92Y29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgIGZsb2F0MiBfdnRleHR1cmVDb29yZHNfU3RhZ2UwID0gezAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Db2xvclsxXSA9CnsKICAgIGZsb2F0NCgwLCAwLCAwLCAwKQp9OwpzdGF0aWMgZmxvYXQ0IGdsX0ZyYWdDb29yZCA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDMgZHhfRGVwdGhGcm9udCA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSA6IHBhY2tvZmZzZXQoYzMpOwogICAgc3RydWN0IFNhbXBsZXJNZXRhZGF0YQogICAgewogICAgICAgIGludCBiYXNlTGV2ZWw7CiAgICAgICAgaW50IGludGVybmFsRm9ybWF0Qml0czsKICAgICAgICBpbnQgd3JhcE1vZGVzOwogICAgICAgIGludCBwYWRkaW5nOwogICAgfTsKICAgIFNhbXBsZXJNZXRhZGF0YSBzYW1wbGVyTWV0YWRhdGFbMV0gOiBwYWNrb2Zmc2V0KGM0KTsKfTsKCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPTE9SCmZsb2F0NCBnbF90ZXh0dXJlMkQodWludCBzYW1wbGVySW5kZXgsIGZsb2F0MiB0KQp7CiAgICByZXR1cm4gdGV4dHVyZXMyRFtzYW1wbGVySW5kZXhdLlNhbXBsZShzYW1wbGVyczJEW3NhbXBsZXJJbmRleF0sIGZsb2F0Mih0LngsIHQueSkpOwp9CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT09SRAp2b2lkIGdsX21haW4oKQp7CmZsb2F0MiBfX3NrdG1wQ29vcmQgPSBnbF9GcmFnQ29vcmQueHk7CmZsb2F0NCBfc2tfRnJhZ0Nvb3JkID0gdmVjNF9jdG9yKF9fc2t0bXBDb29yZC54LCAoX3Vfc2tSVEhlaWdodCAtIF9fc2t0bXBDb29yZC55KSwgMS4wLCAxLjApOwpmbG9hdDQgX291dHB1dENvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKewooX291dHB1dENvbG9yX1N0YWdlMCA9IF92Y29sb3JfU3RhZ2UwKTsKZmxvYXQyIF90ZXhDb29yZCA9IHswLCAwfTsKKF90ZXhDb29yZCA9IF92dGV4dHVyZUNvb3Jkc19TdGFnZTApOwooX291dHB1dENvbG9yX1N0YWdlMCA9IChfb3V0cHV0Q29sb3JfU3RhZ2UwICogZ2xfdGV4dHVyZTJEKF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTAsIF90ZXhDb29yZCkpKTsKfQpmbG9hdDQgX291dHB1dF9TdGFnZTEgPSB7MCwgMCwgMCwgMH07CnsKZmxvYXQgX2FscGhhID0gezB9Owp7CmZsb2F0IF94U3ViID0gezB9OwpmbG9hdCBfeVN1YiA9IHswfTsKKF94U3ViID0gbWluKChfc2tfRnJhZ0Nvb3JkLnggLSBfdXJlY3RVbmlmb3JtX1N0YWdlMS54KSwgMC4wKSk7CihfeFN1YiArPSBtaW4oKF91cmVjdFVuaWZvcm1fU3RhZ2UxLnogLSBfc2tfRnJhZ0Nvb3JkLngpLCAwLjApKTsKKF95U3ViID0gbWluKChfc2tfRnJhZ0Nvb3JkLnkgLSBfdXJlY3RVbmlmb3JtX1N0YWdlMS55KSwgMC4wKSk7CihfeVN1YiArPSBtaW4oKF91cmVjdFVuaWZvcm1fU3RhZ2UxLncgLSBfc2tfRnJhZ0Nvb3JkLnkpLCAwLjApKTsKKF9hbHBoYSA9ICgoMS4wICsgbWF4KF94U3ViLCAtMS4wKSkgKiAoMS4wICsgbWF4KF95U3ViLCAtMS4wKSkpKTsKfQooX291dHB1dF9TdGFnZTEgPSB2ZWM0X2N0b3IoX2FscGhhKSk7Cn0KewooZ2xfQ29sb3JbMF0gPSAoX291dHB1dENvbG9yX1N0YWdlMCAqIF9vdXRwdXRfU3RhZ2UxKSk7Cn0KfQpzdHJ1Y3QgUFNfSU5QVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogVEVYQ09PUkQzOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQyIHYxIDogVEVYQ09PUkQxOwp9OwoKQEAgUElYRUwgT1VUUFVUIEBAClBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KQp7CiAgICBmbG9hdCByaHcgPSAxLjAgLyBpbnB1dC5nbF9GcmFnQ29vcmQudzsKICAgIGdsX0ZyYWdDb29yZC54ID0gaW5wdXQuZHhfUG9zaXRpb24ueDsKICAgIGdsX0ZyYWdDb29yZC55ID0gaW5wdXQuZHhfUG9zaXRpb24ueTsKICAgIGdsX0ZyYWdDb29yZC56ID0gKGlucHV0LmdsX0ZyYWdDb29yZC56ICogcmh3KSAqIGR4X0RlcHRoRnJvbnQueCArIGR4X0RlcHRoRnJvbnQueTsKICAgIGdsX0ZyYWdDb29yZC53ID0gcmh3OwogICAgX3Zjb2xvcl9TdGFnZTAgPSBpbnB1dC52MDsKICAgIF92dGV4dHVyZUNvb3Jkc19TdGFnZTAgPSBpbnB1dC52MS54eTsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAygIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDM7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07CgpzdHJ1Y3QgR1NfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0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CnsKKF92SGFpclF1YWRFZGdlX1N0YWdlMCA9IF9pbkhhaXJRdWFkRWRnZSk7CmZsb2F0MiBfcG9zMiA9IF9pblBvc2l0aW9uOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LnYwID0gX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAAKQYAAGZsb2F0MiB2ZWMyX2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxKQp7CiAgICByZXR1cm4gZmxvYXQyKHgwLCB4MSk7Cn0KZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCkKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDAsIHgwLCB4MCk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF91Q29sb3JfU3RhZ2UwIDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0IF91Q292ZXJhZ2VfU3RhZ2UwIDogcmVnaXN0ZXIoYzEpOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Db2xvclsxXSA9CnsKICAgIGZsb2F0NCgwLCAwLCAwLCAwKQp9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKdm9pZCBnbF9tYWluKCkKewpmbG9hdDQgX291dHB1dENvbG9yX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKZmxvYXQ0IF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnsKKF9vdXRwdXRDb2xvcl9TdGFnZTAgPSBfdUNvbG9yX1N0YWdlMCk7CmZsb2F0IF9lZGdlQWxwaGEgPSB7MH07CmZsb2F0MiBfZHV2ZHggPSBkZHgoX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwLnh5KTsKZmxvYXQyIF9kdXZkeSA9IGRkeShfdkhhaXJRdWFkRWRnZV9TdGFnZTAueHkpOwpmbG9hdDIgX2dGID0gdmVjMl9jdG9yKCgoKDIuMCAqIF92SGFpclF1YWRFZGdlX1N0YWdlMC54KSAqIF9kdXZkeC54KSAtIF9kdXZkeC55KSwgKCgoMi4wICogX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwLngpICogX2R1dmR5LngpIC0gX2R1dmR5LnkpKTsKKF9lZGdlQWxwaGEgPSAoKF92SGFpclF1YWRFZGdlX1N0YWdlMC54ICogX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwLngpIC0gX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwLnkpKTsKKF9lZGdlQWxwaGEgPSBzcXJ0KCgoX2VkZ2VBbHBoYSAqIF9lZGdlQWxwaGEpIC8gZG90KF9nRiwgX2dGKSkpKTsKKF9lZGdlQWxwaGEgPSBtYXgoKDEuMCAtIF9lZGdlQWxwaGEpLCAwLjApKTsKKF9vdXRwdXRDb3ZlcmFnZV9TdGFnZTAgPSB2ZWM0X2N0b3IoKF91Q292ZXJhZ2VfU3RhZ2UwICogX2VkZ2VBbHBoYSkpKTsKfQp7CihnbF9Db2xvclswXSA9IChfb3V0cHV0Q29sb3JfU3RhZ2UwICogX291dHB1dENvdmVyYWdlX1N0YWdlMCkpOwp9Cn0Kc3RydWN0IFBTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwp9OwoKQEAgUElYRUwgT1VUUFVUIEBAClBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KQp7CiAgICBfdkhhaXJRdWFkRWRnZV9TdGFnZTAgPSBpbnB1dC52MDsKCiAgICBnbF9tYWluKCk7CgogICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUosAAAkAAABnbF9Db2xvcjALAAAAZ2xfQ29sb3JbMF0AAAAAAQIAAHN0cnVjdCBHU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9h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/////////////////////////////////////////////////////xAAAAABAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAP////8BAAAA/////wMAAAAAAAAAAAAAAAAAAAD//////////wEAAAAAAAAAAAAAAAEAAAD//////////wQAAAAAAAAAAQAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAADfBwAAZmxvYXQzIHZlYzNfY3RvcihmbG9hdDIgeDAsIGZsb2F0IHgxKQp7CiAgICByZXR1cm4gZmxvYXQzKHgwLCB4MSk7Cn0KZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKdW5pZm9ybSBmbG9hdDN4MyBfdUNvb3JkVHJhbnNmb3JtTWF0cml4XzBfU3RhZ2UwIDogcmVnaXN0ZXIoYzEpOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gQXR0cmlidXRlcwpzdGF0aWMgZmxvYXQyIF9pblBvc2l0aW9uID0gezAsIDB9OwpzdGF0aWMgZmxvYXQ0IF9pbkNvbG9yID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgZmxvYXQyIF9pbkxvY2FsQ29vcmQgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3Zjb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSB7MCwgMH07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQyIGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgIDogcGFja29mZnNldChjMyk7Cn07Cgp2b2lkIGdsX21haW4oKQp7CmZsb2F0NCBfY29sb3IgPSBfaW5Db2xvcjsKKF92Y29sb3JfU3RhZ2UwID0gX2NvbG9yKTsKZmxvYXQyIF9wb3MyID0gX2luUG9zaXRpb247CihfdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwID0gbXVsKHRyYW5zcG9zZShfdUNvb3JkVHJhbnNmb3JtTWF0cml4XzBfU3RhZ2UwKSwgdmVjM19jdG9yKF9pbkxvY2FsQ29vcmQsIDEuMCkpLnh5KTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKF9wb3MyLngsIF9wb3MyLnksIDAuMCwgMS4wKSk7CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcigoKGdsX1Bvc2l0aW9uLnggKiBfc2tfUlRBZGp1c3QueCkgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC55KSksICgoZ2xfUG9zaXRpb24ueSAqIF9za19SVEFkanVzdC56KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LncpKSwgMC4wLCBnbF9Qb3NpdGlvbi53KSk7Cn0KCkBAIFZFUlRFWCBBVFRSSUJVVEVTIEBACnN0cnVjdCBWU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogVEVYQ09PUkQzOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQyIHYxIDogVEVYQ09PUkQxOwp9OwoKVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpCnsKICAgIGluaXRBdHRyaWJ1dGVzKGlucHV0KTsKCiAgICBnbF9tYWluKCk7CgogICAgVlNfT1VUUFVUIG91dHB1dDsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtIGdsX1Bvc2l0aW9uLnk7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7CiAgICBvdXRwdXQuZ2xfRnJhZ0Nvb3JkID0gZ2xfUG9zaXRpb247CiAgICBvdXRwdXQudjAgPSBfdmNvbG9yX1N0YWdlMDsKICAgIG91dHB1dC52MSA9IF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTA7CgogICAgcmV0dXJuIG91dHB1dDsKfQoAAAB9DAAAZmxvYXQzIHZlYzNfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyKQp7CiAgICByZXR1cm4gZmxvYXQzKHgwLCB4MSwgeDIpOwp9CmZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDApCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgwLCB4MCwgeDApOwp9CmZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxLCBmbG9hdCB4MiwgZmxvYXQgeDMpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxLCB4MiwgeDMpOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0IF91X3NrUlRIZWlnaHQgOiByZWdpc3RlcihjMCk7CnVuaWZvcm0gZmxvYXQzIF91ZWRnZXNfU3RhZ2UyWzRdIDogcmVnaXN0ZXIoYzEpOwpzdGF0aWMgY29uc3QgdWludCBfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxID0gMDsKdW5pZm9ybSBUZXh0dXJlMkQ8ZmxvYXQ0PiB0ZXh0dXJlczJEWzFdIDogcmVnaXN0ZXIodDApOwp1bmlmb3JtIFNhbXBsZXJTdGF0ZSBzYW1wbGVyczJEWzFdIDogcmVnaXN0ZXIoczApOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3Zjb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CnN0YXRpYyBmbG9hdDQgZ2xfRnJhZ0Nvb3JkID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MyBkeF9EZXB0aEZyb250IDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlIDogcGFja29mZnNldChjMyk7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPT1JECnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQyIF9fc2t0bXBDb29yZCA9IGdsX0ZyYWdDb29yZC54eTsKZmxvYXQ0IF9za19GcmFnQ29vcmQgPSB2ZWM0X2N0b3IoX19za3RtcENvb3JkLngsIChfdV9za1JUSGVpZ2h0IC0gX19za3RtcENvb3JkLnkpLCAxLjAsIDEuMCk7CmZsb2F0NCBfb3V0cHV0Q29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9Owp7Cihfb3V0cHV0Q29sb3JfU3RhZ2UwID0gX3Zjb2xvcl9TdGFnZTApOwp9CmZsb2F0NCBfb3V0cHV0X1N0YWdlMSA9IHswLCAwLCAwLCAwfTsKewpmbG9hdDQgX2NoaWxkID0gezAsIDAsIDAsIDB9Owp7CihfY2hpbGQgPSBnbF90ZXh0dXJlMkQoX3VUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMSwgX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCkueHl6dyk7Cn0KKF9vdXRwdXRfU3RhZ2UxID0gKF9jaGlsZCAqIF9vdXRwdXRDb2xvcl9TdGFnZTAudykpOwp9CmZsb2F0NCBfb3V0cHV0X1N0YWdlMiA9IHswLCAwLCAwLCAwfTsKewpmbG9hdCBfYWxwaGEgPSB7MS4wfTsKZmxvYXQgX2VkZ2UgPSB7MH07CihfZWRnZSA9IGRvdChfdWVkZ2VzX1N0YWdlMlswXSwgdmVjM19jdG9yKF9za19GcmFnQ29vcmQueCwgX3NrX0ZyYWdDb29yZC55LCAxLjApKSk7CihfZWRnZSA9IGNsYW1wKF9lZGdlLCAwLjAsIDEuMCkpOwooX2FscGhhICo9IF9lZGdlKTsKKF9lZGdlID0gZG90KF91ZWRnZXNfU3RhZ2UyWzFdLCB2ZWMzX2N0b3IoX3NrX0ZyYWdDb29yZC54LCBfc2tfRnJhZ0Nvb3JkLnksIDEuMCkpKTsKKF9lZGdlID0gY2xhbXAoX2VkZ2UsIDAuMCwgMS4wKSk7CihfYWxwaGEgKj0gX2VkZ2UpOwooX2VkZ2UgPSBkb3QoX3VlZGdlc19TdGFnZTJbMl0sIHZlYzNfY3Rvcihfc2tfRnJhZ0Nvb3JkLngsIF9za19GcmFnQ29vcmQueSwgMS4wKSkpOwooX2VkZ2UgPSBjbGFtcChfZWRnZSwgMC4wLCAxLjApKTsKKF9hbHBoYSAqPSBfZWRnZSk7CihfZWRnZSA9IGRvdChfdWVkZ2VzX1N0YWdlMlszXSwgdmVjM19jdG9yKF9za19GcmFnQ29vcmQueCwgX3NrX0ZyYWdDb29yZC55LCAxLjApKSk7CihfZWRnZSA9IGNsYW1wKF9lZGdlLCAwLjAsIDEuMCkpOwooX2FscGhhICo9IF9lZGdlKTsKKF9vdXRwdXRfU3RhZ2UyID0gdmVjNF9jdG9yKF9hbHBoYSkpOwp9CnsKKGdsX0NvbG9yWzBdID0gKF9vdXRwdXRfU3RhZ2UxICogX291dHB1dF9TdGFnZTIpKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDM7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07CgpAQCBQSVhFTCBPVVRQVVQgQEAKUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpCnsKICAgIGZsb2F0IHJodyA9IDEuMCAvIGlucHV0LmdsX0ZyYWdDb29yZC53OwogICAgZ2xfRnJhZ0Nvb3JkLnggPSBpbnB1dC5keF9Qb3NpdGlvbi54OwogICAgZ2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9Qb3NpdGlvbi55OwogICAgZ2xfRnJhZ0Nvb3JkLnogPSAoaW5wdXQuZ2xfRnJhZ0Nvb3JkLnogKiByaHcpICogZHhfRGVwdGhGcm9udC54ICsgZHhfRGVwdGhGcm9udC55OwogICAgZ2xfRnJhZ0Nvb3JkLncgPSByaHc7CiAgICBfdmNvbG9yX1N0YWdlMCA9IGlucHV0LnYwOwogICAgX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9IGlucHV0LnYxLnh5OwoKICAgIGdsX21haW4oKTsKCiAgICByZXR1cm4gZ2VuZXJhdGVPdXRwdXQoKTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABSiwAACQAAAGdsX0NvbG9yMAsAAABnbF9Db2xvclswXQAAAADKAgAAc3RydWN0IEdTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMzsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogVEVYQ09PUkQzOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQyIHYxIDogVEVYQ09PUkQxOwp9OwoKdm9pZCBjb3B5VmVydGV4KGlub3V0IEdTX09VVFBVVCBvdXRwdXQs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AAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAAAAAABmBgAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5Qb3NpdGlvbiA9IHswLCAwfTsKc3RhdGljIGZsb2F0NCBfaW5Db2xvciA9IHswLCAwLCAwLCAwfTsKc3RhdGljIGZsb2F0IF9pbkNvdmVyYWdlID0gezB9OwoKc3RhdGljIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQ0IF92Y29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgIGZsb2F0IF92aW5Db3ZlcmFnZV9TdGFnZTAgPSB7MH07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQyIGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgIDogcGFja29mZnNldChjMyk7Cn07Cgp2b2lkIGdsX21haW4oKQp7CmZsb2F0NCBfY29sb3IgPSBfaW5Db2xvcjsKKF92Y29sb3JfU3RhZ2UwID0gX2NvbG9yKTsKZmxvYXQyIF9wb3MyID0gX2luUG9zaXRpb247CihfdmluQ292ZXJhZ2VfU3RhZ2UwID0gX2luQ292ZXJhZ2UpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0IHYwIDogVEVYQ09PUkQwOwp9OwoKVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpCnsKICAgIGluaXRBdHRyaWJ1dGVzKGlucHV0KTsKCiAgICBnbF9tYWluKCk7CgogICAgVlNfT1VUUFVUIG91dHB1dDsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtIGdsX1Bvc2l0aW9uLnk7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7CiAgICBvdXRwdXQudjAgPSBfdmluQ292ZXJhZ2VfU3RhZ2UwOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAAbQMAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDApCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgwLCB4MCwgeDApOwp9CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0IF92aW5Db3ZlcmFnZV9TdGFnZTAgPSB7MH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgp2b2lkIGdsX21haW4oKQp7CmZsb2F0NCBfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gezAsIDAsIDAsIDB9Owp7CmZsb2F0IF9hbHBoYSA9IHsxLjB9OwooX2FscGhhID0gX3ZpbkNvdmVyYWdlX1N0YWdlMCk7Cihfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gdmVjNF9jdG9yKF9hbHBoYSkpOwp9CnsKKGdsX0NvbG9yWzBdID0gX291dHB1dENvdmVyYWdlX1N0YWdlMCk7Cn0KKGdsX0NvbG9yWzBdID0gZ2xfQ29sb3JbMF0ud3d3dyk7Cn0Kc3RydWN0IFBTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQgdjAgOiBURVhDT09SRDA7Cn07CgpAQCBQSVhFTCBPVVRQVVQgQEAKUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpCnsKICAgIF92aW5Db3ZlcmFnZV9TdGFnZTAgPSBpbnB1dC52MC54OwoKICAgIGdsX21haW4oKTsKCiAgICByZXR1cm4gZ2VuZXJhdGVPdXRwdXQoKTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABSiwAACQAAAGdsX0NvbG9yMAsAAABnbF9Db2xvclswXQAAAAD/AQAAc3RydWN0IEdTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0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AAAAAA8AAABTVl9UQVJHRVQAq6tTSEVYPAAAAFAAAAAPAAAAaggAAWIQAAMSEBAAAgAAAGUAAAPyIBAAAAAAADYAAAXyIBAAAAAAAAYQEAACAAAAPgAAAVNUQVSUAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AwADAAMAAAADAAAAAgAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAAYUAADxjQAACgAAAGluQ292ZXJhZ2UMAAAAX3VpbkNvdmVyYWdlAAAAAAEAAAAAAAAAAQAAAAYAAABSiwAA8o0AAAsAAABza19SVEFkanVzdA0AAABfdXNrX1JUQWRqdXN0AAAAAAEAAAAAAAAA/////////////////////wAAAAAGFAAA8o0AAAwAAAB1X3NrUlRIZWlnaHQOAAAAX3V1X3NrUlRIZWlnaHQAAAAAAQAAAAAAAAD/////////////////////AAAAAFKLAADxjQAADQAAAHVDb2xvcl9TdGFnZTAPAAAAX3V1Q29sb3JfU3RhZ2UwAAAAAAEAAAAAAAAA/////////////////////wAAAABSiwAA8Y0AABkAAAB1c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UxGwAAAF91dXNjYWxlQW5kVHJhbnNsYXRlX1N0YWdlMQAAAAABAAAAAAAAAP////////////////////8AAAAAUosAAPGNAAAOAAAAdVRleERvbV9TdGFnZTEQAAAAX3V1VGV4RG9tX1N0YWdlMQAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAYAAAAdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxGgAAAF91dVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxAAAAAAEAAAAAAAAA/////////////////////wAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAABQAAAAYAAAABAAAA4Q0AAAEAAAAAAAAABgAAAAYAAAAAAAAABgAAAAYAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAD//////////////////////////////////////////////////////////////////////////xAAAAABAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAAAAAAD//////////wEAAAAAAAAAAAAAAAEAAAD//////////wEAAAAAAAAAAAAAAAIAAAD//////////wEAAAAAAAAAAAAAAAMAAAD//////////wEAAAAAAAAAAQAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAAAoBgAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5Qb3NpdGlvbiA9IHswLCAwfTsKc3RhdGljIGZsb2F0IF9pbkNvdmVyYWdlID0gezB9OwoKc3RhdGljIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQgX3ZpbkNvdmVyYWdlX1N0YWdlMCA9IHswfTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQyIF9wb3MyID0gX2luUG9zaXRpb247CihfdmluQ292ZXJhZ2VfU3RhZ2UwID0gX2luQ292ZXJhZ2UpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDI7CiAgICBmbG9hdCB2MCA6IFRFWENPT1JEMDsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LmdsX0ZyYWdDb29yZCA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LnYwID0gX3ZpbkNvdmVyYWdlX1N0YWdlMDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAABwLAABmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MCwgeDAsIHgwKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIsIGZsb2F0IHgzKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSwgeDIsIHgzKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdCBfdV9za1JUSGVpZ2h0IDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0NCBfdUNvbG9yX1N0YWdlMCA6IHJlZ2lzdGVyKGMxKTsKdW5pZm9ybSBmbG9hdDQgX3VzY2FsZUFuZFRyYW5zbGF0ZV9TdGFnZTEgOiByZWdpc3RlcihjMik7CnVuaWZvcm0gZmxvYXQ0IF91VGV4RG9tX1N0YWdlMSA6IHJlZ2lzdGVyKGMzKTsKc3RhdGljIGNvbnN0IHVpbnQgX3VUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMSA9IDA7CnVuaWZvcm0gVGV4dHVyZTJEPGZsb2F0ND4gdGV4dHVyZXMyRFsxXSA6IHJlZ2lzdGVyKHQwKTsKdW5pZm9ybSBTYW1wbGVyU3RhdGUgc2FtcGxlcnMyRFsxXSA6IHJlZ2lzdGVyKHMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQgX3ZpbkNvdmVyYWdlX1N0YWdlMCA9IHswfTsKCnN0YXRpYyBmbG9hdDQgZ2xfQ29sb3JbMV0gPQp7CiAgICBmbG9hdDQoMCwgMCwgMCwgMCkKfTsKc3RhdGljIGZsb2F0NCBnbF9GcmFnQ29vcmQgPSBmbG9hdDQoMCwgMCwgMCwgMCk7CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQzIGR4X0RlcHRoRnJvbnQgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgOiBwYWNrb2Zmc2V0KGMzKTsKICAgIHN0cnVjdCBTYW1wbGVyTWV0YWRhdGEKICAgIHsKICAgICAgICBpbnQgYmFzZUxldmVsOwogICAgICAgIGludCBpbnRlcm5hbEZvcm1hdEJpdHM7CiAgICAgICAgaW50IHdyYXBNb2RlczsKICAgICAgICBpbnQgcGFkZGluZzsKICAgIH07CiAgICBTYW1wbGVyTWV0YWRhdGEgc2FtcGxlck1ldGFkYXRhWzFdIDogcGFja29mZnNldChjNCk7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgpmbG9hdDQgZ2xfdGV4dHVyZTJEKHVpbnQgc2FtcGxlckluZGV4LCBmbG9hdDIgdCkKewogICAgcmV0dXJuIHRleHR1cmVzMkRbc2FtcGxlckluZGV4XS5TYW1wbGUoc2FtcGxlcnMyRFtzYW1wbGVySW5kZXhdLCBmbG9hdDIodC54LCB0LnkpKTsKfQoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09PUkQKdm9pZCBnbF9tYWluKCkKewpmbG9hdDIgX19za3RtcENvb3JkID0gZ2xfRnJhZ0Nvb3JkLnh5OwpmbG9hdDQgX3NrX0ZyYWdDb29yZCA9IHZlYzRfY3RvcihfX3NrdG1wQ29vcmQueCwgKF91X3NrUlRIZWlnaHQgLSBfX3NrdG1wQ29vcmQueSksIDEuMCwgMS4wKTsKZmxvYXQ0IF9vdXRwdXRDb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CmZsb2F0NCBfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gezAsIDAsIDAsIDB9Owp7Cihfb3V0cHV0Q29sb3JfU3RhZ2UwID0gX3VDb2xvcl9TdGFnZTApOwpmbG9hdCBfYWxwaGEgPSB7MS4wfTsKKF9hbHBoYSA9IF92aW5Db3ZlcmFnZV9TdGFnZTApOwooX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHZlYzRfY3RvcihfYWxwaGEpKTsKfQpmbG9hdDQgX291dHB1dF9TdGFnZTEgPSB7MCwgMCwgMCwgMH07CnsKZmxvYXQyIF9jb29yZHMgPSAoKF9za19GcmFnQ29vcmQueHkgKiBfdXNjYWxlQW5kVHJhbnNsYXRlX1N0YWdlMS54eSkgKyBfdXNjYWxlQW5kVHJhbnNsYXRlX1N0YWdlMS56dyk7CnsKYm9vbDQgX291dHNpZGUgPSB7MCwgMCwgMCwgMH07Cihfb3V0c2lkZS54eSA9IChfY29vcmRzIDwgX3VUZXhEb21fU3RhZ2UxLnh5KSk7Cihfb3V0c2lkZS56dyA9IChfY29vcmRzID4gX3VUZXhEb21fU3RhZ2UxLnp3KSk7CmZsb2F0NCBzODk4ID0gezAsIDAsIDAsIDB9OwppZiAoYW55KF9vdXRzaWRlKSkKewooczg5OCA9IGZsb2F0NCgwLjAsIDAuMCwgMC4wLCAwLjApKTsKfQplbHNlCnsKKHM4OTggPSAoX291dHB1dENvdmVyYWdlX1N0YWdlMCAqIGdsX3RleHR1cmUyRChfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxLCBfY29vcmRzKS54eHh4KSk7Cn0KKF9vdXRwdXRfU3RhZ2UxID0gczg5OCk7Cn0KfQp7CihnbF9Db2xvclswXSA9IChfb3V0cHV0Q29sb3JfU3RhZ2UwICogX291dHB1dF9TdGFnZTEpKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDI7CiAgICBmbG9hdCB2MCA6IFRFWENPT1JEMDsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgZmxvYXQgcmh3ID0gMS4wIC8gaW5wdXQuZ2xfRnJhZ0Nvb3JkLnc7CiAgICBnbF9GcmFnQ29vcmQueCA9IGlucHV0LmR4X1Bvc2l0aW9uLng7CiAgICBnbF9GcmFnQ29vcmQueSA9IGlucHV0LmR4X1Bvc2l0aW9uLnk7CiAgICBnbF9GcmFnQ29vcmQueiA9IChpbnB1dC5nbF9GcmFnQ29vcmQueiAqIHJodykgKiBkeF9EZXB0aEZyb250LnggKyBkeF9EZXB0aEZyb250Lnk7CiAgICBnbF9GcmFnQ29vcmQudyA9IHJodzsKICAgIF92aW5Db3ZlcmFnZV9TdGFnZTAgPSBpbnB1dC52MC54OwoKICAgIGdsX21haW4oKTsKCiAgICByZXR1cm4gZ2VuZXJhdGVPdXRwdXQoKTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABSiwAACQAAAGdsX0NvbG9yMAsAAABnbF9Db2xvclswXQAAAAB3AgAAc3RydWN0IEdTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMjsKICAgIGZsb2F0IHYwIDogVEVYQ09PUkQwOwp9OwoKc3RydWN0IEdTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMTsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDI7CiAgICBmbG9hdCB2MCA6IFRFWENPT1JEMDsKfTsKCnZvaWQgY29weVZlcnRleChpbm91dCBHU19PVVRQVVQgb3V0cHV0LCBHU19JTlBVVCBpbnB1dCwgR1NfSU5QVVQgZmxhdGlucHV0KQp7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBpbnB1dC5nbF9Qb3NpdGlvbjsKICAgIG91dHB1dC52MCA9IGlucHV0LnYwOyAKICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBpbnB1dC5nbF9GcmFnQ29vcmQ7CiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgogICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gaW5wdXQuZHhfUG9zaXRpb247CiNlbmRpZiAgLy8gQU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUgp9CgEAAAACAAAAUgAAAFEAAAAwBAAARFhCQ/YARDAW2O/24u9dUcMO7aUBAAAAMAQAAAUAAAA0AAAAUAEAAJwBAAAkAgAAlAMAAFJERUYUAQAAAQAAAGgAAAABAAAAPAAAAAAF/v8AwQAA4AAAAFJEMTE8AAAAGAAAACAAAAAoAAAAJAAAAAwAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAkR2xvYmFscwCrq6tcAAAAAQAAAIAAAAAQAAAAAAAAAAAAAACoAAAAAAAAABAAAAACAAAAvAAAAAAAAAD/////AAAAAP////8AAAAAX3NrX1JUQWRqdXN0AGZsb2F0NAABAAMAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALUAAABNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0AKurSVNHTkQAAAACAAAACAAAADgAAAAAAAAAAAAAAAMAAAAAAAAAAwMAADgAAAABAAAAAAAAAAMAAAABAAAAAQEAAFRFWENPT1JEAKurq09TR06AAAAABAAAAAgAAABoAAAAAAAAAAEAAAADAAAAAAAAAA8AAAB0AAAAAQAAAAAAAAADAAAAAQAAAA8AAAB0AAAAAgAAAAAAAAADAAAAAgAAAA8AAAB0AAAAAAAAAAAAAAADAAAAAwAAAAEOAABTVl9Qb3NpdGlvbgBURVhDT09SRACrq6tTSEVYaAEAAFAAAQBaAAAAaggAAVkAAARGjiAAAAAAAAEAAABfAAADMhAQAAAAAABfAAADEhAQAAEAAABnAAAE8iAQAAAAAAABAAAAZQAAA/IgEAABAAAAZQAAA/IgEAACAAAAZQAAAxIgEAADAAAAaAAAAgEAAAA2AAAIwiAQAAAAAAACQAAAAAAAAAAAAAAAAAA/AACAPzIAAAsyABAAAAAAAEYQEAAAAAAAhoAgAAAAAAAAAAAA1oUgAAAAAAAAAAAANgAABiIgEAAAAAAAGgAQgEEAAAAAAAAANgAABRIgEAAAAAAACgAQAAAAAAA2AAAFMiAQAAEAAABGABAAAAAAADYAAAUyIBAAAgAAAEYAEAAAAAAANgAACMIgEAABAAAAAkAAAAAAAAAAAAAAAAAAAAAAgD82AAAIwiAQAAIAAAACQAAAAAAAAAAAAAAAAAAAAACAPzYAAAUSIBAAAwAAAAoQEAABAAAAPgAAAVNUQVSUAAAACgAAAAEAAAAAAAAABgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAA4IwAANAFAABEWEJDkXUBXz6aj9N+2bWlar4/5AEAAADQBQAABQAAADQAAACMAgAAFAMAAEgDAAA0BQAAUkRFRlACAAABAAAAxAAAAAMAAAA8AAAAAAX//wDBAAAbAgAAUkQxMTwAAAAYAAAAIAAAACgAAAAkAAAADAAAAAAAAACcAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAKoAAAACAAAABQAAAAQAAAD/////AAAAAAEAAAANAAAAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABzYW1wbGVyczJEWzBdAHRleHR1cmVzMkRbMF0AJEdsb2JhbHMAq6uruAAAAAQAAADcAAAAQAAAAAAAAAAAAAAAfAEAAAAAAAAEAAAAAgAAAJABAAAAAAAA/////wAAAAD/////AAAAALQBAAAQAAAAEAAAAAIAAADMAQAAAAAAAP////8AAAAA/////wAAAADwAQAAIAAAABAAAAACAAAAzAEAAAAAAAD/////AAAAAP////8AAAAACwIAADAAAAAQAAAAAgAAAMwBAAAAAAAA/////wAAAAD/////AAAAAF91X3NrUlRIZWlnaHQAZmxvYXQAAAADAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKAQAAX3VDb2xvcl9TdGFnZTAAZmxvYXQ0AKurAQADAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDAQAAX3VzY2FsZUFuZFRyYW5zbGF0ZV9TdGFnZTEAX3VUZXhEb21fU3RhZ2UxAE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQAq6urSVNHToAAAAAEAAAACAAAAGgAAAAAAAAAAQAAAAMAAAAAAAAADwMAAHQAAAABAAAAAAAAAAMAAAABAAAADwAAAHQAAAACAAAAAAAAAAMAAAACAAAADwAAAHQAAAAAAAAAAAAAAAMAAAADAAAAAQEAAFNWX1Bvc2l0aW9uAFRFWENPT1JEAKurq09TR04sAAAAAQAAAAgAAAAgAAAAAAAAAAAAAAADAAAAAAAAAA8AAABTVl9UQVJHRVQAq6tTSEVY5AEAAFAAAAB5AAAAaggAAVkAAARGjiAAAAAAAAQAAABaAAADAGAQAAAAAABYGAAEAHAQAAAAAABVVQAAZCAABDIQEAAAAAAAAQAAAGIQAAMSEBAAAwAAAGUAAAPyIBAAAAAAAGgAAAICAAAAAAAACSIAEAAAAAAAGhAQgEEAAAAAAAAACoAgAAAAAAAAAAAANgAABRIAEAAAAAAAChAQAAAAAAAyAAALMgAQAAAAAABGABAAAAAAAEaAIAAAAAAAAgAAAOaKIAAAAAAAAgAAADEAAAjCABAAAAAAAAYEEAAAAAAABoQgAAAAAAADAAAAMQAACDIAEAABAAAA5oogAAAAAAADAAAARgAQAAAAAAA8AAAHwgAQAAAAAACmDhAAAAAAAAYEEAABAAAAPAAAB0IAEAAAAAAAOgAQAAAAAAAqABAAAAAAAEUAAIvCAACAQ1UVABIAEAAAAAAARgAQAAAAAABGfhAAAAAAAABgEAAAAAAAHwAEAyoAEAAAAAAANgAACPIAEAABAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAASAAABOAAAB/IAEAABAAAABgAQAAAAAAAGEBAAAwAAABUAAAE4AAAI8iAQAAAAAABGDhAAAQAAAEaOIAAAAAAAAQAAAD4AAAFTVEFUlAAAAA8AAAACAAAAAAAAAAMAAAAGAAAAAAAAAAIAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////AwADAAMAAAADAAAAAgAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAFKLAADxjQAADgAAAGluSGFpclF1YWRFZGdlEAAAAF91aW5IYWlyUXVhZEVkZ2UAAAAAAQAAAAAAAAABAAAABwAAAFKLAADyjQAACwAAAHNrX1JUQWRqdXN0DQAAAF91c2tfUlRBZGp1c3QAAAAAAQAAAAAAAAD/////////////////////AAAAAAYUAADyjQAADAAAAHVfc2tSVEhlaWdodA4AAABfdXVfc2tSVEhlaWdodAAAAAABAAAAAAAAAP////////////////////8AAAAAUosAAPGNAAANAAAAdUNvbG9yX1N0YWdlMA8AAABfdXVDb2xvcl9TdGFnZTAAAAAAAQAAAAAAAAD/////////////////////AAAAAAYUAADxjQAAEAAAAHVDb3ZlcmFnZV9TdGFnZTASAAAAX3V1Q292ZXJhZ2VfU3RhZ2UwAAAAAAEAAAAAAAAA/////////////////////wAAAABSiwAA8Y0AABkAAAB1c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UxGwAAAF91dXNjYWxlQW5kVHJhbnNsYXRlX1N0YWdlMQAAAAABAAAAAAAAAP////////////////////8AAAAAUosAAPGNAAAOAAAAdVRleERvbV9TdGFnZTEQAAAAX3V1VGV4RG9tX1N0YWdlMQAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAYAAAAdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxGgAAAF91dVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxAAAAAAEAAAAAAAAA/////////////////////wAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjAAAAAAAAAAAAAABAAAABhQAAAEAAQABAAAABgAAAAcAAAABAAAA4Q0AAAEAAAAAAAAABwAAAAcAAAAAAAAABwAAAAcAAAADAAAAFBQAAIwAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAEAAAD//////////////////////////////////////////////////////////////////////////xAAAAABAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAQAAAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAAAAAAD//////////wEAAAAAAAAAAAAAAAEAAAD//////////wEAAAAAAAAAAAAAAAIAAAD//////////wEAAAAAAAAAAAAAAAMAAAD//////////wEAAAAAAAAAAAAAAAQAAAD//////////wEAAAAAAAAAAQAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAABLBgAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5Qb3NpdGlvbiA9IHswLCAwfTsKc3RhdGljIGZsb2F0NCBfaW5IYWlyUXVhZEVkZ2UgPSB7MCwgMCwgMCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewooX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwID0gX2luSGFpclF1YWRFZGdlKTsKZmxvYXQyIF9wb3MyID0gX2luUG9zaXRpb247CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcihfcG9zMi54LCBfcG9zMi55LCAwLjAsIDEuMCkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChnbF9Qb3NpdGlvbi54ICogX3NrX1JUQWRqdXN0LngpICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QueSkpLCAoKGdsX1Bvc2l0aW9uLnkgKiBfc2tfUlRBZGp1c3QueikgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC53KSksIDAuMCwgZ2xfUG9zaXRpb24udykpOwp9CgpAQCBWRVJURVggQVRUUklCVVRFUyBAQApzdHJ1Y3QgVlNfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LmdsX0ZyYWdDb29yZCA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LnYwID0gX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAAVA0AAGZsb2F0MiB2ZWMyX2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxKQp7CiAgICByZXR1cm4gZmxvYXQyKHgwLCB4MSk7Cn0KZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCkKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDAsIHgwLCB4MCk7Cn0KZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQgX3Vfc2tSVEhlaWdodCA6IHJlZ2lzdGVyKGMwKTsKdW5pZm9ybSBmbG9hdDQgX3VDb2xvcl9TdGFnZTAgOiByZWdpc3RlcihjMSk7CnVuaWZvcm0gZmxvYXQgX3VDb3ZlcmFnZV9TdGFnZTAgOiByZWdpc3RlcihjMik7CnVuaWZvcm0gZmxvYXQ0IF91c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UxIDogcmVnaXN0ZXIoYzMpOwp1bmlmb3JtIGZsb2F0NCBfdVRleERvbV9TdGFnZTEgOiByZWdpc3RlcihjNCk7CnN0YXRpYyBjb25zdCB1aW50IF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEgPSAwOwp1bmlmb3JtIFRleHR1cmUyRDxmbG9hdDQ+IHRleHR1cmVzMkRbMV0gOiByZWdpc3Rlcih0MCk7CnVuaWZvcm0gU2FtcGxlclN0YXRlIHNhbXBsZXJzMkRbMV0gOiByZWdpc3RlcihzMCk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBWYXJ5aW5ncwpzdGF0aWMgIGZsb2F0NCBfdkhhaXJRdWFkRWRnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CnN0YXRpYyBmbG9hdDQgZ2xfRnJhZ0Nvb3JkID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MyBkeF9EZXB0aEZyb250IDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlIDogcGFja29mZnNldChjMyk7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsxXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPT1JECnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQyIF9fc2t0bXBDb29yZCA9IGdsX0ZyYWdDb29yZC54eTsKZmxvYXQ0IF9za19GcmFnQ29vcmQgPSB2ZWM0X2N0b3IoX19za3RtcENvb3JkLngsIChfdV9za1JUSGVpZ2h0IC0gX19za3RtcENvb3JkLnkpLCAxLjAsIDEuMCk7CmZsb2F0NCBfb3V0cHV0Q29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpmbG9hdDQgX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKewooX291dHB1dENvbG9yX1N0YWdlMCA9IF91Q29sb3JfU3RhZ2UwKTsKZmxvYXQgX2VkZ2VBbHBoYSA9IHswfTsKZmxvYXQyIF9kdXZkeCA9IGRkeChfdkhhaXJRdWFkRWRnZV9TdGFnZTAueHkpOwpmbG9hdDIgX2R1dmR5ID0gZGR5KF92SGFpclF1YWRFZGdlX1N0YWdlMC54eSk7CmZsb2F0MiBfZ0YgPSB2ZWMyX2N0b3IoKCgoMi4wICogX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwLngpICogX2R1dmR4LngpIC0gX2R1dmR4LnkpLCAoKCgyLjAgKiBfdkhhaXJRdWFkRWRnZV9TdGFnZTAueCkgKiBfZHV2ZHkueCkgLSBfZHV2ZHkueSkpOwooX2VkZ2VBbHBoYSA9ICgoX3ZIYWlyUXVhZEVkZ2VfU3RhZ2UwLnggKiBfdkhhaXJRdWFkRWRnZV9TdGFnZTAueCkgLSBfdkhhaXJRdWFkRWRnZV9TdGFnZTAueSkpOwooX2VkZ2VBbHBoYSA9IHNxcnQoKChfZWRnZUFscGhhICogX2VkZ2VBbHBoYSkgLyBkb3QoX2dGLCBfZ0YpKSkpOwooX2VkZ2VBbHBoYSA9IG1heCgoMS4wIC0gX2VkZ2VBbHBoYSksIDAuMCkpOwooX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHZlYzRfY3RvcigoX3VDb3ZlcmFnZV9TdGFnZTAgKiBfZWRnZUFscGhhKSkpOwp9CmZsb2F0NCBfb3V0cHV0X1N0YWdlMSA9IHswLCAwLCAwLCAwfTsKewpmbG9hdDIgX2Nvb3JkcyA9ICgoX3NrX0ZyYWdDb29yZC54eSAqIF91c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UxLnh5KSArIF91c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UxLnp3KTsKewpib29sNCBfb3V0c2lkZSA9IHswLCAwLCAwLCAwfTsKKF9vdXRzaWRlLnh5ID0gKF9jb29yZHMgPCBfdVRleERvbV9TdGFnZTEueHkpKTsKKF9vdXRzaWRlLnp3ID0gKF9jb29yZHMgPiBfdVRleERvbV9TdGFnZTEuencpKTsKZmxvYXQ0IHM5MDggPSB7MCwgMCwgMCwgMH07CmlmIChhbnkoX291dHNpZGUpKQp7CihzOTA4ID0gZmxvYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCkpOwp9CmVsc2UKewooczkwOCA9IChfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwICogZ2xfdGV4dHVyZTJEKF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEsIF9jb29yZHMpLnh4eHgpKTsKfQooX291dHB1dF9TdGFnZTEgPSBzOTA4KTsKfQp9CnsKKGdsX0NvbG9yWzBdID0gKF9vdXRwdXRDb2xvcl9TdGFnZTAgKiBfb3V0cHV0X1N0YWdlMSkpOwp9Cn0Kc3RydWN0IFBTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKfTsKCkBAIFBJWEVMIE9VVFBVVCBAQApQU19PVVRQVVQgbWFpbihQU19JTlBVVCBpbnB1dCkKewogICAgZmxvYXQgcmh3ID0gMS4wIC8gaW5wdXQuZ2xfRnJhZ0Nvb3JkLnc7CiAgICBnbF9GcmFnQ29vcmQueCA9IGlucHV0LmR4X1Bvc2l0aW9uLng7CiAgICBnbF9GcmFnQ29vcmQueSA9IGlucHV0LmR4X1Bvc2l0aW9uLnk7CiAgICBnbF9GcmFnQ29vcmQueiA9IChpbnB1dC5nbF9GcmFnQ29vcmQueiAqIHJodykgKiBkeF9EZXB0aEZyb250LnggKyBkeF9EZXB0aEZyb250Lnk7CiAgICBnbF9GcmFnQ29vcmQudyA9IHJodzsKICAgIF92SGFpclF1YWRFZGdlX1N0YWdlMCA9IGlucHV0LnYwOwoKICAgIGdsX21haW4oKTsKCiAgICByZXR1cm4gZ2VuZXJhdGVPdXRwdXQoKTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABSiwAACQAAAGdsX0NvbG9yMAsAAABnbF9Db2xvclswXQAAAAB5AgAAc3RydWN0IEdTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQxOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDE7CiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwp9OwoKdm9pZCBjb3B5VmVydGV4KGlub3V0IEdTX09VVFBVVCBvdXRwdXQsIEdTX0lOUFVUIGlucHV0LCBHU19JTlBVVCBmbGF0aW5wdXQpCnsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGlucHV0LmdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LnYwID0gaW5wdXQudjA7IAog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AADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAP////8AAAAA/////wEAAAAAAAAAAAAAAAAAAAD//////////wEAAAAAAAAAAAAAAAAAAACpBgAAZmxvYXQ0IHZlYzRfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHgyLCBmbG9hdCB4MykKewogICAgcmV0dXJuIGZsb2F0NCh4MCwgeDEsIHgyLCB4Myk7Cn0KLy8gVW5pZm9ybXMKCnVuaWZvcm0gZmxvYXQ0IF9za19SVEFkanVzdCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5Qb3NpdGlvbiA9IHswLCAwfTsKc3RhdGljIGZsb2F0MyBfaW5EYXNoUGFyYW1zID0gezAsIDAsIDB9OwpzdGF0aWMgZmxvYXQ0IF9pblJlY3QgPSB7MCwgMCwgMCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDMgX3ZEYXNoUGFyYW1zX1N0YWdlMCA9IHswLCAwLCAwfTsKc3RhdGljICBmbG9hdDQgX3ZSZWN0UGFyYW1zX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKCmNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpCnsKICAgIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcGFja29mZnNldChjMSk7CiAgICBmbG9hdDIgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzIpOwogICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTsKfTsKCnZvaWQgZ2xfbWFpbigpCnsKKF92RGFzaFBhcmFtc19TdGFnZTAgPSBfaW5EYXNoUGFyYW1zKTsKKF92UmVjdFBhcmFtc19TdGFnZTAgPSBfaW5SZWN0KTsKZmxvYXQyIF9wb3MyID0gX2luUG9zaXRpb247CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcihfcG9zMi54LCBfcG9zMi55LCAwLjAsIDEuMCkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChnbF9Qb3NpdGlvbi54ICogX3NrX1JUQWRqdXN0LngpICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QueSkpLCAoKGdsX1Bvc2l0aW9uLnkgKiBfc2tfUlRBZGp1c3QueikgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC53KSksIDAuMCwgZ2xfUG9zaXRpb24udykpOwp9CgpAQCBWRVJURVggQVRUUklCVVRFUyBAQApzdHJ1Y3QgVlNfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQzIHYxIDogVEVYQ09PUkQxOwp9OwoKVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpCnsKICAgIGluaXRBdHRyaWJ1dGVzKGlucHV0KTsKCiAgICBnbF9tYWluKCk7CgogICAgVlNfT1VUUFVUIG91dHB1dDsKICAgIG91dHB1dC5nbF9Qb3NpdGlvbiA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtIGdsX1Bvc2l0aW9uLnk7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7CiAgICBvdXRwdXQudjAgPSBfdlJlY3RQYXJhbXNfU3RhZ2UwOwogICAgb3V0cHV0LnYxID0gX3ZEYXNoUGFyYW1zX1N0YWdlMDsKCiAgICByZXR1cm4gb3V0cHV0Owp9CgAAALEGAABmbG9hdDIgdmVjMl9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSkKewogICAgcmV0dXJuIGZsb2F0Mih4MCwgeDEpOwp9CmZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDApCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgwLCB4MCwgeDApOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0NCBfdUNvbG9yX1N0YWdlMCA6IHJlZ2lzdGVyKGMwKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQzIF92RGFzaFBhcmFtc19TdGFnZTAgPSB7MCwgMCwgMH07CnN0YXRpYyAgZmxvYXQ0IF92UmVjdFBhcmFtc19TdGFnZTAgPSB7MCwgMCwgMCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7Cn07CgojZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUgp2b2lkIGdsX21haW4oKQp7CmZsb2F0NCBfb3V0cHV0Q29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpmbG9hdDQgX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHswLCAwLCAwLCAwfTsKewooX291dHB1dENvbG9yX1N0YWdlMCA9IF91Q29sb3JfU3RhZ2UwKTsKZmxvYXQgX3hTaGlmdGVkID0gKF92RGFzaFBhcmFtc19TdGFnZTAueCAtIChmbG9vcigoX3ZEYXNoUGFyYW1zX1N0YWdlMC54IC8gX3ZEYXNoUGFyYW1zX1N0YWdlMC56KSkgKiBfdkRhc2hQYXJhbXNfU3RhZ2UwLnopKTsKZmxvYXQyIF9mcmFnUG9zU2hpZnRlZCA9IHZlYzJfY3RvcihfeFNoaWZ0ZWQsIF92RGFzaFBhcmFtc19TdGFnZTAueSk7CmZsb2F0IF94U3ViID0gezB9OwpmbG9hdCBfeVN1YiA9IHswfTsKKF94U3ViID0gbWluKChfZnJhZ1Bvc1NoaWZ0ZWQueCAtIF92UmVjdFBhcmFtc19TdGFnZTAueCksIDAuMCkpOwooX3hTdWIgKz0gbWluKChfdlJlY3RQYXJhbXNfU3RhZ2UwLnogLSBfZnJhZ1Bvc1NoaWZ0ZWQueCksIDAuMCkpOwooX3lTdWIgPSBtaW4oKF9mcmFnUG9zU2hpZnRlZC55IC0gX3ZSZWN0UGFyYW1zX1N0YWdlMC55KSwgMC4wKSk7CihfeVN1YiArPSBtaW4oKF92UmVjdFBhcmFtc19TdGFnZTAudyAtIF9mcmFnUG9zU2hpZnRlZC55KSwgMC4wKSk7CmZsb2F0IF9hbHBoYSA9ICgoMS4wICsgbWF4KF94U3ViLCAtMS4wKSkgKiAoMS4wICsgbWF4KF95U3ViLCAtMS4wKSkpOwooX291dHB1dENvdmVyYWdlX1N0YWdlMCA9IHZlYzRfY3RvcihfYWxwaGEpKTsKfQp7CihnbF9Db2xvclswXSA9IChfb3V0cHV0Q29sb3JfU3RhZ2UwICogX291dHB1dENvdmVyYWdlX1N0YWdlMCkpOwp9Cn0Kc3RydWN0IFBTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQzIHYxIDogVEVYQ09PUkQxOwp9OwoKQEAgUElYRUwgT1VUUFVUIEBAClBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KQp7CiAgICBfdlJlY3RQYXJhbXNfU3RhZ2UwID0gaW5wdXQudjA7CiAgICBfdkRhc2hQYXJhbXNfU3RhZ2UwID0gaW5wdXQudjEueHl6OwoKICAgIGdsX21haW4oKTsKCiAgICByZXR1cm4gZ2VuZXJhdGVPdXRwdXQoKTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABSiwAACQAAAGdsX0NvbG9yMAsAAABnbF9Db2xvclswXQAAAABSAgAAc3RydWN0IEdTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQzIHYxIDogVEVYQ09PUkQxOwp9OwoKc3RydWN0IEdTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MyB2MSA6IFRFWENPT1JEMTsKfTsKCnZvaWQgY29weVZlcnRleChpbm91dCBHU19PVVRQVVQgb3V0cHV0LCBHU19JTlBVVCBpbnB1dCwgR1NfSU5QVVQgZmxhdGlucHV0KQp7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBpbnB1dC5nbF9Qb3NpdGlvbjsKICAgIG91dHB1dC52MCA9IGlucHV0LnYwOyAKICAgIG91dHB1dC52MSA9IGlucHV0LnYxOyAKI2lmbmRlZiBBTkdMRV9QT0lOVF9TUFJJVEVfU0hBREVSCiAgICBvdXRwdXQuZHhfUG9zaXRpb24gPSBpbnB1dC5keF9Qb3NpdGlvbjsKI2VuZGlmICAvLyBBTkdMRV9QT0lOVF9TUFJJVEVfU0hBREVSCn0KAQAAAAMAAABSAAAAUwAAAFQAAAA0BAAARFhCQ1/soJZJH+b9rBAeD0LuH0MBAAAANAQAAAUAAAA0AAAAUAEAALQBAAA8AgAAmAMAAFJERUYUAQAAAQAAAGgAAAABAAAAPAAAAAAF/v8AwQAA4AAAAFJEMTE8AAAAGAAAACAAAAAoAAAAJAAAAAwAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAkR2xvYmFscwCrq6tcAAAAAQAAAIAAAAAQAAAAAAAAAAAAAACoAAAAAAAAABAAAAACAAAAvAAAAAAAAAD/////AAAAAP////8AAAAAX3NrX1JUQWRqdXN0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AAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIwAAAAAAAAAAAAAAQAAAAYUAAABAAEAAQAAAAUAAAAHAAAAAgAAAOENAAABAAAAAAAAAOENAAABAAAAAAAAAAcAAAAHAAAAAAAAAAcAAAAHAAAAAwAAABQUAACMAAAAAAAAAAAAAAAAsQAAAAAAAAAAAAABAAAAAgAAAP////////////////////////////////////////////////////////////////////8QAAAAAQAAAAAAAADhDQAAAQAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAAAAAAAAAAADhDQAAEAAAAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAABwAAAAAAAAD/////AAAAAP////8BAAAAAAAAAAAAAAD/////AQAAAP////8DAAAAAAAAAAAAAAAAAAAA//////////8BAAAAAAAAAAAAAAABAAAA//////////8BAAAAAAAAAAAAAAACAAAA//////////8BAAAAAAAAAAEAAAAAAAAA//////////8BAAAAAAAAAAEAAAABAAAA//////////8BAAAAAAAAAAAAAAAAAAAA3wcAAGZsb2F0MyB2ZWMzX2N0b3IoZmxvYXQyIHgwLCBmbG9hdCB4MSkKewogICAgcmV0dXJuIGZsb2F0Myh4MCwgeDEpOwp9CmZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxLCBmbG9hdCB4MiwgZmxvYXQgeDMpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxLCB4MiwgeDMpOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0NCBfc2tfUlRBZGp1c3QgOiByZWdpc3RlcihjMCk7CnVuaWZvcm0gZmxvYXQzeDMgX3VDb29yZFRyYW5zZm9ybU1hdHJpeF8wX1N0YWdlMCA6IHJlZ2lzdGVyKGMxKTsKI2lmZGVmIEFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4KI2RlZmluZSBMT09QIFtsb29wXQojZGVmaW5lIEZMQVRURU4gW2ZsYXR0ZW5dCiNlbHNlCiNkZWZpbmUgTE9PUAojZGVmaW5lIEZMQVRURU4KI2VuZGlmCi8vIEF0dHJpYnV0ZXMKc3RhdGljIGZsb2F0MiBfaW5Qb3NpdGlvbiA9IHswLCAwfTsKc3RhdGljIGZsb2F0NCBfaW5Db2xvciA9IHswLCAwLCAwLCAwfTsKc3RhdGljIGZsb2F0MiBfaW5Mb2NhbENvb3JkID0gezAsIDB9OwoKc3RhdGljIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAwKTsKCi8vIFZhcnlpbmdzCnN0YXRpYyAgZmxvYXQ0IF92Y29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9OwpzdGF0aWMgIGZsb2F0MiBfdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwID0gezAsIDB9OwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MiBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlICA6IHBhY2tvZmZzZXQoYzMpOwp9OwoKdm9pZCBnbF9tYWluKCkKewpmbG9hdDQgX2NvbG9yID0gX2luQ29sb3I7CihfdmNvbG9yX1N0YWdlMCA9IF9jb2xvcik7CmZsb2F0MiBfcG9zMiA9IF9pblBvc2l0aW9uOwooX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9IG11bCh0cmFuc3Bvc2UoX3VDb29yZFRyYW5zZm9ybU1hdHJpeF8wX1N0YWdlMCksIHZlYzNfY3RvcihfaW5Mb2NhbENvb3JkLCAxLjApKS54eSk7CihnbF9Qb3NpdGlvbiA9IHZlYzRfY3RvcihfcG9zMi54LCBfcG9zMi55LCAwLjAsIDEuMCkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoKChnbF9Qb3NpdGlvbi54ICogX3NrX1JUQWRqdXN0LngpICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QueSkpLCAoKGdsX1Bvc2l0aW9uLnkgKiBfc2tfUlRBZGp1c3QueikgKyAoZ2xfUG9zaXRpb24udyAqIF9za19SVEFkanVzdC53KSksIDAuMCwgZ2xfUG9zaXRpb24udykpOwp9CgpAQCBWRVJURVggQVRUUklCVVRFUyBAQApzdHJ1Y3QgVlNfT1VUUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMzsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKClZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KQp7CiAgICBpbml0QXR0cmlidXRlcyhpbnB1dCk7CgogICAgZ2xfbWFpbigpOwoKICAgIFZTX09VVFBVVCBvdXRwdXQ7CiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gLSBnbF9Qb3NpdGlvbi55OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnogPSAoZ2xfUG9zaXRpb24ueiArIGdsX1Bvc2l0aW9uLncpICogMC41OwogICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53OwogICAgb3V0cHV0LmdsX0ZyYWdDb29yZCA9IGdsX1Bvc2l0aW9uOwogICAgb3V0cHV0LnYwID0gX3Zjb2xvcl9TdGFnZTA7CiAgICBvdXRwdXQudjEgPSBfdlRyYW5zZm9ybWVkQ29vcmRzXzBfU3RhZ2UwOwoKICAgIHJldHVybiBvdXRwdXQ7Cn0KAAAAgwsAAGZsb2F0NCB2ZWM0X2N0b3IoZmxvYXQgeDAsIGZsb2F0IHgxLCBmbG9hdCB4MiwgZmxvYXQgeDMpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxLCB4MiwgeDMpOwp9Ci8vIFVuaWZvcm1zCgp1bmlmb3JtIGZsb2F0IF91X3NrUlRIZWlnaHQgOiByZWdpc3RlcihjMCk7CnVuaWZvcm0gZmxvYXQ0IF91c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UyIDogcmVnaXN0ZXIoYzEpOwp1bmlmb3JtIGZsb2F0NCBfdVRleERvbV9TdGFnZTIgOiByZWdpc3RlcihjMik7CnN0YXRpYyBjb25zdCB1aW50IF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEgPSAwOwpzdGF0aWMgY29uc3QgdWludCBfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UyID0gMTsKdW5pZm9ybSBUZXh0dXJlMkQ8ZmxvYXQ0PiB0ZXh0dXJlczJEWzJdIDogcmVnaXN0ZXIodDApOwp1bmlmb3JtIFNhbXBsZXJTdGF0ZSBzYW1wbGVyczJEWzJdIDogcmVnaXN0ZXIoczApOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3Zjb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CnN0YXRpYyBmbG9hdDQgZ2xfRnJhZ0Nvb3JkID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MyBkeF9EZXB0aEZyb250IDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlIDogcGFja29mZnNldChjMyk7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsyXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPT1JECnZvaWQgZ2xfbWFpbigpCnsKZmxvYXQyIF9fc2t0bXBDb29yZCA9IGdsX0ZyYWdDb29yZC54eTsKZmxvYXQ0IF9za19GcmFnQ29vcmQgPSB2ZWM0X2N0b3IoX19za3RtcENvb3JkLngsIChfdV9za1JUSGVpZ2h0IC0gX19za3RtcENvb3JkLnkpLCAxLjAsIDEuMCk7CmZsb2F0NCBfb3V0cHV0Q29sb3JfU3RhZ2UwID0gezAsIDAsIDAsIDB9Owp7Cihfb3V0cHV0Q29sb3JfU3RhZ2UwID0gX3Zjb2xvcl9TdGFnZTApOwp9CmZsb2F0NCBfb3V0cHV0X1N0YWdlMSA9IHswLCAwLCAwLCAwfTsKewpmbG9hdDQgX2NoaWxkID0gezAsIDAsIDAsIDB9Owp7CihfY2hpbGQgPSBnbF90ZXh0dXJlMkQoX3VUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMSwgX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCkueHl6dyk7Cn0KKF9vdXRwdXRfU3RhZ2UxID0gKF9jaGlsZCAqIF9vdXRwdXRDb2xvcl9TdGFnZTAudykpOwp9CmZsb2F0NCBfb3V0cHV0X1N0YWdlMiA9IHswLCAwLCAwLCAwfTsKewpmbG9hdDIgX2Nvb3JkcyA9ICgoX3NrX0ZyYWdDb29yZC54eSAqIF91c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UyLnh5KSArIF91c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UyLnp3KTsKewpib29sNCBfb3V0c2lkZSA9IHswLCAwLCAwLCAwfTsKKF9vdXRzaWRlLnh5ID0gKF9jb29yZHMgPCBfdVRleERvbV9TdGFnZTIueHkpKTsKKF9vdXRzaWRlLnp3ID0gKF9jb29yZHMgPiBfdVRleERvbV9TdGFnZTIuencpKTsKZmxvYXQ0IHM4OTkgPSB7MCwgMCwgMCwgMH07CmlmIChhbnkoX291dHNpZGUpKQp7CihzODk5ID0gZmxvYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCkpOwp9CmVsc2UKewooczg5OSA9IGdsX3RleHR1cmUyRChfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UyLCBfY29vcmRzKS54eHh4KTsKfQooX291dHB1dF9TdGFnZTIgPSBzODk5KTsKfQp9CnsKKGdsX0NvbG9yWzBdID0gKF9vdXRwdXRfU3RhZ2UxICogX291dHB1dF9TdGFnZTIpKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMjsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDM7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDIgdjEgOiBURVhDT09SRDE7Cn07CgpAQCBQSVhFTCBPVVRQVVQgQEAKUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpCnsKICAgIGZsb2F0IHJodyA9IDEuMCAvIGlucHV0LmdsX0ZyYWdDb29yZC53OwogICAgZ2xfRnJhZ0Nvb3JkLnggPSBpbnB1dC5keF9Qb3NpdGlvbi54OwogICAgZ2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9Qb3NpdGlvbi55OwogICAgZ2xfRnJhZ0Nvb3JkLnogPSAoaW5wdXQuZ2xfRnJhZ0Nvb3JkLnogKiByaHcpICogZHhfRGVwdGhGcm9udC54ICsgZHhfRGVwdGhGcm9udC55OwogICAgZ2xfRnJhZ0Nvb3JkLncgPSByaHc7CiAgICBfdmNvbG9yX1N0YWdlMCA9IGlucHV0LnYwOwogICAgX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9IGlucHV0LnYxLnh5OwoKICAgIGdsX21haW4oKTsKCiAgICByZXR1cm4gZ2VuZXJhdGVPdXRwdXQoKTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABSiwAACQAAAGdsX0NvbG9yMAsAAABnbF9Db2xvclswXQAAAADKAgAAc3RydWN0IEdTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQyOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JEMzsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0MiB2MSA6IFRFWENPT1JEMTsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDI7CiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogVEVYQ09PUkQzOwogICAgZmxvYXQ0IHYwIDogVEVYQ09PUkQwOwogICAgZmxvYXQyIHYxIDogVEVYQ09PUkQxOwp9OwoKdm9pZCBjb3B5VmVydGV4KGlub3V0IEdTX09VVFBVVCBvdXRwdXQsIEdTX0lOUFVUIGlu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
Ms-Dos/Windows
Unix
Write backup
jsp File Browser version 1.2 by
www.vonloesch.de