From: Yusuke ENDOH Date: 2010-01-04T23:09:52+09:00 Subject: [ruby-dev:39966] Re: Fwd: [ruby-cvs:33451] Ruby:r26235 (trunk): * trace.h: new file. wraps tracing mechanisms. --001485f99caa33c2b9047c574656 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: base64 GyRCMXNGIyRHJDkhIxsoQgoKMjAxMBskQkcvGyhCMRskQjduGyhCNBskQkZ8GyhCMTc6MDkgWXVn dWkgPHl1Z3VpQHl1Z3VpLmpwPjoKPj4gGyRCJCIkSCEkPVBNaCRsJFAlWSVzJUElXiE8JS83azJM JCwkIiRrJEg0ciQ3JCQkKyRiIUobKEJwcm92ZSAbJEIkcjtJJDUkSiQkPnVCVhsoQgo+PiAbJEIk RyROIUshJRsoQgo+Cj4gGyRCJCIhPCEiN1ckQyRGJCskaSUzJV8lQyVIJDckaCQmJEg7VyRDJEYk JCRGSzokbCRGJF4kNyQ/ISMkZCRDJEYkXyReJDckPyEjRTpJVSQ3JF4kOSEjGyhCICh3b193LWR0 cmFjZS5sb2cpCj4gGyRCJWolUyU4JWclc0hWOWYkLD83JDckJCRbJCYkLBsoQmR0cmFjZRskQiRy Rn4kbCQ/JGQkRCRHJDkhIxsoQgoKCmR0cmFjZSAbJEIkLCRKJCQ0RDYtGyhCIChEZWJpYW4pIBsk QiRHJVklcyVBJV4hPCUvJHJBdiRpJDskRiRfJD8kSCQzJG0hIiQkJC8kRCQrGyhCChskQk0tMFUk S0IuRVlOdDI9JDckRiQ9JCYkSiRIJDMkbSQsJCIkaiReJDckPyEjGyhCCgobJEJMXCRHOCskRjpG OD1ALSROJCIkaiQ9JCYkSjQ2JDgkS0IuRVlOdDI9JDckRiQ9JCYkSiRkJEQkciVUJUMlLyUiJUMl VxsoQjoKCiAgdm0xX25vdCAgICAgICAgOiAgMi40OCAgMy43MiAoMTUwLjAlKQogIHZtMl9zZW5k ICAgICAgIDogIDEuMTIgIDEuNDYgKDEzMC42JSkKICB2bTFfaXZhciAgICAgICA6ICAzLjcwICA0 LjQ3ICgxMjAuNyUpCiAgdm0yX3VuaWYxICAgICAgOiAgMS4wMSAgMS4zMSAoMTI5LjYlKQogIGxv b3Bfd2hpbGVsb29wMjogIDAuMzUgIDAuMzkgKDExMS40JSkKICBzb19hcnJheSAgICAgICA6ICA0 LjUzICA1LjAyICgxMTAuOSUpCiAgYXBwX2ZpYiAgICAgICAgOiAgMS44NyAgMi4wNyAoMTEwLjgl KQogIHNvX2xpc3RzICAgICAgIDogIDAuOTYgIDEuMDYgKDExMC4wJSkKICBzb19iaW5hcnlfdHJl ZXM6ICAxLjA4ICAxLjE3ICgxMDguMCUpCiAgc29fY29uY2F0ZW5hdGUgOiAgMS4wNiAgMS4xNSAo MTA4LjAlKQogIGxvb3Bfd2hpbGVsb29wIDogIDEuNzIgIDEuODQgKDEwNi43JSkKICBzb19uc2ll dmUgICAgICA6ICA4LjUxICA5LjA0ICgxMDYuMiUpCiAgaW9fZmlsZV9jcmVhdGUgOiAgMC43MSAg MC43NCAoMTAzLjklKQogIGFwcF9wZW50b21pbm8gIDogNDkuMzQgNTEuMTcgKDEwMy43JSkKICBz b19leGNlcHRpb24gICA6ICAyLjc1ICAyLjgzICgxMDMuMCUpCiAgYXBwX2ZhY3RvcmlhbCAgOiAg MC40OCAgMC40OSAoMTAyLjMlKQoKcjI2MjM0IBskQiRIGyhCIHIyNjIzOCAbJEIkR0hmM1MkNyRG JCQkXiQ5ISMbKEIKGyRCM0YlWSVzJUElXiE8JS8kTxsoQiA1IBskQjJzQXYkaSQ7JEYhIiQ9JE5D ZiROOkdCLiRIOkdDWSROGyhCIDIgGyRCJEQkcj18JCQkPyVHITwlPyROGyhCChskQko/NlEkR0hm M1MkNyRGJCQkXiQ5ISMbKEIKChskQjVVJEtBYSQvJEokQyRGJCQkayRIJDMkbSRiJCIkayROJEch IiUzJXMlUSUkJWkkTjpHRSwyPSROJFYkbCRKJE4kKyRiJDckbBsoQgobJEIkXiQ7JHMkLCEiGyhC dm0qIBskQjdPJE4lWSVzJUElXiE8JS8kTk50Mj0kQyRXJGokT0w1O2skNyQ/JC8kSiQkJEckOSRN ISMbKEIKCgobJEIkPyRAISIkJiRBJE40RDYtJCwkSiRzJCtKUSRKJEAkMSQrJGIkNyRsJEokJCRO JEchIkMvJCtESTtuJDckRiQvJEAkNSQkISMbKEIKCgokIG1ha2UgYmVuY2htYXJrIENPTVBBUkVf UlVCWT0nYmVmb3JlOjogLi9ydWJ5LjI2MjM0JyBPUFRTPSctciA1JwpSVUJZTElCPS9ob21lL21h bWUvd29yay9ydWJ5L2xpYjovaG9tZS9tYW1lL3dvcmsvcnVieS8uZXh0L2k2ODYtbGludXgKPiBi ZW5jaG1hcmsubG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IDM1MCB0cmlhbChz KSAoNQp0cmlhbChzKSBmb3IgNzAgYmVuY2htYXJrKHMpKQouLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi5wcmVwYXJpbmcKLi9iZW5jaG1hcmsvZmFzdGEub3V0cHV0LjEw MDAwMAouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4ucHJlcGFyaW5nCi4vYmVuY2htYXJrL2Zhc3RhLm91dHB1dC4y NTAwMDAwCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi9ob21lL21hbWUvd29yay9ydWJ5L2xpYi9wcC5yYjoxMTA6 aW4KYGd1YXJkX2luc3BlY3Rfa2V5JzogdW5kZWZpbmVkIG1ldGhvZCBgdW50cnVzdCcgZm9yIHt9 Okhhc2gKKE5vTWV0aG9kRXJyb3IpCiAgICAgICAgZnJvbSAvaG9tZS9tYW1lL3dvcmsvcnVieS9s aWIvcHAucmI6Nzc6aW4gYHBwJwogICAgICAgIGZyb20gLi9iZW5jaG1hcmsvZHJpdmVyLnJiOjEw MDppbiBgc2hvd19yZXN1bHRzJwogICAgICAgIGZyb20gLi9iZW5jaG1hcmsvZHJpdmVyLnJiOjI4 OmluIGBiZW5jaG1hcmsnCiAgICAgICAgZnJvbSAuL2JlbmNobWFyay9kcml2ZXIucmI6MjQ5Cm1h a2U6ICoqKiBbYmVuY2htYXJrXSAbJEIlKCVpITwbKEIgMQoKGyRCIiwkQSRKJF8kSyEiGyhCYmVu Y2htYXJrIBskQiU5JS8laiVXJUgkLCQzJHMkSkl3JEtNbiRBJD8kTiRHGyhCIHJhdyBkYXRhIBsk QiQsRkAkaSRsGyhCChskQiReJDskcyRHJDckPyEjGyhCCgotLSAKWXVzdWtlIEVORE9IIDxtYW1l QHRzZy5uZS5qcD4K --001485f99caa33c2b9047c574656 Content-Type: application/octet-stream; name="benchmark.log" Content-Disposition: attachment; filename="benchmark.log" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g41bujfd1 cnVieSAuL2JlbmNobWFyay9kcml2ZXIucmIgLXYgXAoJICAgICAgICAgICAgLS1leGVjdXRhYmxl cz0iYmVmb3JlOjogLi9ydWJ5LjI2MjM0OyAuL21pbmlydWJ5IC1JLi9saWIgLUkuZXh0L2NvbW1v biAtSS4vLSAtci4vZXh0L3B1cmVsaWIucmIgIC4vdG9vbC9ydW5ydWJ5LnJiIC0tZXh0b3V0PS5l eHQgIC0tIiBcCgkgICAgICAgICAgICAtLXBhdHRlcm49J2JtXycgLS1kaXJlY3Rvcnk9Li9iZW5j aG1hcmsgLXIgNQpNb24gSmFuIDA0IDE5OjQ3OjQzICswOTAwIDIwMTAKdGFyZ2V0IDA6IGJlZm9y ZQp0YXJnZXQgMTogcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYt bGludXhdCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQphcHBfYW5zd2VyCgpkZWYgYWNrKG0sIG4pCiAgaWYgbSA9PSAwIHRoZW4KICAg IG4gKyAxCiAgZWxzaWYgbiA9PSAwIHRoZW4KICAgIGFjayhtIC0gMSwgMSkKICBlbHNlCiAgICBh Y2sobSAtIDEsIGFjayhtLCBuIC0gMSkpCiAgZW5kCmVuZAoKZGVmIHRoZV9hbnN3ZXJfdG9fbGlm ZV90aGVfdW5pdmVyc2VfYW5kX2V2ZXJ5dGhpbmcKICAoYWNrKDMsNykudG9fcy5zcGxpdCgvLyku aW5qZWN0KDApe3xzLHh8IHMreC50b19pfS50b19zICsgIjIiICkudG9faQplbmQKCmFuc3dlciA9 IHRoZV9hbnN3ZXJfdG9fbGlmZV90aGVfdW5pdmVyc2VfYW5kX2V2ZXJ5dGhpbmcKCmJlZm9yZQkw LjI4Njc5Mjk5MzU0NTUzMgpiZWZvcmUJMC4yODIwMDA3ODAxMDU1OTEKYmVmb3JlCTAuMjg2MDEx OTM0MjgwMzk2CmJlZm9yZQkwLjI3OTg3MDAzMzI2NDE2CmJlZm9yZQkwLjI4NTY0NjkxNTQzNTc5 MQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMC4y NTMwMjQxMDEyNTczMjQKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2 ODYtbGludXhdCTAuMjUyOTU1OTEzNTQzNzAxCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1 bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkwLjI1NDIyODExNTA4MTc4NwpydWJ5IDEuOS4yZGV2ICgy MDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMC4yNTI4MTIxNDcxNDA1MDMKcnVi eSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTAuMjU0NTUw OTMzODM3ODkxCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQphcHBfZXJiCgojCiMgQ3JlYXRlIG1hbnkgSFRNTCBzdHJpbmdzIHdpdGgg RVJCLgojCgpyZXF1aXJlICdlcmInCgpkYXRhID0gREFUQS5yZWFkCm1heCA9IDVfMDAwCnRpdGxl ID0gImhlbGxvIHdvcmxkISIKY29udGVudCA9ICJoZWxsbyB3b3JsZCFcbiIgKiAxMAoKbWF4LnRp bWVzewogIEVSQi5uZXcoZGF0YSkucmVzdWx0KGJpbmRpbmcpCn0KCl9fRU5EX18KCjxodG1sPgog IDxoZWFkPiA8JT0gdGl0bGUgJT4gPC9oZWFkPgogIDxib2R5PgogICAgPGgxPiA8JT0gdGl0bGUg JT4gPC9oMT4KICAgIDxwPgogICAgICA8JT0gY29udGVudCAlPgogICAgPC9wPgogIDwvYm9keT4K PC9odG1sPgoKYmVmb3JlCTEuODQxMzQxMDE4Njc2NzYKYmVmb3JlCTEuODMyMzk1MDc2NzUxNzEK YmVmb3JlCTEuODQ2NzkxOTgyNjUwNzYKYmVmb3JlCTEuODI4NDE5MjA4NTI2NjEKYmVmb3JlCTEu ODQ2NzIzMDc5NjgxNApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4 Ni1saW51eF0JMS44NTQwOTYxNzQyNDAxMQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5r IDI2MjM4KSBbaTY4Ni1saW51eF0JMS44MjY1NTE5MTQyMTUwOQpydWJ5IDEuOS4yZGV2ICgyMDEw LTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS44NTA3OTI4ODQ4MjY2NgpydWJ5IDEu OS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS44NDU1MTE5MTMy OTk1NgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0J MS44MjU0NTg3NjUwMjk5MQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KYXBwX2ZhY3RvcmlhbAoKZGVmIGZhY3QobikKICBpZihuID4g MSkKICAgIG4gKiBmYWN0KG4tMSkKICBlbHNlCiAgICAxCiAgZW5kCmVuZAoKOC50aW1lc3sKICBm YWN0KDUwMDApCn0KCmJlZm9yZQkwLjc4ODk0OTk2NjQzMDY2NApiZWZvcmUJMC43ODc5NDY5Mzk0 NjgzODQKYmVmb3JlCTAuNzk2NTc4ODg0MTI0NzU2CmJlZm9yZQkwLjg3MDIxMzAzMTc2ODc5OQpi ZWZvcmUJMC43OTcwMjE4NjU4NDQ3MjcKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAy NjIzOCkgW2k2ODYtbGludXhdCTAuODEyNzcxMDgxOTI0NDM4CnJ1YnkgMS45LjJkZXYgKDIwMTAt MDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkwLjgxMjQ4NDAyNTk1NTIKcnVieSAxLjku MmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTAuODEzNDkxMTA2MDMz MzI1CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkw LjgxMDY0MjAwNDAxMzA2MgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBb aTY4Ni1saW51eF0JMC44MTMyODEwNTkyNjUxMzcKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmFwcF9maWIKCmRlZiBmaWIgbgogIGlm IG4gPCAzCiAgICAxCiAgZWxzZQogICAgZmliKG4tMSkgKyBmaWIobi0yKQogIGVuZAplbmQKCmZp YigzNCkKCgpiZWZvcmUJMy4xNjkyMjcxMjMyNjA1CmJlZm9yZQkzLjA0MzUzMTg5NDY4Mzg0CmJl Zm9yZQkzLjA4ODk1ODk3ODY1Mjk1CmJlZm9yZQkzLjA2OTAzODE1MjY5NDcKYmVmb3JlCTMuMjU1 Nzc0OTc0ODIzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxp bnV4XQkzLjQxNzg0NjkxODEwNjA4CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYy MzgpIFtpNjg2LWxpbnV4XQkzLjUyMDE2NTkyMDI1NzU3CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEt MDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjQxMTQ5NDAxNjY0NzM0CnJ1YnkgMS45LjJk ZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjUwMTg0NjA3NTA1Nzk4 CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjI2 OTU4OTkwMDk3MDQ2CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQphcHBfbWFuZGVsYnJvdAoKcmVxdWlyZSAnY29tcGxleCcKCmRlZiBt YW5kZWxicm90PyB6CiAgaSA9IDAKICB3aGlsZSBpPDEwMAogICAgaSs9MQogICAgeiA9IHogKiB6 CiAgICByZXR1cm4gZmFsc2UgaWYgei5hYnMgPiAyCiAgZW5kCiAgdHJ1ZQplbmQKCmFyeSA9IFtd CgooMC4uMTAwKS5lYWNoe3xkeHwKICAoMC4uMTAwKS5lYWNoe3xkeXwKICAgIHggPSBkeCAvIDUw LjAKICAgIHkgPSBkeSAvIDUwLjAKICAgIGMgPSBDb21wbGV4KHgsIHkpCiAgICBhcnkgPDwgYyBp ZiBtYW5kZWxicm90PyhjKQogIH0KfQoKCmJlZm9yZQkwLjgwMTY4MDA4ODA0MzIxMwpiZWZvcmUJ MC43ODcxNzcwODU4NzY0NjUKYmVmb3JlCTAuNzk3NjQ3OTUzMDMzNDQ3CmJlZm9yZQkwLjgyMjYy MTEwNzEwMTQ0CmJlZm9yZQkwLjgxNjMxMzk4MjAwOTg4OApydWJ5IDEuOS4yZGV2ICgyMDEwLTAx LTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMC44MDQyMzk5ODgzMjcwMjYKcnVieSAxLjku MmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTAuODA3OTg1MDY3MzY3 NTU0CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkw LjgwNjM2Mjg2NzM1NTM0NwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBb aTY4Ni1saW51eF0JMC44MDI2NzY5MTYxMjI0MzcKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0 cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTAuODA0MDE0MjA1OTMyNjE3CgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphcHBfcGVudG9t aW5vCgojIS91c3IvbG9jYWwvYmluL3J1YnkKIyBUaGlzIHByb2dyYW0gaXMgY29udHJpYnV0ZWQg YnkgU2hpbiBOaXNoaXlhbWEKCgojIG1vZGlmaWVkIGJ5IEsuU2FzYWRhCgpOUCA9IDUKUk9XID0g OCArIE5QCkNPTCA9IDgKCiRwID0gW10KJGIgPSBbXQokbm8gPSAwCgpkZWYgcGllY2UobiwgYSwg bmIpCiAgbmIuZWFjaHt8eHwKICAgIGFbbl0gPSB4CiAgICBpZiBuID09IE5QLTEKICAgICAgJHAg PDwgW2Euc29ydF0KICAgIGVsc2UKICAgICAgbmJjPW5iLmR1cAogICAgICBbLVJPVywgLTEsIDEs IFJPV10uZWFjaHt8ZHwKICAgICAgICBpZiB4K2QgPiAwIGFuZCBub3QgYS5pbmNsdWRlPyh4K2Qp IGFuZCBub3QgbmJjLmluY2x1ZGU/KHgrZCkKICAgICAgICAgIG5iYyA8PCB4K2QKICAgICAgICBl bmQKICAgICAgfQogICAgICBuYmMuZGVsZXRlIHgKICAgICAgcGllY2UobisxLGFbMC4ubl0sbmJj KQogICAgZW5kCiAgfQplbmQKCmRlZiBraWtha3UoYSkKICBhLmNvbGxlY3Qge3x4fCB4IC0gYVsw XX0KZW5kCmRlZiB1ZChhKQogIGtpa2FrdShhLmNvbGxlY3Qge3x4fCAoKHgrTlApJVJPVyktUk9X KigoeCtOUCkvUk9XKSB9LnNvcnQpCmVuZApkZWYgcmwoYSkKICBraWtha3UoYS5jb2xsZWN0IHt8 eHwgUk9XKigoeCtOUCkvUk9XKStST1ctKCh4K05QKSVST1cpfS5zb3J0KQplbmQKZGVmIHh5KGEp CiAga2lrYWt1KGEuY29sbGVjdCB7fHh8IFJPVyooKHgrTlApJVJPVykgKyAoeCtOUCkvUk9XIH0u c29ydCkKZW5kCgpkZWYgbWtwaWVjZXMKICBwaWVjZSgwLFtdLFswXSkKICAkcC5lYWNoIGRvIHxh fAogICAgYTAgPSBhWzBdCiAgICBhWzFdID0gdWQoYTApCiAgICBhWzJdID0gcmwoYTApCiAgICBh WzNdID0gdWQocmwoYTApKQogICAgYVs0XSA9IHh5KGEwKQogICAgYVs1XSA9IHVkKHh5KGEwKSkK ICAgIGFbNl0gPSBybCh4eShhMCkpCiAgICBhWzddID0gdWQocmwoeHkoYTApKSkKICAgIGEuc29y dCEKICAgIGEudW5pcSEKICBlbmQKICAkcC51bmlxIS5zb3J0ISB7fHgseXwgeFswXSA8PT4geVsw XSB9CmVuZAoKZGVmIG1rYm9hcmQKICAoMC4uLlJPVypDT0wpLmVhY2h7fGl8CiAgICBpZiBpICUg Uk9XID49IFJPVy1OUAogICAgICAkYltpXSA9IC0yCiAgICBlbHNlCiAgICAgICRiW2ldID0gLTEK ICAgIGVuZAogICAgJGJbMypST1crM109JGJbMypST1crNF09JGJbNCpST1crM109JGJbNCpST1cr NF09LTIKICB9CmVuZAoKZGVmIHBib2FyZAogIHJldHVybiAjIHNraXAgcHJpbnQKICBwcmludCAi Tm8uICMkbm9cbiIKICAoMC4uLkNPTCkuZWFjaHt8aXwKICAgIHByaW50ICJ8IgogICAgKDAuLi5S T1ctTlApLmVhY2h7fGp8CiAgICAgIHggPSAkYltpKlJPVytqXQogICAgICBpZiB4IDwgMAogICAg ICAgIHByaW50ICIuLnwiCiAgICAgIGVsc2UKICAgICAgICBwcmludGYgIiUyZHwiLHgrMQogICAg ICBlbmQKICAgIH0KICAgIHByaW50ICJcbiIKICB9CiAgcHJpbnQgIlxuIgplbmQKCiRwbnVtPVtd CmRlZiBzZXRwaWVjZShhLHBvcykKICBpZiBhLmxlbmd0aCA9PSAkcC5sZW5ndGggdGhlbgogICAg JG5vICs9IDEKICAgIHBib2FyZAogICAgcmV0dXJuCiAgZW5kCiAgd2hpbGUgJGJbcG9zXSAhPSAt MQogICAgcG9zICs9IDEKICBlbmQKICAoJHBudW0gLSBhKS5lYWNoIGRvIHxpfAogICAgJHBbaV0u ZWFjaCBkbyB8eHwKICAgICAgZiA9IDAKICAgICAgeC5lYWNoe3xzfAogICAgICAgIGlmICRiW3Bv cytzXSAhPSAtMQogICAgICAgICAgZj0xCiAgICAgICAgICBicmVhawogICAgICAgIGVuZAogICAg ICB9CiAgICAgIGlmIGYgPT0gMCB0aGVuCiAgICAgICAgeC5lYWNoe3xzfAogICAgICAgICAgJGJb cG9zK3NdID0gaQogICAgICAgIH0KICAgICAgICBhIDw8IGkKICAgICAgICBzZXRwaWVjZShhLmR1 cCwgcG9zKQogICAgICAgIGEucG9wCiAgICAgICAgeC5lYWNoe3xzfAogICAgICAgICAgJGJbcG9z K3NdID0gLTEKICAgICAgICB9CiAgICAgIGVuZAogICAgZW5kCiAgZW5kCmVuZAoKbWtwaWVjZXMK bWtib2FyZAokcFs0XSA9IFskcFs0XVswXV0KJHBudW0gPSAoMC4uLiRwLmxlbmd0aCkudG9fYQpz ZXRwaWVjZShbXSwwKQoKCl9fRU5EX18KCiMgb3JpZ2luYWwKCk5QID0gNQpST1cgPSA4ICsgTlAK Q09MID0gOAoKJHAgPSBbXQokYiA9IFtdCiRubyA9IDAKCmRlZiBwaWVjZShuLGEsbmIpCiAgZm9y IHggaW4gbmIKICAgIGFbbl0gPSB4CiAgICBpZiBuID09IE5QLTEKICAgICAgJHAgPDwgW2Euc29y dF0KICAgIGVsc2UKICAgICAgbmJjPW5iLmR1cAogICAgICBmb3IgZCBpbiBbLVJPVywgLTEsIDEs IFJPV10KICAgICAgICBpZiB4K2QgPiAwIGFuZCBub3QgYS5pbmNsdWRlPyh4K2QpIGFuZCBub3Qg bmJjLmluY2x1ZGU/KHgrZCkKICAgICAgICAgIG5iYyA8PCB4K2QKICAgICAgICBlbmQKICAgICAg ZW5kCiAgICAgIG5iYy5kZWxldGUgeAogICAgICBwaWVjZShuKzEsYVswLi5uXSxuYmMpCiAgICBl bmQKICBlbmQKZW5kCgpkZWYga2lrYWt1KGEpCiAgYS5jb2xsZWN0IHt8eHwgeCAtIGFbMF19CmVu ZApkZWYgdWQoYSkKICBraWtha3UoYS5jb2xsZWN0IHt8eHwgKCh4K05QKSVST1cpLVJPVyooKHgr TlApL1JPVykgfS5zb3J0KQplbmQKZGVmIHJsKGEpCiAga2lrYWt1KGEuY29sbGVjdCB7fHh8IFJP VyooKHgrTlApL1JPVykrUk9XLSgoeCtOUCklUk9XKX0uc29ydCkKZW5kCmRlZiB4eShhKQogIGtp a2FrdShhLmNvbGxlY3Qge3x4fCBST1cqKCh4K05QKSVST1cpICsgKHgrTlApL1JPVyB9LnNvcnQp CmVuZAoKZGVmIG1rcGllY2VzCiAgcGllY2UoMCxbXSxbMF0pCiAgJHAuZWFjaCBkbyB8YXwKICAg IGEwID0gYVswXQogICAgYVsxXSA9IHVkKGEwKQogICAgYVsyXSA9IHJsKGEwKQogICAgYVszXSA9 IHVkKHJsKGEwKSkKICAgIGFbNF0gPSB4eShhMCkKICAgIGFbNV0gPSB1ZCh4eShhMCkpCiAgICBh WzZdID0gcmwoeHkoYTApKQogICAgYVs3XSA9IHVkKHJsKHh5KGEwKSkpCiAgICBhLnNvcnQhCiAg ICBhLnVuaXEhCiAgZW5kCiAgJHAudW5pcSEuc29ydCEge3x4LHl8IHhbMF0gPD0+IHlbMF0gfQpl bmQKCmRlZiBta2JvYXJkCiAgZm9yIGkgaW4gMC4uLlJPVypDT0wKICAgIGlmIGkgJSBST1cgPj0g Uk9XLU5QCiAgICAgICRiW2ldID0gLTIKICAgIGVsc2UKICAgICAgJGJbaV0gPSAtMQogICAgZW5k CiAgICAkYlszKlJPVyszXT0kYlszKlJPVys0XT0kYls0KlJPVyszXT0kYls0KlJPVys0XT0tMgog IGVuZAplbmQKCmRlZiBwYm9hcmQKICBwcmludCAiTm8uICMkbm9cbiIKICBmb3IgaSBpbiAwLi4u Q09MCiAgICBwcmludCAifCIKICAgIGZvciBqIGluIDAuLi5ST1ctTlAKICAgICAgeCA9ICRiW2kq Uk9XK2pdCiAgICAgIGlmIHggPCAwCiAgICAgICAgcHJpbnQgIi4ufCIKICAgICAgZWxzZQogICAg ICAgIHByaW50ZiAiJTJkfCIseCsxCiAgICAgIGVuZAogICAgZW5kCiAgICBwcmludCAiXG4iCiAg ZW5kCiAgcHJpbnQgIlxuIgplbmQKCiRwbnVtPVtdCmRlZiBzZXRwaWVjZShhLHBvcykKICBpZiBh Lmxlbmd0aCA9PSAkcC5sZW5ndGggdGhlbgogICAgJG5vICs9IDEKICAgIHBib2FyZAogICAgcmV0 dXJuCiAgZW5kCiAgd2hpbGUgJGJbcG9zXSAhPSAtMQogICAgcG9zICs9IDEKICBlbmQKICAoJHBu dW0gLSBhKS5lYWNoIGRvIHxpfAogICAgJHBbaV0uZWFjaCBkbyB8eHwKICAgICAgZiA9IDAKICAg ICAgZm9yIHMgaW4geCBkbwogICAgICAgIGlmICRiW3BvcytzXSAhPSAtMQogICAgICAgICAgZj0x CiAgICAgICAgICBicmVhawogICAgICAgIGVuZAogICAgICBlbmQKICAgICAgaWYgZiA9PSAwIHRo ZW4KICAgICAgICBmb3IgcyBpbiB4IGRvCiAgICAgICAgICAkYltwb3Mrc10gPSBpCiAgICAgICAg ZW5kCiAgICAgICAgYSA8PCBpCiAgICAgICAgc2V0cGllY2UoYS5kdXAsIHBvcykKICAgICAgICBh LnBvcAogICAgICAgIGZvciBzIGluIHggZG8KICAgICAgICAgICRiW3BvcytzXSA9IC0xCiAgICAg ICAgZW5kCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCmVuZAoKbWtwaWVjZXMKbWtib2FyZAokcFs0 XSA9IFskcFs0XVswXV0KJHBudW0gPSAoMC4uLiRwLmxlbmd0aCkudG9fYQpzZXRwaWVjZShbXSww KQoKYmVmb3JlCTgyLjQwNTE3MzA2MzI3ODIKYmVmb3JlCTgxLjgwMTE5ODAwNTY3NjMKYmVmb3Jl CTgyLjEyNzQ4NDA4MzE3NTcKYmVmb3JlCTgyLjE4MjI1NTk4MzM1MjcKYmVmb3JlCTgyLjkzNTUx MjA2NTg4NzUKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGlu dXhdCTg0LjkxMDcyNjA3MDQwNDEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIz OCkgW2k2ODYtbGludXhdCTg2LjAzNDg4ODk4Mjc3MjgKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0w NCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTg1LjE1OTQwMjg0NzI5CnJ1YnkgMS45LjJkZXYg KDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk4NS4wMDUwODQwMzc3ODA4CnJ1 YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk4NS43MDU3 NjMxMDE1Nzc4CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQphcHBfcmFpc2UKCmk9MAp3aGlsZSBpPDMwMDAwMAogIGkrPTEKICBiZWdp bgogICAgcmFpc2UKICByZXNjdWUKICBlbmQKZW5kCgpiZWZvcmUJMi4wNjkyOTIwNjg0ODE0NQpi ZWZvcmUJMi4wMjg2NzYwMzMwMjAwMgpiZWZvcmUJMi4wMjA1ODIxOTkwOTY2OApiZWZvcmUJMi4w NzIzNjI4OTk3ODAyNwpiZWZvcmUJMi4wMzA3NTA5ODk5MTM5NApydWJ5IDEuOS4yZGV2ICgyMDEw LTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMi4xMDQ2MDMwNTIxMzkyOApydWJ5IDEu OS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMi4wNzg2NjE5MTg2 NDAxNApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0J Mi4wODY5MjkwODI4NzA0OApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBb aTY4Ni1saW51eF0JMi4xMjgzNzc5MTQ0Mjg3MQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRy dW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMi4xMjU1MTQ5ODQxMzA4NgoKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYXBwX3N0cmNvbmNh dAoKaT0wCndoaWxlIGk8NTAwMDAwCiAgIiN7MSsxfSAjezErMX0gI3sxKzF9IgogIGkrPTEKZW5k CgpiZWZvcmUJMS41NDAxOTcxMzQwMTc5NApiZWZvcmUJMS41MjU0MTAxNzUzMjM0OQpiZWZvcmUJ MS41NjMzMzg5OTQ5Nzk4NgpiZWZvcmUJMS41Njg0OTE5MzU3Mjk5OApiZWZvcmUJMS41Mzk2NTgw Njk2MTA2CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQkxLjU3NTE2OTgwMTcxMjA0CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgp IFtpNjg2LWxpbnV4XQkxLjU2ODcwNjk4OTI4ODMzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxLjU2NTE3MzE0OTEwODg5CnJ1YnkgMS45LjJkZXYg KDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxLjU1NTI5Njg5Nzg4ODE4CnJ1 YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxLjU4MDQw NDk5Njg3MTk1CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQphcHBfdGFrCgoKZGVmIHRhayB4LCB5LCB6CiAgdW5sZXNzIHkgPCB4CiAg ICB6CiAgZWxzZQogICAgdGFrKCB0YWsoeC0xLCB5LCB6KSwKICAgICAgICAgdGFrKHktMSwgeiwg eCksCiAgICAgICAgIHRhayh6LTEsIHgsIHkpKQogIGVuZAplbmQKCnRhaygxOCwgOSwgMCkKCgpi ZWZvcmUJNS4xNjkxNTAxMTQwNTk0NQpiZWZvcmUJNS4wMzIzOTE3ODY1NzUzMgpiZWZvcmUJNS4w NDcyNTU5OTI4ODk0CmJlZm9yZQk1LjAwNTg0MjkyNDExODA0CmJlZm9yZQk1LjE5OTE1MTk5Mjc5 Nzg1CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk0 LjQwMTk2Mzk0OTIwMzQ5CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtp Njg2LWxpbnV4XQk0LjUwMTkyNzEzNzM3NDg4CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1 bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk0LjQ1MzA4ODA0NTEyMDI0CnJ1YnkgMS45LjJkZXYgKDIw MTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk0LjQxNDgyMjEwMTU5MzAyCnJ1Ynkg MS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk0LjQ4MTQ5ODAw MzAwNTk4CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQphcHBfdGFyYWkKCmRlZiB0YXJhaSggeCwgeSwgeiApCiAgaWYgeCA8PSB5CiAg dGhlbiB5CiAgZWxzZSB0YXJhaSh0YXJhaSh4LTEsIHksIHopLAogICAgICAgICAgICAgdGFyYWko eS0xLCB6LCB4KSwKICAgICAgICAgICAgIHRhcmFpKHotMSwgeCwgeSkpCiAgZW5kCmVuZAoKdGFy YWkoMTIsIDYsIDApCgpiZWZvcmUJMy4zNzgyMjE5ODg2Nzc5OApiZWZvcmUJMy4zMzIzODEwMTAw NTU1NApiZWZvcmUJMy40NDc1NDUwNTE1NzQ3MQpiZWZvcmUJMy4zNzc3MTcwMTgxMjc0NApiZWZv cmUJMy4zNzQzMzA5OTc0NjcwNApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4 KSBbaTY4Ni1saW51eF0JMy4yMzI3NDM5Nzg1MDAzNwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0 IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy4xODY3MjI5OTM4NTA3MQpydWJ5IDEuOS4yZGV2 ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy4yNTExMjg5MTE5NzIwNQpy dWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy4yNTM0 Njg5OTAzMjU5MwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1s aW51eF0JMy4yNDQ4ODU5MjE0NzgyNwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYXBwX3VyaQoKcmVxdWlyZSAndXJpJwoKMTAwXzAw MC50aW1lc3sKICB1cmkgPSBVUkkucGFyc2UoJ2h0dHA6Ly93d3cucnVieS1sYW5nLm9yZycpCiAg dXJpLnNjaGVtZQogIHVyaS5ob3N0CiAgdXJpLnBvcnQKfQoKYmVmb3JlCTMuNzU2ODUyMTQ5OTYz MzgKYmVmb3JlCTMuNzM3MzE3MDg1MjY2MTEKYmVmb3JlCTMuNzIyNDUzODMyNjI2MzQKYmVmb3Jl CTMuNzEwODI0MDEyNzU2MzUKYmVmb3JlCTMuNzIxMjM1OTkwNTI0MjkKcnVieSAxLjkuMmRldiAo MjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTMuNzUxMDQ0MDM0OTU3ODkKcnVi eSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTMuODgwODg0 MTcwNTMyMjMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGlu dXhdCTMuNzc5MDY5MTg1MjU2OTYKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIz OCkgW2k2ODYtbGludXhdCTMuNzYxMTgzMDIzNDUyNzYKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0w NCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTMuNzYxODY4OTUzNzA0ODMKCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmlvX2ZpbGVf Y3JlYXRlCgojCiMgQ3JlYXRlIGZpbGVzCiMKCm1heCA9IDUwXzAwMApmaWxlID0gJy4vdG1wZmls ZV9vZl9ibV9pb19maWxlX2NyZWF0ZScKCm1heC50aW1lc3sKICBmID0gb3BlbihmaWxlLCAndycp CiAgZi5jbG9zZSModHJ1ZSkKfQpGaWxlLnVubGluayhmaWxlKQoKCmJlZm9yZQkxLjE4MzQ5MTk0 NTI2NjcyCmJlZm9yZQkxLjQ3NTY1NDEyNTIxMzYyCmJlZm9yZQkxLjE3MjI3NjAyMDA1MDA1CmJl Zm9yZQkxLjE4MTI2MTA2MjYyMjA3CmJlZm9yZQkxLjE3NDg4NTk4ODIzNTQ3CnJ1YnkgMS45LjJk ZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxLjIxODg0MTA3NTg5NzIy CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxLjIy MjUwMzkwMDUyNzk1CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2 LWxpbnV4XQkxLjIyNDgxMDEyMzQ0MzYKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAy NjIzOCkgW2k2ODYtbGludXhdCTEuMjM1NTYzOTkzNDUzOTgKcnVieSAxLjkuMmRldiAoMjAxMC0w MS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuMjMyMDE5OTAxMjc1NjMKCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmlvX2Zp bGVfcmVhZAoKIwojIFNlZWsgYW5kIFJlYWQgZmlsZS4KIwoKcmVxdWlyZSAndGVtcGZpbGUnCgpt YXggPSAyMF8wMDAKc3RyID0gIkhlbGxvIHdvcmxkISAgIiAqIDEwMDAKZiA9IFRlbXBmaWxlLm5l dygneWFydi1iZW5jaG1hcmsnKQpmLndyaXRlIHN0cgoKbWF4LnRpbWVzewogIGYuc2VlayAwCiAg Zi5yZWFkCn0KCmJlZm9yZQkwLjkyNzQ3Njg4MjkzNDU3CmJlZm9yZQkwLjkyNzk1ODAxMTYyNzE5 NwpiZWZvcmUJMC45MzEwNjE5ODMxMDg1MjEKYmVmb3JlCTAuOTI1Njg5OTM1Njg0MjA0CmJlZm9y ZQkwLjk0OTExNjk0NTI2NjcyNApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4 KSBbaTY4Ni1saW51eF0JMS4wMDkyNDk5MjU2MTM0CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkwLjk0NjAzMzAwMDk0NjA0NQpydWJ5IDEuOS4yZGV2 ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMC45NDUwNjcxNjcyODIxMDQK cnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTAuOTU1 MTQ4OTM1MzE3OTkzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2 LWxpbnV4XQkwLjk1MjYzMzE0MjQ3MTMxMwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaW9fZmlsZV93cml0ZQoKIwojIFNlZWsgYW5k IFdyaXRlIGZpbGUuCiMKCnJlcXVpcmUgJ3RlbXBmaWxlJwoKbWF4ID0gMjBfMDAwCnN0ciA9ICJI ZWxsbyB3b3JsZCEgICIgKiAxMDAwCmYgPSBUZW1wZmlsZS5uZXcoJ3lhcnYtYmVuY2htYXJrJykK Cm1heC50aW1lc3sKICBmLnNlZWsgMAogIGYud3JpdGUgc3RyCn0KCmJlZm9yZQkwLjM3MTI0MjA0 NjM1NjIwMQpiZWZvcmUJMC4zNjc4OTI5ODA1NzU1NjIKYmVmb3JlCTAuMzY4NDA5MTU2Nzk5MzE2 CmJlZm9yZQkwLjM2OTY5OTAwMTMxMjI1NgpiZWZvcmUJMC4zNjQyNTkwMDQ1OTI4OTYKcnVieSAx LjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTAuMzg4NjAzOTI1 NzA0OTU2CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQkwLjM4ODY1OTAwMDM5NjcyOQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4 KSBbaTY4Ni1saW51eF0JMC4zOTE3MTA5OTY2Mjc4MDgKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0w NCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTAuMzg5NTAyMDQ4NDkyNDMyCnJ1YnkgMS45LjJk ZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkwLjM5MzIyNzEwMDM3MjMx NAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KbG9vcF9mb3IKCmZvciBpIGluIDEuLjMwXzAwMF8wMDAKICAjCmVuZAoKYmVmb3JlCTYu NzczMzAxMTI0NTcyNzUKYmVmb3JlCTYuNzY3MzM5MjI5NTgzNzQKYmVmb3JlCTYuOTQ1NzUyODU5 MTE1NgpiZWZvcmUJNi45NTMwMDM4ODMzNjE4MgpiZWZvcmUJNi44MjI5MzcwMTE3MTg3NQpydWJ5 IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNy41MjcwNjMx MzEzMzI0CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQk3LjI0ODUwOTg4Mzg4MDYyCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgp IFtpNjg2LWxpbnV4XQk2LjcwNDM1OTA1NDU2NTQzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk3LjE2MDg2Njk3NTc4NDMKcnVieSAxLjkuMmRldiAo MjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTYuNTgwMDM5OTc4MDI3MzQKCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cmxvb3BfZ2VuZXJhdG9yCgptYXggPSA2MDAwMDAKCmlmIGRlZmluZWQ/IEZpYmVyCiAgZ2VuID0g KDEuLm1heCkuZWFjaAogIGxvb3AgZG8KICAgIGdlbi5uZXh0CiAgZW5kCmVsc2UKICByZXF1aXJl ICdnZW5lcmF0b3InCiAgZ2VuID0gR2VuZXJhdG9yLm5ldygoMC4ubWF4KSkKICB3aGlsZSBnZW4u bmV4dD8KICAgIGdlbi5uZXh0CiAgZW5kCmVuZAoKYmVmb3JlCTIuNDcwMjc3MDcwOTk5MTUKYmVm b3JlCTIuNDcyMzk4OTk2MzUzMTUKYmVmb3JlCTIuNDgyMDcxODc2NTI1ODgKYmVmb3JlCTIuNDU2 MDc5OTU5ODY5MzgKYmVmb3JlCTIuNjMxMTUxOTE0NTk2NTYKcnVieSAxLjkuMmRldiAoMjAxMC0w MS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTIuNDk4NTk0MDQ1NjM5MDQKcnVieSAxLjku MmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTIuNDczOTYxMTE0ODgz NDIKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTIu NTAzODc0Nzc4NzQ3NTYKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2 ODYtbGludXhdCTIuNDcwNzU1MTAwMjUwMjQKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVu ayAyNjIzOCkgW2k2ODYtbGludXhdCTIuNTM5ODg1OTk3NzcyMjIKCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxvb3BfdGltZXMKCjMw XzAwMF8wMDAudGltZXN7fGV8fQoKYmVmb3JlCTYuMDI4ODE3ODkyMDc0NTgKYmVmb3JlCTYuMDU3 NjMxMDE1Nzc3NTkKYmVmb3JlCTYuMTA2Nzc5MDk4NTEwNzQKYmVmb3JlCTUuOTY2NTgzMDEzNTM0 NTUKYmVmb3JlCTUuOTQ1Nzg2OTUyOTcyNDEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVu ayAyNjIzOCkgW2k2ODYtbGludXhdCTYuMDAwODg0MDU2MDkxMzEKcnVieSAxLjkuMmRldiAoMjAx MC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTYuNzg2OTQ5MTU3NzE0ODQKcnVieSAx LjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTYuMTYyMzU5OTUy OTI2NjQKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhd CTUuOTE2OTI1OTA3MTM1MDEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkg W2k2ODYtbGludXhdCTUuOTE0Njg0MDU3MjM1NzIKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxvb3Bfd2hpbGVsb29wCgppPTAKd2hp bGUgaTwzMF8wMDBfMDAwICMgYmVuY2htYXJrIGxvb3AgMQogIGkrPTEKZW5kCgpiZWZvcmUJMi44 NTc5MjIwNzcxNzg5NgpiZWZvcmUJMi44NTI1MTQwMjg1NDkxOQpiZWZvcmUJMi44OTgzODkxMDEw Mjg0NApiZWZvcmUJMi44ODYwODMxMjYwNjgxMgpiZWZvcmUJMi43NjIzOTYwOTcxODMyMwpydWJ5 IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy4yMDIyMjQ5 Njk4NjM4OQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51 eF0JMi45Mzg5MDMwOTMzMzgwMQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4 KSBbaTY4Ni1saW51eF0JMi45NjQxNDA4OTIwMjg4MQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0 IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy4xOTA3Nzk5MjQzOTI3CnJ1YnkgMS45LjJkZXYg KDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjAyMTIxNTkxNTY3OTkzCgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpsb29wX3doaWxlbG9vcDIKCmk9MAp3aGlsZSBpPCA2XzAwMF8wMDAgIyBiZW5jaG1hcmsgbG9v cCAyCiAgaSs9MQplbmQKCmJlZm9yZQkwLjU4Nzc3ODA5MTQzMDY2NApiZWZvcmUJMC41OTQzMjc5 MjY2MzU3NDIKYmVmb3JlCTAuNTgzNzExODYyNTY0MDg3CmJlZm9yZQkwLjU4NTU3MzkxMTY2Njg3 CmJlZm9yZQkwLjU4Mjg0MTE1NzkxMzIwOApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5r IDI2MjM4KSBbaTY4Ni1saW51eF0JMC42NjUxMzYwOTg4NjE2OTQKcnVieSAxLjkuMmRldiAoMjAx MC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTAuNjIzODM2OTk0MTcxMTQzCnJ1Ynkg MS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkwLjYyODAyNTA1 NDkzMTY0MQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51 eF0JMC42NjM4NjMxODIwNjc4NzEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIz OCkgW2k2ODYtbGludXhdCTAuNjcxNzg1MTE2MTk1Njc5CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzb19hY2tlcm1hbm4KCiMhL3Vz ci9iaW4vcnVieQojIC0qLSBtb2RlOiBydWJ5IC0qLQojICRJZDogYWNrZXJtYW5uLXJ1YnkuY29k ZSx2IDEuNCAyMDA0LzExLzEzIDA3OjQwOjQxIGJmdWxnaGFtIEV4cCAkCiMgaHR0cDovL3d3dy5i YWdsZXkub3JnL35kb3VnL3Nob290b3V0LwoKZGVmIGFjayhtLCBuKQogICAgaWYgbSA9PSAwIHRo ZW4KICAgICAgICBuICsgMQogICAgZWxzaWYgbiA9PSAwIHRoZW4KICAgICAgICBhY2sobSAtIDEs IDEpCiAgICBlbHNlCiAgICAgICAgYWNrKG0gLSAxLCBhY2sobSwgbiAtIDEpKQogICAgZW5kCmVu ZAoKTlVNID0gOQphY2soMywgTlVNKQoKCgpiZWZvcmUJNC4zMTQ0MjQ5OTE2MDc2NwpiZWZvcmUJ NC4zMTM1ODAwMzYxNjMzMwpiZWZvcmUJNC4zMTMwMTQwMzA0NTY1NApiZWZvcmUJNC4xNjE5NTAx MTEzODkxNgpiZWZvcmUJNC4zMDQ5ODA5OTMyNzA4NwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0 IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy41MzM3ODU4MjAwMDczMgpydWJ5IDEuOS4yZGV2 ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy42MTIwNDk4MTgwMzg5NApy dWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy41OTAy NjUwMzU2MjkyNwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1s aW51eF0JMy41NDM0NzA4NTk1Mjc1OQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2 MjM4KSBbaTY4Ni1saW51eF0JMy42MTYxNzQ5MzYyOTQ1NgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc29fYXJyYXkKCiMhL3Vzci9i aW4vcnVieQojIC0qLSBtb2RlOiBydWJ5IC0qLQojICRJZDogYXJ5LXJ1YnkuY29kZSx2IDEuNCAy MDA0LzExLzEzIDA3OjQxOjI3IGJmdWxnaGFtIEV4cCAkCiMgaHR0cDovL3d3dy5iYWdsZXkub3Jn L35kb3VnL3Nob290b3V0LwojIHdpdGggaGVscCBmcm9tIFBhdWwgQnJhbm5hbiBhbmQgTWFyayBI dWJiYXJ0CgpuID0gOTAwMCAjIEludGVnZXIoQVJHVi5zaGlmdCB8fCAxKQoKeCA9IEFycmF5Lm5l dyhuKQp5ID0gQXJyYXkubmV3KG4sIDApCgpuLnRpbWVze3xiaXwKICB4W2JpXSA9IGJpICsgMQp9 CgooMCAuLiA5OTkpLmVhY2ggZG8gfGV8CiAgKG4tMSkuc3RlcCgwLC0xKSBkbyB8Yml8CiAgICB5 W2JpXSArPSB4LmF0KGJpKQogIGVuZAplbmQKIyBwdXRzICIje3kuZmlyc3R9ICN7eS5sYXN0fSIK CgoKYmVmb3JlCTcuNjMzMTIwMDU5OTY3MDQKYmVmb3JlCTcuNDY5MjY0OTg0MTMwODYKYmVmb3Jl CTcuNjA5MDQ5MDgxODAyMzcKYmVmb3JlCTcuNTQ2Nzc3MDA5OTYzOTkKYmVmb3JlCTcuNDcyMjg1 MDMyMjcyMzQKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGlu dXhdCTguMzgyMzc2OTA5MjU1OTgKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIz OCkgW2k2ODYtbGludXhdCTguMzIyNjEyMDQ3MTk1NDMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0w NCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTguNDU0ODA0ODk3MzA4MzUKcnVieSAxLjkuMmRl diAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTguMzMwMDc2OTMyOTA3MQpy dWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JOC4zODcz ODUxMjk5Mjg1OQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0Kc29fYmluYXJ5X3RyZWVzCgojIFRoZSBDb21wdXRlciBMYW5ndWFnZSBT aG9vdG91dCBCZW5jaG1hcmtzCiMgaHR0cDovL3Nob290b3V0LmFsaW90aC5kZWJpYW4ub3JnCiMK IyBjb250cmlidXRlZCBieSBKZXNzZSBNaWxsaWthbgoKIyBkaXNhYmxlIG91dHB1dApkZWYgU1RE T1VULndyaXRlXyAqYXJncwplbmQKCmRlZiBpdGVtX2NoZWNrKHRyZWUpCiBpZiB0cmVlWzBdID09 IG5pbAogIHRyZWVbMV0KIGVsc2UKICB0cmVlWzFdICsgaXRlbV9jaGVjayh0cmVlWzBdKSAtIGl0 ZW1fY2hlY2sodHJlZVsyXSkKIGVuZAplbmQKCmRlZiBib3R0b21fdXBfdHJlZShpdGVtLCBkZXB0 aCkKIGlmIGRlcHRoID4gMAogIGl0ZW1faXRlbSA9IDIgKiBpdGVtCiAgZGVwdGggLT0gMQogIFti b3R0b21fdXBfdHJlZShpdGVtX2l0ZW0gLSAxLCBkZXB0aCksIGl0ZW0sIGJvdHRvbV91cF90cmVl KGl0ZW1faXRlbSwgZGVwdGgpXQogZWxzZQogIFtuaWwsIGl0ZW0sIG5pbF0KIGVuZAplbmQKCm1h eF9kZXB0aCA9IDEyICMgMTYgIyBBUkdWWzBdLnRvX2kKbWluX2RlcHRoID0gNAoKbWF4X2RlcHRo ID0gbWluX2RlcHRoICsgMiBpZiBtaW5fZGVwdGggKyAyID4gbWF4X2RlcHRoCgpzdHJldGNoX2Rl cHRoID0gbWF4X2RlcHRoICsgMQpzdHJldGNoX3RyZWUgPSBib3R0b21fdXBfdHJlZSgwLCBzdHJl dGNoX2RlcHRoKQoKcHV0cyAic3RyZXRjaCB0cmVlIG9mIGRlcHRoICN7c3RyZXRjaF9kZXB0aH1c dCBjaGVjazogI3tpdGVtX2NoZWNrKHN0cmV0Y2hfdHJlZSl9IgpzdHJldGNoX3RyZWUgPSBuaWwK CmxvbmdfbGl2ZWRfdHJlZSA9IGJvdHRvbV91cF90cmVlKDAsIG1heF9kZXB0aCkKCm1pbl9kZXB0 aC5zdGVwKG1heF9kZXB0aCArIDEsIDIpIGRvIHxkZXB0aHwKIGl0ZXJhdGlvbnMgPSAyKioobWF4 X2RlcHRoIC0gZGVwdGggKyBtaW5fZGVwdGgpCgogY2hlY2sgPSAwCgogZm9yIGkgaW4gMS4uaXRl cmF0aW9ucwogIHRlbXBfdHJlZSA9IGJvdHRvbV91cF90cmVlKGksIGRlcHRoKQogIGNoZWNrICs9 IGl0ZW1fY2hlY2sodGVtcF90cmVlKQoKICB0ZW1wX3RyZWUgPSBib3R0b21fdXBfdHJlZSgtaSwg ZGVwdGgpCiAgY2hlY2sgKz0gaXRlbV9jaGVjayh0ZW1wX3RyZWUpCiBlbmQKCiBwdXRzICIje2l0 ZXJhdGlvbnMgKiAyfVx0IHRyZWVzIG9mIGRlcHRoICN7ZGVwdGh9XHQgY2hlY2s6ICN7Y2hlY2t9 IgplbmQKCnB1dHMgImxvbmcgbGl2ZWQgdHJlZSBvZiBkZXB0aCAje21heF9kZXB0aH1cdCBjaGVj azogI3tpdGVtX2NoZWNrKGxvbmdfbGl2ZWRfdHJlZSl9IgoKYmVmb3JlCTEuODM5NDQyMDE0Njk0 MjEKYmVmb3JlCTEuODAxNzg0OTkyMjE4MDIKYmVmb3JlCTEuODA2MjE4ODYyNTMzNTcKYmVmb3Jl CTEuNzg2Nzg3MDMzMDgxMDUKYmVmb3JlCTEuNzc2ODk5MDk5MzQ5OTgKcnVieSAxLjkuMmRldiAo MjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuOTg0NjQ3OTg5MjczMDcKcnVi eSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuOTM1MzQ5 OTQxMjUzNjYKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGlu dXhdCTEuOTE2MDIzMDE1OTc1OTUKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIz OCkgW2k2ODYtbGludXhdCTEuOTU4ODU3MDU5NDc4NzYKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0w NCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuOTMxNjgzMDYzNTA3MDgKCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNvX2NvbmNh dGVuYXRlCgojIS91c3IvYmluL3J1YnkKIyAtKi0gbW9kZTogcnVieSAtKi0KIyAkSWQ6IHN0cmNh dC1ydWJ5LmNvZGUsdiAxLjQgMjAwNC8xMS8xMyAwNzo0MzoyOCBiZnVsZ2hhbSBFeHAgJAojIGh0 dHA6Ly93d3cuYmFnbGV5Lm9yZy9+ZG91Zy9zaG9vdG91dC8KIyBiYXNlZCBvbiBjb2RlIGZyb20g QXJpc3RhcmtoIEEgWmFnb3JvZG5pa292IGFuZCBEYXQgTmd1eWVuCgpTVFVGRiA9ICJoZWxsb1xu IgppPTAKd2hpbGUgaTwxMAogIGkrPTEKICBoZWxsbyA9ICcnCiAgNDAwMDAwLnRpbWVzIGRvIHxl fAogICAgaGVsbG8gPDwgU1RVRkYKICBlbmQKZW5kCiMgcHV0cyBoZWxsby5sZW5ndGgKCgoKYmVm b3JlCTEuNzgwODAzOTE4ODM4NQpiZWZvcmUJMS43NTQ5NjcyMTI2NzcKYmVmb3JlCTEuODA1ODcw MDU2MTUyMzQKYmVmb3JlCTEuNzY1NDgwMDQxNTAzOTEKYmVmb3JlCTEuNzY3Mjg0ODcwMTQ3NzEK cnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuOTQ3 NDA5MTUyOTg0NjIKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYt bGludXhdCTEuOTEyNTk0MDc5OTcxMzEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAy NjIzOCkgW2k2ODYtbGludXhdCTEuOTA3ODMwOTUzNTk4MDIKcnVieSAxLjkuMmRldiAoMjAxMC0w MS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuODg1OTgyMDM2NTkwNTgKcnVieSAxLjku MmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuOTIwMTExODk0NjA3 NTQKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCnNvX2NvdW50X3dvcmRzCgojIS91c3IvYmluL3J1YnkKIyAtKi0gbW9kZTogcnVieSAt Ki0KIyAkSWQ6IHdjLXJ1YnkuY29kZSx2IDEuNCAyMDA0LzExLzEzIDA3OjQzOjMyIGJmdWxnaGFt IEV4cCAkCiMgaHR0cDovL3d3dy5iYWdsZXkub3JnL35kb3VnL3Nob290b3V0LwojIHdpdGggaGVs cCBmcm9tIFBhdWwgQnJhbm5hbgoKaW5wdXQgPSBvcGVuKEZpbGUuam9pbihGaWxlLmRpcm5hbWUo JDApLCAnd2MuaW5wdXQnKSwgJ3JiJykKCm5sID0gbncgPSBuYyA9IDAKd2hpbGUgdHJ1ZQogIHRt cCA9IGlucHV0LnJlYWQoNDA5Nikgb3IgYnJlYWsKICBkYXRhID0gdG1wIDw8IChpbnB1dC5nZXRz IHx8ICIiKQogIG5jICs9IGRhdGEubGVuZ3RoCiAgbmwgKz0gZGF0YS5jb3VudCgiXG4iKQogICgo ZGF0YS5zdHJpcCEgfHwgZGF0YSkudHIhKCJcbiIsICIgIikgfHwgZGF0YSkuc3F1ZWV6ZSEKICBu dyArPSBkYXRhLmNvdW50KCIgIikgKyAxCmVuZAojIFNUREVSUi5wdXRzICIje25sfSAje253fSAj e25jfSIKCgpiZWZvcmUJMC43NjAwMDA5NDQxMzc1NzMKYmVmb3JlCTAuNzU2NDI4OTU2OTg1NDc0 CmJlZm9yZQkwLjc1MzkzNTA5ODY0ODA3MQpiZWZvcmUJMC43NTMxNjU5NjAzMTE4OQpiZWZvcmUJ MC43NTI3ODk5NzQyMTI2NDYKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkg W2k2ODYtbGludXhdCTAuNzYxOTYxOTM2OTUwNjg0CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkwLjc1NzcyNDA0NjcwNzE1MwpydWJ5IDEuOS4yZGV2 ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMC43NTg2ODEwNTg4ODM2NjcK cnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTAuNzU2 NTcwMTAwNzg0MzAyCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2 LWxpbnV4XQkwLjc1OTYzOTk3ODQwODgxMwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc29fZXhjZXB0aW9uCgojIS91c3IvYmluL3J1 YnkKIyAtKi0gbW9kZTogcnVieSAtKi0KIyAkSWQ6IGV4Y2VwdC1ydWJ5LmNvZGUsdiAxLjQgMjAw NC8xMS8xMyAwNzo0MTozMyBiZnVsZ2hhbSBFeHAgJAojIGh0dHA6Ly93d3cuYmFnbGV5Lm9yZy9+ ZG91Zy9zaG9vdG91dC8KCiRISSA9IDAKJExPID0gMApOVU0gPSAyNTAwMDAgIyBJbnRlZ2VyKEFS R1ZbMF0gfHwgMSkKCgpjbGFzcyBMb19FeGNlcHRpb24gPCBFeGNlcHRpb24KICBkZWYgaW5pdGlh bGl6ZShudW0pCiAgICBAdmFsdWUgPSBudW0KICBlbmQKZW5kCgpjbGFzcyBIaV9FeGNlcHRpb24g PCBFeGNlcHRpb24KICBkZWYgaW5pdGlhbGl6ZShudW0pCiAgICBAdmFsdWUgPSBudW0KICBlbmQK ZW5kCgpkZWYgc29tZV9mdW5jdGlvbihudW0pCiAgYmVnaW4KICAgIGhpX2Z1bmN0aW9uKG51bSkK ICByZXNjdWUKICAgIHByaW50ICJXZSBzaG91bGRuJ3QgZ2V0IGhlcmUsIGV4Y2VwdGlvbiBpczog I3skIS50eXBlfVxuIgogIGVuZAplbmQKCmRlZiBoaV9mdW5jdGlvbihudW0pCiAgYmVnaW4KICAg IGxvX2Z1bmN0aW9uKG51bSkKICByZXNjdWUgSGlfRXhjZXB0aW9uCiAgICAkSEkgPSAkSEkgKyAx CiAgZW5kCmVuZAoKZGVmIGxvX2Z1bmN0aW9uKG51bSkKICBiZWdpbgogICAgYmxvd3VwKG51bSkK ICByZXNjdWUgTG9fRXhjZXB0aW9uCiAgICAkTE8gPSAkTE8gKyAxCiAgZW5kCmVuZAoKZGVmIGJs b3d1cChudW0pCiAgaWYgbnVtICUgMiA9PSAwCiAgICByYWlzZSBMb19FeGNlcHRpb24ubmV3KG51 bSkKICBlbHNlCiAgICByYWlzZSBIaV9FeGNlcHRpb24ubmV3KG51bSkKICBlbmQKZW5kCgoKaSA9 IDEKbWF4ID0gTlVNKzEKd2hpbGUgaSA8IG1heAogIGkrPTEKICBzb21lX2Z1bmN0aW9uKGkrMSkK ZW5kCgpiZWZvcmUJNC41OTIwODQ4ODQ2NDM1NQpiZWZvcmUJNC41MzQ4NzAxNDc3MDUwOApiZWZv cmUJNC41NTA1Njc4NjUzNzE3CmJlZm9yZQk0LjYxNjgxNjA0Mzg1Mzc2CmJlZm9yZQk0LjU4OTA2 MjkyOTE1MzQ0CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxp bnV4XQk0LjczMjIwNjgyMTQ0MTY1CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYy MzgpIFtpNjg2LWxpbnV4XQk0LjY1NDQ2NDAwNjQyMzk1CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEt MDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk0LjcxMDc4MzAwNDc2MDc0CnJ1YnkgMS45LjJk ZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk0LjcxMzIwNzAwNjQ1NDQ3 CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk0Ljcy NTcwMzk1NDY5NjY2CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpzb19mYW5ua3VjaAoKIyBUaGUgQ29tcHV0ZXIgTGFuZ3VhZ2UgU2hv b3RvdXQKIyBodHRwOi8vc2hvb3RvdXQuYWxpb3RoLmRlYmlhbi5vcmcvCiMgQ29udHJpYnV0ZWQg YnkgU29rb2xvdiBZdXJhCiMgTW9kaWZpZWQgYnkgUnlhbiBXaWxsaWFtcwoKZGVmIGZhbm5rdWNo KG4pCiAgIG1heEZsaXBzLCBtLCByLCBjaGVjayA9IDAsIG4tMSwgbiwgMAogICBjb3VudCA9ICgx Li5uKS50b19hCiAgIHBlcm0gPSAoMS4ubikudG9fYQoKICAgd2hpbGUgdHJ1ZQogICAgICBpZiBj aGVjayA8IDMwCiAgICAgICAgIHB1dHMgIiN7cGVybX0iCiAgICAgICAgIGNoZWNrICs9IDEKICAg ICAgZW5kCgogICAgICB3aGlsZSByICE9IDEKICAgICAgICAgY291bnRbci0xXSA9IHIKICAgICAg ICAgciAtPSAxCiAgICAgIGVuZAoKICAgICAgaWYgcGVybVswXSAhPSAxIGFuZCBwZXJtW21dICE9 IG4KICAgICAgICAgcGVybWwgPSBwZXJtLmNsb25lICMuZHVwCiAgICAgICAgIGZsaXBzID0gMAog ICAgICAgICB3aGlsZSAoayA9IHBlcm1sLmZpcnN0ICkgIT0gMQogICAgICAgICAgICBwZXJtbCA9 IHBlcm1sLnNsaWNlISgwLCBrKS5yZXZlcnNlICsgcGVybWwKICAgICAgICAgICAgZmxpcHMgKz0g MQogICAgICAgICBlbmQKICAgICAgICAgbWF4RmxpcHMgPSBmbGlwcyBpZiBmbGlwcyA+IG1heEZs aXBzCiAgICAgIGVuZAogICAgICB3aGlsZSB0cnVlCiAgICAgICAgIGlmIHI9PW4gdGhlbiByZXR1 cm4gbWF4RmxpcHMgZW5kCiAgICAgICAgIHBlcm0uaW5zZXJ0IHIscGVybS5zaGlmdAogICAgICAg ICBicmVhayBpZiAoY291bnRbcl0gLT0gMSkgPiAwCiAgICAgICAgIHIgKz0gMQogICAgICBlbmQK ICAgZW5kCmVuZAoKZGVmIHB1dHMgKmFyZ3MKZW5kCgpOID0gMTAgIyAoQVJHVlswXSB8fCAxKS50 b19pCnB1dHMgIlBmYW5ua3VjaGVuKCN7Tn0pID0gI3tmYW5ua3VjaChOKX0iCgoKYmVmb3JlCTc3 LjA3Njk4NzAyODEyMTkKYmVmb3JlCTc2Ljk2MzU4NTEzODMyMDkKYmVmb3JlCTc3LjEwMzA3NTAy NzQ2NTgKYmVmb3JlCTc3LjA4MDYwODg0NDc1NzEKYmVmb3JlCTc3LjUzODQ4MDk5NzA4NTYKcnVi eSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTc2LjE0MzMz NzAxMTMzNzMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGlu dXhdCTc2LjIxNjA4NzEwMjg5CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgp IFtpNjg2LWxpbnV4XQk3Ni40MTMzODAxNDYwMjY2CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk3Ni4wODIxNjUwMDI4MjI5CnJ1YnkgMS45LjJkZXYg KDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk3Ni4zMzAzNzQwMDI0NTY3Cgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpzb19mYXN0YQoKIyBUaGUgQ29tcHV0ZXIgTGFuZ3VhZ2UgU2hvb3RvdXQKIyBodHRwOi8vc2hv b3RvdXQuYWxpb3RoLmRlYmlhbi5vcmcvCiMgQ29udHJpYnV0ZWQgYnkgU29rb2xvdiBZdXJhCgok bGFzdCA9IDQyLjAKZGVmIGdlbl9yYW5kb20gKG1heCxpbT0xMzk5NjgsaWE9Mzg3NyxpYz0yOTU3 MykKICAgIChtYXggKiAoJGxhc3QgPSAoJGxhc3QgKiBpYSArIGljKSAlIGltKSkgLyBpbQplbmQK CmFsdSA9CiAgICJHR0NDR0dHQ0dDR0dUR0dDVENBQ0dDQ1RHVEFBVENDQ0FHQ0FDVFRUR0ciKwog ICAiR0FHR0NDR0FHR0NHR0dDR0dBVENBQ0NUR0FHR1RDQUdHQUdUVENHQUdBIisKICAgIkNDQUdD Q1RHR0NDQUFDQVRHR1RHQUFBQ0NDQ0dUQ1RDVEFDVEFBQUFBVCIrCiAgICJBQ0FBQUFBVFRBR0ND R0dHQ0dUR0dUR0dDR0NHQ0dDQ1RHVEFBVENDQ0EiKwogICAiR0NUQUNUQ0dHR0FHR0NUR0FHR0NB R0dBR0FBVENHQ1RUR0FBQ0NDR0dHIisKICAgIkFHR0NHR0FHR1RUR0NBR1RHQUdDQ0dBR0FUQ0dD R0NDQUNUR0NBQ1RDQyIrCiAgICJBR0NDVEdHR0NHQUNBR0FHQ0dBR0FDVENDR1RDVENBQUFBQSIK Cml1YiA9IFsKICAgIFsiYSIsIDAuMjddLAogICAgWyJjIiwgMC4xMl0sCiAgICBbImciLCAwLjEy XSwKICAgIFsidCIsIDAuMjddLAoKICAgIFsiQiIsIDAuMDJdLAogICAgWyJEIiwgMC4wMl0sCiAg ICBbIkgiLCAwLjAyXSwKICAgIFsiSyIsIDAuMDJdLAogICAgWyJNIiwgMC4wMl0sCiAgICBbIk4i LCAwLjAyXSwKICAgIFsiUiIsIDAuMDJdLAogICAgWyJTIiwgMC4wMl0sCiAgICBbIlYiLCAwLjAy XSwKICAgIFsiVyIsIDAuMDJdLAogICAgWyJZIiwgMC4wMl0sCl0KaG9tb3NhcGllbnMgPSBbCiAg ICBbImEiLCAwLjMwMjk1NDk0MjY2ODBdLAogICAgWyJjIiwgMC4xOTc5ODgzMDA0OTIxXSwKICAg IFsiZyIsIDAuMTk3NTQ3MzA2NjM5MV0sCiAgICBbInQiLCAwLjMwMTUwOTQ1MDIwMDhdLApdCgpk ZWYgbWFrZV9yZXBlYXRfZmFzdGEoaWQsIGRlc2MsIHNyYywgbikKICAgIHB1dHMgIj4je2lkfSAj e2Rlc2N9IgogICAgdiA9IG5pbAogICAgd2lkdGggPSA2MAogICAgbCA9IHNyYy5sZW5ndGgKICAg IHMgPSBzcmMgKiAoKG4gLyBsKSArIDEpCiAgICBzLnNsaWNlIShuLCBsKQogICAgcHV0cyhzLnNj YW4oLy57MSwje3dpZHRofX0vKS5qb2luKCJcbiIpKQplbmQKCmRlZiBtYWtlX3JhbmRvbV9mYXN0 YShpZCwgZGVzYywgdGFibGUsIG4pCiAgICBwdXRzICI+I3tpZH0gI3tkZXNjfSIKICAgIHJhbmQs IHYgPSBuaWwsbmlsCiAgICB3aWR0aCA9IDYwCiAgICBjaHVuayA9IDEgKiB3aWR0aAogICAgcHJv YiA9IDAuMAogICAgdGFibGUuZWFjaHt8dnwgdlsxXT0gKHByb2IgKz0gdlsxXSl9CiAgICBmb3Ig aSBpbiAxLi4obi93aWR0aCkKICAgICAgICBwdXRzKCgxLi53aWR0aCkuY29sbGVjdHsKICAgICAg ICAgICAgcmFuZCA9IGdlbl9yYW5kb20oMS4wKQogICAgICAgICAgICB0YWJsZS5maW5ke3x2fCB2 WzFdPnJhbmR9WzBdCiAgICAgICAgfS5qb2luKQogICAgZW5kCiAgICBpZiBuJXdpZHRoICE9IDAK ICAgICAgICBwdXRzKCgxLi4obiV3aWR0aCkpLmNvbGxlY3R7CiAgICAgICAgICAgIHJhbmQgPSBn ZW5fcmFuZG9tKDEuMCkKICAgICAgICAgICAgdGFibGUuZmluZHt8dnwgdlsxXT5yYW5kfVswXQog ICAgICAgIH0uam9pbikKICAgIGVuZAplbmQKCgpuID0gKEFSR1ZbMF0gb3IgMjUwXzAwMCkudG9f aQoKbWFrZV9yZXBlYXRfZmFzdGEoJ09ORScsICdIb21vIHNhcGllbnMgYWx1JywgYWx1LCBuKjIp Cm1ha2VfcmFuZG9tX2Zhc3RhKCdUV08nLCAnSVVCIGFtYmlndWl0eSBjb2RlcycsIGl1Yiwgbioz KQptYWtlX3JhbmRvbV9mYXN0YSgnVEhSRUUnLCAnSG9tbyBzYXBpZW5zIGZyZXF1ZW5jeScsIGhv bW9zYXBpZW5zLCBuKjUpCgoKYmVmb3JlCTEwLjI0MzkyMjk0ODgzNzMKYmVmb3JlCTEwLjI4MzQ2 NzA1NDM2NzEKYmVmb3JlCTEwLjE3NjIwMjA1ODc5MjEKYmVmb3JlCTEwLjE5NTkwMTg3MDcyNzUK YmVmb3JlCTEwLjI0NzI1NTgwMjE1NDUKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAy NjIzOCkgW2k2ODYtbGludXhdCTEwLjE5NzE5MDA0NjMxMDQKcnVieSAxLjkuMmRldiAoMjAxMC0w MS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEwLjI3Njg3MzExMTcyNDkKcnVieSAxLjku MmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEwLjExNzQ5MjkxNDE5 OTgKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEw LjEyMzQ4Mjk0MjU4MTIKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2 ODYtbGludXhdCTEwLjI2MzQ2NDIxMjQxNzYKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNvX2tfbnVjbGVvdGlkZQoKIyBUaGUgQ29t cHV0ZXIgTGFuZ3VhZ2UgU2hvb3RvdXQKIyBodHRwOi8vc2hvb3RvdXQuYWxpb3RoLmRlYmlhbi5v cmcKIwojIGNvbnRyaWJ1dGVkIGJ5IGpvc2UgZmNvLiBnb256YWxlegojIG1vZGlmaWVkIGJ5IFNv a29sb3YgWXVyYQoKc2VxID0gU3RyaW5nLm5ldwoKZGVmIGZyZWN1ZW5jeSggc2VxLGxlbmd0aCAp CiAgICBuLCB0YWJsZSA9IHNlcS5sZW5ndGggLSBsZW5ndGggKyAxLCBIYXNoLm5ldygwKQogICAg ZiwgaSA9IG5pbCwgbmlsCiAgICAoMCAuLi4gbGVuZ3RoKS5lYWNoIGRvIHxmfAogICAgICAgIChm IC4uLiBuKS5zdGVwKGxlbmd0aCkgZG8gfGl8CiAgICAgICAgICAgIHRhYmxlW3NlcVtpLGxlbmd0 aF1dICs9IDEKICAgICAgICBlbmQKICAgIGVuZAogICAgW24sdGFibGVdCgplbmQKCmRlZiBzb3J0 X2J5X2ZyZXEoIHNlcSxsZW5ndGggKQogICAgbix0YWJsZSA9IGZyZWN1ZW5jeSggc2VxLGxlbmd0 aCApCiAgICBhLCBiLCB2ID0gbmlsLCBuaWwsIG5pbAogICAgdGFibGUuc29ydHt8YSxifCBiWzFd IDw9PiBhWzFdfS5lYWNoIGRvIHx2fAogICAgICAgIHB1dHMgIiVzICUuM2YiICUgW3ZbMF0udXBj YXNlLCgodlsxXSoxMDApLnRvX2YvbildCiAgICBlbmQKICAgIHB1dHMKZW5kCgpkZWYgZmluZF9z ZXEoIHNlcSxzICkKICAgIG4sdGFibGUgPSBmcmVjdWVuY3koIHNlcSxzLmxlbmd0aCApCiAgICBw dXRzICIje3RhYmxlW3NdLnRvX3N9XHQje3MudXBjYXNlfSIKZW5kCgppbnB1dCA9IG9wZW4oRmls ZS5qb2luKEZpbGUuZGlybmFtZSgkMCksICdmYXN0YS5vdXRwdXQuMTAwMDAwJyksICdyYicpCgps aW5lID0gaW5wdXQuZ2V0cyB3aGlsZSBsaW5lICF+IC9ePlRIUkVFLwpsaW5lID0gaW5wdXQuZ2V0 cwoKd2hpbGUgKGxpbmUgIX4gL14+LykgJiBsaW5lIGRvCiAgICBzZXEgPDwgbGluZS5jaG9tcAog ICAgbGluZSA9IGlucHV0LmdldHMKZW5kCgpbMSwyXS5lYWNoIHt8aXwgc29ydF9ieV9mcmVxKCBz ZXEsaSApIH0KCiV3KGdndCBnZ3RhIGdndGF0dCBnZ3RhdHR0dGFhdHQgZ2d0YXR0dHRhYXR0dGF0 YWd0KS5lYWNoe3xzfCBmaW5kX3NlcSggc2VxLHMpIH0KCgpiZWZvcmUJNi45NTQ4ODkwNTkwNjY3 NwpiZWZvcmUJNi45MTA1NzM5NTkzNTA1OQpiZWZvcmUJNi45MTQ0OTU5NDQ5NzY4MQpiZWZvcmUJ Ni45NzQ5ODcwMzAwMjkzCmJlZm9yZQk2LjgyNzIzNjg5MDc5Mjg1CnJ1YnkgMS45LjJkZXYgKDIw MTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk2LjczOTY3MzEzNzY2NDc5CnJ1Ynkg MS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk2Ljc3MDI1Mzg5 NjcxMzI2CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQk2LjY0MTg0Njg5NTIxNzkKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkg W2k2ODYtbGludXhdCTYuNzg0OTUxOTI1Mjc3NzEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0 cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTYuNjM2MjA1OTExNjM2MzUKCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNvX2xpc3RzCgoj ZnJvbSBodHRwOi8vd3d3LmJhZ2xleS5vcmcvfmRvdWcvc2hvb3RvdXQvYmVuY2gvbGlzdHMvbGlz dHMucnVieQoKTlVNID0gMTAwClNJWkUgPSAxMDAwMAoKZGVmIHRlc3RfbGlzdHMoKQogICMgY3Jl YXRlIGEgbGlzdCBvZiBpbnRlZ2VycyAoTGkxKSBmcm9tIDEgdG8gU0laRQogIGxpMSA9ICgxLi5T SVpFKS50b19hCiAgIyBjb3B5IHRoZSBsaXN0IHRvIGxpMiAobm90IGJ5IGluZGl2aWR1YWwgaXRl bXMpCiAgbGkyID0gbGkxLmR1cAogICMgcmVtb3ZlIGVhY2ggaW5kaXZpZHVhbCBpdGVtIGZyb20g bGVmdCBzaWRlIG9mIGxpMiBhbmQKICAjIGFwcGVuZCB0byByaWdodCBzaWRlIG9mIGxpMyAocHJl c2VydmluZyBvcmRlcikKICBsaTMgPSBBcnJheS5uZXcKICB3aGlsZSAobm90IGxpMi5lbXB0eT8p CiAgICBsaTMucHVzaChsaTIuc2hpZnQpCiAgZW5kCiAgIyBsaTIgbXVzdCBub3cgYmUgZW1wdHkK ICAjIHJlbW92ZSBlYWNoIGluZGl2aWR1YWwgaXRlbSBmcm9tIHJpZ2h0IHNpZGUgb2YgbGkzIGFu ZAogICMgYXBwZW5kIHRvIHJpZ2h0IHNpZGUgb2YgbGkyIChyZXZlcnNpbmcgbGlzdCkKICB3aGls ZSAobm90IGxpMy5lbXB0eT8pCiAgICBsaTIucHVzaChsaTMucG9wKQogIGVuZAogICMgbGkzIG11 c3Qgbm93IGJlIGVtcHR5CiAgIyByZXZlcnNlIGxpMSBpbiBwbGFjZQogIGxpMS5yZXZlcnNlIQog ICMgY2hlY2sgdGhhdCBmaXJzdCBpdGVtIGlzIG5vdyBTSVpFCiAgaWYgbGkxWzBdICE9IFNJWkUg dGhlbgogICAgcCAibm90IFNJWkUiCiAgICAwCiAgZWxzZQogICAgIyBjb21wYXJlIGxpMSBhbmQg bGkyIGZvciBlcXVhbGl0eQogICAgaWYgbGkxICE9IGxpMiB0aGVuCiAgICAgIHJldHVybigwKQog ICAgZWxzZQogICAgICAjIHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0CiAgICAgIGxpMS5s ZW5ndGgKICAgIGVuZAogIGVuZAplbmQKCmkgPSAwCndoaWxlIGk8TlVNCiAgaSs9MQogIHJlc3Vs dCA9IHRlc3RfbGlzdHMoKQplbmQKCnJlc3VsdAoKYmVmb3JlCTEuNjIxMjMyOTg2NDUwMgpiZWZv cmUJMS41ODIxMDMwMTM5OTIzMQpiZWZvcmUJMS42MDM1MTMwMDIzOTU2MwpiZWZvcmUJMS42MjAx NDM4OTAzODA4NgpiZWZvcmUJMS41Nzc1MTg5Mzk5NzE5MgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAx LTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS43NTc2NzMwMjUxMzEyMwpydWJ5IDEuOS4y ZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS43NzA5MzQxMDQ5MTk0 MwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS43 NTg0NjAwNDQ4NjA4NApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4 Ni1saW51eF0JMS43Mjg1NTgwNjM1MDcwOApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5r IDI2MjM4KSBbaTY4Ni1saW51eF0JMS43OTMzNzY5MjI2MDc0MgoKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc29fbWFuZGVsYnJvdAoK IyAgVGhlIENvbXB1dGVyIExhbmd1YWdlIEJlbmNobWFya3MgR2FtZQojICBodHRwOi8vc2hvb3Rv dXQuYWxpb3RoLmRlYmlhbi5vcmcvCiMKIyAgY29udHJpYnV0ZWQgYnkgS2FybCB2b24gTGF1ZGVy bWFubgojICBtb2RpZmllZCBieSBKZXJlbXkgRWNob2xzCgpzaXplID0gNjAwICMgQVJHVlswXS50 b19pCgpwdXRzICJQNFxuI3tzaXplfSAje3NpemV9IgoKSVRFUiA9IDQ5ICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBJdGVyYXRpb25zIC0gMSBmb3IgZWFzeSBmb3IuLmluIGxvb3BpbmcKTElN SVRfU1FVQVJFRCA9IDQuMCAgICAgICAgICAgICAgICAgIyBQcmVzcXVhcmVkIGxpbWl0CgpieXRl X2FjYyA9IDAKYml0X251bSA9IDAKCmNvdW50X3NpemUgPSBzaXplIC0gMSAgICAgICAgICAgICAg ICMgUHJlY29tcHV0ZWQgc2l6ZSBmb3IgZWFzeSBmb3IuLmluIGxvb3BpbmcKCiMgRm9yLi5pbiBs b29wcyBhcmUgZmFzdGVyIHRoYW4gLnVwdG8sIC5kb3dudG8sIC50aW1lcywgZXRjLgpmb3IgeSBp biAwLi5jb3VudF9zaXplCiAgZm9yIHggaW4gMC4uY291bnRfc2l6ZQogICAgenIgPSAwLjAKICAg IHppID0gMC4wCiAgICBjciA9ICgyLjAqeC9zaXplKS0xLjUKICAgIGNpID0gKDIuMCp5L3NpemUp LTEuMAogICAgZXNjYXBlID0gZmFsc2UKCiAgICAjIFRvIG1ha2UgdXNlIG9mIHRoZSBmb3IuLmlu IGNvZGUsIHdlIHVzZSBhIGR1bW15IHZhcmlhYmxlLAogICAgIyBsaWtlIG9uZSB3b3VsZCBpbiBD CiAgICBmb3IgZHVtbXkgaW4gMC4uSVRFUgogICAgICB0ciA9IHpyKnpyIC0gemkqemkgKyBjcgog ICAgICB0aSA9IDIqenIqemkgKyBjaQogICAgICB6ciwgemkgPSB0ciwgdGkKCiAgICAgIGlmICh6 cip6cit6aSp6aSkgPiBMSU1JVF9TUVVBUkVECiAgICAgICAgZXNjYXBlID0gdHJ1ZQogICAgICAg IGJyZWFrCiAgICAgIGVuZAogICAgZW5kCgogICAgYnl0ZV9hY2MgPSAoYnl0ZV9hY2MgPDwgMSkg fCAoZXNjYXBlID8gMGIwIDogMGIxKQogICAgYml0X251bSArPSAxCgogICAgIyBDb2RlIGlzIHZl cnkgc2ltaWxhciBmb3IgdGhlc2UgY2FzZXMsIGJ1dCB1c2luZyBzZXBhcmF0ZSBibG9ja3MKICAg ICMgZW5zdXJlcyB3ZSBza2lwIHRoZSBzaGlmdGluZyB3aGVuIGl0J3MgdW5uZWNlc3NhcnksIHdo aWNoIGlzIG1vc3QgY2FzZXMuCiAgICBpZiAoYml0X251bSA9PSA4KQogICAgICBwcmludCBieXRl X2FjYy5jaHIKICAgICAgYnl0ZV9hY2MgPSAwCiAgICAgIGJpdF9udW0gPSAwCiAgICBlbHNpZiAo eCA9PSBjb3VudF9zaXplKQogICAgICBieXRlX2FjYyA8PD0gKDggLSBiaXRfbnVtKQogICAgICBw cmludCBieXRlX2FjYy5jaHIKICAgICAgYnl0ZV9hY2MgPSAwCiAgICAgIGJpdF9udW0gPSAwCiAg ICBlbmQKICBlbmQKZW5kCgpiZWZvcmUJMjIuNjUwNTY2ODE2MzMKYmVmb3JlCTIzLjAyNjAzNDEx Njc0NQpiZWZvcmUJMjIuNzE0MTQ4OTk4MjYwNQpiZWZvcmUJMjIuODQ2MDcxOTU4NTQxOQpiZWZv cmUJMjMuMDA5ODQyMTU3MzYzOQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4 KSBbaTY4Ni1saW51eF0JMjMuNDQ3NzMxMDE4MDY2NApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0 IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMjIuOTczNjk1MDM5NzQ5MQpydWJ5IDEuOS4yZGV2 ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMjMuMTg3ODA4MDM2ODA0Mgpy dWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMjYuODQ4 NzUyMDIxNzg5NgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1s aW51eF0JMjIuODA5MzQyMTQ1OTE5OAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc29fbWF0cml4CgojIS91c3IvYmluL3J1YnkKIyAt Ki0gbW9kZTogcnVieSAtKi0KIyAkSWQ6IG1hdHJpeC1ydWJ5LmNvZGUsdiAxLjQgMjAwNC8xMS8x MyAwNzo0MjoxNCBiZnVsZ2hhbSBFeHAgJAojIGh0dHA6Ly93d3cuYmFnbGV5Lm9yZy9+ZG91Zy9z aG9vdG91dC8KCm4gPSA2MCAjSW50ZWdlcihBUkdWLnNoaWZ0IHx8IDEpCgpzaXplID0gMzAKCmRl ZiBta21hdHJpeChyb3dzLCBjb2xzKQogICAgY291bnQgPSAxCiAgICBteCA9IEFycmF5Lm5ldyhy b3dzKQogICAgKDAgLi4gKHJvd3MgLSAxKSkuZWFjaCBkbyB8Yml8CiAgICAgICAgcm93ID0gQXJy YXkubmV3KGNvbHMsIDApCiAgICAgICAgKDAgLi4gKGNvbHMgLSAxKSkuZWFjaCBkbyB8anwKICAg ICAgICAgICAgcm93W2pdID0gY291bnQKICAgICAgICAgICAgY291bnQgKz0gMQogICAgICAgIGVu ZAogICAgICAgIG14W2JpXSA9IHJvdwogICAgZW5kCiAgICBteAplbmQKCmRlZiBtbXVsdChyb3dz LCBjb2xzLCBtMSwgbTIpCiAgICBtMyA9IEFycmF5Lm5ldyhyb3dzKQogICAgKDAgLi4gKHJvd3Mg LSAxKSkuZWFjaCBkbyB8Yml8CiAgICAgICAgcm93ID0gQXJyYXkubmV3KGNvbHMsIDApCiAgICAg ICAgKDAgLi4gKGNvbHMgLSAxKSkuZWFjaCBkbyB8anwKICAgICAgICAgICAgdmFsID0gMAogICAg ICAgICAgICAoMCAuLiAoY29scyAtIDEpKS5lYWNoIGRvIHxrfAogICAgICAgICAgICAgICAgdmFs ICs9IG0xLmF0KGJpKS5hdChrKSAqIG0yLmF0KGspLmF0KGopCiAgICAgICAgICAgIGVuZAogICAg ICAgICAgICByb3dbal0gPSB2YWwKICAgICAgICBlbmQKICAgICAgICBtM1tiaV0gPSByb3cKICAg IGVuZAogICAgbTMKZW5kCgptMSA9IG1rbWF0cml4KHNpemUsIHNpemUpCm0yID0gbWttYXRyaXgo c2l6ZSwgc2l6ZSkKbW0gPSBBcnJheS5uZXcKbi50aW1lcyBkbwogICAgbW0gPSBtbXVsdChzaXpl LCBzaXplLCBtMSwgbTIpCmVuZAojIHB1dHMgIiN7bW1bMF1bMF19ICN7bW1bMl1bM119ICN7bW1b M11bMl19ICN7bW1bNF1bNF19IgoKCgpiZWZvcmUJMS44NDM4OTIwOTc0NzMxNApiZWZvcmUJMS44 Mjk5OTQ5MTY5MTU4OQpiZWZvcmUJMS45MTA3OTQ5NzMzNzM0MQpiZWZvcmUJMS45NzQxNjU5MTY0 NDI4NwpiZWZvcmUJMS45MDk4NjUxNDA5MTQ5MgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRy dW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMi4xNjQxNDc4NTM4NTEzMgpydWJ5IDEuOS4yZGV2ICgy MDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMi4wNDg0MDE4MzI1ODA1NwpydWJ5 IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS45NjM2MDg5 ODAxNzg4MwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51 eF0JMS45MzEzMTk5NTIwMTExMQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4 KSBbaTY4Ni1saW51eF0JMS45NTY4NTg4NzMzNjczMQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc29fbWV0ZW9yX2NvbnRlc3QKCiMh L3Vzci9iaW4vZW52IHJ1YnkKIwojIFRoZSBDb21wdXRlciBMYW5ndWFnZSBTaG9vdG91dAojICAg aHR0cDovL3Nob290b3V0LmFsaW90aC5kZWJpYW4ub3JnCiMgICBjb250cmlidXRlZCBieSBLZXZp biBCYXJuZXMgKFJ1Ynkgbm92aWNlKQoKIyBQUk9HUkFNOiAgdGhlIG1haW4gYm9keSBpcyBhdCB0 aGUgYm90dG9tLgojICAgMSkgcmVhZCBhYm91dCB0aGUgcHJvYmxlbSBoZXJlOiBodHRwOi8vd3d3 LTEyOC5pYm0uY29tL2RldmVsb3BlcndvcmtzL2phdmEvbGlicmFyeS9qLWphdmFvcHQvCiMgICAy KSBzZWUgaG93IEkgcmVwcmVzZW50IGEgYm9hcmQgYXMgYSBiaXRtYXNrIGJ5IHJlYWRpbmcgdGhl IGJsYW5rX2JvYXJkIGNvbW1lbnRzCiMgICAzKSByZWFkIGFzIHlvdXIgbWVudGFsIHBhdGhzIHRh a2UgeW91CgpkZWYgcHJpbnQgKmFyZ3MKZW5kCgojIGNsYXNzIHRvIHJlcHJlc2VudCBhbGwgaW5m b3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIHJvdGF0aW9uIG9mIGEgcGFydGljdWxhciBwaWVj ZQpjbGFzcyBSb3RhdGlvbgogICMgYW4gYXJyYXkgKGJ5IGxvY2F0aW9uKSBjb250YWluaW5nIGEg Yml0IG1hc2sgZm9yIGhvdyB0aGUgcGllY2UgbWFwcyBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uCiAg IyBpZiB0aGUgcm90YXRpb24gaXMgaW52YWxpZCBhdCB0aGF0IGxvY2F0aW9uIHRoZSBtYXNrIHdp bGwgY29udGFpbiBmYWxzZQogIGF0dHJfcmVhZGVyIDpzdGFydF9tYXNrcwoKICAjIG1hcHMgYSBk aXJlY3Rpb24gdG8gYSByZWxhdGl2ZSBsb2NhdGlvbi4gIHRoZXNlIGRpZmZlciBkZXBlbmRpbmcg b24gd2hldGhlciBpdCBpcyBhbiBldmVuIG9yCiAgIyBvZGQgcm93IGJlaW5nIG1hcHBlZCBmcm9t CiAgQEByb3RhdGlvbl9ldmVuX2FkZGVyID0geyA6d2VzdCA9PiAtMSwgOmVhc3QgPT4gMSwgOm53 ID0+IC03LCA6bmUgPT4gLTYsIDpzdyA9PiA1LCA6c2UgPT4gNiB9CiAgQEByb3RhdGlvbl9vZGRf YWRkZXIgPSB7IDp3ZXN0ID0+IC0xLCA6ZWFzdCA9PiAxLCA6bncgPT4gLTYsIDpuZSA9PiAtNSwg OnN3ID0+IDYsIDpzZSA9PiA3IH0KCiAgZGVmIGluaXRpYWxpemUoIGRpcmVjdGlvbnMgKQogICAg QGV2ZW5fb2Zmc2V0cywgQG9kZF9vZmZzZXRzID0gbm9ybWFsaXplX29mZnNldHMoIGdldF92YWx1 ZXMoIGRpcmVjdGlvbnMgKSkKCiAgICBAZXZlbl9tYXNrID0gbWFza19mb3Jfb2Zmc2V0cyggQGV2 ZW5fb2Zmc2V0cykKICAgIEBvZGRfbWFzayA9IG1hc2tfZm9yX29mZnNldHMoIEBvZGRfb2Zmc2V0 cykKCiAgICBAc3RhcnRfbWFza3MgPSBBcnJheS5uZXcoNjApCgogICAgIyBjcmVhdGUgdGhlIHJv dGF0aW9uYWwgbWFza3MgYnkgcGxhY2luZyB0aGUgYmFzZSBtYXNrIGF0IHRoZSBsb2NhdGlvbiBh bmQgc2VlaW5nIGlmCiAgICAjIDEpIGl0IG92ZXJsYXBzIHRoZSBib3VuZHJpZXMgYW5kIDIpIGl0 IHByb2R1Y2VzIGEgcHJ1bmFibGUgYm9hcmQuICBpZiBlaXRoZXIgb2YgdGhlc2UKICAgICMgaXMg dHJ1ZSB0aGUgcGllY2UgY2Fubm90IGJlIHBsYWNlZAogICAgMC51cHRvKDU5KSBkbyB8IG9mZnNl dCB8CiAgICAgIG1hc2sgPSBpc19ldmVuKG9mZnNldCkgPyAoQGV2ZW5fbWFzayA8PCBvZmZzZXQp IDogKEBvZGRfbWFzayA8PCBvZmZzZXQpCiAgICAgIGlmIChibGFua19ib2FyZCAmIG1hc2sgPT0g MCAmJiAhcHJ1bmFibGUoYmxhbmtfYm9hcmQgfCBtYXNrLCAwLCB0cnVlKSkgdGhlbgogICAgICAg IGltYXNrID0gY29tcHV0ZV9yZXF1aXJlZCggbWFzaywgb2Zmc2V0KQogICAgICAgIEBzdGFydF9t YXNrc1tvZmZzZXRdID0gWyBtYXNrLCBpbWFzaywgaW1hc2sgfCBtYXNrIF0KICAgICAgZWxzZQog ICAgICAgIEBzdGFydF9tYXNrc1tvZmZzZXRdID0gZmFsc2UKICAgICAgZW5kCiAgICBlbmQKICBl bmQKCiAgZGVmIGNvbXB1dGVfcmVxdWlyZWQoIG1hc2ssIG9mZnNldCApCiAgICBib2FyZCA9IGJs YW5rX2JvYXJkCiAgICAwLnVwdG8ob2Zmc2V0KSB7IHwgaSB8IGJvYXJkIHw9IDEgPDwgaSB9CiAg ICBib2FyZCB8PSBtYXNrCiAgICByZXR1cm4gMCBpZiAoIXBydW5hYmxlKGJvYXJkIHwgbWFzaywg b2Zmc2V0KSkKICAgIGJvYXJkID0gZmxvb2RfZmlsbChib2FyZCw1OCkKICAgIGNvdW50ID0gMAog ICAgaW1hc2sgPSAwCiAgICAwLnVwdG8oNTkpIGRvIHwgaSB8CiAgICAgIGlmIChib2FyZFtpXSA9 PSAwKSB0aGVuCiAgICAgICAgaW1hc2sgfD0gKDEgPDwgaSkKICAgICAgICBjb3VudCArPSAxCiAg ICAgIGVuZAogICAgZW5kCiAgICAoY291bnQgPiAwICYmIGNvdW50IDwgNSkgPyBpbWFzayA6IDAK ICBlbmQKCiAgZGVmIGZsb29kX2ZpbGwoIGJvYXJkLCBsb2NhdGlvbikKICAgIHJldHVybiBib2Fy ZCBpZiAoYm9hcmRbbG9jYXRpb25dID09IDEpCiAgICBib2FyZCB8PSAxIDw8IGxvY2F0aW9uCiAg ICByb3csIGNvbCA9IGxvY2F0aW9uLmRpdm1vZCg2KQogICAgYm9hcmQgPSBmbG9vZF9maWxsKCBi b2FyZCwgbG9jYXRpb24gLSAxKSBpZiAoY29sID4gMCkKICAgIGJvYXJkID0gZmxvb2RfZmlsbCgg Ym9hcmQsIGxvY2F0aW9uICsgMSkgaWYgKGNvbCA8IDQpCiAgICBpZiAocm93ICUgMiA9PSAwKSB0 aGVuCiAgICAgIGJvYXJkID0gZmxvb2RfZmlsbCggYm9hcmQsIGxvY2F0aW9uIC0gNykgaWYgKGNv bCA+IDAgJiYgcm93ID4gMCkKICAgICAgYm9hcmQgPSBmbG9vZF9maWxsKCBib2FyZCwgbG9jYXRp b24gLSA2KSBpZiAocm93ID4gMCkKICAgICAgYm9hcmQgPSBmbG9vZF9maWxsKCBib2FyZCwgbG9j YXRpb24gKyA2KSBpZiAocm93IDwgOSkKICAgICAgYm9hcmQgPSBmbG9vZF9maWxsKCBib2FyZCwg bG9jYXRpb24gKyA1KSBpZiAoY29sID4gMCAmJiByb3cgPCA5KQogICAgZWxzZQogICAgICBib2Fy ZCA9IGZsb29kX2ZpbGwoIGJvYXJkLCBsb2NhdGlvbiAtIDUpIGlmIChjb2wgPCA0ICYmIHJvdyA+ IDApCiAgICAgIGJvYXJkID0gZmxvb2RfZmlsbCggYm9hcmQsIGxvY2F0aW9uIC0gNikgaWYgKHJv dyA+IDApCiAgICAgIGJvYXJkID0gZmxvb2RfZmlsbCggYm9hcmQsIGxvY2F0aW9uICsgNikgaWYg KHJvdyA8IDkpCiAgICAgIGJvYXJkID0gZmxvb2RfZmlsbCggYm9hcmQsIGxvY2F0aW9uICsgNykg aWYgKGNvbCA8IDQgJiYgcm93IDwgOSkKICAgIGVuZAogICAgYm9hcmQKICBlbmQKCiAgIyBnaXZl biBhIGxvY2F0aW9uLCBwcm9kdWNlcyBhIGxpc3Qgb2YgcmVsYXRpdmUgbG9jYXRpb25zIGNvdmVy ZWQgYnkgdGhlIHBpZWNlIGF0IHRoaXMgcm90YXRpb24KICBkZWYgb2Zmc2V0cyggbG9jYXRpb24p CiAgICBpZiBpc19ldmVuKCBsb2NhdGlvbikgdGhlbgogICAgICBAZXZlbl9vZmZzZXRzLmNvbGxl Y3QgeyB8IHZhbHVlIHwgdmFsdWUgKyBsb2NhdGlvbiB9CiAgICBlbHNlCiAgICAgIEBvZGRfb2Zm c2V0cy5jb2xsZWN0IHsgfCB2YWx1ZSB8IHZhbHVlICsgbG9jYXRpb24gfQogICAgZW5kCiAgZW5k CgogICMgcmV0dXJucyBhIHNldCBvZiBvZmZzZXRzIHJlbGF0aXZlIHRvIHRoZSB0b3AtbGVmdCBt b3N0IHBpZWNlIG9mIHRoZSByb3RhdGlvbiAoYnkgZXZlbiBvciBvZGQgcm93cykKICAjIHRoaXMg aXMgaGFyZCB0byBleHBsYWluLiBpbWFnaW5lIHdlIGhhdmUgdGhpcyBwYXJ0aWFsIGJvYXJkOgog ICMgICAwIDAgMCAwIDAgeCAgICAgICAgW3Bvc2l0aW9ucyAwLTVdCiAgIyAgICAwIDAgMSAxIDAg eCAgICAgICBbcG9zaXRpb25zIDYtMTFdCiAgIyAgIDAgMCAxIDAgMCB4ICAgICAgICBbcG9zaXRp b25zIDEyLTE3XQogICMgICAgMCAxIDAgMCAwIHggICAgICAgW3Bvc2l0aW9ucyAxOC0yM10KICAj ICAgMCAxIDAgMCAwIHggICAgICAgIFtwb3NpdGlvbnMgMjQtMjldCiAgIyAgICAwIDAgMCAwIDAg eCAgICAgICBbcG9zaXRpb25zIDMwLTM1XQogICMgICAgICAgLi4uCiAgIyBUaGUgdG9wLWxlZnQg b2YgdGhlIHBpZWNlIGlzIGF0IHBvc2l0aW9uIDgsIHRoZQogICMgYm9hcmQgd291bGQgYmUgcGFz c2VkIGFzIGEgc2V0IG9mIHBvc2l0aW9ucyAodmFsdWVzIGFycmF5KSBjb250YWluaW5nIFs4LDks MTQsMTksMjVdIG5vdCBuZWNlc3NhcmlseSBpbiB0aGF0CiAgIyBzb3J0ZWQgb3JkZXIuICBTaW5j ZSB0aGF0IGFycmF5IHN0YXJ0cyBvbiBhbiBvZGQgcm93LCB0aGUgb2Zmc2V0cyBmb3IgYW4gb2Rk IHJvdyBhcmU6IFswLDEsNiwxMSwxN10gb2J0YWluZWQKICAjIGJ5IHN1YnRyYWN0aW5nIDggZnJv bSBldmVyeXRoaW5nLiAgTm93IGltYWdpbmUgdGhlIHBpZWNlIHNoaWZ0ZWQgdXAgYW5kIHRvIHRo ZSByaWdodCBzbyBpdCdzIG9uIGFuIGV2ZW4gcm93OgogICMgICAwIDAgMCAxIDEgeCAgICAgICAg W3Bvc2l0aW9ucyAwLTVdCiAgIyAgICAwIDAgMSAwIDAgeCAgICAgICBbcG9zaXRpb25zIDYtMTFd CiAgIyAgIDAgMCAxIDAgMCB4ICAgICAgICBbcG9zaXRpb25zIDEyLTE3XQogICMgICAgMCAxIDAg MCAwIHggICAgICAgW3Bvc2l0aW9ucyAxOC0yM10KICAjICAgMCAwIDAgMCAwIHggICAgICAgIFtw b3NpdGlvbnMgMjQtMjldCiAgIyAgICAwIDAgMCAwIDAgeCAgICAgICBbcG9zaXRpb25zIDMwLTM1 XQogICMgICAgICAgLi4uCiAgIyBOb3cgdGhlIHBvc2l0aW9ucyBhcmUgWzMsNCw4LDE0LDE5XSB3 aGljaCBhZnRlciBzdWJ0cmFjdGluZyB0aGUgbG93ZXN0IHZhbHVlICgzKSBnaXZlcyBbMCwxLDUs MTEsMTZdIHRodXMsIHRoZQogICMgb2Zmc2V0cyBmb3IgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIGFy ZSAoaW4gZXZlbiwgb2RkIG9yZGVyKSBbMCwxLDUsMTEsMTZdLFswLDEsNiwxMSwxN10gd2hpY2gg aXMgd2hhdAogICMgdGhpcyBmdW5jdGlvbiB3b3VsZCByZXR1cm4KICBkZWYgbm9ybWFsaXplX29m ZnNldHMoIHZhbHVlcykKICAgIG1pbiA9IHZhbHVlcy5taW4KICAgIGV2ZW5fbWluID0gaXNfZXZl bihtaW4pCiAgICBvdGhlcl9taW4gPSBldmVuX21pbiA/IG1pbiArIDYgOiBtaW4gKyA3CiAgICBv dGhlcl92YWx1ZXMgPSB2YWx1ZXMuY29sbGVjdCBkbyB8IHZhbHVlIHwKICAgICAgaWYgaXNfZXZl bih2YWx1ZSkgdGhlbgogICAgICAgIHZhbHVlICsgNiAtIG90aGVyX21pbgogICAgICBlbHNlCiAg ICAgICAgdmFsdWUgKyA3IC0gb3RoZXJfbWluCiAgICAgIGVuZAogICAgZW5kCiAgICB2YWx1ZXMu Y29sbGVjdCEgeyB8IHZhbHVlIHwgdmFsdWUgLSBtaW4gfQoKICAgIGlmIGV2ZW5fbWluIHRoZW4K ICAgICAgW3ZhbHVlcywgb3RoZXJfdmFsdWVzXQogICAgZWxzZQogICAgICBbb3RoZXJfdmFsdWVz LCB2YWx1ZXNdCiAgICBlbmQKICBlbmQKCiAgIyBwcm9kdWNlIGEgYml0bWFzayByZXByZXNlbnRh dGlvbiBvZiBhbiBhcnJheSBvZiBvZmZzZXQgbG9jYXRpb25zCiAgZGVmIG1hc2tfZm9yX29mZnNl dHMoIG9mZnNldHMgKQogICAgbWFzayA9IDAKICAgIG9mZnNldHMuZWFjaCB7IHwgdmFsdWUgfCBt YXNrID0gbWFzayArICggMSA8PCB2YWx1ZSApIH0KICAgIG1hc2sKICBlbmQKCiAgIyBmaW5kcyBh ICJzYWZlIiBwb3NpdGlvbiB0aGF0IGEgcG9zaXRpb24gYXMgZGVzY3JpYmVkIGJ5IGEgbGlzdCBv ZiBkaXJlY3Rpb25zIGNhbiBiZSBwbGFjZWQKICAjIHdpdGhvdXQgZmFsbGluZyBvZmYgYW55IGVk Z2Ugb2YgdGhlIGJvYXJkLiAgdGhlIHZhbHVlcyByZXR1cm5lZCBhIGxvY2F0aW9uIHRvIHBsYWNl IHRoZSBmaXJzdCBwaWVjZQogICMgYXQgc28gaXQgd2lsbCBmaXQgYWZ0ZXIgbWFraW5nIHRoZSBk ZXNjcmliZWQgbW92ZXMKICBkZWYgc3RhcnRfYWRqdXN0KCBkaXJlY3Rpb25zICkKICAgIHNvdXRo ID0gZWFzdCA9IDA7CiAgICBkaXJlY3Rpb25zLmVhY2ggZG8gfCBkaXJlY3Rpb24gfAogICAgICBl YXN0ICs9IDEgaWYgKCBkaXJlY3Rpb24gPT0gOnN3IHx8IGRpcmVjdGlvbiA9PSA6bncgfHwgZGly ZWN0aW9uID09IDp3ZXN0ICkKICAgICAgc291dGggKz0gMSBpZiAoIGRpcmVjdGlvbiA9PSA6bncg fHwgZGlyZWN0aW9uID09IDpuZSApCiAgICBlbmQKICAgIHNvdXRoICogNiArIGVhc3QKICBlbmQK CiAgIyBnaXZlbiBhIHNldCBvZiBkaXJlY3Rpb25zIHBsYWNlcyB0aGUgcGllY2UgKGFzIGRlZmlu ZWQgYnkgYSBzZXQgb2YgZGlyZWN0aW9ucykgb24gdGhlIGJvYXJkIGF0CiAgIyBhIGxvY2F0aW9u IHRoYXQgd2lsbCBub3QgdGFrZSBpdCBvZmYgdGhlIGVkZ2UKICBkZWYgZ2V0X3ZhbHVlcyAoIGRp cmVjdGlvbnMgKQogICAgc3RhcnQgPSBzdGFydF9hZGp1c3QoZGlyZWN0aW9ucykKICAgIHZhbHVl cyA9IFsgc3RhcnQgXQogICAgZGlyZWN0aW9ucy5lYWNoIGRvIHwgZGlyZWN0aW9uIHwKICAgICAg aWYgKHN0YXJ0ICUgMTIgPj0gNikgdGhlbgogICAgICAgIHN0YXJ0ICs9IEBAcm90YXRpb25fb2Rk X2FkZGVyW2RpcmVjdGlvbl0KICAgICAgZWxzZQogICAgICAgIHN0YXJ0ICs9IEBAcm90YXRpb25f ZXZlbl9hZGRlcltkaXJlY3Rpb25dCiAgICAgIGVuZAogICAgICB2YWx1ZXMgKz0gWyBzdGFydCBd CiAgICBlbmQKCiAgICAjIHNvbWUgbW92ZXMgdGFrZSB5b3UgYmFjayB0byBhbiBleGlzdGluZyBs b2NhdGlvbiwgd2UnbGwgc3RyaXAgZHVwbGljYXRlcwogICAgdmFsdWVzLnVuaXEKICBlbmQKZW5k CgojIGRlc2NyaWJlcyBhIHBpZWNlIGFuZCBjYWNoZXMgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHJv dGF0aW9ucyB0byBhcyB0byBiZSBlZmZpY2llbnQgZm9yIGl0ZXJhdGlvbgojIEFUVFJJQlVURVM6 CiMgICByb3RhdGlvbnMgLS0gYWxsIHRoZSByb3RhdGlvbnMgb2YgdGhlIHBpZWNlCiMgICB0eXBl IC0tIGEgbnVtZWljICJuYW1lIiBvZiB0aGUgcGllY2UKIyAgIG1hc2tzIC0tIGFuIGFycmF5IGJ5 IGxvY2F0aW9uIG9mIGFsbCBsZWdhbCByb3RhdGlvbmFsIG1hc2tzIChhIG4gaW5uZXIgYXJyYXkp IGZvciB0aGF0IGxvY2F0aW9uCiMgICBwbGFjZWQgLS0gdGhlIG1hc2sgdGhhdCB0aGlzIHBpZWNl IHdhcyBsYXN0IHBsYWNlZCBhdCAobm90IGEgbG9jYXRpb24sIGJ1dCB0aGUgYWN0dWFsIG1hc2sg dXNlZCkKY2xhc3MgUGllY2UKICBhdHRyX3JlYWRlciA6cm90YXRpb25zLCA6dHlwZSwgOm1hc2tz CiAgYXR0cl9hY2Nlc3NvciA6cGxhY2VkCgogICMgdHJhbnNmb3JtIGhhc2hlcyB0aGF0IGNoYW5n ZSBvbmUgZGlyZWN0aW9uIGludG8gYW5vdGhlciB3aGVuIHlvdSBlaXRoZXIgZmxpcCBvciByb3Rh dGUgYSBzZXQgb2YgZGlyZWN0aW9ucwogIEBAZmxpcF9jb252ZXJ0ZXIgPSB7IDp3ZXN0ID0+IDp3 ZXN0LCA6ZWFzdCA9PiA6ZWFzdCwgOm53ID0+IDpzdywgOm5lID0+IDpzZSwgOnN3ID0+IDpudywg OnNlID0+IDpuZSB9CiAgQEByb3RhdGVfY29udmVydGVyID0geyA6d2VzdCA9PiA6bncsIDplYXN0 ID0+IDpzZSwgOm53ID0+IDpuZSwgOm5lID0+IDplYXN0LCA6c3cgPT4gOndlc3QsIDpzZSA9PiA6 c3cgfQoKICBkZWYgaW5pdGlhbGl6ZSggZGlyZWN0aW9ucywgdHlwZSApCiAgICBAdHlwZSA9IHR5 cGUKICAgIEByb3RhdGlvbnMgPSBBcnJheS5uZXcoKTsKICAgIEBtYXAgPSB7fQoKICAgIGdlbmVy YXRlX3JvdGF0aW9ucyggZGlyZWN0aW9ucyApCiAgICBkaXJlY3Rpb25zLmNvbGxlY3QhIHsgfCB2 YWx1ZSB8IEBAZmxpcF9jb252ZXJ0ZXJbdmFsdWVdIH0KICAgIGdlbmVyYXRlX3JvdGF0aW9ucygg ZGlyZWN0aW9ucyApCgogICAgIyBjcmVhdGVzIHRoZSBtYXNrcyBBTkQgYSBtYXAgdGhhdCByZXR1 cm5zIFtsb2NhdGlvbiwgcm90YXRpb25dIGZvciBhbnkgZ2l2ZW4gbWFzawogICAgIyB0aGlzIGlz IHVzZWQgd2hlbiBhIGJvYXJkIGlzIGZvdW5kIGFuZCB3ZSB3YW50IHRvIGRyYXcgaXQsIG90aGVy d2lzZSB0aGUgbWFwIGlzIHVudXNlZAogICAgQG1hc2tzID0gQXJyYXkubmV3KCk7CiAgICAwLnVw dG8oNTkpIGRvIHwgaSB8CiAgICAgIGV2ZW4gPSB0cnVlCiAgICAgIEBtYXNrc1tpXSA9IEByb3Rh dGlvbnMuY29sbGVjdCBkbyB8IHJvdGF0aW9uIHwKICAgICAgICBtYXNrID0gcm90YXRpb24uc3Rh cnRfbWFza3NbaV0KICAgICAgICBAbWFwW21hc2tbMF1dID0gWyBpLCByb3RhdGlvbiBdIGlmICht YXNrKQogICAgICAgIG1hc2sgfHwgbmlsCiAgICAgIGVuZAogICAgICBAbWFza3NbaV0uY29tcGFj dCEKICAgIGVuZAogIGVuZAoKICAjIHJvdGF0ZXMgYSBzZXQgb2YgZGlyZWN0aW9ucyB0aHJvdWdo IGFsbCBzaXggYW5nbGVzIGFuZCBhZGRzIGEgUm90YXRpb24gdG8gdGhlIGxpc3QgZm9yIGVhY2gg b25lCiAgZGVmIGdlbmVyYXRlX3JvdGF0aW9ucyggZGlyZWN0aW9ucyApCiAgICA2LnRpbWVzIGRv CiAgICAgIHJvdGF0aW9ucy5wdXNoKCBSb3RhdGlvbi5uZXcoZGlyZWN0aW9ucykpCiAgICAgIGRp cmVjdGlvbnMuY29sbGVjdCEgeyB8IHZhbHVlIHwgQEByb3RhdGVfY29udmVydGVyW3ZhbHVlXSB9 CiAgICBlbmQKICBlbmQKCiAgIyBnaXZlbiBhIGJvYXJkIHN0cmluZywgYWRkcyB0aGlzIHBpZWNl IHRvIHRoZSBib2FyZCBhdCB3aGF0ZXZlciBsb2NhdGlvbi9yb3RhdGlvbgogICMgaW1wb3J0YW50 OiB0aGUgb3V0Ym91bmQgYm9hcmQgc3RyaW5nIGlzIDUgd2lkZSwgdGhlIG5vcm1hbCBsb2NhdGlv biBub3RhdGlvbiBpcyBzaXggd2lkZSAocGFkZGVkKQogIGRlZiBmaWxsX3N0cmluZyggYm9hcmRf c3RyaW5nKQogICAgbG9jYXRpb24sIHJvdGF0aW9uID0gQG1hcFtAcGxhY2VkXQogICAgcm90YXRp b24ub2Zmc2V0cyhsb2NhdGlvbikuZWFjaCBkbyB8IG9mZnNldCB8CiAgICAgIHJvdywgY29sID0g b2Zmc2V0LmRpdm1vZCg2KQogICAgICBib2FyZF9zdHJpbmdbIHJvdyo1ICsgY29sLCAxIF0gPSBA dHlwZS50b19zCiAgICBlbmQKICBlbmQKZW5kCgojIGEgYmxhbmsgYml0IGJvYXJkIGhhdmluZyB0 aGlzIGZvcm06CiMKIyAgICAwIDAgMCAwIDAgMQojICAgICAwIDAgMCAwIDAgMQojICAgIDAgMCAw IDAgMCAxCiMgICAgIDAgMCAwIDAgMCAxCiMgICAgMCAwIDAgMCAwIDEKIyAgICAgMCAwIDAgMCAw IDEKIyAgICAwIDAgMCAwIDAgMQojICAgICAwIDAgMCAwIDAgMQojICAgIDAgMCAwIDAgMCAxCiMg ICAgIDAgMCAwIDAgMCAxCiMgICAgMSAxIDEgMSAxIDEKIwojIHdoZXJlIGxlZnQgbGVzdCBzaWdu aWZpY2FudCBiaXQgaXMgdGhlIHRvcCBsZWZ0IGFuZCB0aGUgbW9zdCBzaWduaWZpY2FudCBpcyB0 aGUgbG93ZXIgcmlnaHQKIyB0aGUgYWN0dWFsIGJvYXJkIG9ubHkgY29uc2lzdHMgb2YgdGhlIDAg cGxhY2VzLCB0aGUgMSBwbGFjZXMgYXJlIGJsb2NrZXJzIHRvIGtlZXAgdGhpbmdzIGZyb20gcnVu bmluZwojIG9mZiB0aGUgZWRnZXMgb3IgYm90dG9tCmRlZiBibGFua19ib2FyZAogIDBiMTExMTEx MTAwMDAwMTAwMDAwMTAwMDAwMTAwMDAwMTAwMDAwMTAwMDAwMTAwMDAwMTAwMDAwMTAwMDAwMTAw MDAwCmVuZAoKZGVmIGZ1bGxfYm9hcmQKICAwYjExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQplbmQKCiMgZGV0ZXJtaW5lcyBp ZiBhIGxvY2F0aW9uIChiaXQgcG9zaXRpb24pIGlzIGluIGFuIGV2ZW4gcm93CmRlZiBpc19ldmVu KCBsb2NhdGlvbikKICAobG9jYXRpb24gJSAxMikgPCA2CmVuZAoKIyBzdXBwb3J0IGZ1bmN0aW9u IHRoYXQgY3JlYXRlIHRocmVlIHV0aWxpdHkgbWFwczoKIyAgJGNvbnZlcnRlciAtLSBmb3IgZWFj aCByb3cgYW4gYXJyYXkgdGhhdCBtYXBzIGEgZml2ZSBiaXQgcm93ICh2aWEgYXJyYXkgbWFwcGlu ZykKIyAgICAgICAgICAgICAgICB0byB0aGUgYSBhIGZpdmUgYml0IHJlcHJlc2VudGF0aW9uIG9m IHRoZSBiaXRzIGJlbG93IGl0CiMgICRiaXRfY291bnQgLS0gbWFwcyBhIGZpdmUgYml0IHJvdyAo dmlhIGFycmF5IG1hcHBpbmcpIHRvIHRoZSBudW1iZXIgb2YgMXMgaW4gdGhlIHJvdwojICBAQG5l d19yZWdpb25zIC0tIG1hcHMgYSBmaXZlIGJpdCByb3cgKHZpYSBhcnJheSBtYXBwaW5nKSB0byBh biBhcnJheSBvZiAicmVnaW9uIiBhcnJheXMKIyAgICAgICAgICAgICAgICAgICBhIHJlZ2lvbiBh cnJheSBoYXMgdGhyZWUgdmFsdWVzIHRoZSBmaXJzdCBpcyBhIG1hc2sgb2YgYml0cyBpbiB0aGUg cmVnaW9uLAojICAgICAgICAgICAgICAgICAgIHRoZSBzZWNvbmQgaXMgdGhlIGNvdW50IG9mIHRo b3NlIGJpdHMgYW5kIHRoZSB0aGlyZCBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0CiMgICAgICAg ICAgICAgICAgICAgZXhhbXBsZXM6CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAwYjEwMDEw ID0+IFsgMGIwMTEwMCwgMiwgMGIwMTEwMCBdLCBbIDBiMDAwMDEsIDEsIDBiMDAwMDFdCiMgICAg ICAgICAgICAgICAgICAgICAgICAgICAwYjAxMDEwID0+IFsgMGIxMDAwMCwgMSwgMGIxMDAwMCBd LCBbIDBiMDAxMDAsIDEsIDBiMDAxMDAgXSwgWyAwYjAwMDAxLCAxLCAwYjAwMDAxXQojICAgICAg ICAgICAgICAgICAgICAgICAgICAgMGIxMDAwMSA9PiBbIDBiMDExMTAsIDMsIDBiMDExMTAgXQpk ZWYgY3JlYXRlX2NvbGxlY3Rvcl9zdXBwb3J0CiAgb2RkX21hcCA9IFswYjExLCAwYjExMCwgMGIx MTAwLCAwYjExMDAwLCAwYjEwMDAwXQogIGV2ZW5fbWFwID0gWzBiMSwgMGIxMSwgMGIxMTAsIDBi MTEwMCwgMGIxMTAwMF0KCiAgYWxsX29kZHMgPSBBcnJheS5uZXcoMGIxMDAwMDApCiAgYWxsX2V2 ZW5zID0gQXJyYXkubmV3KDBiMTAwMDAwKQogIGJpdF9jb3VudHMgPSBBcnJheS5uZXcoMGIxMDAw MDApCiAgbmV3X3JlZ2lvbnMgPSBBcnJheS5uZXcoMGIxMDAwMDApCiAgMC51cHRvKDBiMTExMTEp IGRvIHwgaSB8CiAgICBiaXRfY291bnQgPSBvZGQgPSBldmVuID0gMAogICAgMC51cHRvKDQpIGRv IHwgYml0IHwKICAgICAgaWYgKGlbYml0XSA9PSAxKSB0aGVuCiAgICAgICAgYml0X2NvdW50ICs9 IDEKICAgICAgICBvZGQgfD0gb2RkX21hcFtiaXRdCiAgICAgICAgZXZlbiB8PSBldmVuX21hcFti aXRdCiAgICAgIGVuZAogICAgZW5kCiAgICBhbGxfb2Rkc1tpXSA9IG9kZAogICAgYWxsX2V2ZW5z W2ldID0gZXZlbgogICAgYml0X2NvdW50c1tpXSA9IGJpdF9jb3VudAogICAgbmV3X3JlZ2lvbnNb aV0gPSBjcmVhdGVfcmVnaW9ucyggaSkKICBlbmQKCiAgJGNvbnZlcnRlciA9IFtdCiAgMTAudGlt ZXMgeyB8IHJvdyB8ICRjb252ZXJ0ZXIucHVzaCgocm93ICUgMiA9PSAwKSA/IGFsbF9ldmVucyA6 IGFsbF9vZGRzKSB9CiAgJGJpdF9jb3VudHMgPSBiaXRfY291bnRzCiAgJHJlZ2lvbnMgPSBuZXdf cmVnaW9ucy5jb2xsZWN0IHsgfCBzZXQgfCBzZXQuY29sbGVjdCB7IHwgdmFsdWUgfCBbIHZhbHVl LCBiaXRfY291bnRzW3ZhbHVlXSwgdmFsdWVdIH0gfQplbmQKCiMgZGV0ZXJtaW5lcyBpZiBhIGJv YXJkIGlzIHB1bmFibGUsIG1lYW5pbmcgdGhhdCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0 IGl0CiMgY2FuIGJlIGZpbGxlZCB1cCB3aXRoIHBpZWNlcy4gIEEgYm9hcmQgaXMgcHJ1bmFibGUg aWYgdGhlcmUgaXMgYSBncm91cGluZyBvZiB1bmZpbGxlZCBzcGFjZXMKIyB0aGF0IGFyZSBub3Qg YSBtdWx0aXBsZSBvZiBmaXZlLiAgVGhlIGZvbGxvd2luZyBib2FyZCBpcyBhbiBleGFtcGxlIG9m IGEgcHJ1bmFibGUgYm9hcmQ6CiMgICAgMCAwIDEgMCAwCiMgICAgIDAgMSAwIDAgMAojICAgIDEg MSAwIDAgMAojICAgICAwIDEgMCAwIDAKIyAgICAwIDAgMCAwIDAKIyAgICAgICAuLi4KIwojIFRo aXMgYm9hcmQgaXMgcHJ1bmFibGUgYmVjYXVzZSB0aGUgdG9wIGxlZnQgY29ybmVyIGlzIG9ubHkg MyBiaXRzIGluIGFyZWEsIG5vIHBpZWNlIHdpbGwgZXZlciBmaXQgaXQKIyBwYXJhbWV0ZXJzOgoj ICAgYm9hcmQgLS0gYW4gaW5pdGlhbCBiaXQgYm9hcmQgKDYgYml0IHBhZGRlZCByb3dzLCBzZWUg YmxhbmtfYm9hcmQgZm9yIGZvcm1hdCkKIyAgIGxvY2F0aW9uIC0tIHN0YXJ0aW5nIGxvY2F0aW9u LCBldmVyeXRoaW5nIGFib3ZlIGFuZCB0byB0aGUgbGVmdCBpcyBhbHJlYWR5IGZ1bGwKIyAgIHNs b3R0aW5nIC0tIHNldCB0byB0cnVlIG9ubHkgd2hlbiB0ZXN0aW5nIGluaXRpYWwgcGllY2VzLCB3 aGVuIGZpbGxpbmcgbm9ybWFsbHkKIyAgICAgICAgICAgICAgIGFkZGl0aW9uYWwgYXNzdW1wdGlv bnMgYXJlIHBvc3NpYmxlCiMKIyBBbGdvcml0aG06CiMgICAgVGhlIGFsZ29yaXRobSBzdGFydHMg YXQgdGhlIHRvcCByb3cgKGFzIGRldGVybWluZWQgYnkgbG9jYXRpb24pIGFuZCBpdGVyYXRlcyBh IHJvdyBhdCBhIHRpbWUKIyAgICBtYWludGFpbm5nIGNvdW50cyBvZiBhY3RpdmUgb3BlbiBhcmVh cyAoa2VwdCBpbiB0aGUgY29sbGVjdG9yIGFycmF5KSBlYWNoIGNvbGxlY3RvciBjb250YWlucwoj ICAgIHRocmVlIHZhbHVlcyBhdCB0aGUgc3RhcnQgb2YgYW4gaXRlcmF0aW9uOgojICAgICAgICAg IDA6IG1hc2sgb2YgYml0cyB0aGF0IHdvdWxkIGJlIGFkamFjZW50IHRvIHRoZSBjb2xsZWN0b3Ig aW4gdGhpcyByb3cKIyAgICAgICAgICAxOiB0aGUgbnVtYmVyIG9mIGJpdHMgY29sbGVjdGVkIHNv IGZhcgojICAgICAgICAgIDI6IGEgc2NyYXRjaCBzcGFjZSBzdGFydGluZyBhcyB6ZXJvLCBidXQg dXNlZCBkdXJpbmcgdGhlIGNvbXB1dGF0aW9uIHRvIHJlcHJlc2VudAojICAgICAgICAgICAgIHRo ZSBlbXB0eSBiaXRzIGluIHRoZSBuZXcgcm93IHRoYXQgYXJlIGFkamFjZW50IChwb3NpdGlvbiAw KQojICBUaGUgZXhhY3QgcHJvY2VkdXJlIGlzIGRlc2NyaWJlZCBpbi1jb2RlCmRlZiBwcnVuYWJs ZSggYm9hcmQsIGxvY2F0aW9uLCBzbG90dGluZyA9IGZhbHNlKQogIGNvbGxlY3RvcnMgPSBbXQog ICMgbG9vcCBhY2Nyb3NzIHRoZSByb3dzCiAgKGxvY2F0aW9uIC8gNikudG9faS51cHRvKDkpIGRv IHwgcm93X29uIHwKICAgICMgb2J0YWluIGEgc2V0IG9mIHJlZ2lvbnMgcmVwcmVzZW50aW5nIHRo ZSBiaXRzIG9mIHRoZSBjdXJlbnQgcm93LgogICAgcmVnaW9ucyA9ICRyZWdpb25zWyhib2FyZCA+ PiAocm93X29uICogNikpICYgMGIxMTExMV0KICAgIGNvbnZlcnRlciA9ICRjb252ZXJ0ZXJbcm93 X29uXQoKICAgICMgdHJhY2sgdGhlIG51bWJlciBvZiBjb2xsZWN0b3JzIGF0IHRoZSBzdGFydCBv ZiB0aGUgY3ljbGUgc28gdGhhdAogICAgIyB3ZSBkb24ndCBjb21wdXRlIGFnYWluc3QgbmV3bHkg Y3JlYXRlZCBjb2xsZWN0b3JzLCBvbmx5IGV4aXN0aW5nIGNvbGxlY3RvcnMKICAgIGluaXRpYWxf Y29sbGVjdG9yX2NvdW50ID0gY29sbGVjdG9ycy5sZW5ndGgKCiAgICAjIGxvb3AgYWdhaW5zdCB0 aGUgcmVnaW9ucy4gIEZvciBlYWNoIHJlZ2lvbiBvZiB0aGUgcm93CiAgICAjIHdlIHdpbGwgc2Vl IGlmIGl0IGNvbm5lY3RzIHRvIG9uZSBvciBtb3JlIGV4aXN0aW5nIGNvbGxlY3RvcnMuCiAgICAj IGlmIGl0IGNvbm5lY3RzIHRvIDEgY29sbGVjdG9yLCB0aGUgYml0cyBmcm9tIHRoZSByZWdpb24g YXJlIGFkZGVkIHRvIHRoZQogICAgIyBiaXRzIG9mIHRoZSBjb2xsZWN0b3IgYW5kIHRoZSBtYXNr IGlzIHBsYWNlZCBpbiBjb2xsZWN0b3JbMl0KICAgICMgSWYgdGhlIHJlZ2lvbiBvdmVybGFwcyBt b3JlIHRoYW4gb25lIGNvbGxlY3RvciB0aGVuIGFsbCB0aGUgY29sbGVjdG9ycwogICAgIyBpdCBv dmVybGFwcyB3aXRoIGFyZSBtZXJnZWQgaW50byB0aGUgZmlyc3Qgb25lICh0aGUgb3RoZXJzIGFy ZSBzZXQgdG8gbmlsIGluIHRoZSBhcnJheSkKICAgICMgaWYgTk8gY29sbGVjdG9ycyBhcmUgZm91 bmQgdGhlbiB0aGUgcmVnaW9uIGlzIGNvcGllZCBhcyBhIG5ldyBjb2xsZWN0b3IKICAgIHJlZ2lv bnMuZWFjaCBkbyB8IHJlZ2lvbiB8CiAgICAgIGNvbGxlY3Rvcl9mb3VuZCA9IG5pbAogICAgICBy ZWdpb25fbWFzayA9IHJlZ2lvblsyXQogICAgICBpbml0aWFsX2NvbGxlY3Rvcl9jb3VudC50aW1l cyBkbyB8IGNvbGxlY3Rvcl9udW0gfAogICAgICAgIGNvbGxlY3RvciA9IGNvbGxlY3RvcnNbY29s bGVjdG9yX251bV0KICAgICAgICBpZiAoY29sbGVjdG9yKSB0aGVuCiAgICAgICAgICBjb2xsZWN0 b3JfbWFzayA9IGNvbGxlY3RvclswXQogICAgICAgICAgaWYgKGNvbGxlY3Rvcl9tYXNrICYgcmVn aW9uX21hc2sgIT0gMCkgdGhlbgogICAgICAgICAgICBpZiAoY29sbGVjdG9yX2ZvdW5kKSB0aGVu CiAgICAgICAgICAgICAgY29sbGVjdG9yX2ZvdW5kWzBdIHw9IGNvbGxlY3Rvcl9tYXNrCiAgICAg ICAgICAgICAgY29sbGVjdG9yX2ZvdW5kWzFdICs9IGNvbGxlY3RvclsxXQogICAgICAgICAgICAg IGNvbGxlY3Rvcl9mb3VuZFsyXSB8PSBjb2xsZWN0b3JbMl0KICAgICAgICAgICAgICBjb2xsZWN0 b3JzW2NvbGxlY3Rvcl9udW1dID0gbmlsCiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBj b2xsZWN0b3JfZm91bmQgPSBjb2xsZWN0b3IKICAgICAgICAgICAgICBjb2xsZWN0b3JbMV0gKz0g cmVnaW9uWzFdCiAgICAgICAgICAgICAgY29sbGVjdG9yWzJdIHw9IHJlZ2lvbl9tYXNrCiAgICAg ICAgICAgIGVuZAogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgICBpZiAo Y29sbGVjdG9yX2ZvdW5kID09IG5pbCkgdGhlbgogICAgICAgIGNvbGxlY3RvcnMucHVzaChBcnJh eS5uZXcocmVnaW9uKSkKICAgICAgZW5kCiAgICBlbmQKCiAgICAjIGNoZWNrIHRoZSBleGlzdGlu ZyBjb2xsZWN0b3JzLCBpZiBhbnkgY29sbGVjdG9yIG92ZXJsYXBwZWQgbm8gYml0cyBpbiB0aGUg cmVnaW9uIGl0cyBbMl0gdmFsdWUgd2lsbAogICAgIyBiZSB6ZXJvLiAgVGhlIHNpemUgb2YgYW55 IHN1Y2ggcmVhYXNvbiBpcyB0ZXN0ZWQgaWYgaXQgaXMgbm90IGEgbXVsaXBsZSBvZiBmaXZlIHRy dWUgaXMgcmV0dXJuZWQgc2luY2UKICAgICMgdGhlIGJvYXJkIGlzIHBydW5hYmxlLiAgaWYgaXQg aXMgYSBtdWx0aXBsZSBvZiBmaXZlIGl0IGlzIHJlbW92ZWQuCiAgICAjIENvbGxlY3RvciB0aGF0 IGFyZSBzdGlsbCBhY3RpdmUgaGF2ZSBhIG5ldyBhZGphY2VudCB2YWx1ZSBbMF0gc2V0IGJhc2Vk IG4gdGhlIG1hdGNoZWQgYml0cwogICAgIyBhbmQgaGF2ZSBbMl0gY2xlYXJlZCBvdXQgZm9yIHRo ZSBuZXh0IGN5Y2xlLgogICAgY29sbGVjdG9ycy5sZW5ndGgudGltZXMgZG8gfCBjb2xsZWN0b3Jf bnVtIHwKICAgICAgY29sbGVjdG9yID0gY29sbGVjdG9yc1tjb2xsZWN0b3JfbnVtXQogICAgICBp ZiAoY29sbGVjdG9yKSB0aGVuCiAgICAgICAgaWYgKGNvbGxlY3RvclsyXSA9PSAwKSB0aGVuCiAg ICAgICAgICByZXR1cm4gdHJ1ZSBpZiAoY29sbGVjdG9yWzFdICUgNSAhPSAwKQogICAgICAgICAg Y29sbGVjdG9yc1tjb2xsZWN0b3JfbnVtXSA9IG5pbAogICAgICAgIGVsc2UKICAgICAgICAgICMg aWYgYSBjb2xsZWN0b3IgbWF0Y2hlcyBhbGwgYml0cyBpbiB0aGUgcm93IHRoZW4gd2UgY2FuIHJl dHVybiB1bnBydW5hYmxlIGVhcmx5IGZvciB0aGUKICAgICAgICAgICMgZm9sbHdpbmcgcmVhc29u czoKICAgICAgICAgICMgICAgMSkgdGhlcmUgY2FuIGJlIG5vIG1vcmUgdW5hdmFpbGFibGUgYml0 cyBiaW5jZSB3ZSBmaWxsIGZyb20gdGhlIHRvcCBsZWZ0IGRvd253YXJkCiAgICAgICAgICAjICAg IDIpIGFsbCBwcmV2aW91cyByZWdpb25zIGhhdmUgYmVlbiBjbG9zZWQgb3Igam9pbmVkIHNvIG9u bHkgdGhpcyByZWdpb24gY2FuIGZhaWwKICAgICAgICAgICMgICAgMykgdGhpcyByZWdpb24gbXVz dCBiZSBnb29kIHNpbmNlIHRoZXJlIGNhbiBuZXZlciBiZSBvbmx5IDEgcmVnaW9uIHRoYXQgaXMg bnVvdAogICAgICAgICAgIyAgICAgICBhIG11bHRpcGxlIG9mIGZpdmUKICAgICAgICAgICMgdGhp cyBydWxlIG9ubHkgYXBwbGllcyB3aGVuIGZpbGxpbmcgbm9ybWFsbHksIHNvIHdlIGlnbm9yZSB0 aGUgcnVsZSBpZiB3ZSBhcmUgInNsb3R0aW5nIgogICAgICAgICAgIyBpbiBwaWVjZXMgdG8gc2Vl IHdoYXQgY29uZmlndXJhdGlvbnMgd29yayBmb3IgdGhlbSAodGhlIG9ubHkgb3RoZXIgdGltZSB0 aGlzIGFsZ29yaXRobSBpcyB1c2VkKS4KICAgICAgICAgIHJldHVybiBmYWxzZSBpZiAoY29sbGVj dG9yWzJdID09IDBiMTExMTEgJiYgIXNsb3R0aW5nKQogICAgICAgICAgY29sbGVjdG9yWzBdID0g Y29udmVydGVyW2NvbGxlY3RvclsyXV0KICAgICAgICAgIGNvbGxlY3RvclsyXSA9IDAKICAgICAg ICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICAjIGdldCByaWQgb2YgYWxsIHRoZSBlbXB0eSBj b252ZXJ0ZXJzIGZvciB0aGUgbmV4dCByb3VuZAogICAgY29sbGVjdG9ycy5jb21wYWN0IQogIGVu ZAogIHJldHVybiBmYWxzZSBpZiAoY29sbGVjdG9ycy5sZW5ndGggPD0gMSkgIyAxIGNvbGxlY3Rv ciBvciBsZXNzIGFuZCB0aGUgcmVnaW9uIGlzIGZpbmUKICBjb2xsZWN0b3JzLmFueT8geyB8IGNv bGxlY3RvciB8IChjb2xsZWN0b3JbMV0gJSA1KSAhPSAwIH0gIyBtb3JlIHRoYW4gMSBhbmQgd2Ug dGVzdCB0aGVtIGFsbCBmb3IgYmFkIHNpemUKZW5kCgojIGNyZWF0ZXMgYSByZWdpb24gZ2l2ZW4g YSByb3cgbWFzay4gIHNlZSBwcnVuYWJsZSBmb3Igd2hhdCBhICJyZWdpb24iIGlzCmRlZiBjcmVh dGVfcmVnaW9ucyggdmFsdWUgKQogIHJlZ2lvbnMgPSBbXQogIGN1cl9yZWdpb24gPSAwCiAgNS50 aW1lcyBkbyB8IGJpdCB8CiAgICBpZiAodmFsdWVbYml0XSA9PSAwKSB0aGVuCiAgICAgIGN1cl9y ZWdpb24gfD0gMSA8PCBiaXQKICAgIGVsc2UKICAgICAgaWYgKGN1cl9yZWdpb24gIT0gMCApIHRo ZW4KICAgICAgICByZWdpb25zLnB1c2goIGN1cl9yZWdpb24pCiAgICAgICAgY3VyX3JlZ2lvbiA9 IDA7CiAgICAgIGVuZAogICAgZW5kCiAgZW5kCiAgcmVnaW9ucy5wdXNoKGN1cl9yZWdpb24pIGlm IChjdXJfcmVnaW9uICE9IDApCiAgcmVnaW9ucwplbmQKCiMgZmluZCB1cCB0byB0aGUgY291bnRl ZCBudW1iZXIgb2Ygc29sdXRpb25zIChvciBhbGwgc29sdXRpb25zKSBhbmQgcHJpbnRzIHRoZSBm aW5hbCByZXN1bHQKZGVmIGZpbmRfYWxsCiAgZmluZF90b3AoIDEpCiAgZmluZF90b3AoIDApCiAg cHJpbnRfcmVzdWx0cwplbmQKCiMgc2hvdyB0aGUgYm9hcmQKZGVmIHByaW50X3Jlc3VsdHMKICBw cmludCAiI3tAYm9hcmRzX2ZvdW5kfSBzb2x1dGlvbnMgZm91bmRcblxuIgogIHByaW50X2Z1bGxf Ym9hcmQoIEBtaW5fYm9hcmQpCiAgcHJpbnQgIlxuIgogIHByaW50X2Z1bGxfYm9hcmQoIEBtYXhf Ym9hcmQpCiAgcHJpbnQgIlxuIgplbmQKCiMgZmluZHMgc29sdXRpb25zLiAgVGhpcyBzcGVjaWFs IHZlcnNpb24gb2YgdGhlIG1haW4gZnVuY3Rpb24gaXMgb25seSB1c2VkIGZvciB0aGUgdG9wIGxl dmVsCiMgdGhlIHJlYXNvbiBmb3IgaXQgaXMgYmFzaWNhbGx5IHRvIGZvcmNlIGEgcGFydGljdWxh ciBvcmRlcmluZyBvbiBob3cgdGhlIHJvdGF0aW9ucyBhcmUgdGVzdGVkIGZvcgojIHRoZSBmaXJz dCBwaWVjZS4gIEl0IGlzIGNhbGxlZCB0d2ljZSwgZmlyc3QgbG9va2luZyBmb3IgcGxhY2VtZW50 cyBvZiB0aGUgb2RkIHJvdGF0aW9ucyBhbmQgdGhlbgojIGxvb2tpbmcgZm9yIHBsYWNlbWVudHMg b2YgdGhlIGV2ZW4gbG9jYXRpb25zLgojCiMgV0hZPwojICAgU2luY2UgYW55IGZvdW5kIHNvbHV0 aW9uIGhhcyBhbiBpbnZlcnNlIHdlIHdhbnQgdG8gbWF4aW1pemUgZmluZGluZyBzb2x1dGlvbnMg dGhhdCBhcmUgbm90IGFscmVhZHkgZm91bmQKIyAgIGFzIGFuIGludmVyc2UuICBUaGUgaW52ZXJz ZSB3aWxsIEFMV0FZUyBiZSAzIG9uZSBvZiB0aGUgcGllY2UgY29uZmlndXJhdGlvbnMgdGhhdCBp cyBleGFjdGx5IDMgcm90YXRpb25zIGF3YXkKIyAgIChhbiBvZGQgbnVtYmVyKS4gIENoZWNraW5n IGV2ZW4gdnMgb2RkIHRoZW4gcHJvZHVjZXMgYSBoaWdoZXIgcHJvYmFiaWxpdHkgb2YgZmluZGlu ZyBtb3JlIHBpZWNlcyBlYXJsaWVyCiMgICBpbiB0aGUgY3ljbGUuICBXZSBzdGlsbCBuZWVkIHRv IGtlZXAgY2hlY2tpbmcgYWxsIHRoZSBwZXJtdXRhdGlvbnMsIGJ1dCBvdXIgcHJvYmFiaWxpdHkg b2YgZmluZGluZyBvbmUgd2lsbAojICAgZGltaW5zaCBvdmVyIHRpbWUuICBTaW5jZSB3ZSBhcmUg VE9MRCBob3cgbWFueSB0byBzZWFyY2ggZm9yIHRoaXMgbGV0cyB1cyBleGl0IGJlZm9yZSBjaGVj a2luZyBhbGwgcGllY2VzCiMgICB0aGlzIGJlbm5pZml0IGlzIHZlcnkgZ3JlYXQgd2hlbiBzZWVr aW5nIHNtYWxsIG51bWJlcnMgb2Ygc29sdXRpb25zIGFuZCBpcyAwIHdoZW4gbG9va2luZyBmb3Ig bW9yZSB0aGFuIHRoZQojICAgbWF4aW11bSBudW1iZXIKZGVmIGZpbmRfdG9wKCByb3RhdGlvbl9z a2lwKQogIGJvYXJkID0gYmxhbmtfYm9hcmQKICAoQHBpZWNlcy5sZW5ndGgtMSkudGltZXMgZG8K ICAgIHBpZWNlID0gQHBpZWNlcy5zaGlmdAogICAgcGllY2UubWFza3NbMF0uZWFjaCBkbyB8IG1h c2ssIGltYXNrLCBjbWFzayB8CiAgICAgIGlmICgocm90YXRpb25fc2tpcCArPSAxKSAlIDIgPT0g MCkgdGhlbgogICAgICAgIHBpZWNlLnBsYWNlZCA9IG1hc2sKICAgICAgICBmaW5kKCAxLCAxLCBi b2FyZCB8IG1hc2spCiAgICAgIGVuZAogICAgZW5kCiAgICBAcGllY2VzLnB1c2gocGllY2UpCiAg ZW5kCiAgcGllY2UgPSBAcGllY2VzLnNoaWZ0CiAgQHBpZWNlcy5wdXNoKHBpZWNlKQplbmQKCiMg dGhlIG5vcm1haWwgZmluZCByb3V0aW5lLCBpdGVyYXRlcyB0aHJvdWdoIHRoZSBhdmFpbGFibGUg cGllY2VzLCBjaGVja3MgYWxsIHJvdGF0aW9ucyBhdCB0aGUgY3VycmVudCBsb2NhdGlvbgojIGFu ZCBhZGRzIGFueSBib2FyZHMgZm91bmQuICBkZXB0aCBpcyBhY2hlaXZlZCB2aWEgcmVjdXJzaW9u LiAgdGhlIG92ZXJhbGwgYXBwcm9hY2ggaXMgZGVzY3JpYmVkCiMgaGVyZTogaHR0cDovL3d3dy0x MjguaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9qYXZhL2xpYnJhcnkvai1qYXZhb3B0LwojIHBhcmFt ZXRlcnM6CiMgIHN0YXJ0X2xvY2F0aW9uIC0tIHdoZXJlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHBs YWNlIGZvciB0aGUgbmV4dCBwaWVjZSBhdAojICBwbGFjZWQgLS0gbnVtYmVyIG9mIHBpZWNlcyBw bGFjZWQKIyAgYm9hcmQgLS0gY3VycmVudCBzdGF0ZSBvZiB0aGUgYm9hcmQKIwojIHNlZSBpbi1j b2RlIGNvbW1lbnRzCmRlZiBmaW5kKCBzdGFydF9sb2NhdGlvbiwgcGxhY2VkLCBib2FyZCkKICAj IGZpbmQgdGhlIG5leHQgbG9jYXRpb24gdG8gcGxhY2UgYSBwaWVjZSBieSBsb29raW5nIGZvciBh biBlbXB0eSBiaXQKICB3aGlsZSBib2FyZFtzdGFydF9sb2NhdGlvbl0gPT0gMQogICAgc3RhcnRf bG9jYXRpb24gKz0gMQogIGVuZAoKICBAcGllY2VzLmxlbmd0aC50aW1lcyBkbwogICAgcGllY2Ug PSBAcGllY2VzLnNoaWZ0CiAgICBwaWVjZS5tYXNrc1tzdGFydF9sb2NhdGlvbl0uZWFjaCBkbyB8 IG1hc2ssIGltYXNrLCBjbWFzayB8CiAgICAgIGlmICggYm9hcmQgJiBjbWFzayA9PSBpbWFzaykg dGhlbgogICAgICAgIHBpZWNlLnBsYWNlZCA9IG1hc2sKICAgICAgICBpZiAocGxhY2VkID09IDkp IHRoZW4KICAgICAgICAgIGFkZF9ib2FyZAogICAgICAgIGVsc2UKICAgICAgICAgIGZpbmQoIHN0 YXJ0X2xvY2F0aW9uICsgMSwgcGxhY2VkICsgMSwgYm9hcmQgfCBtYXNrKQogICAgICAgIGVuZAog ICAgICBlbmQKICAgIGVuZAogICAgQHBpZWNlcy5wdXNoKHBpZWNlKQogIGVuZAplbmQKCiMgcHJp bnQgdGhlIGJvYXJkCmRlZiBwcmludF9mdWxsX2JvYXJkKCBib2FyZF9zdHJpbmcpCiAgMTAudGlt ZXMgZG8gfCByb3cgfAogICAgcHJpbnQgIiAiIGlmIChyb3cgJSAyID09IDEpCiAgICA1LnRpbWVz IGRvIHwgY29sIHwKICAgICAgcHJpbnQgIiN7Ym9hcmRfc3RyaW5nW3Jvdyo1ICsgY29sLDFdfSAi CiAgICBlbmQKICAgIHByaW50ICJcbiIKICBlbmQKZW5kCgojIHdoZW4gYSBib2FyZCBpcyBmb3Vu ZCB3ZSAiZHJhdyBpdCIgaW50byBhIHN0cmluZyBhbmQgdGhlbiBmbGlwIHRoYXQgc3RyaW5nLCBh ZGRpbmcgYm90aCB0bwojIHRoZSBsaXN0IChoYXNoKSBvZiBzb2x1dGlvbnMgaWYgdGhleSBhcmUg dW5pcXVlLgpkZWYgYWRkX2JvYXJkCiAgYm9hcmRfc3RyaW5nID0gIjk5OTk5OTk5OTk5OTk5OTk5 OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5IgogIEBhbGxfcGllY2VzLmVhY2ggeyAg fCBwaWVjZSB8IHBpZWNlLmZpbGxfc3RyaW5nKCBib2FyZF9zdHJpbmcgKSB9CiAgc2F2ZSggYm9h cmRfc3RyaW5nKQogIHNhdmUoIGJvYXJkX3N0cmluZy5yZXZlcnNlKQplbmQKCiMgYWRkcyBhIGJv YXJkIHN0cmluZyB0byB0aGUgbGlzdCAoaWYgbmV3KSBhbmQgdXBkYXRlcyB0aGUgY3VycmVudCBi ZXN0L3dvcnN0IGJvYXJkCmRlZiBzYXZlKCBib2FyZF9zdHJpbmcpCiAgaWYgKEBhbGxfYm9hcmRz W2JvYXJkX3N0cmluZ10gPT0gbmlsKSB0aGVuCiAgICBAbWluX2JvYXJkID0gYm9hcmRfc3RyaW5n IGlmIChib2FyZF9zdHJpbmcgPCBAbWluX2JvYXJkKQogICAgQG1heF9ib2FyZCA9IGJvYXJkX3N0 cmluZyBpZiAoYm9hcmRfc3RyaW5nID4gQG1heF9ib2FyZCkKICAgIEBhbGxfYm9hcmRzLnN0b3Jl KGJvYXJkX3N0cmluZyx0cnVlKQogICAgQGJvYXJkc19mb3VuZCArPSAxCgogICAgIyB0aGUgZXhp dCBtb3RpZiBpcyBhIHRpbWUgc2F2ZXIuICBJZGVhbGx5IHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0 dXJuLCBidXQgdGhvc2UgdGVzdHMKICAgICMgdGFrZSBub3RpY2FibGUgdGltZSAocGVyZm9ybWFu Y2UpLgogICAgaWYgKEBib2FyZHNfZm91bmQgPT0gQHN0b3BfY291bnQpIHRoZW4KICAgICAgcHJp bnRfcmVzdWx0cwogICAgICBleGl0KDApCiAgICBlbmQKICBlbmQKZW5kCgoKIyMKIyMgTUFJTiBC T0RZIDopCiMjCmNyZWF0ZV9jb2xsZWN0b3Jfc3VwcG9ydApAcGllY2VzID0gWwogIFBpZWNlLm5l dyggWyA6bncsIDpuZSwgOmVhc3QsIDplYXN0IF0sIDIpLAogIFBpZWNlLm5ldyggWyA6bmUsIDpz ZSwgOmVhc3QsIDpuZSBdLCA3KSwKICBQaWVjZS5uZXcoIFsgOm5lLCA6ZWFzdCwgOm5lLCA6bncg XSwgMSksCiAgUGllY2UubmV3KCBbIDplYXN0LCA6c3csIDpzdywgOnNlIF0sIDYpLAogIFBpZWNl Lm5ldyggWyA6ZWFzdCwgOm5lLCA6c2UsIDpuZSBdLCA1KSwKICBQaWVjZS5uZXcoIFsgOmVhc3Qs IDplYXN0LCA6ZWFzdCwgOnNlIF0sIDApLAogIFBpZWNlLm5ldyggWyA6bmUsIDpudywgOnNlLCA6 ZWFzdCwgOnNlIF0sIDQpLAogIFBpZWNlLm5ldyggWyA6c2UsIDpzZSwgOnNlLCA6d2VzdCBdLCA5 KSwKICBQaWVjZS5uZXcoIFsgOnNlLCA6c2UsIDplYXN0LCA6c2UgXSwgOCksCiAgUGllY2UubmV3 KCBbIDplYXN0LCA6ZWFzdCwgOnN3LCA6c2UgXSwgMykKICBdOwoKQGFsbF9waWVjZXMgPSBBcnJh eS5uZXcoIEBwaWVjZXMpCgpAbWluX2JvYXJkID0gIjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5 OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5IgpAbWF4X2JvYXJkID0gIjAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIgpAc3RvcF9jb3VudCA9IEFSR1ZbMF0u dG9faSB8fCAyMDg5CkBhbGxfYm9hcmRzID0ge30KQGJvYXJkc19mb3VuZCA9IDAKCmZpbmRfYWxs ICMjIyMjIyMjIERPIElUISEhCgoKYmVmb3JlCTIyLjg3NDYyMjgyMTgwNzkKYmVmb3JlCTIzLjA1 OTM4OTExNDM3OTkKYmVmb3JlCTIyLjk3MjY5NDE1ODU1NDEKYmVmb3JlCTIyLjkzNTE2MjA2NzQx MzMKYmVmb3JlCTIyLjg0NzYzMjE2OTcyMzUKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVu ayAyNjIzOCkgW2k2ODYtbGludXhdCTIyLjY2NjAyMDE1NDk1MwpydWJ5IDEuOS4yZGV2ICgyMDEw LTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMjIuNjg5OTgwMDMwMDU5OApydWJ5IDEu OS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMjIuNjk1ODczMDIy MDc5NQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0J MjIuNjg5MjY2OTIwMDg5NwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBb aTY4Ni1saW51eF0JMjIuNjkxODg0MDQwODMyNQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc29fbmJvZHkKCiMgVGhlIENvbXB1dGVy IExhbmd1YWdlIFNob290b3V0CiMgaHR0cDovL3Nob290b3V0LmFsaW90aC5kZWJpYW4ub3JnCiMK IyBPcHRpbWl6ZWQgZm9yIFJ1YnkgYnkgSmVzc2UgTWlsbGlrYW4KIyBGcm9tIHZlcnNpb24gcG9y dGVkIGJ5IE1pY2hhZWwgTmV1bWFubiBmcm9tIHRoZSBDIGdjYyB2ZXJzaW9uLAojIHdoaWNoIHdh cyB3cml0dGVuIGJ5IENocmlzdG9waCBCYXVlci4KClNPTEFSX01BU1MgPSA0ICogTWF0aDo6UEkq KjIKREFZU19QRVJfWUVBUiA9IDM2NS4yNAoKZGVmIF9wdXRzICphcmdzCmVuZAoKY2xhc3MgUGxh bmV0CiBhdHRyX2FjY2Vzc29yIDp4LCA6eSwgOnosIDp2eCwgOnZ5LCA6dnosIDptYXNzCgogZGVm IGluaXRpYWxpemUoeCwgeSwgeiwgdngsIHZ5LCB2eiwgbWFzcykKICBAeCwgQHksIEB6ID0geCwg eSwgegogIEB2eCwgQHZ5LCBAdnogPSB2eCAqIERBWVNfUEVSX1lFQVIsIHZ5ICogREFZU19QRVJf WUVBUiwgdnogKiBEQVlTX1BFUl9ZRUFSCiAgQG1hc3MgPSBtYXNzICogU09MQVJfTUFTUwogZW5k CgogZGVmIG1vdmVfZnJvbV9pKGJvZGllcywgbmJvZGllcywgZHQsIGkpCiAgd2hpbGUgaSA8IG5i b2RpZXMKICAgYjIgPSBib2RpZXNbaV0KICAgZHggPSBAeCAtIGIyLngKICAgZHkgPSBAeSAtIGIy LnkKICAgZHogPSBAeiAtIGIyLnoKCiAgIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4ICogZHggKyBk eSAqIGR5ICsgZHogKiBkeikKICAgbWFnID0gZHQgLyAoZGlzdGFuY2UgKiBkaXN0YW5jZSAqIGRp c3RhbmNlKQogICBiX21hc3NfbWFnLCBiMl9tYXNzX21hZyA9IEBtYXNzICogbWFnLCBiMi5tYXNz ICogbWFnCgogICBAdnggLT0gZHggKiBiMl9tYXNzX21hZwogICBAdnkgLT0gZHkgKiBiMl9tYXNz X21hZwogICBAdnogLT0gZHogKiBiMl9tYXNzX21hZwogICBiMi52eCArPSBkeCAqIGJfbWFzc19t YWcKICAgYjIudnkgKz0gZHkgKiBiX21hc3NfbWFnCiAgIGIyLnZ6ICs9IGR6ICogYl9tYXNzX21h ZwogICBpICs9IDEKICBlbmQKCiAgQHggKz0gZHQgKiBAdngKICBAeSArPSBkdCAqIEB2eQogIEB6 ICs9IGR0ICogQHZ6CiBlbmQKZW5kCgpkZWYgZW5lcmd5KGJvZGllcykKICBlID0gMC4wCiAgbmJv ZGllcyA9IGJvZGllcy5zaXplCgogIGZvciBpIGluIDAgLi4uIG5ib2RpZXMKICAgIGIgPSBib2Rp ZXNbaV0KICAgIGUgKz0gMC41ICogYi5tYXNzICogKGIudnggKiBiLnZ4ICsgYi52eSAqIGIudnkg KyBiLnZ6ICogYi52eikKICAgIGZvciBqIGluIChpICsgMSkgLi4uIG5ib2RpZXMKICAgICAgYjIg PSBib2RpZXNbal0KICAgICAgZHggPSBiLnggLSBiMi54CiAgICAgIGR5ID0gYi55IC0gYjIueQog ICAgICBkeiA9IGIueiAtIGIyLnoKICAgICAgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZHggKiBkeCAr IGR5ICogZHkgKyBkeiAqIGR6KQogICAgICBlIC09IChiLm1hc3MgKiBiMi5tYXNzKSAvIGRpc3Rh bmNlCiAgICBlbmQKICBlbmQKICBlCmVuZAoKZGVmIG9mZnNldF9tb21lbnR1bShib2RpZXMpCiAg cHgsIHB5LCBweiA9IDAuMCwgMC4wLCAwLjAKCiAgZm9yIGIgaW4gYm9kaWVzCiAgICBtID0gYi5t YXNzCiAgICBweCArPSBiLnZ4ICogbQogICAgcHkgKz0gYi52eSAqIG0KICAgIHB6ICs9IGIudnog KiBtCiAgZW5kCgogIGIgPSBib2RpZXNbMF0KICBiLnZ4ID0gLSBweCAvIFNPTEFSX01BU1MKICBi LnZ5ID0gLSBweSAvIFNPTEFSX01BU1MKICBiLnZ6ID0gLSBweiAvIFNPTEFSX01BU1MKZW5kCgpC T0RJRVMgPSBbCiAgIyBzdW4KICBQbGFuZXQubmV3KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw LjAsIDEuMCksCgogICMganVwaXRlcgogIFBsYW5ldC5uZXcoCiAgICA0Ljg0MTQzMTQ0MjQ2NDcy MDkwZSswMCwKICAgIC0xLjE2MDMyMDA0NDAyNzQyODM5ZSswMCwKICAgIC0xLjAzNjIyMDQ0NDcx MTIzMTA5ZS0wMSwKICAgIDEuNjYwMDc2NjQyNzQ0MDM2OTRlLTAzLAogICAgNy42OTkwMTExODQx OTc0MDQyNWUtMDMsCiAgICAtNi45MDQ2MDAxNjk3MjA2MzAyM2UtMDUsCiAgICA5LjU0NzkxOTM4 NDI0MzI2NjA5ZS0wNCksCgogICMgc2F0dXJuCiAgUGxhbmV0Lm5ldygKICAgIDguMzQzMzY2NzE4 MjQ0NTc5ODdlKzAwLAogICAgNC4xMjQ3OTg1NjQxMjQzMDQ3OWUrMDAsCiAgICAtNC4wMzUyMzQx NzExNDMyMTM4MWUtMDEsCiAgICAtMi43Njc0MjUxMDcyNjg2MjQxMWUtMDMsCiAgICA0Ljk5ODUy ODAxMjM0OTE3MjM4ZS0wMywKICAgIDIuMzA0MTcyOTc1NzM3NjM5MjllLTA1LAogICAgMi44NTg4 NTk4MDY2NjEzMDgxMmUtMDQpLAoKICAjIHVyYW51cwogIFBsYW5ldC5uZXcoCiAgICAxLjI4OTQz Njk1NjIxMzkxMzEwZSswMSwKICAgIC0xLjUxMTExNTE0MDE2OTg2MzEyZSswMSwKICAgIC0yLjIz MzA3NTc4ODkyNjU1NzM0ZS0wMSwKICAgIDIuOTY0NjAxMzc1NjQ3NjE2MThlLTAzLAogICAgMi4z Nzg0NzE3Mzk1OTQ4MDk1MGUtMDMsCiAgICAtMi45NjU4OTU2ODU0MDIzNzU1NmUtMDUsCiAgICA0 LjM2NjI0NDA0MzM1MTU2Mjk4ZS0wNSksCgogICMgbmVwdHVuZQogIFBsYW5ldC5uZXcoCiAgICAx LjUzNzk2OTcxMTQ4NTA5MTY1ZSswMSwKICAgIC0yLjU5MTkzMTQ2MDk5ODc5NjQxZSswMSwKICAg IDEuNzkyNTg3NzI5NTAzNzExODFlLTAxLAogICAgMi42ODA2Nzc3MjQ5MDM4OTMyMmUtMDMsCiAg ICAxLjYyODI0MTcwMDM4MjQyMjk1ZS0wMywKICAgIC05LjUxNTkyMjU0NTE5NzE1ODcwZS0wNSwK ICAgIDUuMTUxMzg5MDIwNDY2MTE0NTFlLTA1KQpdCgppbml0ID0gMjAwXzAwMCAjIEFSR1ZbMF0K biA9IEludGVnZXIoaW5pdCkKCm9mZnNldF9tb21lbnR1bShCT0RJRVMpCgpwdXRzICIlLjlmIiAl IGVuZXJneShCT0RJRVMpCgpuYm9kaWVzID0gQk9ESUVTLnNpemUKZHQgPSAwLjAxCgpuLnRpbWVz IGRvCiAgaSA9IDAKICB3aGlsZSBpIDwgbmJvZGllcwogICAgYiA9IEJPRElFU1tpXQogICAgYi5t b3ZlX2Zyb21faShCT0RJRVMsIG5ib2RpZXMsIGR0LCBpICsgMSkKICAgIGkgKz0gMQogIGVuZApl bmQKCnB1dHMgIiUuOWYiICUgZW5lcmd5KEJPRElFUykKCmJlZm9yZQkxNi4yMDkyNjQ5OTM2Njc2 CmJlZm9yZQkxNi4xMzA3OTI4NTYyMTY0CmJlZm9yZQkxNi4yNzI1Nzk5MDgzNzEKYmVmb3JlCTE2 LjM1NDg3Nzk0ODc2MQpiZWZvcmUJMTYuMTk4OTgyOTU0MDI1MwpydWJ5IDEuOS4yZGV2ICgyMDEw LTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMTYuODMwMjgyOTI2NTU5NApydWJ5IDEu OS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMTYuNzMxNjk4OTg5 ODY4MgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0J MTcuMDEwMzUwOTQyNjExNwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBb aTY4Ni1saW51eF0JMTYuOTUwOTg5OTYxNjI0MQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRy dW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMTcuMDQ1NzgyMDg5MjMzNAoKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc29fbmVzdGVkX2xv b3AKCiMhL3Vzci9iaW4vcnVieQojIC0qLSBtb2RlOiBydWJ5IC0qLQojICRJZDogbmVzdGVkbG9v cC1ydWJ5LmNvZGUsdiAxLjQgMjAwNC8xMS8xMyAwNzo0MjoyMiBiZnVsZ2hhbSBFeHAgJAojIGh0 dHA6Ly93d3cuYmFnbGV5Lm9yZy9+ZG91Zy9zaG9vdG91dC8KIyBmcm9tIEF2aSBCcnlhbnQKCm4g PSAxNiAjIEludGVnZXIoQVJHVi5zaGlmdCB8fCAxKQp4ID0gMApuLnRpbWVzIGRvCiAgICBuLnRp bWVzIGRvCiAgICAgICAgbi50aW1lcyBkbwogICAgICAgICAgICBuLnRpbWVzIGRvCiAgICAgICAg ICAgICAgICBuLnRpbWVzIGRvCiAgICAgICAgICAgICAgICAgICAgbi50aW1lcyBkbwogICAgICAg ICAgICAgICAgICAgICAgICB4ICs9IDEKICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAg ICAgICAgIGVuZAogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgIGVuZAplbmQKIyBwdXRz IHgKCgoKYmVmb3JlCTYuMDQ2MjA1OTk3NDY3MDQKYmVmb3JlCTYuMzg3NDY4MDk5NTk0MTIKYmVm b3JlCTYuMDE1MzIwMDYyNjM3MzMKYmVmb3JlCTYuMDY4OTQ0OTMxMDMwMjcKYmVmb3JlCTUuODQ2 MDgxMDE4NDQ3ODgKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYt bGludXhdCTUuMzE2ODU2MTQ1ODU4NzYKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAy NjIzOCkgW2k2ODYtbGludXhdCTUuMzIxOTYwOTI2MDU1OTEKcnVieSAxLjkuMmRldiAoMjAxMC0w MS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTUuMzI5MjIxOTYzODgyNDUKcnVieSAxLjku MmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTUuMzM1NTIyODkwMDkw OTQKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTUu Mjg2NjM4OTc1MTQzNDMKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCnNvX25zaWV2ZQoKIyBUaGUgQ29tcHV0ZXIgTGFuZ3VhZ2UgU2hv b3RvdXQKIyBodHRwOi8vc2hvb3RvdXQuYWxpb3RoLmRlYmlhbi5vcmcvCiMKIyBjb250cmlidXRl ZCBieSBHbGVubiBQYXJrZXIsIE1hcmNoIDIwMDUKIyBtb2RpZmllZCBieSBFdmFuIFBob2VuaXgs IFNlcHQgMjAwNgoKZGVmIHNpZXZlKG0pCiAgZmxhZ3MgPSBGbGFncy5kdXBbMCxtXQogIGNvdW50 ID0gMAogIHBtYXggPSBtIC0gMQogIHAgPSAyCiAgd2hpbGUgcCA8PSBwbWF4CiAgICB1bmxlc3Mg ZmxhZ3NbcF0uemVybz8KICAgICAgY291bnQgKz0gMQogICAgICBtdWx0ID0gcAogICAgICB3aGls ZSBtdWx0IDw9IHBtYXgKICAgICAgICBmbGFnc1ttdWx0XSA9IDAKICAgICAgICBtdWx0ICs9IHAK ICAgICAgZW5kCiAgICBlbmQKICAgIHAgKz0gMQogIGVuZAogIGNvdW50CmVuZAoKbiA9IDkgIyAo QVJHVlswXSB8fCAyKS50b19pCkZsYWdzID0gKCJceDEiICogKCAyICoqIG4gKiAxMF8wMDApKS51 bnBhY2soImMqIikKCm4uZG93bnRvKG4tMikgZG8gfGV4cG9uZW50fAogIGJyZWFrIGlmIGV4cG9u ZW50IDwgMAogIG0gPSAoMSA8PCBleHBvbmVudCkgKiAxMF8wMDAKICAjIG0gPSAoMiAqKiBleHBv bmVudCkgKiAxMF8wMDAKICBjb3VudCA9IHNpZXZlKG0pCiAgcHJpbnRmICJQcmltZXMgdXAgdG8g JThkICU4ZFxuIiwgbSwgY291bnQKZW5kCgpiZWZvcmUJMTMuNzkxNDIzMDgyMzUxNwpiZWZvcmUJ MTMuOTIyNTkwOTcwOTkzCmJlZm9yZQkxNC41NjMwMjcxNDM0Nzg0CmJlZm9yZQkxNC4zNjEwMzUx MDg1NjYzCmJlZm9yZQkxNC4yNzYwMDc4OTA3MDEzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxNS4wMDIxNTQxMTE4NjIyCnJ1YnkgMS45LjJkZXYg KDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxNC45NjM1NjgyMTA2MDE4CnJ1 YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxNS4xMDg5 MDMxNjk2MzIKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGlu dXhdCTE1LjI2ODA4ODgxNzU5NjQKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIz OCkgW2k2ODYtbGludXhdCTE1LjEwNTA0NjAzMzg1OTMKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNvX25zaWV2ZV9iaXRzCgojIS91 c3IvYmluL3J1YnkKIwojIFRoZSBHcmVhdCBDb21wdXRlciBMYW5ndWFnZSBTaG9vdG91dAojIGh0 dHA6Ly9zaG9vdG91dC5hbGlvdGguZGViaWFuLm9yZy8KIwojIG5zaWV2ZS1iaXRzIGluIFJ1YnkK IyBDb250cmlidXRlZCBieSBHbGVubiBQYXJrZXIsIE1hcmNoIDIwMDUKCkNoYXJFeHBvbmVudCA9 IDMKQml0c1BlckNoYXIgPSAxIDw8IENoYXJFeHBvbmVudApMb3dNYXNrID0gQml0c1BlckNoYXIg LSAxCgpkZWYgc2lldmUobSkKICBpdGVtcyA9ICJceEZGIiAqICgobSAvIEJpdHNQZXJDaGFyKSAr IDEpCiAgbWFza3MgPSAiIgogIEJpdHNQZXJDaGFyLnRpbWVzIGRvIHxifAogICAgbWFza3MgPDwg KDEgPDwgYikuY2hyCiAgZW5kCgogIGNvdW50ID0gMAogIHBtYXggPSBtIC0gMQogIDIuc3RlcChw bWF4LCAxKSBkbyB8cHwKICAgIGlmIGl0ZW1zW3AgPj4gQ2hhckV4cG9uZW50XVtwICYgTG93TWFz a10gPT0gMQogICAgICBjb3VudCArPSAxCiAgICAgIHAuc3RlcChwbWF4LCBwKSBkbyB8bXVsdHwK CWEgPSBtdWx0ID4+IENoYXJFeHBvbmVudAoJYiA9IG11bHQgJiBMb3dNYXNrCglpdGVtc1thXSAt PSBtYXNrc1tiXSBpZiBpdGVtc1thXVtiXSAhPSAwCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCiAg Y291bnQKZW5kCgpuID0gOSAjIChBUkdWWzBdIHx8IDIpLnRvX2kKbi5zdGVwKG4gLSAyLCAtMSkg ZG8gfGV4cG9uZW50fAogIGJyZWFrIGlmIGV4cG9uZW50IDwgMAogIG0gPSAyICoqIGV4cG9uZW50 ICogMTBfMDAwCiAgY291bnQgPSBzaWV2ZShtKQogIHByaW50ZiAiUHJpbWVzIHVwIHRvICU4ZCAl OGRcbiIsIG0sIGNvdW50CmVuZAoKCmJlZm9yZQkxNC4zMDI3NTkxNzA1MzIyCmJlZm9yZQkxNC41 Njc1Mjc3NzA5OTYxCmJlZm9yZQkxNC4zNDQyMTQ5MTYyMjkyCmJlZm9yZQkxNC41ODI5NDAxMDE2 MjM1CmJlZm9yZQkxNC4zNzY5NTU5ODYwMjI5CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1 bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxMy40ODMxOTYwMjAxMjYzCnJ1YnkgMS45LjJkZXYgKDIw MTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxMy43Mzk0NDQ5NzEwODQ2CnJ1Ynkg MS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkxMy43NjY2NjQw MjgxNjc3CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQkxMy40NTk3MDYwNjgwMzg5CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgp IFtpNjg2LWxpbnV4XQkxMy43MzY5ODMwNjA4MzY4CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzb19vYmplY3QKCiMhL3Vzci9iaW4v cnVieQojIC0qLSBtb2RlOiBydWJ5IC0qLQojICRJZDogb2JqaW5zdC1ydWJ5LmNvZGUsdiAxLjQg MjAwNC8xMS8xMyAwNzo0MjoyNSBiZnVsZ2hhbSBFeHAgJAojIGh0dHA6Ly93d3cuYmFnbGV5Lm9y Zy9+ZG91Zy9zaG9vdG91dC8KIyB3aXRoIGhlbHAgZnJvbSBBcmlzdGFya2ggWmFnb3JvZG5pa292 CgpjbGFzcyBUb2dnbGUKICAgIGRlZiBpbml0aWFsaXplKHN0YXJ0X3N0YXRlKQogICAgICAgIEBi b29sID0gc3RhcnRfc3RhdGUKICAgIGVuZAoKICAgIGRlZiB2YWx1ZQogICAgICAgIEBib29sCiAg ICBlbmQKCiAgICBkZWYgYWN0aXZhdGUKICAgICAgICBAYm9vbCA9ICFAYm9vbAogICAgICAgIHNl bGYKICAgIGVuZAplbmQKCmNsYXNzIE50aFRvZ2dsZSA8IFRvZ2dsZQogICAgZGVmIGluaXRpYWxp emUoc3RhcnRfc3RhdGUsIG1heF9jb3VudGVyKQogICAgICAgIHN1cGVyIHN0YXJ0X3N0YXRlCiAg ICAgICAgQGNvdW50X21heCA9IG1heF9jb3VudGVyCiAgICAgICAgQGNvdW50ZXIgPSAwCiAgICBl bmQKCiAgICBkZWYgYWN0aXZhdGUKICAgICAgICBAY291bnRlciArPSAxCiAgICAgICAgaWYgQGNv dW50ZXIgPj0gQGNvdW50X21heAogICAgICAgICAgICBAYm9vbCA9ICFAYm9vbAogICAgICAgICAg ICBAY291bnRlciA9IDAKICAgICAgICBlbmQKICAgICAgICBzZWxmCiAgICBlbmQKZW5kCgpuID0g MTUwMDAwMCAjIChBUkdWLnNoaWZ0IHx8IDEpLnRvX2kKCnRvZ2dsZSA9IFRvZ2dsZS5uZXcgMQo1 LnRpbWVzIGRvCiAgICB0b2dnbGUuYWN0aXZhdGUudmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnCmVu ZApuLnRpbWVzIGRvCiAgICB0b2dnbGUgPSBUb2dnbGUubmV3IDEKZW5kCgpudG9nZ2xlID0gTnRo VG9nZ2xlLm5ldyAxLCAzCjgudGltZXMgZG8KICAgIG50b2dnbGUuYWN0aXZhdGUudmFsdWUgPyAn dHJ1ZScgOiAnZmFsc2UnCmVuZApuLnRpbWVzIGRvCiAgICBudG9nZ2xlID0gTnRoVG9nZ2xlLm5l dyAxLCAzCmVuZAoKCmJlZm9yZQk0LjAwNjM0MDAyNjg1NTQ3CmJlZm9yZQkzLjk5NTA1NDk2MDI1 MDg1CmJlZm9yZQkzLjkxNzk3MTEzNDE4NTc5CmJlZm9yZQk0LjA3MjgwMjc4MjA1ODcyCmJlZm9y ZQkzLjkwODU3MDA1MTE5MzI0CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgp IFtpNjg2LWxpbnV4XQk0LjA1NTc5OTAwNzQxNTc3CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk0LjAyMTQyMDAwMTk4MzY0CnJ1YnkgMS45LjJkZXYg KDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk0LjAzMzgyNDkyMDY1NDMKcnVi eSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTQuMTk4MjIy ODc1NTk1MDkKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGlu dXhdCTQuMjcwNjU4OTY5ODc5MTUKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNvX3BhcnRpYWxfc3VtcwoKbiA9IDJfNTAwXzAwMCAj IChBUkdWLnNoaWZ0IHx8IDEpLnRvX2kKCmFsdCA9IDEuMCA7IHMwID0gczEgPSBzMiA9IHMzID0g czQgPSBzNSA9IHM2ID0gczcgPSBzOCA9IDAuMAoKMS51cHRvKG4pIGRvIHxkfAogIGQgPSBkLnRv X2YgOyBkMiA9IGQgKiBkIDsgZDMgPSBkMiAqIGQgOyBkcyA9IE1hdGguc2luKGQpIDsgZGMgPSBN YXRoLmNvcyhkKQoKICBzMCArPSAoMi4wIC8gMy4wKSAqKiAoZCAtIDEuMCkKICBzMSArPSAxLjAg LyBNYXRoLnNxcnQoZCkKICBzMiArPSAxLjAgLyAoZCAqIChkICsgMS4wKSkKICBzMyArPSAxLjAg LyAoZDMgKiBkcyAqIGRzKQogIHM0ICs9IDEuMCAvIChkMyAqIGRjICogZGMpCiAgczUgKz0gMS4w IC8gZAogIHM2ICs9IDEuMCAvIGQyCiAgczcgKz0gYWx0IC8gZAogIHM4ICs9IGFsdCAvICgyLjAg KiBkIC0gMS4wKQoKICBhbHQgPSAtYWx0CmVuZAoKaWYgZmFsc2UKICBwcmludGYoIiUuOWZcdCgy LzMpXmtcbiIsIHMwKQogIHByaW50ZigiJS45Zlx0a14tMC41XG4iLCBzMSkKICBwcmludGYoIiUu OWZcdDEvayhrKzEpXG4iLCBzMikKICBwcmludGYoIiUuOWZcdEZsaW50IEhpbGxzXG4iLCBzMykK ICBwcmludGYoIiUuOWZcdENvb2tzb24gSGlsbHNcbiIsIHM0KQogIHByaW50ZigiJS45Zlx0SGFy bW9uaWNcbiIsIHM1KQogIHByaW50ZigiJS45Zlx0UmllbWFubiBaZXRhXG4iLCBzNikKICBwcmlu dGYoIiUuOWZcdEFsdGVybmF0aW5nIEhhcm1vbmljXG4iLCBzNykKICBwcmludGYoIiUuOWZcdEdy ZWdvcnlcbiIsIHM4KQplbmQKCmJlZm9yZQkyMi44NjI2MDEwNDE3OTM4CmJlZm9yZQkyMi44NTY5 Nzc5Mzk2MDU3CmJlZm9yZQkyMi43NDk5MjU4NTE4MjE5CmJlZm9yZQkyMy44NzgxMzYxNTc5ODk1 CmJlZm9yZQkyMi43MjkwNTU4ODE1MDAyCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsg MjYyMzgpIFtpNjg2LWxpbnV4XQkyMi42ODU2MzEwMzY3NTg0CnJ1YnkgMS45LjJkZXYgKDIwMTAt MDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyMi43NDc1NTkwNzA1ODcyCnJ1YnkgMS45 LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyMi41NTM3ODY5OTMw MjY3CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQky Mi44MzEzODg5NTAzNDc5CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtp Njg2LWxpbnV4XQkyMi42MDM5NDI4NzEwOTM4CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzb19waWRpZ2l0cwoKIyBUaGUgR3JlYXQg Q29tcHV0ZXIgTGFuZ3VhZ2UgU2hvb3RvdXQKIyBodHRwOi8vc2hvb3RvdXQuYWxpb3RoLmRlYmlh bi5vcmcvCiMKIyBjb250cmlidXRlZCBieSBHYWJyaWVsZSBSZW56aQoKY2xhc3MgUGlEaWdpdFNw aWdvdAoKICAgIGRlZiBpbml0aWFsaXplKCkKICAgICAgICBAeiA9IFRyYW5zZm9ybWF0aW9uLm5l dyAxLDAsMCwxCiAgICAgICAgQHggPSBUcmFuc2Zvcm1hdGlvbi5uZXcgMCwwLDAsMAogICAgICAg IEBpbnZlcnNlID0gVHJhbnNmb3JtYXRpb24ubmV3IDAsMCwwLDAKICAgIGVuZAoKICAgIGRlZiBu ZXh0IQogICAgICAgIEB5ID0gQHouZXh0cmFjdCgzKQogICAgICAgIGlmIHNhZmU/IEB5CiAgICAg ICAgICAgIEB6ID0gcHJvZHVjZShAeSkKICAgICAgICAgICAgQHkKICAgICAgICBlbHNlCiAgICAg ICAgICAgIEB6ID0gY29uc3VtZSBAeC5uZXh0ISgpCiAgICAgICAgICAgIG5leHQhKCkKICAgICAg ICBlbmQKICAgIGVuZAoKICAgIGRlZiBzYWZlPyhkaWdpdCkKICAgICAgICBkaWdpdCA9PSBAei5l eHRyYWN0KDQpCiAgICBlbmQKCiAgICBkZWYgcHJvZHVjZShpKQogICAgICAgIEBpbnZlcnNlLnFy c3QoMTAsLTEwKmksMCwxKS5jb21wb3NlKEB6KQogICAgZW5kCgogICAgZGVmIGNvbnN1bWUoYSkK ICAgICAgICBAei5jb21wb3NlKGEpCiAgICBlbmQKZW5kCgoKY2xhc3MgVHJhbnNmb3JtYXRpb24K ICAgIGF0dHJfcmVhZGVyIDpxLCA6ciwgOnMsIDp0CiAgICBkZWYgaW5pdGlhbGl6ZSAocSwgciwg cywgdCkKICAgICAgICBAcSxAcixAcyxAdCxAayA9IHEscixzLHQsMAogICAgZW5kCgogICAgZGVm IG5leHQhKCkKICAgICAgICBAcSA9IEBrID0gQGsgKyAxCiAgICAgICAgQHIgPSA0ICogQGsgKyAy CiAgICAgICAgQHMgPSAwCiAgICAgICAgQHQgPSAyICogQGsgKyAxCiAgICAgICAgc2VsZgogICAg ZW5kCgogICAgZGVmIGV4dHJhY3QoaikKICAgICAgICAoQHEgKiBqICsgQHIpIC8gKEBzICogaiAr IEB0KQogICAgZW5kCgogICAgZGVmIGNvbXBvc2UoYSkKICAgICAgICBzZWxmLmNsYXNzLm5ldygg QHEgKiBhLnEsCiAgICAgICAgICAgICAgICAgICAgICAgIEBxICogYS5yICsgciAqIGEudCwKICAg ICAgICAgICAgICAgICAgICAgICAgQHMgKiBhLnEgKyB0ICogYS5zLAogICAgICAgICAgICAgICAg ICAgICAgICBAcyAqIGEuciArIHQgKiBhLnQKICAgICAgICAgICAgICAgICAgICApCiAgICBlbmQK CiAgICBkZWYgcXJzdCAqYXJncwogICAgICAgIGluaXRpYWxpemUgKmFyZ3MKICAgICAgICBzZWxm CiAgICBlbmQKCgplbmQKCgpXSURUSCA9IDEwCm4gPSAyXzUwMCAjIEludGVnZXIoQVJHVlswXSkK aiA9IDAKCmRpZ2l0cyA9IFBpRGlnaXRTcGlnb3QubmV3Cgp3aGlsZSBuID4gMAogICAgaWYgbiA+ PSBXSURUSAogICAgICAgIFdJRFRILnRpbWVzIHtwcmludCBkaWdpdHMubmV4dCF9CiAgICAgICAg aiArPSBXSURUSAogICAgZWxzZQogICAgICAgIG4udGltZXMge3ByaW50IGRpZ2l0cy5uZXh0IX0K ICAgICAgICAoV0lEVEgtbikudGltZXMge3ByaW50ICIgIn0KICAgICAgICBqICs9IG4KICAgIGVu ZAogICAgcHV0cyAiXHQ6IitqLnRvX3MKICAgIG4gLT0gV0lEVEgKZW5kCgoKYmVmb3JlCTUuMzYy NTA5OTY1ODk2NjEKYmVmb3JlCTUuMzU3Nzc5OTc5NzA1ODEKYmVmb3JlCTUuNDA4MDQzODYxMzg5 MTYKYmVmb3JlCTUuMzE4NjQxOTAxMDE2MjQKYmVmb3JlCTUuMzM2Mjk4OTQyNTY1OTIKcnVieSAx LjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTUuMzMyNTg5ODY0 NzMwODMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhd CTUuMzY3NTE4OTAxODI0OTUKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkg W2k2ODYtbGludXhdCTUuNDkwMTEyMDY2MjY4OTIKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0 cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTUuMzM5MzAwODcwODk1MzkKcnVieSAxLjkuMmRldiAo MjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTUuNDAwODU2OTcxNzQwNzIKCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CnNvX3JhbmRvbQoKIyBmcm9tIGh0dHA6Ly93d3cuYmFnbGV5Lm9yZy9+ZG91Zy9zaG9vdG91dC9i ZW5jaC9yYW5kb20vcmFuZG9tLnJ1YnkKCklNID0gMTM5OTY4LjAKSUEgPSAzODc3LjAKSUMgPSAy OTU3My4wCgokbGFzdCA9IDQyLjAKCmRlZiBnZW5fcmFuZG9tKG1heCkKICAobWF4ICogKCRsYXN0 ID0gKCRsYXN0ICogSUEgKyBJQykgJSBJTSkpIC8gSU0KZW5kCgpOID0gMTAwMDAwMAoKaT0wCndo aWxlIGk8TgogIGkrPTEKICBnZW5fcmFuZG9tKDEwMC4wKQplbmQKIyAiJS45ZiIgJSBnZW5fcmFu ZG9tKDEwMC4wKQoKYmVmb3JlCTEuMzI2MTg3ODQ5MDQ0OApiZWZvcmUJMS4zMjYyMzEwMDI4MDc2 MgpiZWZvcmUJMS4zMDc5NDU5NjY3MjA1OApiZWZvcmUJMS4zMDA3MjQ5ODMyMTUzMwpiZWZvcmUJ MS4zMTE0OTY5NzMwMzc3MgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBb aTY4Ni1saW51eF0JMS4zNjE1MjI5MTI5NzkxMwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRy dW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS4zNTc5NDE4NjU5MjEwMgpydWJ5IDEuOS4yZGV2ICgy MDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS4zNTU0ODgwNjE5MDQ5MQpydWJ5 IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS40ODE4NDgw MDE0ODAxCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQkxLjM1MjY1NDkzMzkyOTQ0CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzb19yZXZlcnNlX2NvbXBsZW1lbnQKCiMhL3Vzci9iaW4v cnVieQojIFRoZSBHcmVhdCBDb21wdXRlciBMYW5ndWFnZSBTaG9vdG91dAojIGh0dHA6Ly9zaG9v dG91dC5hbGlvdGguZGViaWFuLm9yZy8KIwojIENvbnRyaWJ1dGVkIGJ5IFBldGVyIEJqYXJrZSBP bHNlbgojIE1vZGlmaWVkIGJ5IERvdWcgS2luZwoKc2VxPUFycmF5Lm5ldwoKZGVmIHJldmNvbXAo c2VxKQogIHNlcS5yZXZlcnNlIS50ciEoJ3dzYXR1Z2N5cmttYmRodm5BVFVHQ1lSS01CREhWTics J1dTVEFBQ0dSWU1LVkhEQk5UQUFDR1JZTUtWSERCTicpCiAgc3RyaW5nbGVuPXNlcS5sZW5ndGgK ICAwLnN0ZXAoc3RyaW5nbGVuLTEsNjApIHt8eHwgcHJpbnQgc2VxLnNsaWNlKHgsNjApICwgIlxu In0KZW5kCgppbnB1dCA9IG9wZW4oRmlsZS5qb2luKEZpbGUuZGlybmFtZSgkMCksICdmYXN0YS5v dXRwdXQuMjUwMDAwMCcpLCAncmInKQoKd2hpbGUgaW5wdXQuZ2V0cwogIGlmICRfID1+IC8+Lwog ICAgaWYgc2VxLmxlbmd0aCAhPSAwCiAgICAgIHJldmNvbXAoc2VxLmpvaW4pCiAgICAgIHNlcT1B cnJheS5uZXcKICAgIGVuZAogICAgcHV0cyAkXwogIGVsc2UKICAgICRfLnN1YigvXG4vLCcnKQog ICAgc2VxLnB1c2ggJF8KICBlbmQKZW5kCnJldmNvbXAoc2VxLmpvaW4pCgpiZWZvcmUJNS41NjQ1 NDg5NjkyNjg4CmJlZm9yZQk1LjYzODEwMzAwODI3MDI2CmJlZm9yZQk1LjYwNzUyODkyNDk0MjAy CmJlZm9yZQk1LjYwMTIxMjk3ODM2MzA0CmJlZm9yZQk1LjY4MTkzMTk3MjUwMzY2CnJ1YnkgMS45 LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk1LjY0Nzk2NTE5Mjc5 NDgKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTUu NTk2NzQ1MDE0MTkwNjcKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2 ODYtbGludXhdCTUuNTY5MzM3MTI5NTkyOQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5r IDI2MjM4KSBbaTY4Ni1saW51eF0JNS41NDU5MjgwMDE0MDM4MQpydWJ5IDEuOS4yZGV2ICgyMDEw LTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNS41ODQ4ODYwNzQwNjYxNgoKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc29f c2lldmUKCiMgZnJvbSBodHRwOi8vd3d3LmJhZ2xleS5vcmcvfmRvdWcvc2hvb3RvdXQvYmVuY2gv c2lldmUvc2lldmUucnVieQpudW0gPSA0MApjb3VudCA9IGkgPSBqID0gMApmbGFnczAgPSBBcnJh eS5uZXcoODE5MiwxKQprID0gMAp3aGlsZSBrIDwgbnVtCiAgays9MQogIGNvdW50ID0gMAogIGZs YWdzID0gZmxhZ3MwLmR1cAogIGkgPSAyCiAgd2hpbGUgaTw4MTkyCiAgICBpKz0xCiAgICBpZiBm bGFnc1tpXQogICAgICAjIHJlbW92ZSBhbGwgbXVsdGlwbGVzIG9mIHByaW1lOiBpCiAgICAgIGog PSBpKmkKICAgICAgd2hpbGUgaiA8IDgxOTIKICAgICAgICBqICs9IGkKICAgICAgICBmbGFnc1tq XSA9IG5pbAogICAgICBlbmQKICAgICAgY291bnQgKz0gMQogICAgZW5kCiAgZW5kCmVuZApjb3Vu dAoKYmVmb3JlCTAuNTYxMjMzMDQzNjcwNjU0CmJlZm9yZQkwLjM5MDczNjEwMzA1Nzg2MQpiZWZv cmUJMC4zOTUzMDg5NzE0MDUwMjkKYmVmb3JlCTAuMzkzNzAyOTgzODU2MjAxCmJlZm9yZQkwLjM5 MDI3ODEwMDk2NzQwNwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4 Ni1saW51eF0JMC4zNzEzMTMwOTUwOTI3NzMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVu ayAyNjIzOCkgW2k2ODYtbGludXhdCTAuMzcwMDkwMDA3NzgxOTgyCnJ1YnkgMS45LjJkZXYgKDIw MTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkwLjM2NTQxNjA0OTk1NzI3NQpydWJ5 IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMC4zNjQ3NzYx MzQ0OTA5NjcKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGlu dXhdCTAuMzcwNDM3ODYwNDg4ODkyCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzb19zcGVjdHJhbG5vcm0KCiMgVGhlIENvbXB1dGVy IExhbmd1YWdlIFNob290b3V0CiMgaHR0cDovL3Nob290b3V0LmFsaW90aC5kZWJpYW4ub3JnLwoj IENvbnRyaWJ1dGVkIGJ5IFNva29sb3YgWXVyYQoKZGVmIGV2YWxfQShpLGopCglyZXR1cm4gMS4w LygoaStqKSooaStqKzEpLzIraSsxKQplbmQKCmRlZiBldmFsX0FfdGltZXNfdSh1KQogICAgICAg IHYsIGkgPSBuaWwsIG5pbAoJKDAuLnUubGVuZ3RoLTEpLmNvbGxlY3QgeyB8aXwKICAgICAgICAg ICAgICAgIHYgPSAwCgkJZm9yIGogaW4gMC4udS5sZW5ndGgtMQoJCQl2ICs9IGV2YWxfQShpLGop KnVbal0KICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgdgogICAgICAgIH0KZW5k CgpkZWYgZXZhbF9BdF90aW1lc191KHUpCgl2LCBpID0gbmlsLCBuaWwKCSgwLi51Lmxlbmd0aC0x KS5jb2xsZWN0e3xpfAogICAgICAgICAgICAgICAgdiA9IDAKCQlmb3IgaiBpbiAwLi51Lmxlbmd0 aC0xCgkJCXYgKz0gZXZhbF9BKGosaSkqdVtqXQogICAgICAgICAgICAgICAgZW5kCiAgICAgICAg ICAgICAgICB2CiAgICAgICAgfQplbmQKCmRlZiBldmFsX0F0QV90aW1lc191KHUpCglyZXR1cm4g ZXZhbF9BdF90aW1lc191KGV2YWxfQV90aW1lc191KHUpKQplbmQKCm4gPSA1MDAgIyBBUkdWWzBd LnRvX2kKCnU9WzFdKm4KZm9yIGkgaW4gMS4uMTAKICAgICAgICB2PWV2YWxfQXRBX3RpbWVzX3Uo dSkKICAgICAgICB1PWV2YWxfQXRBX3RpbWVzX3UodikKZW5kCnZCdj0wCnZ2PTAKZm9yIGkgaW4g MC4ubi0xCiAgICAgICAgdkJ2ICs9IHVbaV0qdltpXQogICAgICAgIHZ2ICs9IHZbaV0qdltpXQpl bmQKCnN0ciA9ICIlMC45ZiIgJSAoTWF0aC5zcXJ0KHZCdi92dikpLCAiXG4iCiMgcHJpbnQgc3Ry CgpiZWZvcmUJMTUuNTQ2NDY4OTczMTU5OApiZWZvcmUJMTUuMjcwNDgzMDE2OTY3OApiZWZvcmUJ MTUuMzA5NTA5OTkyNTk5NQpiZWZvcmUJMTUuMTQ5Mjg2OTg1Mzk3MwpiZWZvcmUJMTUuMjM2NDk5 MDcxMTIxMgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51 eF0JMTUuNjMzMjk2OTY2NTUyNwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4 KSBbaTY4Ni1saW51eF0JMTUuNjYwOTk4MTA2MDAyOApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0 IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMTUuMzM5Mzg1OTg2MzI4MQpydWJ5IDEuOS4yZGV2 ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMTUuNjYxNjkzMDk2MTYwOQpy dWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMTUuNTU2 NTg5MTI2NTg2OQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0Kdm0xX2Jsb2NrCgpkZWYgbQogIHlpZWxkCmVuZAoKaT0wCndoaWxlIGk8 MzAwMDAwMDAgIyB3aGlsZSBsb29wIDEKICBpKz0xCiAgbXsKICB9CmVuZAoKYmVmb3JlCTExLjU3 OTU5NTA4ODk1ODcKYmVmb3JlCTExLjcyNzc5MzkzMTk2MTEKYmVmb3JlCTExLjU4MDcyNjE0NjY5 OApiZWZvcmUJMTEuNDQwOTIxMDY4MTkxNQpiZWZvcmUJMTEuOTM4ODc0OTU5OTQ1NwpydWJ5IDEu OS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMTEuNzc4NTA2MDQw NTczMQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0J MTEuOTM2MTI0ODAxNjM1NwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBb aTY4Ni1saW51eF0JMTEuNzY4ODkxODExMzcwOApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRy dW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMTEuMjcwMjgyMDMwMTA1NgpydWJ5IDEuOS4yZGV2ICgy MDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMTEuNTY5ODA4MDA2Mjg2NgoKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K dm0xX2NvbnN0CgpDb25zdCA9IDEKCmkgPSAwCndoaWxlIGk8MzAwMDAwMDAgIyB3aGlsZSBsb29w IDEKICBpKz0gMQogIGogPSBDb25zdAogIGsgPSBDb25zdAplbmQKCmJlZm9yZQk1LjU2MDIzOTA3 NjYxNDM4CmJlZm9yZQk1LjYxNTU5OTg3MDY4MTc2CmJlZm9yZQk1LjY0Njg4NTE1NjYzMTQ3CmJl Zm9yZQk1LjU2OTM5MTAxMjE5MTc3CmJlZm9yZQk1LjU2OTEwODk2MzAxMjcKcnVieSAxLjkuMmRl diAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTUuNTg1NTAwOTU1NTgxNjcK cnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTUuNTk4 NDkwOTUzNDQ1NDMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYt bGludXhdCTUuNjAyMTc0MDQzNjU1NApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2 MjM4KSBbaTY4Ni1saW51eF0JNS41NjgxMTA5NDI4NDA1OApydWJ5IDEuOS4yZGV2ICgyMDEwLTAx LTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNS40OTUxNTM5MDM5NjExOAoKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kdm0xX2Vu c3VyZQoKaT0wCndoaWxlIGk8MzAwMDAwMDAgIyBiZW5jaG1hcmsgbG9vcCAxCiAgaSs9MQogIGJl Z2luCiAgICBiZWdpbgogICAgZW5zdXJlCiAgICBlbmQKICBlbnN1cmUKICBlbmQKZW5kCgoKYmVm b3JlCTMuMDk1OTUyOTg3NjcwOQpiZWZvcmUJNS41NzYyMzI5MTAxNTYyNQpiZWZvcmUJMy4zMzAx NDM5Mjg1Mjc4MwpiZWZvcmUJMy4wOTAyNzg4NjM5MDY4NgpiZWZvcmUJMy40NDM3MjAxMDIzMTAx OApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy40 MTI5NjMxNTE5MzE3NgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4 Ni1saW51eF0JMy4zODQ2ODE5NDAwNzg3NApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5r IDI2MjM4KSBbaTY4Ni1saW51eF0JMy41NTcwNzg4MzgzNDgzOQpydWJ5IDEuOS4yZGV2ICgyMDEw LTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy40ODc2Nzc4MTI1NzYyOQpydWJ5IDEu OS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy40MTY3NTcxMDY3 ODEwMQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0Kdm0xX2l2YXIKCkBhID0gMQoKaSA9IDAKd2hpbGUgaTwzMDAwMDAwMCAjIHdoaWxl IGxvb3AgMQogIGkrPSAxCiAgaiA9IEBhCiAgayA9IEBhCmVuZAoKYmVmb3JlCTYuMjI1MjY3MTcx ODU5NzQKYmVmb3JlCTYuMTMyMjYzMTgzNTkzNzUKYmVmb3JlCTYuMjA4NTIzOTg4NzIzNzUKYmVm b3JlCTYuMTY4NDYyMDM4MDQwMTYKYmVmb3JlCTYuMTMxNzkyMDY4NDgxNDUKcnVieSAxLjkuMmRl diAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTcuMzgzNTExMDY2NDM2NzcK cnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTcuNTM5 MjE0MTM0MjE2MzEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYt bGludXhdCTcuNDIwODg5MTM5MTc1NDIKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAy NjIzOCkgW2k2ODYtbGludXhdCTcuMjAzMDI3MDA5OTYzOTkKcnVieSAxLjkuMmRldiAoMjAxMC0w MS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTcuNTg0NDQyODUzOTI3NjEKCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZtMV9p dmFyX3NldAoKaSA9IDAKd2hpbGUgaTwzMF8wMDBfMDAwICMgd2hpbGUgbG9vcCAxCiAgaSs9IDEK ICBAYSA9IDEKICBAYiA9IDIKZW5kCgpiZWZvcmUJNi4yMTExMjkxODg1Mzc2CmJlZm9yZQk2LjI1 MzIzNzAwOTA0ODQ2CmJlZm9yZQk2LjIzNDcyMzA5MTEyNTQ5CmJlZm9yZQk2LjM3NTc2NDg0Njgw MTc2CmJlZm9yZQk2LjI0MTgzNzk3ODM2MzA0CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1 bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk2LjM4MDc2OTk2ODAzMjg0CnJ1YnkgMS45LjJkZXYgKDIw MTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk2LjI3ODA0OTk0NTgzMTMKcnVieSAx LjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTYuMjYwNTk2OTkw NTg1MzMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhd CTYuMjM3MDEzODE2ODMzNQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBb aTY4Ni1saW51eF0JNi4yNDY1MjYwMDI4ODM5MQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kdm0xX2xlbmd0aAoKYSA9ICdhYmMnCmIg PSBbMSwgMiwgM10KaT0wCndoaWxlIGk8MzAwMDAwMDAgIyB3aGlsZSBsb29wIDEKICBpKz0xCiAg YS5sZW5ndGgKICBiLmxlbmd0aAplbmQKCgpiZWZvcmUJNS42NjgzNjgxMDExMgpiZWZvcmUJNS42 ODc2OTg4NDEwOTQ5NwpiZWZvcmUJNS43MjczODQwOTA0MjM1OApiZWZvcmUJNS44NjYyNzE5NzI2 NTYyNQpiZWZvcmUJNS43MzU1NTc3OTQ1NzA5MgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRy dW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNS41NTIwNTI5NzQ3MDA5MwpydWJ5IDEuOS4yZGV2ICgy MDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNS44MzQ0NTA5NjAxNTkzCnJ1Ynkg MS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk1LjYwMzcwODk4 MjQ2NzY1CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQk1Ljc5MDA4ODg5MTk4MzAzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgp IFtpNjg2LWxpbnV4XQk1LjkyODM1MjgzMjc5NDE5CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2bTFfbmVxCgppID0gMApvYmoxID0g T2JqZWN0Lm5ldwpvYmoyID0gT2JqZWN0Lm5ldwoKd2hpbGUgaTwzMDAwMDAwMCAjIHdoaWxlIGxv b3AgMQogIGkrPSAxCiAgb2JqMSAhPSBvYmoyCmVuZAoKYmVmb3JlCTQuOTcwNzQ2MDQwMzQ0MjQK YmVmb3JlCTQuODU4MjkzMDU2NDg4MDQKYmVmb3JlCTQuOTk1ODIyOTA2NDk0MTQKYmVmb3JlCTQu OTcyNTUzMDE0NzU1MjUKYmVmb3JlCTQuOTM2MzA5MDk5MTk3MzkKcnVieSAxLjkuMmRldiAoMjAx MC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTQuOTA2NjE1OTcyNTE4OTIKcnVieSAx LjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTQuNzkxODQyOTM3 NDY5NDgKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhd CTQuODExODcwMDk4MTE0MDEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkg W2k2ODYtbGludXhdCTQuODc4Mjc3MDYzMzY5NzUKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0 cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTQuODI2NDM2OTk2NDU5OTYKCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZtMV9ub3QKCmkg PSAwCm9iaiA9IE9iamVjdC5uZXcKCndoaWxlIGk8MzAwMDAwMDAgIyB3aGlsZSBsb29wIDEKICBp Kz0gMQogICFvYmoKZW5kCgpiZWZvcmUJNC4xNjU3ODU3ODk0ODk3NQpiZWZvcmUJNC4xNTk4NTYw ODEwMDg5MQpiZWZvcmUJNC4xMTg5NTc5OTYzNjg0MQpiZWZvcmUJNC4xMDc0MTMwNTM1MTI1Nwpi ZWZvcmUJNC4wNjE4MzYwMDQyNTcyCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYy MzgpIFtpNjg2LWxpbnV4XQk2LjIwNDE4NzE1NDc2OTkKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0w NCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTYuMjY0Nzc2MjI5ODU4NApydWJ5IDEuOS4yZGV2 ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNi4xMDQ1Mzg5MTc1NDE1CnJ1 YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk2LjEwODM2 Mzg2NjgwNjAzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxp bnV4XQk2LjM4NDg5MDA3OTQ5ODI5CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2bTFfcmVzY3VlCgppPTAKd2hpbGUgaTwzMDAwMDAw MCAjIHdoaWxlIGxvb3AgMQogIGkrPTEKICBiZWdpbgogIHJlc2N1ZQogIGVuZAplbmQKCmJlZm9y ZQkzLjI4NzkwMDkyNDY4MjYyCmJlZm9yZQkzLjUwNjY1MzA3MDQ0OTgzCmJlZm9yZQkzLjUxNjE5 ODg3MzUxOTkKYmVmb3JlCTMuMjI0NzMxOTIyMTQ5NjYKYmVmb3JlCTMuNDM0NTY0ODI4ODcyNjgK cnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTMuMjU4 OTk5MTA5MjY4MTkKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYt bGludXhdCTMuMjc5ODQ5MDUyNDI5MgpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2 MjM4KSBbaTY4Ni1saW51eF0JMy4yMDIzMDE5NzkwNjQ5NApydWJ5IDEuOS4yZGV2ICgyMDEwLTAx LTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy4yNjQ0ODM5Mjg2ODA0MgpydWJ5IDEuOS4y ZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy4yNDQ1NDYxNzUwMDMw NQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0Kdm0xX3NpbXBsZXJldHVybgoKZGVmIG0KICByZXR1cm4gMQplbmQKaT0wCndoaWxlIGk8 MzAwMDAwMDAgIyB3aGlsZSBsb29wIDEKICBpKz0xCiAgbQplbmQKCgpiZWZvcmUJOS4yNDU2NTc5 MjA4Mzc0CmJlZm9yZQk5LjI3NzgyODkzMTgwODQ3CmJlZm9yZQk5LjI4NzEwOTg1MTgzNzE2CmJl Zm9yZQk5LjExNzI4ODgyNzg5NjEyCmJlZm9yZQk5LjIwODM5ODEwMzcxMzk5CnJ1YnkgMS45LjJk ZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk5Ljc2MTEzNjA1NDk5MjY4 CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk5LjY1 Mzk5OTA5MDE5NDcKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYt bGludXhdCTkuNzAxNTM0MDMyODIxNjYKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAy NjIzOCkgW2k2ODYtbGludXhdCTkuNDU0MDUyOTI1MTA5ODYKcnVieSAxLjkuMmRldiAoMjAxMC0w MS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTkuNTAwODQ0MDAxNzcwMDIKCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZtMV9z d2FwCgphID0gMQpiID0gMgppPTAKd2hpbGUgaTwzMDAwMDAwMCAjIHdoaWxlIGxvb3AgMQogIGkr PTEKICBhLCBiID0gYiwgYQplbmQKCgpiZWZvcmUJNC4zNDY2NjM5NTE4NzM3OApiZWZvcmUJNC4y NjM4MTgwMjU1ODg5OQpiZWZvcmUJNC4xMTgyNDYwNzg0OTEyMQpiZWZvcmUJNC4zMjc3ODMxMDc3 NTc1NwpiZWZvcmUJNC4yNTUxNjYwNTM3NzE5NwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRy dW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNC4xODk3NDY4NTY2ODk0NQpydWJ5IDEuOS4yZGV2ICgy MDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNC4xNDM0ODc5MzAyOTc4NQpydWJ5 IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNC4zMTMyMTUw MTczMTg3MwpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51 eF0JNC4xNjI2NTYwNjg4MDE4OApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4 KSBbaTY4Ni1saW51eF0JNC4yMzM1ODI5NzM0ODAyMgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kdm0yX2FycmF5CgppPTAKd2hpbGUg aTw2MDAwMDAwICMgYmVuY2htYXJrIGxvb3AgMgogIGkrPTEKICBhID0gWzEsMiwzLDQsNSw2LDcs OCw5LDEwXQplbmQKCmJlZm9yZQkzLjg3ODUxODEwNDU1MzIyCmJlZm9yZQkzLjk3MTU3MDk2ODYy NzkzCmJlZm9yZQkzLjg4MTkxODkwNzE2NTUzCmJlZm9yZQkzLjkxODk5ODAwMzAwNTk4CmJlZm9y ZQkzLjkwNjg0NzAwMDEyMjA3CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgp IFtpNjg2LWxpbnV4XQkzLjczODc5NTk5NTcxMjI4CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjc0NTY2NDExOTcyMDQ2CnJ1YnkgMS45LjJkZXYg KDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjg0MDI5MTk3NjkyODcxCnJ1 YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjcyMDcw MzEyNQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0J My44ODY5MjU5MzU3NDUyNAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0Kdm0yX2Nhc2UKCmk9MAp3aGlsZSBpPDYwMDAwMDAgIyB3aGls ZSBsb29wIDIKICBjYXNlIDpmb28KICB3aGVuIDpiYXIKICAgIHJhaXNlCiAgd2hlbiA6YmF6CiAg ICByYWlzZQogIHdoZW4gOmJvbwogICAgcmFpc2UKICB3aGVuIDpmb28KICAgIGkrPTEKICBlbmQK ZW5kCgoKYmVmb3JlCTEuMzIzNzA2MTUwMDU0OTMKYmVmb3JlCTEuMzUwNzU3MTIyMDM5NzkKYmVm b3JlCTEuMzExODIzODQ0OTA5NjcKYmVmb3JlCTEuMzEwMzI4OTYwNDE4NwpiZWZvcmUJMS4zMjI3 NTI5NTI1NzU2OApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1s aW51eF0JMS4zNDY0MjY5NjM4MDYxNQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2 MjM4KSBbaTY4Ni1saW51eF0JMS4zNzM4ODcwNjIwNzI3NQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAx LTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS4zNTg0Njk5NjMwNzM3MwpydWJ5IDEuOS4y ZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS4zNDI1NzUwNzMyNDIx OQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMS4z NjIxMTEwOTE2MTM3NwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0Kdm0yX2V2YWwKCmk9MAp3aGlsZSBpPDYwMDAwMDAgIyBiZW5jaG1h cmsgbG9vcCAyCiAgaSs9MQogIGV2YWwoIjEiKQplbmQKCgpiZWZvcmUJNzMuOTU0MzQ0OTg3ODY5 MwpiZWZvcmUJNzMuNzAzMDk0OTU5MjU5CmJlZm9yZQk3NC4xODQ0MDY5OTU3NzMzCmJlZm9yZQk3 My45MTIxMTg5MTE3NDMyCmJlZm9yZQk3NC4xODMxNjkxMjY1MTA2CnJ1YnkgMS45LjJkZXYgKDIw MTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk3My42MTEyMDg5MTU3MTA0CnJ1Ynkg MS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk3NC4xNjY4NTk4 NjUxODg2CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQk3NC4wODkzMzkwMTc4NjgKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkg W2k2ODYtbGludXhdCTc0LjEzMzU1NjEyNzU0ODIKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0 cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTczLjk4NjEwNzExMDk3NzIKCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZtMl9tZXRob2QK CmRlZiBtCiAgbmlsCmVuZAoKaT0wCndoaWxlIGk8NjAwMDAwMCAjIGJlbmNobWFyayBsb29wIDIK ICBpKz0xCiAgbTsgbTsgbTsgbTsgbTsgbTsgbTsgbTsKZW5kCgpiZWZvcmUJOC40MDI1NTYxODA5 NTM5OApiZWZvcmUJOC4yNzcyMjA5NjQ0MzE3NgpiZWZvcmUJOC42OTk1MzM5MzkzNjE1NwpiZWZv cmUJOC4zOTAwMjI5OTMwODc3NwpiZWZvcmUJOC43MzczOTk4MTY1MTMwNgpydWJ5IDEuOS4yZGV2 ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JOC45NjgxMjM5MTI4MTEyOApy dWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JOS4xNDI1 MzMwNjM4ODg1NQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1s aW51eF0JOC45NzMxOTgxNzU0MzAzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYy MzgpIFtpNjg2LWxpbnV4XQk5LjA0MTI5ODg2NjI3MTk3CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEt MDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk4Ljk3NzUwMTg2OTIwMTY2CgotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2bTJfbXV0 ZXgKCnJlcXVpcmUgJ3RocmVhZCcKCm0gPSBNdXRleC5uZXcKCmk9MAp3aGlsZSBpPDYwMDAwMDAg IyBiZW5jaG1hcmsgbG9vcCAyCiAgaSs9MQogIG0uc3luY2hyb25pemV7fQplbmQKCmJlZm9yZQk4 LjA4MDcwODk4MDU2MDMKYmVmb3JlCTguMDU4MDI3MDI5MDM3NDgKYmVmb3JlCTcuOTIxMzk0ODI0 OTgxNjkKYmVmb3JlCTcuODM4NTU1ODEyODM1NjkKYmVmb3JlCTcuOTM2ODk4OTQ2NzYyMDgKcnVi eSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTcuMTQ4NzUz MTY2MTk4NzMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGlu dXhdCTcuMTYwMjkwOTU2NDk3MTkKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIz OCkgW2k2ODYtbGludXhdCTcuMTQ0ODY4MTM1NDUyMjcKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0w NCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTcuMTEyODc5OTkxNTMxMzcKcnVieSAxLjkuMmRl diAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTcuMjYzODMyMDkyMjg1MTYK Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCnZtMl9wb2x5X21ldGhvZAoKY2xhc3MgQzEKICBkZWYgbQogICAgMQogIGVuZAplbmQKY2xh c3MgQzIKICBkZWYgbQogICAgMgogIGVuZAplbmQKCm8xID0gQzEubmV3Cm8yID0gQzIubmV3Cgpp PTAKd2hpbGUgaTw2MDAwMDAwICMgYmVuY2htYXJrIGxvb3AgMgogIG8gPSAoaSAlIDIgPT0gMCkg PyBvMSA6IG8yCiAgby5tOyBvLm07IG8ubTsgby5tOyBvLm07IG8ubTsgby5tOyBvLm0KICBpKz0x CmVuZAoKYmVmb3JlCTEyLjMyMDU0OTk2NDkwNDgKYmVmb3JlCTEyLjQ1NzA4ODIzMjA0MDQKYmVm b3JlCTEyLjQxMzA0Mjc4MzczNzIKYmVmb3JlCTEyLjU4NjM2Nzg0NTUzNTMKYmVmb3JlCTEzLjMy OTc4MDEwMTc3NjEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYt bGludXhdCTExLjAxNzM5NjIxMTYyNDEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAy NjIzOCkgW2k2ODYtbGludXhdCTEwLjk4ODAyNjg1NzM3NjEKcnVieSAxLjkuMmRldiAoMjAxMC0w MS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEwLjk2MzM1NjAxODA2NjQKcnVieSAxLjku MmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEwLjk3MDI1NDg5ODA3 MTMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEw Ljk3NTUxNDg4ODc2MzQKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCnZtMl9wb2x5X21ldGhvZF9vdgoKY2xhc3MgQzEKICBkZWYgbQog ICAgMQogIGVuZAplbmQKY2xhc3MgQzIKICBkZWYgbQogICAgMgogIGVuZAplbmQKCm8xID0gQzEu bmV3Cm8yID0gQzIubmV3CgppPTAKd2hpbGUgaTw2MDAwMDAwICMgYmVuY2htYXJrIGxvb3AgMgog IG8gPSAoaSAlIDIgPT0gMCkgPyBvMSA6IG8yCiMgIG8ubTsgby5tOyBvLm07IG8ubTsgby5tOyBv Lm07IG8ubTsgby5tCiAgaSs9MQplbmQKCmJlZm9yZQkxLjQzNjg1NjAzMTQxNzg1CmJlZm9yZQkx LjUzNzcxNTE5NjYwOTUKYmVmb3JlCTEuNDU2Nzc5OTU2ODE3NjMKYmVmb3JlCTEuNDQyNzM5MDA5 ODU3MTgKYmVmb3JlCTEuNTAxOTUwMDI1NTU4NDcKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0 cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuNTcyNTcxOTkyODc0MTUKcnVieSAxLjkuMmRldiAo MjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuNTIwOTA5MDcwOTY4NjMKcnVi eSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTEuNTUyOTgz MDQ1NTc4CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQkxLjUwNTQ0NTk1NzE4Mzg0CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgp IFtpNjg2LWxpbnV4XQkxLjU0MjE2MTk0MTUyODMyCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2bTJfcHJvYwoKZGVmIG0gJmIKICBi CmVuZAoKcHIgPSBtewogIGEgPSAxCn0KCmk9MAp3aGlsZSBpPDYwMDAwMDAgIyBiZW5jaG1hcmsg bG9vcCAyCiAgaSs9MQogIHByLmNhbGwKZW5kCgoKYmVmb3JlCTMuMzQ5MzU4Nzk3MDczMzYKYmVm b3JlCTMuNDQ0MzE1OTEwMzM5MzYKYmVmb3JlCTMuMzM2NzIwOTQzNDUwOTMKYmVmb3JlCTMuNTEw NTAyODE1MjQ2NTgKYmVmb3JlCTMuNTY3NTY1OTE3OTY4NzUKcnVieSAxLjkuMmRldiAoMjAxMC0w MS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTMuNDU2Mjg0MDQ2MTczMQpydWJ5IDEuOS4y ZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy42NTE4NjgxMDQ5MzQ2 OQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMy40 MDQxOTYwMjM5NDEwNApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4 Ni1saW51eF0JMy40NDAxNjUwNDI4NzcyCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsg MjYyMzgpIFtpNjg2LWxpbnV4XQkzLjUyNjM4NjAyMjU2Nzc1CgotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2bTJfcmVnZXhwCgppPTAK c3RyID0gJ3h4eGhvZ2V4eHgnCndoaWxlIGk8NjAwMDAwMCAjIGJlbmNobWFyayBsb29wIDIKICAv aG9nZS8gPX4gc3RyCiAgaSs9MQplbmQKCmJlZm9yZQk1LjI5NDQzNTk3NzkzNTc5CmJlZm9yZQk1 LjI5NDEzMTA0MDU3MzEyCmJlZm9yZQk1LjI5ODk0NTE4ODUyMjM0CmJlZm9yZQk1LjQ3MTU2NzE1 MzkzMDY2CmJlZm9yZQk1LjE5MjI3ODg2MTk5OTUxCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk1LjM5NDQ0MTg0MzAzMjg0CnJ1YnkgMS45LjJkZXYg KDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk1LjI4NDQxMjE0NTYxNDYyCnJ1 YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQk1LjQ3MDM2 MDk5NDMzODk5CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxp bnV4XQk1LjQ5MzgwNjEyMzczMzUyCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYy MzgpIFtpNjg2LWxpbnV4XQk1LjUzOTMwNDAxODAyMDYzCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2bTJfc2VuZAoKY2xhc3MgQwog IGRlZiBtCiAgZW5kCmVuZAoKbyA9IEMubmV3CgppPTAKd2hpbGUgaTw2MDAwMDAwICMgYmVuY2ht YXJrIGxvb3AgMgogIGkrPTEKICBvLl9fc2VuZF9fIDptCmVuZAoKYmVmb3JlCTEuODQ4MTEyMTA2 MzIzMjQKYmVmb3JlCTEuODY4OTc1ODc3NzYxODQKYmVmb3JlCTEuODc0Nzc2ODQwMjA5OTYKYmVm b3JlCTEuOTkzMTA1ODg4MzY2NwpiZWZvcmUJMS44NDM0MjkwODg1OTI1MwpydWJ5IDEuOS4yZGV2 ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMi4zODg2NjQwMDcxODY4OQpy dWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMi40MDQx NTc4NzY5NjgzOApydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1s aW51eF0JMi40MjU4NTg5NzQ0NTY3OQpydWJ5IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2 MjM4KSBbaTY4Ni1saW51eF0JMi40NzQ2NjMwMTkxODAzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEt MDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyLjQ5ODc2ODA5MTIwMTc4CgotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2bTJfc3Vw ZXIKCgpjbGFzcyBDCiAgZGVmIG0KICAgIDEKICBlbmQKZW5kCgpjbGFzcyBDQyA8IEMKICBkZWYg bQogICAgc3VwZXIoKQogIGVuZAplbmQKCm9iaiA9IENDLm5ldwoKaSA9IDAKd2hpbGUgaTw2MDAw MDAwICMgYmVuY2htYXJrIGxvb3AgMgogIG9iai5tCiAgaSs9MQplbmQKCmJlZm9yZQkyLjc0NTMz NjA1NTc1NTYyCmJlZm9yZQkyLjcxMjIxMTEzMjA0OTU2CmJlZm9yZQkyLjcwMzgxNTkzNzA0MjI0 CmJlZm9yZQkyLjcwOTY1NjAwMDEzNzMzCmJlZm9yZQkyLjczODgwNTA1NTYxODI5CnJ1YnkgMS45 LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyLjc3ODc0ODk4OTEw NTIyCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQky Ljc4MDY0NTEzMjA2NDgyCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtp Njg2LWxpbnV4XQkyLjc4NTcxMzkxMTA1NjUyCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1 bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyLjgyNjA4Njk5Nzk4NTg0CnJ1YnkgMS45LjJkZXYgKDIw MTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyLjcyMjE5Mzk1NjM3NTEyCgotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2 bTJfdW5pZjEKCmkgPSAwCmRlZiBtIGEsIGIKZW5kCgp3aGlsZSBpPDYwMDAwMDAgIyBiZW5jaG1h cmsgbG9vcCAyCiAgaSs9MQogIG0gMTAwLCAyMDAKZW5kCgpiZWZvcmUJMS42NzAxNTQwOTQ2OTYw NApiZWZvcmUJMS43MTk5OTAwMTUwMjk5MQpiZWZvcmUJMS43NjM3MjY5NDk2OTE3NwpiZWZvcmUJ MS42NjQwMjI5MjI1MTU4NwpiZWZvcmUJMS42MzA4MTQwNzU0Njk5NwpydWJ5IDEuOS4yZGV2ICgy MDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMi4xNTQwOTg5ODc1NzkzNQpydWJ5 IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JMi4xOTQ4ODY5 MjI4MzYzCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4 XQkyLjE4OTA2MTg4MDExMTY5CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgp IFtpNjg2LWxpbnV4XQkyLjE2NjE3ODk0MTcyNjY4CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQg dHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyLjI4MjE0MDk3MDIzMDEKCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZtMl96c3VwZXIK CmkgPSAwCgpjbGFzcyBDCiAgZGVmIG0gYQogICAgMQogIGVuZAplbmQKCmNsYXNzIENDIDwgQwog IGRlZiBtIGEKICAgIHN1cGVyCiAgZW5kCmVuZAoKb2JqID0gQ0MubmV3Cgp3aGlsZSBpPDYwMDAw MDAgIyBiZW5jaG1hcmsgbG9vcCAyCiAgb2JqLm0gMTAKICBpKz0xCmVuZAoKYmVmb3JlCTIuNzcw MDk4MjA5MzgxMQpiZWZvcmUJMi45NjI5NDAyMTYwNjQ0NQpiZWZvcmUJMi44Njg1NTEwMTU4NTM4 OApiZWZvcmUJMy4wMDY0MjM5NTAxOTUzMQpiZWZvcmUJMi44NTUwOTgwMDkxMDk1CnJ1YnkgMS45 LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyLjk0MTg2NDAxMzY3 MTg4CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQky Ljk0NTg3MzAyMjA3OTQ3CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtp Njg2LWxpbnV4XQkyLjk4OTgwNzEyODkwNjI1CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1 bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyLjg3MjIwNTAxODk5NzE5CnJ1YnkgMS45LjJkZXYgKDIw MTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkyLjkyNTMxMjk5NTkxMDY0CgotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2 bTNfZ2MKCiMhIC91c3IvYmluL3J1YnkKNTAwMC50aW1lcyBkbwogIDEwMC50aW1lcyBkbwogICAg eyJ4eHh4Ij0+Inl5eXkifQogIGVuZAogIEdDLnN0YXJ0CmVuZAoKYmVmb3JlCTMuMTQwNjA5MDI1 OTU1MgpiZWZvcmUJMy4xMTE0MjMwMTU1OTQ0OApiZWZvcmUJMy4xMjc1ODk5NDEwMjQ3OApiZWZv cmUJMy4wOTM2NDkxNDg5NDEwNApiZWZvcmUJMy4xMzQ2Njk3ODA3MzEyCnJ1YnkgMS45LjJkZXYg KDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjExOTM5NjkyNDk3MjUzCnJ1 YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjExOTk3 MTAzNjkxMTAxCnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxp bnV4XQkzLjEwODY0NDk2MjMxMDc5CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEtMDQgdHJ1bmsgMjYy MzgpIFtpNjg2LWxpbnV4XQkzLjE5Mjk2NjIyMjc2MzA2CnJ1YnkgMS45LjJkZXYgKDIwMTAtMDEt MDQgdHJ1bmsgMjYyMzgpIFtpNjg2LWxpbnV4XQkzLjE1MzY0OTgwNjk3NjMyCgotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2bTNfdGhy ZWFkX2NyZWF0ZV9qb2luCgppPTAKd2hpbGUgaTwxMDBfMDAwICMgYmVuY2htYXJrIGxvb3AgMwog IGkrPTEKICBUaHJlYWQubmV3ewogIH0uam9pbgplbmQKCmJlZm9yZQk0LjE3MDcxNDEzOTkzODM1 CmJlZm9yZQk0LjE5Njc5Nzg0Nzc0NzgKYmVmb3JlCTQuMjIxMTM1ODU0NzIxMDcKYmVmb3JlCTQu MjMzNzE2MDExMDQ3MzYKYmVmb3JlCTQuMzU2NjQwMTAwNDc5MTMKcnVieSAxLjkuMmRldiAoMjAx MC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTQuMzA2NzIzMTE3ODI4MzcKcnVieSAx LjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTQuMjA5NjE0MDM4 NDY3NDEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhd CTQuMTg0Mzg5MTE0Mzc5ODgKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkg W2k2ODYtbGludXhdCTQuMTg4Njk2ODYxMjY3MDkKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0 cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTQuMjI4OTU1MDMwNDQxMjgKCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZtM190aHJlYWRf bXV0ZXgKCnJlcXVpcmUgJ3RocmVhZCcKbSA9IE11dGV4Lm5ldwpyID0gMAptYXggPSAxMDAwCigx Li5tYXgpLm1hcHsKICBUaHJlYWQubmV3ewogICAgaT0wCiAgICB3aGlsZSBpPG1heAogICAgICBp Kz0xCiAgICAgIG0uc3luY2hyb25pemV7CiAgICAgICAgciArPSAxCiAgICAgIH0KICAgIGVuZAog IH0KfS5lYWNoe3xlfAogIGUuam9pbgp9CnJhaXNlIHIudG9fcyBpZiByICE9IG1heCAqIG1heAoK YmVmb3JlCTM5LjcwOTE3MzkxNzc3MDQKYmVmb3JlCTc2Ljg5NTUxNDk2NTA1NzQKYmVmb3JlCTk2 Ljk1ODYwOTEwNDE1NjUKYmVmb3JlCTUxLjQxNDg0NDk4OTc3NjYKYmVmb3JlCTU0LjgyNjk1Mjkz NDI2NTEKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkgW2k2ODYtbGludXhd CTg2LjM5Mzk3ODExODg5NjUKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0cnVuayAyNjIzOCkg W2k2ODYtbGludXhdCTQ0LjcwNjQ0NTkzMjM4ODMKcnVieSAxLjkuMmRldiAoMjAxMC0wMS0wNCB0 cnVuayAyNjIzOCkgW2k2ODYtbGludXhdCTY1LjY0MDc3MTE1MDU4OQpydWJ5IDEuOS4yZGV2ICgy MDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNTcuNTM5NDYyMDg5NTM4NgpydWJ5 IDEuOS4yZGV2ICgyMDEwLTAxLTA0IHRydW5rIDI2MjM4KSBbaTY4Ni1saW51eF0JNTkuMzAyODcw MDM1MTcxNQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KcmF3IGRhdGE6Cgo= --001485f99caa33c2b9047c574656--