From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.11.90.20160907 (pre-7.12 branch snapshot). Date: Sat, 27 Jun 2026 23:57:51 GMT Message-ID: <178260467110.1.47494538002433036.rpms-gdb-d258670d645c@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: d258670d645c91c1124ef42a8f55bd6c810a417a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogZDI1ODY3MGQ2NDVjOTFjMTEyNGVmNDJhOGY1NWJkNmM4MTBh NDE3YQogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxNi0wOS0wN1QyMjo0Nzo0OCswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArMzQ5NS8tNDcwMSBpbiAxNyBmaWxlKHMpCiAgICAgICAg ICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvZDI1 ODY3MGQ2NDVjOTFjMTEyNGVmNDJhOGY1NWJkNmM4MTBhNDE3YT9icmFuY2g9Z2RiLTE3LjItcmVi YXNlLWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBSZWJhc2UgdG8gRlNGIEdEQiA3 LjExLjkwLjIwMTYwOTA3IChwcmUtNy4xMiBicmFuY2ggc25hcHNob3QpLgoKLSBSZWJhc2UgSW50 ZWwgVkxBIHBhdGNoc2V0LgoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9y ZQppbmRleCAyMTRhYjYxLi43ZjllZjI4IDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5n aXRpZ25vcmUKQEAgLTEsMyArMSwzIEBACiAvZ2RiLWxpYnN0ZGMrKy12My1weXRob24tNi4xLjEt MjAxNjA4MTcudGFyLnh6CiAvdjEuNS50YXIuZ3oKLS9nZGItNy4xMS45MC4yMDE2MDkwNC50YXIu eHoKKy9nZGItNy4xMS45MC4yMDE2MDkwNy50YXIueHoKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1 aWxkaWQtbG9jYXRlLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAppbmRleCBm Zjc3Nzc1Li4yODc3M2VjIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNo CisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKQEAgLTI4MSw2ICsyODEsMTYgQEAg SW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQu ZXhwCiAgCiAgICAgIGlmIHsgJHNlcGFyYXRlX2luZmVyaW9yX3B0eSB9IHsKICAJbWlfY3JlYXRl X2luZmVyaW9yX3B0eQorLS0tIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvbmV3LXVpLXBlbmRpbmctaW5wdXQuZXhwLW9yaWcJMjAxNi0wOS0wNyAwNDowMToxNS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL25ldy11aS1wZW5kaW5nLWlucHV0LmV4cAkyMDE2LTA5LTA3IDIyOjM1OjM1LjgxODUz NDA2OSArMDIwMAorQEAgLTYyLDYgKzYyLDcgQEAgcHJvYyB0ZXN0X2NvbW1hbmRfbGluZV9uZXdf dWlfcGVuZGluZ19pbgorICAgICBzZXQgb3B0aW9ucyAiIgorICAgICBhcHBlbmQgb3B0aW9ucyAi IC1pZXggXCJzZXQgaGVpZ2h0IDBcIiIKKyAgICAgYXBwZW5kIG9wdGlvbnMgIiAtaWV4IFwic2V0 IHdpZHRoIDBcIiIKKysgICAgYXBwZW5kIG9wdGlvbnMgIiAtaWV4IFwic2V0IGJ1aWxkLWlkLXZl cmJvc2UgMFwiIgorICAgICBhcHBlbmQgb3B0aW9ucyAiIC1pZXggXCJuZXctdWkgY29uc29sZSAk ZXh0cmFfdHR5X25hbWVcIiIKKyAgICAgYXBwZW5kIG9wdGlvbnMgIiAtZXggXCJiICRicGxpbmVc IiIKKyAgICAgYXBwZW5kIG9wdGlvbnMgIiAtZXggXCJydW5cIiIKIEluZGV4OiBnZGItNy4xMS41 MC4yMDE2MDYzMC9nZGIvb2JqZmlsZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdkYi03LjExLjUwLjIw MTYwNjMwLm9yaWcvZ2RiL29iamZpbGVzLmgJMjAxNi0wNy0wMyAxNDozMzoyOC4xMzAyMDU1Mjgg KzAyMDAKCmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoIGIv Z2RiLXJoYno3OTU0MjQtYml0cG9zLTI1b2YyNS5wYXRjaAppbmRleCBlZjVlMDQ4Li5jZjVjMTdl IDEwMDY0NAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoCisrKyBiL2dk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy0yNW9mMjUucGF0Y2gKQEAgLTQ3LDEwICs0NywxMCBAQCBDb250 ZW50LVR5cGU6IHRleHQveC1wYXRjaAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAog Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Zjc3LWJvdW5kcy5wYXRj aAogCi1JbmRleDogZ2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL2YtbGFuZy5oCitJbmRleDogZ2Ri LTcuMTEuOTAuMjAxNjA5MDcvZ2RiL2YtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMTEu NTAuMjAxNjA2MzAub3JpZy9nZGIvZi1sYW5nLmgJMjAxNi0wNy0xNiAxMDo1NjoxMS42ODI3NjI3 MjIgKzAyMDAKLSsrKyBnZGItNy4xMS41MC4yMDE2MDYzMC9nZGIvZi1sYW5nLmgJMjAxNi0wNy0x NiAxMDo1NjoxNS41NTQ3OTM3MDQgKzAyMDAKKy0tLSBnZGItNy4xMS45MC4yMDE2MDkwNy5vcmln L2dkYi9mLWxhbmcuaAkyMDE2LTA5LTA3IDIxOjQ4OjMzLjMwODYyNDAxOSArMDIwMAorKysrIGdk Yi03LjExLjkwLjIwMTYwOTA3L2dkYi9mLWxhbmcuaAkyMDE2LTA5LTA3IDIxOjQ4OjQwLjk2NzY5 MjQ2OSArMDIwMAogQEAgLTQ5LDkgKzQ5LDkgQEAKICAgIHN0cnVjdCBzeW1ib2wgKmNvbnRlbnRz WzFdOwogIH07CkBAIC02MywxMCArNjMsMTAgQEAgSW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMw L2dkYi9mLWxhbmcuaAogIAogIGV4dGVybiB2b2lkIGY3N19nZXRfZHluYW1pY19hcnJheV9sZW5n dGggKHN0cnVjdCB0eXBlICopOwogIAotSW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi9m LXR5cGVwcmludC5jCitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL2YtdHlwZXByaW50 LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xMS41MC4yMDE2MDYzMC5vcmlnL2dkYi9mLXR5cGVw cmludC5jCTIwMTYtMDctMTYgMTA6NTY6MTEuNjgyNzYyNzIyICswMjAwCi0rKysgZ2RiLTcuMTEu NTAuMjAxNjA2MzAvZ2RiL2YtdHlwZXByaW50LmMJMjAxNi0wNy0xNiAxMDo1Njo0My43OTUwMTk2 NjAgKzAyMDAKKy0tLSBnZGItNy4xMS45MC4yMDE2MDkwNy5vcmlnL2dkYi9mLXR5cGVwcmludC5j CTIwMTYtMDktMDcgMjE6NDg6MzMuMzA5NjI0MDI4ICswMjAwCisrKysgZ2RiLTcuMTEuOTAuMjAx NjA5MDcvZ2RiL2YtdHlwZXByaW50LmMJMjAxNi0wOS0wNyAyMTo0ODo0MC45Njc2OTI0NjkgKzAy MDAKIEBAIC0xNDcsNyArMTQ3LDcgQEAKICAJCQkgICAgIGludCBzaG93LCBpbnQgcGFzc2VkX2Ff cHRyLCBpbnQgZGVtYW5nbGVkX2FyZ3MsCiAgCQkJICAgICBpbnQgYXJyYXlwcmludF9yZWN1cnNl X2xldmVsLCBpbnQgcHJpbnRfcmFua19vbmx5KQpAQCAtODQsNyArODQsNyBAQCBJbmRleDogZ2Ri LTcuMTEuNTAuMjAxNjA2MzAvZ2RiL2YtdHlwZXByaW50LmMKICsJICAgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIiVzOiIsIHBsb25nZXN0IChsb3dlcl9ib3VuZCkpOwogIAogIAkgIC8qIE1h a2Ugc3VyZSB0aGF0LCBpZiB3ZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSwgd2UKLSAJICAg ICBwcmludCBvdXQgYSB3YXJuaW5nIGFuZCBwcmludCB0aGUgdXBwZXJib3VuZCBhcyAnKicuICAq LworIAkgICAgICAgcHJpbnQgb3V0IGEgd2FybmluZyBhbmQgcHJpbnQgdGhlIHVwcGVyYm91bmQg YXMgJyonLiAgKi8KIEBAIC0yMDQsNyArMjA0LDcgQEAKICAJICBlbHNlCiAgCSAgICB7CkBAIC0x MTIsMTAgKzExMiwxMCBAQCBJbmRleDogZ2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL2YtdHlwZXBy aW50LmMKICAJfQogICAgICAgIGJyZWFrOwogIAotSW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMw L2dkYi9mLXZhbHByaW50LmMKK0luZGV4OiBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvZi12YWxw cmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMTEuNTAuMjAxNjA2MzAub3JpZy9nZGIvZi12 YWxwcmludC5jCTIwMTYtMDctMTYgMTA6NTY6MTEuNjgyNzYyNzIyICswMjAwCi0rKysgZ2RiLTcu MTEuNTAuMjAxNjA2MzAvZ2RiL2YtdmFscHJpbnQuYwkyMDE2LTA3LTE2IDEwOjU2OjE1LjU1NDc5 MzcwNCArMDIwMAorLS0tIGdkYi03LjExLjkwLjIwMTYwOTA3Lm9yaWcvZ2RiL2YtdmFscHJpbnQu YwkyMDE2LTA5LTA3IDIxOjQ4OjMzLjMwOTYyNDAyOCArMDIwMAorKysrIGdkYi03LjExLjkwLjIw MTYwOTA3L2dkYi9mLXZhbHByaW50LmMJMjAxNi0wOS0wNyAyMTo0ODo0MC45Njc2OTI0NjkgKzAy MDAKIEBAIC00Myw3ICs0Myw3IEBACiAgLyogQXJyYXkgd2hpY2ggaG9sZHMgb2Zmc2V0cyB0byBi ZSBhcHBsaWVkIHRvIGdldCBhIHJvdydzIGVsZW1lbnRzCiAgICAgZm9yIGEgZ2l2ZW4gYXJyYXku ICBBcnJheSBhbHNvIGhvbGRzIHRoZSBzaXplIG9mIGVhY2ggc3ViYXJyYXkuICAqLwoKZGlmZiAt LWdpdCBhL2dkYi12bGEtaW50ZWwtMW9mNy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMW9mNy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3MjkyMi4uMDAwMDAwMAotLS0gYS9n ZGItdmxhLWludGVsLTFvZjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAot RnJvbSAyNmUxNTZkNjIyMTFjYTg0NThmYWEzMjZmMjE5NDBlOWZhMThjOGZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogQmVybmhhcmQgSGVja2VsIDxiZXJuaGFyZC5oZWNrZWxAaW50 ZWwuY29tPgotRGF0ZTogVHVlLCAxMiBKdWwgMjAxNiAwODoxOTozNCArMDIwMAotU3ViamVjdDog W1BBVENIIDEvN10gRm9ydHJhbjogVGVzdHN1aXRlLCBmaXggZGlmZmVyZW5jZXMgaW4gdHlwZSBu YW1pbmcuCi0KLUNvbnRpbnVlZCBvbiAwYzEzZjdlNTU5YWZlNWY5NzNhNTkzMTFiMGU0MDEyOTZj NDhkOTZjCi0oZm9ydHJhbjogVGVzdHN1aXRlLCBmaXggZGlmZmVyZW50IHR5cGUgbmFtaW5nIGFj cm9zcyBjb21waWxlcnMpLgotCi0yMDE2LTA2LTA4ICBCZXJuaGFyZCBIZWNrZWwgIDxiZXJuaGFy ZC5oZWNrZWxAaW50ZWwuY29tPgotCi1nZGIvVGVzdHN1aXRlL0NoYW5nZWxvZzoKLQkqIGdkYi5m b3J0cmFuL3ZsYS12YWx1ZS5leHA6IFVzZSB0eXBlIG5hbWVzIGRlZmluZWQgaW4gbGliZm9ydHJh bi4KLQkqIGdkYi5taS9taS12YXItY2hpbGQtZi5leHA6IExpa2V3aXNlLgotCSogZ2RiLm1pL21p LXZsYS1mb3J0cmFuLmV4cDogTGlrZXdpc2UuCi0KLUNoYW5nZS1JZDogSTdlZTk0NTg3YTk5MmFk ZDI3ZmVjNzdjNzcyNmY5YTY5YzhmZGYzNzMKLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLXZhbHVlLmV4cCB8IDEyICsrKysrKysrLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLm1p L21pLXZhci1jaGlsZC1mLmV4cCB8ICA3ICsrKy0tLS0KLSBnZGIvdGVzdHN1aXRlL2dkYi5taS9t aS12bGEtZm9ydHJhbi5leHAgfCAxOCArKysrKysrKysrKy0tLS0tLS0KLSAzIGZpbGVzIGNoYW5n ZWQsIDIyIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtdmFsdWUuZXhwCi1pbmRleCAwOTQ1MTgxLi4yNzVmNzM4IDEwMDY0NAotLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAKLUBAIC0xNCw2ICsxNCw3IEBACi0gIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSAKLSBzdGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKLStsb2FkX2xpYiAi Zm9ydHJhbi5leHAiCi0gCi0gaWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5l eHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCi0gICAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7 Ci1AQCAtMjUsMTIgKzI2LDE1IEBAIGlmICFbcnVudG9fbWFpbl0gewotICAgICByZXR1cm4gLTEK LSB9Ci0gCi0rIyBEZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyIGJlaW5nIHVzZWQsIHRoZSB0eXBl IG5hbWVzIGNhbiBiZSBwcmludGVkIGRpZmZlcmVudGx5LgotK3NldCByZWFsIFtmb3J0cmFuX3Jl YWw0XQotKwotICMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gbm9uIGFsbG9jYXRlZCBWTEEKLSBn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0KLSBnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1pbml0IgotIGdkYl90ZXN0ICJwcmludCB2bGExIiAi ID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHJpbnQgbm9uLWFsbG9jYXRlZCB2bGExIgotIGdkYl90ZXN0 ICJwcmludCAmdmxhMSIgXAotLSAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9 NFxcXCkgXFxcKDxub3QgYWxsb2NhdGVkPlxcXClcXFwpXFxcKSAkaGV4IiBcCi0rICAiID0gXFxc KFBUUiBUTyAtPiBcXFwoICRyZWFsIFxcXCg8bm90IGFsbG9jYXRlZD5cXFwpXFxcKVxcXCkgJGhl eCIgXAotICAgInByaW50IG5vbi1hbGxvY2F0ZWQgJnZsYTEiCi0gZ2RiX3Rlc3QgInByaW50IHZs YTEoMSwxLDEpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwodmVjdG9yIG5vdCBhbGxvY2F0 ZWRcXFwpIiBcCi0gICAicHJpbnQgbWVtYmVyIGluIG5vbi1hbGxvY2F0ZWQgdmxhMSAoMSkiCi1A QCAtNTEsNyArNTUsNyBAQCB3aXRoX3RpbWVvdXRfZmFjdG9yIDE1IHsKLSAJInN0ZXAgb3ZlciB2 YWx1ZSBhc3NpZ25tZW50IG9mIHZsYTEiCi0gfQotIGdkYl90ZXN0ICJwcmludCAmdmxhMSIgXAot LSAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEwLDEw XFxcKVxcXClcXFwpICRoZXgiIFwKLSsgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJlYWwgXFxc KDEwLDEwLDEwXFxcKVxcXClcXFwpICRoZXgiIFwKLSAgICJwcmludCBhbGxvY2F0ZWQgJnZsYTEi Ci0gZ2RiX3Rlc3QgInByaW50IHZsYTEoMywgNiwgOSkiICIgPSAxMzExIiAicHJpbnQgYWxsb2Nh dGVkIHZsYTEoMyw2LDkpIgotIGdkYl90ZXN0ICJwcmludCB2bGExKDEsIDMsIDgpIiAiID0gMTMx MSIgInByaW50IGFsbG9jYXRlZCB2bGExKDEsMyw4KSIKLUBAIC03MSw3ICs3NSw3IEBAIGdkYl90 ZXN0ICJwcmludCB2bGExKDksIDksIDkpIiAiID0gOTk5IiBcCi0gIyBUcnkgdG8gYWNjZXNzIHZh bHVlcyBpbiB1bmRlZmluZWQgcG9pbnRlciB0byBWTEEgKGRhbmdsaW5nKQotIGdkYl90ZXN0ICJw cmludCBwdmxhIiAiID0gPG5vdCBhc3NvY2lhdGVkPiIgInByaW50IHVuZGVmaW5lZCBwdmxhIgot IGdkYl90ZXN0ICJwcmludCAmcHZsYSIgXAotLSAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFs XFxcKGtpbmQ9NFxcXCkgXFxcKDxub3QgYXNzb2NpYXRlZD5cXFwpXFxcKVxcXCkgJGhleCIgXAot KyAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCAkcmVhbCBcXFwoPG5vdCBhc3NvY2lhdGVkPlxcXClc XFwpXFxcKSAkaGV4IiBcCi0gICAicHJpbnQgbm9uLWFzc29jaWF0ZWQgJnB2bGEiCi0gZ2RiX3Rl c3QgInByaW50IHB2bGEoMSwgMywgOCkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IFxcXCh2ZWN0 b3Igbm90IGFzc29jaWF0ZWRcXFwpIiBcCi0gICAicHJpbnQgdW5kZWZpbmVkIHB2bGEoMSwzLDgp IgotQEAgLTgwLDcgKzg0LDcgQEAgZ2RiX3Rlc3QgInByaW50IHB2bGEoMSwgMywgOCkiICJubyBz dWNoIHZlY3RvciBlbGVtZW50IFxcXCh2ZWN0b3Igbm90IGFzc29jaWF0ZWQKLSBnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1hc3NvY2lhdGVkIl0KLSBnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAicHZsYS1hc3NvY2lhdGVkIgotIGdkYl90ZXN0ICJwcmludCAmcHZs YSIgXAotLSAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEw LDEwLDEwXFxcKVxcXClcXFwpICRoZXgiIFwKLSsgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJl YWwgXFxcKDEwLDEwLDEwXFxcKVxcXClcXFwpICRoZXgiIFwKLSAgICJwcmludCBhc3NvY2lhdGVk ICZwdmxhIgotIGdkYl90ZXN0ICJwcmludCBwdmxhKDMsIDYsIDkpIiAiID0gNDIiICJwcmludCBh c3NvY2lhdGVkIHB2bGEoMyw2LDkpIgotIGdkYl90ZXN0ICJwcmludCBwdmxhKDEsIDMsIDgpIiAi ID0gMTAwMSIgInByaW50IGFzc29jaWF0ZWQgcHZsYSgxLDMsOCkiCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu bWkvbWktdmFyLWNoaWxkLWYuZXhwCi1pbmRleCBmM2VkN2MyLi5iYzQ0YzZiIDEwMDY0NAotLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAKLUBAIC0xNyw2ICsxNyw3IEBACi0gCi0g bG9hZF9saWIgbWktc3VwcG9ydC5leHAKLSBzZXQgTUlGTEFHUyAiLWk9bWkiCi0rbG9hZF9saWIg ImZvcnRyYW4uZXhwIgotIAotIGlmIHsgW3NraXBfZm9ydHJhbl90ZXN0c10gfSB7IHJldHVybiAt MSB9Ci0gCi1AQCAtNDAsMTAgKzQxLDggQEAgbWlfcnVudG8gTUFJTl9fCi0gbWlfY3JlYXRlX3Zh cm9iaiAiYXJyYXkiICJhcnJheSIgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSBhcnJheSIKLSAKLSAK LS0jIERlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIgdmVyc2lvbiBiZWluZyB1c2VkLCB0aGUgbmFt ZSBvZiB0aGUgNC1ieXRlIGludGVnZXIKLS0jIGFuZCByZWFsIHR5cGVzIGNhbiBiZSBwcmludGVk IGRpZmZlcmVudGx5LiAgRm9yIGluc3RhbmNlLCBnZm9ydHJhbi00LjEgdXNlcwotLSMgImludDQi IHdoZXJlYXMgZ2ZvcnRyYW4tNC4zIHVzZXMgImludGVnZXIoa2luZD00KSIuCi0tc2V0IGludDQg IihpbnQ0fGludGVnZXJcXChraW5kPTRcXCkpIgotKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxl ciBiZWluZyB1c2VkLCB0aGUgdHlwZSBuYW1lcyBjYW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4K LStzZXQgaW50NCBbZm9ydHJhbl9pbnQ0XQotIAotIHNldCBjaGlsZHJlbiBbbGlzdCBbbGlzdCAi YXJyYXkuLTEiICItMSIgMiAiJGludDQgXFwoMlxcKSJdIFwKLSAJCSAgW2xpc3QgImFycmF5LjAi ICIwIiAyICIkaW50NCBcXCgyXFwpIl0gXAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri Lm1pL21pLXZsYS1mb3J0cmFuLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0 cmFuLmV4cAotaW5kZXggMzMzYjcxYS4uMTc3OWVjMCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkv bWktdmxhLWZvcnRyYW4uZXhwCi1AQCAtMTgsNiArMTgsNyBAQAotIAotIGxvYWRfbGliIG1pLXN1 cHBvcnQuZXhwCi0gc2V0IE1JRkxBR1MgIi1pPW1pIgotK2xvYWRfbGliICJmb3J0cmFuLmV4cCIK LSAKLSBnZGJfZXhpdAotIGlmIFttaV9nZGJfc3RhcnRdIHsKLUBAIC0zMiw2ICszMyw5IEBAIGlm IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZp bGV9IiBleGVjdXRhYmxlIFwKLSAgICAgIHJldHVybiAtMQotIH0KLSAKLSsjIERlcGVuZGluZyBv biB0aGUgY29tcGlsZXIgYmVpbmcgdXNlZCwgdGhlIHR5cGUgbmFtZXMgY2FuIGJlIHByaW50ZWQg ZGlmZmVyZW50bHkuCi0rc2V0IHJlYWwgW2ZvcnRyYW5fcmVhbDRdCi0rCi0gbWlfZGVsZXRlX2Jy ZWFrcG9pbnRzCi0gbWlfZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gbWlf Z2RiX2xvYWQgJHtiaW5maWxlfQotQEAgLTU4LDcgKzYyLDcgQEAgbWlfZ2RiX3Rlc3QgIjUwMy12 YXItZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExX25vdF9hbGxvY2F0ZWQiIFwKLSAgICI1MDNcXF5k b25lLHZhbHVlPVwiXFxcWzBcXFxdXCIiIFwKLSAgICJldmFsIHZhcmlhYmxlIHZsYTFfbm90X2Fs bG9jYXRlZCIKLSBtaV9saXN0X2FycmF5X3Zhcm9ial9jaGlsZHJlbl93aXRoX2luZGV4ICJ2bGEx X25vdF9hbGxvY2F0ZWQiICIwIiAiMSIgXAotLSAgICAicmVhbFxcXChraW5kPTRcXFwpIiAiZ2V0 IGNoaWxkcmVuIG9mIHZsYTFfbm90X2FsbG9jYXRlZCIKLSsgICAgIiRyZWFsIiAiZ2V0IGNoaWxk cmVuIG9mIHZsYTFfbm90X2FsbG9jYXRlZCIKLSAKLSAKLSAKLUBAIC03MSwxMCArNzUsMTAgQEAg bWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJw X2xpbmVubyIgXAotIG1pX2dkYl90ZXN0ICI1MTAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZs YTEiIFwKLSAgICI1MTBcXF5kb25lLHZhbHVlPVwiXFwoLipcXClcIiIgImV2YWx1YXRlIGFsbG9j YXRlZCB2bGEiCi0gCi0tbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHZsYTFfYWxsb2NhdGVkIHZs YTEgInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNVxcXCkiIFwKLSttaV9jcmVhdGVfdmFyb2JqX2No ZWNrZWQgdmxhMV9hbGxvY2F0ZWQgdmxhMSAiJHJlYWwgXFxcKDVcXFwpIiBcCi0gICAiY3JlYXRl IGxvY2FsIHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgotIG1pX2dkYl90ZXN0ICI1MTEtdmFyLWlu Zm8tdHlwZSB2bGExX2FsbG9jYXRlZCIgXAotLSAgIjUxMVxcXmRvbmUsdHlwZT1cInJlYWxcXFwo a2luZD00XFxcKSBcXFwoNVxcXClcIiIgXAotKyAgIjUxMVxcXmRvbmUsdHlwZT1cIiRyZWFsIFxc XCg1XFxcKVwiIiBcCi0gICAiaW5mbyB0eXBlIHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgotIG1p X2dkYl90ZXN0ICI1MTItdmFyLXNob3ctZm9ybWF0IHZsYTFfYWxsb2NhdGVkIiBcCi0gICAiNTEy XFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKLUBAIC04Myw3ICs4Nyw3IEBAIG1pX2dkYl90 ZXN0ICI1MTMtdmFyLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMV9hbGxvY2F0ZWQiIFwKLSAgICI1 MTNcXF5kb25lLHZhbHVlPVwiXFxcWzVcXFxdXCIiIFwKLSAgICJldmFsIHZhcmlhYmxlIHZsYTFf YWxsb2NhdGVkIgotIG1pX2xpc3RfYXJyYXlfdmFyb2JqX2NoaWxkcmVuX3dpdGhfaW5kZXggInZs YTFfYWxsb2NhdGVkIiAiNSIgIjEiIFwKLS0gICAgInJlYWxcXFwoa2luZD00XFxcKSIgImdldCBj aGlsZHJlbiBvZiB2bGExX2FsbG9jYXRlZCIKLSsgICAgIiRyZWFsIiAiZ2V0IGNoaWxkcmVuIG9m IHZsYTFfYWxsb2NhdGVkIgotIAotIAotIHNldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1i ZXIgInZsYTEtZmlsbGVkIl0KLUBAIC0xNDgsNyArMTUyLDcgQEAgZ2RiX2V4cGVjdCB7Ci0gCSAg ICAiNTgzXFxeZG9uZSx2YWx1ZT1cIlxcXFswXFxcXVwiIiBcCi0gCSAgICAiZXZhbCB2YXJpYWJs ZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKLSAJbWlfbGlzdF9hcnJheV92YXJvYmpfY2hpbGRyZW5f d2l0aF9pbmRleCAicHZsYTJfbm90X2Fzc29jaWF0ZWQiICIwIiAiMSIgXAotLQkgICAgInJlYWxc XFwoa2luZD00XFxcKSIgImdldCBjaGlsZHJlbiBvZiBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKLSsJ ICAgICIkcmVhbCIgImdldCBjaGlsZHJlbiBvZiBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKLSAgICAg fQotICAgICAtcmUgIjU4MFxcXmVycm9yLG1zZz1cInZhbHVlIGNvbnRlbnRzIHRvbyBsYXJnZSBc XChcWzAtOVxdKyBieXRlc1xcKS4qJHttaV9nZGJfcHJvbXB0fSQiIHsKLSAJIyBVbmRlZmluZWQg YmVoYXZpb3VyIGluIGdmb3J0cmFuLgotQEAgLTE3Myw5ICsxNzcsOSBAQCBtaV9nZGJfdGVzdCAi NTkwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lvbiBwdmxhMiIgXAotICAgImV2YWx1YXRlIGFzc29j aWF0ZWQgdmxhIgotIAotIG1pX2NyZWF0ZV92YXJvYmpfY2hlY2tlZCBwdmxhMl9hc3NvY2lhdGVk IHB2bGEyIFwKLS0gICJyZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDUsMlxcXCkiICJjcmVhdGUgbG9j YWwgdmFyaWFibGUgcHZsYTJfYXNzb2NpYXRlZCIKLSsgICIkcmVhbCBcXFwoNSwyXFxcKSIgImNy ZWF0ZSBsb2NhbCB2YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgotIG1pX2dkYl90ZXN0ICI1OTEt dmFyLWluZm8tdHlwZSBwdmxhMl9hc3NvY2lhdGVkIiBcCi0tICAiNTkxXFxeZG9uZSx0eXBlPVwi cmVhbFxcXChraW5kPTRcXFwpIFxcXCg1LDJcXFwpXCIiIFwKLSsgICI1OTFcXF5kb25lLHR5cGU9 XCIkcmVhbCBcXFwoNSwyXFxcKVwiIiBcCi0gICAiaW5mbyB0eXBlIHZhcmlhYmxlIHB2bGEyX2Fz c29jaWF0ZWQiCi0gbWlfZ2RiX3Rlc3QgIjU5Mi12YXItc2hvdy1mb3JtYXQgcHZsYTJfYXNzb2Np YXRlZCIgXAotICAgIjU5MlxcXmRvbmUsZm9ybWF0PVwibmF0dXJhbFwiIiBcCi0tLSAKLTIuNy40 Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTJvZjcucGF0Y2ggYi9nZGItdmxhLWludGVs LTJvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYTE3N2EuLjAwMDAw MDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0yb2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUg KzAsMCBAQAotRnJvbSBhODc5YjI1MDFlNjFlZTNkM2VmYWRiZGI2YjMzMjEyYjU3ZDNhMmUxIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmVybmhhcmQgSGVja2VsIDxiZXJuaGFyZC5o ZWNrZWxAaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMiBKdWwgMjAxNiAwODoxOTozNCArMDIwMAot U3ViamVjdDogW1BBVENIIDIvN10gRm9ydHJhbjogUmVzb2x2ZSBkeW5hbWljIHByb3BlcnRpZXMg b2YgcG9pbnRlciB0eXBlcy4KLQotSW4gRm9ydHJhbiBhIHBvaW50ZXIgbWF5IGhhdmUgYSBkeW5h bWljIGFzc29jaWF0ZWQgcHJvcGVydHkuCi0KLTIwMTYtMDctMDggIEJlcm5oYXJkIEhlY2tlbCAg PGJlcm5oYXJkLmhlY2tlbEBpbnRlbC5jb20+Ci0KLWdkYi9DaGFuZ2Vsb2c6Ci0JKiBnZGJ0eXBl cy5jIChyZXNvbHZlX2R5bmFtaWNfdHlwZXNfaW50ZXJuYWwpOiBSZXNvbHZlIHBvaW50ZXIgdHlw ZXMuCi0JICAocmVzb2x2ZV9keW5hbWljX3BvaW50ZXIpOiBOZXcuCi0KLUNoYW5nZS1JZDogSWU0 YjlkNjM5N2NmYTA4OWVlMmUwZGIwMmJlYjE4NDE1YTc1MWMxYzAKLS0tLQotIGdkYi9nZGJ0eXBl cy5jIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwg MjggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5 cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXggZWM1YzE3YS4uYjUzZTY0OSAxMDA2NDQKLS0t LSBhL2dkYi9nZGJ0eXBlcy5jCi0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTE4MDYsNyArMTgw Niw4IEBAIGlzX2R5bmFtaWNfdHlwZV9pbnRlcm5hbCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCB0 b3BfbGV2ZWwpCi0gICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0gCi0gICAvKiBXZSBv bmx5IHdhbnQgdG8gcmVjb2duaXplIHJlZmVyZW5jZXMgYXQgdGhlIG91dGVybW9zdCBsZXZlbC4g ICovCi0tICBpZiAodG9wX2xldmVsICYmIFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JF RikKLSsgIGlmICh0b3BfbGV2ZWwgJiYKLSsgICAgICAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfUkVGIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUikpCi0gICAgIHR5 cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0gCi0gICAvKiBU eXBlcyB0aGF0IGhhdmUgYSBkeW5hbWljIFRZUEVfREFUQV9MT0NBVElPTiBhcmUgY29uc2lkZXJl ZAotQEAgLTIxMDUsNiArMjEwNiwyOCBAQCByZXNvbHZlX2R5bmFtaWNfc3RydWN0IChzdHJ1Y3Qg dHlwZSAqdHlwZSwKLSAgIHJldHVybiByZXNvbHZlZF90eXBlOwotIH0KLSAKLSsvKiBXb3JrZXIg Zm9yIHBvaW50ZXIgdHlwZXMuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rcmVzb2x2 ZV9keW5hbWljX3BvaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJCSBzdHJ1Y3QgcHJvcGVy dHlfYWRkcl9pbmZvICphZGRyX3N0YWNrKQotK3sKLSsgIHN0cnVjdCBkeW5hbWljX3Byb3AgKnBy b3A7Ci0rICBDT1JFX0FERFIgdmFsdWU7Ci0rCi0rICB0eXBlID0gY29weV90eXBlICh0eXBlKTsK LSsKLSsgIC8qIFJlc29sdmUgYXNzb2NpYXRlZCBwcm9wZXJ0eS4gICovCi0rICBwcm9wID0gVFlQ RV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpOwotKyAgaWYgKHByb3AgIT0gTlVMTCAmJiBkd2FyZjJf ZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIE5VTEwsIGFkZHJfc3RhY2ssICZ2YWx1ZSkpCi0rICAg IHsKLSsgICAgICBUWVBFX0RZTl9QUk9QX0FERFIgKHByb3ApID0gdmFsdWU7Ci0rICAgICAgVFlQ RV9EWU5fUFJPUF9LSU5EIChwcm9wKSA9IFBST1BfQ09OU1Q7Ci0rICAgIH0KLSsKLSsgIHJldHVy biB0eXBlOwotK30KLSsKLSAvKiBXb3JrZXIgZm9yIHJlc29sdmVkX2R5bmFtaWNfdHlwZS4gICov Ci0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICoKLUBAIC0yMTUzLDYgKzIxNzYsMTAgQEAgcmVzb2x2 ZV9keW5hbWljX3R5cGVfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICp0eXBlLAotIAkgICAgYnJlYWs7 Ci0gCSAgfQotIAotKyAgICAgICAgY2FzZSBUWVBFX0NPREVfUFRSOgotKyAJICByZXNvbHZlZF90 eXBlID0gcmVzb2x2ZV9keW5hbWljX3BvaW50ZXIgKHR5cGUsIGFkZHJfc3RhY2spOwotKyAJICBi cmVhazsKLSsKLSAJY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0gCSAgcmVzb2x2ZWRfdHlwZSA9IHJl c29sdmVfZHluYW1pY19hcnJheSAodHlwZSwgYWRkcl9zdGFjayk7Ci0gCSAgYnJlYWs7Ci0tLSAK LTIuNy40Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTNvZjcucGF0Y2ggYi9nZGItdmxh LWludGVsLTNvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOTU0MDQu LjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0zb2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTEzICswLDAgQEAKLUZyb20gZDJmZDVmZWEyYzA2MDUyYzUzZDk5YmZhMjVmZGFlZDljZjVk ZDIxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlcm5oYXJkIEhlY2tlbCA8YmVy bmhhcmQuaGVja2VsQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMTIgSnVsIDIwMTYgMDg6MTk6MzQg KzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzddIFR5cGVwcmludDogUmVzb2x2ZSBhbnkgZHluYW1p YyB0YXJnZXQgdHlwZSBvZiBhIHBvaW50ZXIuCi0KLUJlZm9yZSBjb250aW51aW5nIHdpdGggbGFu Z3VhZ2Ugc3BlY2lmaWMgdHlwZSBwcmludGluZwotd2UgaGF2ZSB0byByZXNvbHZlIHRoZSB0YXJn ZXQgdHlwZSBvZiBhIHBvaW50ZXIKLWFzIHdlIG1pZ2h0IHdhbm5hIHByaW50IG1vcmUgZGV0YWls cyBvZiB0aGUgdGFyZ2V0Ci1saWtlIHRoZSBkaW1lbnNpb24gb2YgYW4gYXJyYXkuIFdlIGhhdmUg dG8gcmVzb2x2ZSBpdCBoZXJlCi1hcyB3ZSBkb24ndCBoYXZlIGFueSBhZGRyZXNzIGluZm9ybWF0 aW9uIGxhdGVyIG9uLgotCi0yMDE2LTA3LTA4ICBCZXJuaGFyZCBIZWNrZWwgIDxiZXJuaGFyZC5o ZWNrZWxAaW50ZWwuY29tPgotCi1nZGIvQ2hhbmdlbG9nOgotCSogdHlwZXByaW50LmMgKHdoYXRp c19leHApOiBSZXNvbHZlIGR5bmFtaWMgdGFyZ2V0IHR5cGUKLQkgIG9mIHBvaW50ZXJzLgotCi1n ZGIvVGVzdHN1aXRlL0NoYW5nZWxvZzoKLQkqIGdkYi5jcC92bGEtY3h4LmNjOiBBZGRlZCBwb2lu dGVyIHRvIGR5bmFtaWMgdHlwZS4KLQkqIGdkYi5jcC92bGEtY3h4LmV4cDogVGVzdCBwb2ludGVy IHRvIGR5bmFtaWMgdHlwZS4KLQotQ2hhbmdlLUlkOiBJZGZmMGQ2ZGQwZWFiMzEyNWI0NWQ0NzBh MTJiNWU2NmIzOTJlNDJjMwotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5jYyAg fCAgOSArKysrKysrKysKLSBnZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmV4cCB8ICA1ICsr KysrCi0gZ2RiL3R5cGVwcmludC5jICAgICAgICAgICAgICAgICAgfCAxOSArKysrKysrKysrKysr KysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av dmxhLWN4eC5jYwotaW5kZXggYTFmZDUxMC4uNWY4ZjhhYiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL3ZsYS1jeHguY2MKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1j eHguY2MKLUBAIC0xNSw2ICsxNSwxMCBAQAotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwotIAotK2V4dGVybiAiQyIgewotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSt9Ci0rCi0gc3Ry dWN0IGNvbnRhaW5lcjsKLSAKLSBzdHJ1Y3QgZWxlbWVudAotQEAgLTQwLDExICs0NCwxNiBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICB0eXBlZGVmIHR5cGVvZiAodmxhKSAm dmxhcmVmdHlwZWRlZjsKLSAgIHZsYXJlZnR5cGVkZWYgdmxhcmVmMiAodmxhKTsKLSAgIGNvbnRh aW5lciBjOwotKyAgdHlwZW9mICh2bGEpICpwdHIgPSBOVUxMOwotKwotKyAgLy8gQmVmb3JlIHBv aW50ZXIgYXNzaWdubWVudAotKyAgcHRyID0gJnZsYTsKLSAKLSAgIGZvciAoaW50IGkgPSAwOyBp IDwgejsgKytpKQotICAgICB2bGFbaV0gPSA1ICsgMiAqIGk7Ci0gCi0gICAvLyB2bGFzX2ZpbGxl ZAotICAgdmxhWzBdID0gMiAqIHZsYVswXTsKLSsKLSAgIHJldHVybiB2bGFbMl07Ci0gfQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1jeHguZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvdmxhLWN4eC5leHAKLWluZGV4IGY2MjI0ZGMuLmJhYmRmYjcgMTAwNjQ0Ci0tLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvdmxhLWN4eC5leHAKLUBAIC0yMyw2ICsyMywxMCBAQCBpZiAhW3J1bnRvX21haW5dIHsK LSAgICAgcmV0dXJuIC0xCi0gfQotIAotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCIKLStnZGJfdGVzdCAicHR5cGUgcHRyIiAi aW50IFxcKFxcKlxcKVxcXFt2YXJpYWJsZSBsZW5ndGhcXFxdIiAicHR5cGUgcHRyLCBCZWZvcmUg cG9pbnRlciBhc3NpZ25tZW50IgotKwotIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJ2bGFzX2ZpbGxlZCJdCi0gZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYXNfZmls bGVkIgotIAotQEAgLTMzLDMgKzM3LDQgQEAgZ2RiX3Rlc3QgInByaW50IHZsYXJlZiIgIiA9IFxc KGludCBcXCgmXFwpXFxcWzNcXFxdXFwpIEAkaGV4OiBcXHs1LCA3LCA5XFx9IgotICMgYnVnIGJl aW5nIHRlc3RlZCwgaXQncyBiZXR0ZXIgbm90IHRvIGRlcGVuZCBvbiB0aGUgZXhhY3Qgc3BlbGxp bmcuCi0gZ2RiX3Rlc3QgInByaW50IHZsYXJlZjIiICIgPSBcXCguKlxcKSBAJGhleDogXFx7NSwg NywgOVxcfSIKLSBnZGJfdGVzdCAicHJpbnQgYyIgIiA9IFxce2UgPSBcXHtjID0gQCRoZXhcXH1c XH0iCi0rZ2RiX3Rlc3QgInB0eXBlIHB0ciIgImludCBcXChcXCpcXClcXFxbM1xcXF0iCi1kaWZm IC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2RiL3R5cGVwcmludC5jCi1pbmRleCBlNzc1MTNl Li5lM2Q4NGM3IDEwMDY0NAotLS0tIGEvZ2RiL3R5cGVwcmludC5jCi0rKysgYi9nZGIvdHlwZXBy aW50LmMKLUBAIC00ODUsNiArNDg1LDI1IEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNo b3cpCi0gICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiICovXG4iKTsgICAgCi0gICAgIH0KLSAKLSsg IC8qIFJlc29sdmUgYW55IGR5bmFtaWMgdGFyZ2V0IHR5cGUsIGFzIHdlIG1pZ2h0IHByaW50Ci0r ICAgICBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0YXJnZXQuCi0rICAgICBGb3Ig ZXhhbXBsZSwgaW4gRm9ydHJhbiBhbmQgQyB3ZSBhcmUgcHJpbnRpbmcgdGhlIGRpbWVuc2lvbiBv ZiB0aGUKLSsgICAgIGR5bmFtaWMgYXJyYXkgdGhlIHBvaW50ZXIgaXMgcG9pbnRpbmcgdG8uICAq LwotKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUgotKyAgICAgICYmIGlz X2R5bmFtaWNfdHlwZSAodHlwZSkgPT0gMSkKLSsgICAgewotKyAgICAgIENPUkVfQUREUiBhZGRy OwotKyAgICAgIGlmIChOVUxMICE9IFRZUEVfREFUQV9MT0NBVElPTiAoVFlQRV9UQVJHRVRfVFlQ RSh0eXBlKSkpCi0rCWFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2YWwpOwotKyAgICAgIGVsc2UKLSsJ YWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7Ci0rCi0rICAgICAgaWYgKGFkZHIgIT0gMAot KwkgICYmIHR5cGVfbm90X2Fzc29jaWF0ZWQgKHR5cGUpID09IDApCi0rCVRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpID0gcmVzb2x2ZV9keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp LAotKwkJCQkJCQlOVUxMLCBhZGRyKTsKLSsgICAgfQotKwotICAgTEFfUFJJTlRfVFlQRSAodHlw ZSwgIiIsIGdkYl9zdGRvdXQsIHNob3csIDAsICZmbGFncyk7Ci0gICBwcmludGZfZmlsdGVyZWQg KCJcbiIpOwotIAotLS0gCi0yLjcuNAotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC00b2Y3 LnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC00b2Y3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA2MmRjYTM1Li4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtNG9mNy5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDUwOCArMCwwIEBACi1Gcm9tIGY2Mzc4MmQyNWViZDU5M2M0YzQ2 NjlkNGMzOTRhMjcwNmYxNWU2NjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZXJu aGFyZCBIZWNrZWwgPGJlcm5oYXJkLmhlY2tlbEBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDEyIEp1 bCAyMDE2IDA4OjE5OjM0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNC83XSBGb3J0cmFuOiBUeXBl cHJpbnQsIGZpeCBkYW5nbGluZyB0eXBlcy4KLQotU2hvdyB0aGUgdHlwZSBvZiBub3QtYWxsb2Nh dGVkIGFuZC9vciBub3QtYXNzb2NpYXRlZCB0eXBlcwotYXMgdGhpcyBpcyBrbm93bi4gIEZvciBh cnJheSB0eXBlcyBhbmQgcG9pbnRlciB0byBhcnJheSB0eXBlcwotd2UgYXJlIGdvaW5nIHRvIHBy aW50IHRoZSBudW1iZXIgb2YgcmFua3MuCi0KLTIwMTYtMDYtMzAgIEJlcm5oYXJkIEhlY2tlbCAg PGJlcm5oYXJkLmhlY2tlbEBpbnRlbC5jb20+Ci0KLWdkYi9DaGFuZ2VMb2c6Ci0JKiBmLXR5cGVw cmludC5jIChmX3ByaW50X3R5cGUpOiBEb24ndCBieXBhc3MgZGFuZ2xpbmcgdHlwZXMuCi0JICAo Zl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4KTogQWRkIHByaW50X3JhbmsgcGFyYW1ldGVyLgot CSAgKGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCk6IFByaW50IHJhbmtzIG9mIGFycmF5IHR5 cGVzCi0JICBpbiBjYXNlIHRoZXkgZGFuZ2xpbmcuCi0JICAoZl90eXBlX3ByaW50X2Jhc2UpOiBB ZGQgcHJpbnRfcmFuayBwYXJhbWV0ZXIuCi0KLWdkYi9UZXN0c3VpdGUvQ2hhbmdlTG9nOgotCSog Z2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwOiBOZXcuCi0JKiBnZGIuZm9ydHJhbi9wcmludF90eXBl LmV4cDogTmV3LgotCSogZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLmV4cDogQWRhcHQgZXhwZWN0ZWQg cmVzdWx0cy4KLQkqIGdkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cDogTGlrZXdpc2UuCi0JKiBnZGIu Zm9ydHJhbi92bGEtdmFsdWUuZXhwOiBMaWtld2lzZS4KLQkqIGdkYi5taS9taS12bGEtZm9ydHJh bi5leHA6IExpa2V3aXNlLgotCi1DaGFuZ2UtSWQ6IEliNTVmMjhiNDA5MmNmODhlMzQ5MTg0NDlh MmViYjZlNWRhYWZlNTEyCi0tLS0KLSBnZGIvZi10eXBlcHJpbnQuYyAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDk1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5mOTAgICB8ICA4MCArKysrKysrKysrKysrKysrKysrKysr KysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wcmludF90eXBlLmV4cCB8IDEwMCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtcHR5cGUuZXhwICB8ICAxMiArKy0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt dHlwZS5leHAgICB8ICAgNyArKy0KLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1 ZS5leHAgIHwgICA0ICstCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhw ICB8ICAgOSArLS0KLSA3IGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNlcnRpb25zKCspLCA1OSBkZWxl dGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9w b2ludGVycy5mOTAKLSBjcmVhdGUgbW9kZSAxMDA3NTUgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9wcmludF90eXBlLmV4cAotCi1JbmRleDogZ2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL2YtdHlw ZXByaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xMS41MC4yMDE2MDYzMC5vcmlnL2dkYi9m LXR5cGVwcmludC5jCTIwMTYtMDctMTYgMTA6NTQ6NDguNzQ5MDk5MTUwICswMjAwCi0rKysgZ2Ri LTcuMTEuNTAuMjAxNjA2MzAvZ2RiL2YtdHlwZXByaW50LmMJMjAxNi0wNy0xNiAxMDo1NTo1OS43 NjM2NjczNTUgKzAyMDAKLUBAIC0zNyw3ICszNyw3IEBACi0gI2VuZGlmCi0gCi0gc3RhdGljIHZv aWQgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlf ZmlsZSAqLCBpbnQsCi0tCQkJCQkgaW50LCBpbnQsIGludCk7Ci0rCQkJCQkgaW50LCBpbnQsIGlu dCwgaW50KTsKLSAKLSB2b2lkIGZfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3RydWN0IHR5 cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKLSAJCQkJICBpbnQsIGludCk7Ci1AQCAtNTQsMTggKzU0 LDYgQEAKLSAgIGVudW0gdHlwZV9jb2RlIGNvZGU7Ci0gICBpbnQgZGVtYW5nbGVkX2FyZ3M7Ci0g Ci0tICBpZiAodHlwZV9ub3RfYXNzb2NpYXRlZCAodHlwZSkpCi0tICAgIHsKLS0gICAgICB2YWxf cHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cmVhbSk7Ci0tICAgICAgcmV0dXJuOwotLSAgICB9Ci0t Ci0tICBpZiAodHlwZV9ub3RfYWxsb2NhdGVkICh0eXBlKSkKLS0gICAgewotLSAgICAgIHZhbF9w cmludF9ub3RfYWxsb2NhdGVkIChzdHJlYW0pOwotLSAgICAgIHJldHVybjsKLS0gICAgfQotLQot ICAgZl90eXBlX3ByaW50X2Jhc2UgKHR5cGUsIHN0cmVhbSwgc2hvdywgbGV2ZWwpOwotICAgY29k ZSA9IFRZUEVfQ09ERSAodHlwZSk7Ci0gICBpZiAoKHZhcnN0cmluZyAhPSBOVUxMICYmICp2YXJz dHJpbmcgIT0gJ1wwJykKLUBAIC04Nyw3ICs3NSw3IEBACi0gICAgICAgICAgc28gZG9uJ3QgcHJp bnQgYW4gYWRkaXRpb25hbCBwYWlyIG9mICgpJ3MuICAqLwotIAotICAgICAgIGRlbWFuZ2xlZF9h cmdzID0gdmFyc3RyaW5nW3N0cmxlbiAodmFyc3RyaW5nKSAtIDFdID09ICcpJzsgCi0tICAgICAg Zl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4ICh0eXBlLCBzdHJlYW0sIHNob3csIDAsIGRlbWFu Z2xlZF9hcmdzLCAwKTsKLSsgICAgICBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHR5cGUs IHN0cmVhbSwgc2hvdywgMCwgZGVtYW5nbGVkX2FyZ3MsIDAsIDApOwotICAgIH0KLSB9Ci0gCi1A QCAtMTU3LDcgKzE0NSw3IEBACi0gc3RhdGljIHZvaWQKLSBmX3R5cGVfcHJpbnRfdmFyc3BlY19z dWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotIAkJCSAg ICAgaW50IHNob3csIGludCBwYXNzZWRfYV9wdHIsIGludCBkZW1hbmdsZWRfYXJncywKLS0JCQkg ICAgIGludCBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpCi0rCQkJICAgICBpbnQgYXJyYXlwcmlu dF9yZWN1cnNlX2xldmVsLCBpbnQgcHJpbnRfcmFua19vbmx5KQotIHsKLSAgIGludCB1cHBlcl9i b3VuZCwgbG93ZXJfYm91bmQ7Ci0gCi1AQCAtMTgxLDM0ICsxNjksNTAgQEAKLSAJZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCAiKCIpOwotIAotICAgICAgIGlmICh0eXBlX25vdF9hc3NvY2lhdGVk ICh0eXBlKSkKLS0gICAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKLSsJ cHJpbnRfcmFua19vbmx5ID0gMTsKLSAgICAgICBlbHNlIGlmICh0eXBlX25vdF9hbGxvY2F0ZWQg KHR5cGUpKQotLSAgICAgICAgdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cmVhbSk7Ci0rCXBy aW50X3Jhbmtfb25seSA9IDE7Ci0rICAgICAgZWxzZSBpZiAoKFRZUEVfQVNTT0NJQVRFRF9QUk9Q ICh0eXBlKQotKwkJJiYgUFJPUF9DT05TVCAhPSBUWVBFX0RZTl9QUk9QX0tJTkQgKFRZUEVfQVNT T0NJQVRFRF9QUk9QICh0eXBlKSkpCi0rCSAgICAgIHx8IChUWVBFX0FMTE9DQVRFRF9QUk9QICh0 eXBlKQotKwkJJiYgUFJPUF9DT05TVCAhPSBUWVBFX0RZTl9QUk9QX0tJTkQgKFRZUEVfQUxMT0NB VEVEX1BST1AgKHR5cGUpKSkKLSsJICAgICAgfHwgKFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkK LSsJCSAgJiYgUFJPUF9DT05TVCAhPSBUWVBFX0RZTl9QUk9QX0tJTkQgKFRZUEVfREFUQV9MT0NB VElPTiAodHlwZSkpKSkKLSsJLyogVGhpcyBjYXNlIGV4aXN0IHdoZW4gd2UgcHR5cGUgYSB0eXBl bmFtZSB3aGljaCBoYXMgdGhlCi0rCSAgIGR5bmFtaWMgcHJvcGVydGllcyBidXQgY2Fubm90IGJl IHJlc29sdmVkIGFzIHRoZXJlIGlzCi0rCSAgIG5vIG9iamVjdC4gICovCi0rCXByaW50X3Jhbmtf b25seSA9IDE7Ci0rCi0rICAgICAgaWYgKFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpID09IFRZUEVfQ09ERV9BUlJBWSkKLSsJZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLAotKwkJCQkgICAgIDAsIDAsIGFycmF5 cHJpbnRfcmVjdXJzZV9sZXZlbCwKLSsJCQkJICAgICBwcmludF9yYW5rX29ubHkpOwotKwotKyAg ICAgIGlmIChwcmludF9yYW5rX29ubHkgPT0gMSkKLSsJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiOiIpOwotICAgICAgIGVsc2UKLS0gICAgICAgIHsKLS0gICAgICAgICAgaWYgKFRZUEVfQ09E RSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpID09IFRZUEVfQ09ERV9BUlJBWSkKLS0gICAgICAg ICAgICBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp LCBzdHJlYW0sIDAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs IDAsIGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7Ci0tCi0tICAgICAgICAgIGxvd2VyX2JvdW5k ID0gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKLS0gICAgICAgICAgaWYgKGxvd2VyX2JvdW5k ICE9IDEpCS8qIE5vdCB0aGUgZGVmYXVsdC4gICovCi0tICAgICAgICAgICAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiJWQ6IiwgbG93ZXJfYm91bmQpOwotLQotLSAgICAgICAgICAvKiBNYWtl IHN1cmUgdGhhdCwgaWYgd2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXksIHdlCi0tICAgICAg ICAgICAgIHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcq Jy4gICovCi0tCi0tICAgICAgICAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVG SU5FRCAodHlwZSkpCi0tICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKiIp OwotLSAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgdXBwZXJf Ym91bmQgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5cGUpOwotLSAgICAgICAgICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLCB1cHBlcl9ib3VuZCk7Ci0tICAgICAgICAgICAgfQot LQotLSAgICAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0g VFlQRV9DT0RFX0FSUkFZKQotLSAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZp eCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsKTsK LS0gICAgICAgIH0KLSsJewotKwkgIGxvd2VyX2JvdW5kID0gZjc3X2dldF9sb3dlcmJvdW5kICh0 eXBlKTsKLSsJICBpZiAobG93ZXJfYm91bmQgIT0gMSkJLyogTm90IHRoZSBkZWZhdWx0LiAgKi8K LSsJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkOiIsIGxvd2VyX2JvdW5kKTsKLSsK LSsJICAvKiBNYWtlIHN1cmUgdGhhdCwgaWYgd2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXks IHdlCi0rCSAgICAgcHJpbnQgb3V0IGEgd2FybmluZyBhbmQgcHJpbnQgdGhlIHVwcGVyYm91bmQg YXMgJyonLiAgKi8KLSsKLSsJICBpZiAoVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9JU19VTkRFRklO RUQgKHR5cGUpKQotKwkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKiIpOwotKwkgIGVs c2UKLSsJICAgIHsKLSsJICAgICAgdXBwZXJfYm91bmQgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5 cGUpOwotKwkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIHVwcGVyX2JvdW5k KTsKLSsJICAgIH0KLSsJfQotKwotKyAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCi0rCWZfdHlwZV9wcmludF92YXJzcGVjX3N1 ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwKLSsJCQkJICAgICAwLCAw LCBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwsCi0rCQkJCSAgICAgcHJpbnRfcmFua19vbmx5KTsK LSsKLSAgICAgICBpZiAoYXJyYXlwcmludF9yZWN1cnNlX2xldmVsID09IDEpCi0gCWZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKLSAgICAgICBlbHNlCi1AQCAtMjE5LDEzICsyMjMsMTQg QEAKLSAgICAgY2FzZSBUWVBFX0NPREVfUFRSOgotICAgICBjYXNlIFRZUEVfQ09ERV9SRUY6Ci0g ICAgICAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwgc3RyZWFtLCAwLCAxLCAwLAotLQkJCQkgICBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpOwot KwkJCQkgICBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwsIDApOwotICAgICAgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIikiKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBUWVBFX0NP REVfRlVOQzoKLSAgICAgICBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpLCBzdHJlYW0sIDAsCi0tCQkJCSAgIHBhc3NlZF9hX3B0ciwgMCwgYXJyYXlw cmludF9yZWN1cnNlX2xldmVsKTsKLSsJCQkJICAgcGFzc2VkX2FfcHRyLCAwLCBhcnJheXByaW50 X3JlY3Vyc2VfbGV2ZWwsCi0rCQkJCSAgIDApOwotICAgICAgIGlmIChwYXNzZWRfYV9wdHIpCi0g CWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKLSAKLUBAIC0zNzYsNyArMzgxLDcgQEAK LSAJICAgICAgZnB1dHNfZmlsdGVyZWQgKCIgOjogIiwgc3RyZWFtKTsKLSAJICAgICAgZnB1dHNf ZmlsdGVyZWQgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaW5kZXgpLCBzdHJlYW0pOwotIAkgICAg ICBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaW5k ZXgpLAotLQkJCQkJICAgc3RyZWFtLCBzaG93IC0gMSwgMCwgMCwgMCk7Ci0rCQkJCQkgICBzdHJl YW0sIHNob3cgLSAxLCAwLCAwLCAwLCAwKTsKLSAJICAgICAgZnB1dHNfZmlsdGVyZWQgKCJcbiIs IHN0cmVhbSk7Ci0gCSAgICB9Ci0gCSAgZnByaW50ZmlfZmlsdGVyZWQgKGxldmVsLCBzdHJlYW0s ICJFbmQgVHlwZSAiKTsKLUluZGV4OiBnZGItNy4xMS41MC4yMDE2MDYzMC9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3BvaW50ZXJzLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjExLjUwLjIwMTYwNjMw L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwCTIwMTYtMDctMTYgMTA6NTU6 NDIuMDc5NTI1ODYwICswMjAwCi1AQCAtMCwwICsxLDgwIEBACi0rISBDb3B5cmlnaHQgMjAxNiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotKwotK3Byb2dyYW0gcG9pbnRlcnMKLSsKLSsgIHR5cGUgOjogdHdvCi0rICAgIGlu dGVnZXIsIGFsbG9jYXRhYmxlIDo6IGl2bGExICg6KQotKyAgICBpbnRlZ2VyLCBhbGxvY2F0YWJs ZSA6OiBpdmxhMiAoOiwgOikKLSsgIGVuZCB0eXBlIHR3bwotKwotKyAgbG9naWNhbCwgdGFyZ2V0 IDo6IGxvZ3YKLSsgIGNvbXBsZXgsIHRhcmdldCA6OiBjb212Ci0rICBjaGFyYWN0ZXIsIHRhcmdl dCA6OiBjaGFydgotKyAgY2hhcmFjdGVyIChsZW49MyksIHRhcmdldCA6OiBjaGFyYQotKyAgaW50 ZWdlciwgdGFyZ2V0IDo6IGludHYKLSsgIGludGVnZXIsIHRhcmdldCwgZGltZW5zaW9uICgxMCwy KSA6OiBpbnRhCi0rICByZWFsLCB0YXJnZXQgICAgOjogcmVhbHYKLSsgIHR5cGUodHdvKSwgdGFy Z2V0ICA6OiB0d292Ci0rCi0rICBsb2dpY2FsLCBwb2ludGVyIDo6IGxvZ3AKLSsgIGNvbXBsZXgs IHBvaW50ZXIgOjogY29tcAotKyAgY2hhcmFjdGVyLCBwb2ludGVyOjogY2hhcnAKLSsgIGNoYXJh Y3RlciAobGVuPTMpLCBwb2ludGVyOjogY2hhcmFwCi0rICBpbnRlZ2VyLCBwb2ludGVyIDo6IGlu dHAKLSsgIGludGVnZXIsIHBvaW50ZXIsIGRpbWVuc2lvbiAoOiw6KSA6OiBpbnRhcAotKyAgcmVh bCwgcG9pbnRlciA6OiByZWFscAotKyAgdHlwZSh0d28pLCBwb2ludGVyIDo6IHR3b3AKLSsKLSsg IG51bGxpZnkgKGxvZ3ApCi0rICBudWxsaWZ5IChjb21wKQotKyAgbnVsbGlmeSAoY2hhcnApCi0r ICBudWxsaWZ5IChjaGFyYXApCi0rICBudWxsaWZ5IChpbnRwKQotKyAgbnVsbGlmeSAoaW50YXAp Ci0rICBudWxsaWZ5IChyZWFscCkKLSsgIG51bGxpZnkgKHR3b3ApCi0rCi0rICBsb2dwID0+IGxv Z3YgICAgISBCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50Ci0rICBjb21wID0+IGNvbXYKLSsgIGNo YXJwID0+IGNoYXJ2Ci0rICBjaGFyYXAgPT4gY2hhcmEKLSsgIGludHAgPT4gaW50dgotKyAgaW50 YXAgPT4gaW50YQotKyAgcmVhbHAgPT4gcmVhbHYKLSsgIHR3b3AgPT4gdHdvdgotKwotKyAgbG9n diA9IGFzc29jaWF0ZWQobG9ncCkgICAgICEgQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQKLSsgIGNv bXYgPSBjbXBseCgxLDIpCi0rICBjaGFydiA9ICJhIgotKyAgY2hhcmEgPSAiYWJjIgotKyAgaW50 diA9IDEwCi0rICBpbnRhKDosOikgPSAxCi0rICBpbnRhKDMsMSkgPSAzCi0rICByZWFsdiA9IDMu MTQKLSsKLSsgIGFsbG9jYXRlICh0d292JWl2bGExKDMpKQotKyAgYWxsb2NhdGUgKHR3b3YlaXZs YTIoMiwyKSkKLSsgIHR3b3YlaXZsYTEoMSkgPSAxMQotKyAgdHdvdiVpdmxhMSgyKSA9IDEyCi0r ICB0d292JWl2bGExKDMpID0gMTMKLSsgIHR3b3YlaXZsYTIoMSwxKSA9IDIxMQotKyAgdHdvdiVp dmxhMigyLDEpID0gMjIxCi0rICB0d292JWl2bGEyKDEsMikgPSAyMTIKLSsgIHR3b3YlaXZsYTIo MiwyKSA9IDIyMgotKwotKyAgaW50diA9IGludHYgKyAxICEgQWZ0ZXIgdmFsdWUgYXNzaWdubWVu dAotKwotK2VuZCBwcm9ncmFtIHBvaW50ZXJzCi1JbmRleDogZ2RiLTcuMTEuNTAuMjAxNjA2MzAv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wcmludF90eXBlLmV4cAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcHJpbnRfdHlwZS5leHAJ MjAxNi0wNy0xNiAxMDo1NTo0Mi4wNzk1MjU4NjAgKzAyMDAKLUBAIC0wLDAgKzEsMTAwIEBACi0r IyBDb3B5cmlnaHQgMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgInBvaW50ZXJz LmY5MCIKLStsb2FkX2xpYiBmb3J0cmFuLmV4cAotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVidWcg ZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsKLStpZiAhW3J1bnRvX21h aW5dIHsKLSsgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBiZWluZyB1c2VkLCB0aGUg dHlwZSBuYW1lcyBjYW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4KLStzZXQgbG9naWNhbCBbZm9y dHJhbl9sb2dpY2FsNF0KLStzZXQgcmVhbCBbZm9ydHJhbl9yZWFsNF0KLStzZXQgaW50IFtmb3J0 cmFuX2ludDRdCi0rc2V0IGNvbXBsZXggW2ZvcnRyYW5fY29tcGxleDRdCi0rCi0rZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkJlZm9yZSBwb2ludGVyIGFzc2lnbm1lbnQiXQot K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50Igot K2dkYl90ZXN0ICJwdHlwZSBsb2dwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggJGxvZ2ljYWwgXFwp IiAicHR5cGUgbG9ncCwgbm90IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIGNvbXAiICJ0 eXBlID0gUFRSIFRPIC0+IFxcKCAkY29tcGxleCBcXCkiICJwdHlwZSBjb21wLCBub3QgYXNzb2Np YXRlZCIKLStnZGJfdGVzdCAicHR5cGUgY2hhcnAiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFy YWN0ZXJcXCoxIFxcKSIgInB0eXBlIGNoYXJwLCBub3QgYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAi cHR5cGUgY2hhcmFwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXCkiICJw dHlwZSBjaGFyYXAsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSBpbnRwIiAidHlw ZSA9IFBUUiBUTyAtPiBcXCggJGludCBcXCkiICJwdHlwZSBpbnRwLCBub3QgYXNzb2NpYXRlZCIK LStzZXQgdGVzdCAicHR5cGUgaW50YXAsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0X211bHRp cGxlICJwdHlwZSBpbnRhcCIgJHRlc3QgewotKyAgICAtcmUgInR5cGUgPSBQVFIgVE8gLT4gXFwo ICRpbnQgXFwoOiw6XFwpXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAgIHBhc3MgJHRl c3QKLSsgICAgfQotKyAgICAtcmUgInR5cGUgPSAkaW50IFxcKDosOlxcKVxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rICAgICAgICBwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rZ2RiX3Rlc3QgInB0eXBl IHJlYWxwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggJHJlYWwgXFwpIiAicHR5cGUgcmVhbHAsIG5v dCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB0d29wIiBcCi0rICAgIFttdWx0aV9saW5l ICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBUeXBlIHR3byIgXAotKyAgICAgICAgICAgICAgICAiICAg ICRpbnQgOjogaXZsYTFcXCg6XFwpIiBcCi0rICAgICAgICAgICAgICAgICIgICAgJGludCA6OiBp dmxhMlxcKDosOlxcKSIgXAotKyAgICAgICAgICAgICAgICAiRW5kIFR5cGUgdHdvIFxcKSJdIFwK LSsgICAgInB0eXBlIHR3b3AsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB0d28i IFwKLSsgICAgW211bHRpX2xpbmUgInR5cGUgPSBUeXBlIHR3byIgXAotKyAgICAgICAgICAgICAg ICAiICAgICRpbnQgOjogaXZsYTFcXCg6XFwpIiBcCi0rICAgICAgICAgICAgICAgICIgICAgJGlu dCA6OiBpdmxhMlxcKDosOlxcKSIgXAotKyAgICAgICAgICAgICAgICAiRW5kIFR5cGUgdHdvIl0K LSsKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQmVmb3JlIHZhbHVl IGFzc2lnbm1lbnQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCZWZvcmUgdmFsdWUg YXNzaWdubWVudCIKLStnZGJfdGVzdCAicHR5cGUgdHdvcCIgXAotKyAgICBbbXVsdGlfbGluZSAi dHlwZSA9IFBUUiBUTyAtPiBcXCggVHlwZSB0d28iIFwKLSsgICAgICAgICAgICAgICAgIiAgICAk aW50IDo6IGl2bGExXFwoOlxcKSIgXAotKyAgICAgICAgICAgICAgICAiICAgICRpbnQgOjogaXZs YTJcXCg6LDpcXCkiIFwKLSsgICAgICAgICAgICAgICAgIkVuZCBUeXBlIHR3byBcXCkiXQotKwot KwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJBZnRlciB2YWx1ZSBhc3Np Z25tZW50Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQWZ0ZXIgdmFsdWUgYXNzaWdu bWVudCIKLStnZGJfdGVzdCAicHR5cGUgbG9ndiIgInR5cGUgPSAkbG9naWNhbCIKLStnZGJfdGVz dCAicHR5cGUgY29tdiIgInR5cGUgPSAkY29tcGxleCIKLStnZGJfdGVzdCAicHR5cGUgY2hhcnYi ICJ0eXBlID0gY2hhcmFjdGVyXFwqMSIKLStnZGJfdGVzdCAicHR5cGUgY2hhcmEiICJ0eXBlID0g Y2hhcmFjdGVyXFwqMyIKLStnZGJfdGVzdCAicHR5cGUgaW50diIgInR5cGUgPSAkaW50IgotK2dk Yl90ZXN0ICJwdHlwZSBpbnRhIiAidHlwZSA9ICRpbnQgXFwoMTAsMlxcKSIKLStnZGJfdGVzdCAi cHR5cGUgcmVhbHYiICJ0eXBlID0gJHJlYWwiCi0rCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIGxvZ3Ai ICJ0eXBlID0gUFRSIFRPIC0+IFxcKCAkbG9naWNhbCBcXCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGNv bXAiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCAkY29tcGxleCBcXCkiCi0rZ2RiX3Rlc3QgInB0eXBl IGNoYXJwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMSBcXCkiCi0rZ2RiX3Rl c3QgInB0eXBlIGNoYXJhcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjMgXFwp IgotK2dkYl90ZXN0ICJwdHlwZSBpbnRwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggJGludCBcXCki Ci0rc2V0IHRlc3QgInB0eXBlIGludGFwIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0 IHsKLSsgICAgLXJlICJ0eXBlID0gJGludCBcXCgxMCwyXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsK LSsgICAgICAgIHBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgInR5cGUgPSBQVFIgVE8gLT4g XFwoICRpbnQgXFwoMTAsMlxcKVxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgICAgICBwYXNz ICR0ZXN0Ci0rICAgIH0KLSt9Ci0rZ2RiX3Rlc3QgInB0eXBlIHJlYWxwIiAidHlwZSA9IFBUUiBU TyAtPiBcXCggJHJlYWwgXFwpIgotSW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEx LjUwLjIwMTYwNjMwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhw CTIwMTYtMDctMTYgMTA6NTQ6NDguNzQ5MDk5MTUwICswMjAwCi0rKysgZ2RiLTcuMTEuNTAuMjAx NjA2MzAvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwCTIwMTYtMDctMTYg MTA6NTU6NDIuMDc5NTI1ODYwICswMjAwCi1AQCAtMzIsOSArMzIsOSBAQAotICMgQ2hlY2sgdGhl IHB0eXBlIG9mIHZhcmlvdXMgVkxBIHN0YXRlcyBhbmQgcG9pbnRlciB0byBWTEEncy4KLSBnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0KLSBnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAidmxhMS1pbml0IgotLWdkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlw ZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZsYTEgbm90IGluaXRpYWxpemVkIgotLWdkYl90 ZXN0ICJwdHlwZSB2bGEyIiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZsYTIgbm90 IGluaXRpYWxpemVkIgotLWdkYl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9IDxub3QgYXNzb2Np YXRlZD4iICJwdHlwZSBwdmxhIG5vdCBpbml0aWFsaXplZCIKLStnZGJfdGVzdCAicHR5cGUgdmxh MSIgInR5cGUgPSAkcmVhbCBcXCg6LDosOlxcKSIgInB0eXBlIHZsYTEgbm90IGluaXRpYWxpemVk IgotK2dkYl90ZXN0ICJwdHlwZSB2bGEyIiAidHlwZSA9ICRyZWFsIFxcKDosOiw6XFwpIiAicHR5 cGUgdmxhMiBub3QgaW5pdGlhbGl6ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0g JHJlYWwgXFwoOiw6LDpcXCkiICJwdHlwZSBwdmxhIG5vdCBpbml0aWFsaXplZCIKLSBnZGJfdGVz dCAicHR5cGUgdmxhMSgzLCA2LCA5KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxcKHZlY3Rv ciBub3QgYWxsb2NhdGVkXFxcKSIgXAotICAgInB0eXBlIHZsYTEoMywgNiwgOSkgbm90IGluaXRp YWxpemVkIgotIGdkYl90ZXN0ICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkiIFwKLUBAIC04MSwyMCAr ODEsMjAgQEAKLSAKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1k ZWFzc29jaWF0ZWQiXQotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2Np YXRlZCIKLS1nZGJfdGVzdCAicHR5cGUgcHZsYSIgInR5cGUgPSA8bm90IGFzc29jaWF0ZWQ+IiAi cHR5cGUgcHZsYSBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0g JHJlYWwgXFwoOiw6LDpcXCkiICJwdHlwZSBwdmxhIGRlYXNzb2NpYXRlZCIKLSBnZGJfdGVzdCAi cHR5cGUgcHZsYSg1LCA0NSwgMjApIiBcCi0gICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwo dmVjdG9yIG5vdCBhc3NvY2lhdGVkXFxcKSIgXAotICAgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSBu b3QgYXNzb2NpYXRlZCIKLSAKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi dmxhMS1kZWFsbG9jYXRlZCJdCi0gZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZGVh bGxvY2F0ZWQiCi0tZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+ IiAicHR5cGUgdmxhMSBub3QgYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlw ZSA9ICRyZWFsIFxcKDosOiw6XFwpIiAicHR5cGUgdmxhMSBub3QgYWxsb2NhdGVkIgotIGdkYl90 ZXN0ICJwdHlwZSB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwodmVj dG9yIG5vdCBhbGxvY2F0ZWRcXFwpIiBcCi0gICAicHR5cGUgdmxhMSgzLCA2LCA5KSBub3QgYWxs b2NhdGVkIgotIAotIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWRl YWxsb2NhdGVkIl0KLSBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1kZWFsbG9jYXRl ZCIKLS1nZGJfdGVzdCAicHR5cGUgdmxhMiIgInR5cGUgPSA8bm90IGFsbG9jYXRlZD4iICJwdHlw ZSB2bGEyIG5vdCBhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBlID0gJHJl YWwgXFwoOiw6LDpcXCkiICJwdHlwZSB2bGEyIG5vdCBhbGxvY2F0ZWQiCi0gZ2RiX3Rlc3QgInB0 eXBlIHZsYTIoNSwgNDUsIDIwKSIgXAotICAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxcKHZl Y3RvciBub3QgYWxsb2NhdGVkXFxcKSIgXAotICAgInB0eXBlIHZsYTIoNSwgNDUsIDIwKSBub3Qg YWxsb2NhdGVkIgotSW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXR5cGUuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMTEuNTAuMjAxNjA2 MzAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAkyMDE2LTA3LTE2 IDEwOjU0OjQ4Ljc0OTA5OTE1MCArMDIwMAotKysrIGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZXhwCTIwMTYtMDctMTYgMTA6NTU6NDIuMDgw NTI1ODY4ICswMjAwCi1AQCAtMTMyLDcgKzEzMiwxMCBAQAotICAgICAgICAgICAgICAgICAgICAg ICJFbmQgVHlwZSBvbmUiIF0KLSAKLSAjIENoZWNrIGFsbG9jYXRpb24gc3RhdHVzIG9mIGR5bmFt aWMgYXJyYXkgYW5kIGl0J3MgZHluYW1pYyBtZW1iZXJzCi0tZ2RiX3Rlc3QgInB0eXBlIGZpdmVk eW5hcnIiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IgotK2dkYl90ZXN0ICJwdHlwZSBmaXZlZHlu YXJyIiBcCi0rICAgICAgICAgW211bHRpX2xpbmUgInR5cGUgPSBUeXBlIGZpdmUiIFwKLSsgICAg ICAgICAgICAgICAgICAgICAiICAgIFR5cGUgb25lIDo6IHRvbmUiIFwKLSsgICAgICAgICAgICAg ICAgICAgICAiRW5kIFR5cGUgZml2ZSBcXCg6XFwpIiBdCi0gZ2RiX3Rlc3QgIm5leHQiICIiCi0g Z2RiX3Rlc3QgInB0eXBlIGZpdmVkeW5hcnIoMikiIFwKLSAgICAgICAgICBbbXVsdGlfbGluZSAi dHlwZSA9IFR5cGUgZml2ZSIgXAotQEAgLTE0MSw3ICsxNDQsNyBAQAotICAgICAgICAgICJwdHlw ZSBmaXZlZHluYXJyKDIpLCB0b25lIGlzIG5vdCBhbGxvY2F0ZWQiCi0gZ2RiX3Rlc3QgInB0eXBl IGZpdmVkeW5hcnIoMikldG9uZSIgXAotICAgICAgICAgIFttdWx0aV9saW5lICJ0eXBlID0gVHlw ZSBvbmUiIFwKLS0gICAgICAgICAgICAgICAgICAgICAiICAgICRpbnQgOjogaXZsYVxcKDxub3Qg YWxsb2NhdGVkPlxcKSIgXAotKyAgICAgICAgICAgICAgICAgICAgICIgICAgJGludCA6OiBpdmxh XFwoOiw6LDpcXCkiIFwKLSAgICAgICAgICAgICAgICAgICAgICAiRW5kIFR5cGUgb25lIiBdIFwK LSAgICAgICAgICAicHR5cGUgZml2ZWR5bmFycigyKSV0b25lLCBub3QgYWxsb2NhdGVkIgotIAot SW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXZhbHVlLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjExLjUwLjIwMTYwNjMwLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwCTIwMTYtMDctMTYgMTA6NTQ6NDgu NzQ5MDk5MTUwICswMjAwCi0rKysgZ2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwCTIwMTYtMDctMTYgMTA6NTU6NDIuMDgwNTI1ODY4ICsw MjAwCi1AQCAtMzQsNyArMzQsNyBAQAotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEx LWluaXQiCi0gZ2RiX3Rlc3QgInByaW50IHZsYTEiICIgPSA8bm90IGFsbG9jYXRlZD4iICJwcmlu dCBub24tYWxsb2NhdGVkIHZsYTEiCi0gZ2RiX3Rlc3QgInByaW50ICZ2bGExIiBcCi0tICAiID0g XFxcKFBUUiBUTyAtPiBcXFwoICRyZWFsIFxcXCg8bm90IGFsbG9jYXRlZD5cXFwpXFxcKVxcXCkg JGhleCIgXAotKyAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCAkcmVhbCBcXFwoOiw6LDpcXFwpXFxc KVxcXCkgJGhleCIgXAotICAgInByaW50IG5vbi1hbGxvY2F0ZWQgJnZsYTEiCi0gZ2RiX3Rlc3Qg InByaW50IHZsYTEoMSwxLDEpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwodmVjdG9yIG5v dCBhbGxvY2F0ZWRcXFwpIiBcCi0gICAicHJpbnQgbWVtYmVyIGluIG5vbi1hbGxvY2F0ZWQgdmxh MSAoMSkiCi1AQCAtNzUsNyArNzUsNyBAQAotICMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gdW5k ZWZpbmVkIHBvaW50ZXIgdG8gVkxBIChkYW5nbGluZykKLSBnZGJfdGVzdCAicHJpbnQgcHZsYSIg IiA9IDxub3QgYXNzb2NpYXRlZD4iICJwcmludCB1bmRlZmluZWQgcHZsYSIKLSBnZGJfdGVzdCAi cHJpbnQgJnB2bGEiIFwKLS0gICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJlYWwgXFxcKDxub3Qg YXNzb2NpYXRlZD5cXFwpXFxcKVxcXCkgJGhleCIgXAotKyAgIiA9IFxcXChQVFIgVE8gLT4gXFxc KCAkcmVhbCBcXFwoOiw6LDpcXFwpXFxcKVxcXCkgJGhleCIgXAotICAgInByaW50IG5vbi1hc3Nv Y2lhdGVkICZwdmxhIgotIGdkYl90ZXN0ICJwcmludCBwdmxhKDEsIDMsIDgpIiAibm8gc3VjaCB2 ZWN0b3IgZWxlbWVudCBcXFwodmVjdG9yIG5vdCBhc3NvY2lhdGVkXFxcKSIgXAotICAgInByaW50 IHVuZGVmaW5lZCBwdmxhKDEsMyw4KSIKLUluZGV4OiBnZGItNy4xMS41MC4yMDE2MDYzMC9nZGIv dGVzdHN1aXRlL2dkYi5taS9taS12bGEtZm9ydHJhbi5leHAKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xMS41MC4yMDE2MDYzMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFu LmV4cAkyMDE2LTA3LTE2IDEwOjU0OjQ4Ljc0OTA5OTE1MCArMDIwMAotKysrIGdkYi03LjExLjUw LjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAkyMDE2LTA3 LTE2IDEwOjU1OjQyLjA4MDUyNTg2OCArMDIwMAotQEAgLTE3LDYgKzE3LDcgQEAKLSAjIEFycmF5 IChWTEEpLgotIAotIGxvYWRfbGliIG1pLXN1cHBvcnQuZXhwCi0rbG9hZF9saWIgZm9ydHJhbi5l eHAKLSBzZXQgTUlGTEFHUyAiLWk9bWkiCi0gbG9hZF9saWIgImZvcnRyYW4uZXhwIgotIAotQEAg LTUwLDEwICs1MSwxMCBAQAotIG1pX2dkYl90ZXN0ICI1MDAtZGF0YS1ldmFsdWF0ZS1leHByZXNz aW9uIHZsYTEiIFwKLSAgICI1MDBcXF5kb25lLHZhbHVlPVwiPG5vdCBhbGxvY2F0ZWQ+XCIiICJl dmFsdWF0ZSBub3QgYWxsb2NhdGVkIHZsYSIKLSAKLS1taV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQg dmxhMV9ub3RfYWxsb2NhdGVkIHZsYTEgIjxub3QgYWxsb2NhdGVkPiIgXAotK21pX2NyZWF0ZV92 YXJvYmpfY2hlY2tlZCB2bGExX25vdF9hbGxvY2F0ZWQgdmxhMSAiJHJlYWwgXFwoOlxcKSIgXAot ICAgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSB2bGExX25vdF9hbGxvY2F0ZWQiCi0gbWlfZ2RiX3Rl c3QgIjUwMS12YXItaW5mby10eXBlIHZsYTFfbm90X2FsbG9jYXRlZCIgXAotLSAgIjUwMVxcXmRv bmUsdHlwZT1cIjxub3QgYWxsb2NhdGVkPlwiIiBcCi0rICAiNTAxXFxeZG9uZSx0eXBlPVwiJHJl YWwgXFwoOlxcKVwiIiBcCi0gICAiaW5mbyB0eXBlIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRl ZCIKLSBtaV9nZGJfdGVzdCAiNTAyLXZhci1zaG93LWZvcm1hdCB2bGExX25vdF9hbGxvY2F0ZWQi IFwKLSAgICI1MDJcXF5kb25lLGZvcm1hdD1cIm5hdHVyYWxcIiIgXAotQEAgLTE0MCwxMCArMTQx LDEwIEBACi0gICAgIC1yZSAiNTgwXFxeZG9uZSx2YWx1ZT1cIjxub3QgYXNzb2NpYXRlZD5cIi4q JHttaV9nZGJfcHJvbXB0fSQiIHsKLSAJcGFzcyAkdGVzdAotIAotLQltaV9jcmVhdGVfdmFyb2Jq X2NoZWNrZWQgcHZsYTJfbm90X2Fzc29jaWF0ZWQgcHZsYTIgIjxub3QgYXNzb2NpYXRlZD4iIFwK LSsJbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHB2bGEyX25vdF9hc3NvY2lhdGVkIHB2bGEyICIk cmVhbCBcXCg6LDpcXCkiIFwKLSAJICAgICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgcHZsYTJfbm90 X2Fzc29jaWF0ZWQiCi0gCW1pX2dkYl90ZXN0ICI1ODEtdmFyLWluZm8tdHlwZSBwdmxhMl9ub3Rf YXNzb2NpYXRlZCIgXAotLQkgICAgIjU4MVxcXmRvbmUsdHlwZT1cIjxub3QgYXNzb2NpYXRlZD5c IiIgXAotKwkgICAgIjU4MVxcXmRvbmUsdHlwZT1cIiRyZWFsIFxcKDosOlxcKVwiIiBcCi0gCSAg ICAiaW5mbyB0eXBlIHZhcmlhYmxlIHB2bGEyX25vdF9hc3NvY2lhdGVkIgotIAltaV9nZGJfdGVz dCAiNTgyLXZhci1zaG93LWZvcm1hdCBwdmxhMl9ub3RfYXNzb2NpYXRlZCIgXAotIAkgICAgIjU4 MlxcXmRvbmUsZm9ybWF0PVwibmF0dXJhbFwiIiBcCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRl bC01b2Y3LnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC01b2Y3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA2OGNmYzU3Li4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtNW9mNy5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0NSArMCwwIEBACi1Gcm9tIGI2ZTY2OGNjZDM1NmVh M2U3NWQzMGYyMDMxNDMzNGIxMjAzYzIyZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBCZXJuaGFyZCBIZWNrZWwgPGJlcm5oYXJkLmhlY2tlbEBpbnRlbC5jb20+Ci1EYXRlOiBUdWUs IDEyIEp1bCAyMDE2IDA4OjE5OjM0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNS83XSBSZXNvbHZl IGR5bmFtaWMgdGFyZ2V0IHR5cGVzIG9mIHBvaW50ZXJzLgotCi1XaGVuIGRlcmVmZXJlbmNpbmcg cG9pbnRlcnMgdG8gZHluYW1pYyB0YXJnZXQgdHlwZXMsCi1yZXNvbHZlIHRoZSB0YXJnZXQgdHlw ZS4KLQotMjAxNi0wNi0zMCAgQmVybmhhcmQgSGVja2VsICA8YmVybmhhcmQuaGVja2VsQGludGVs LmNvbT4KLQotZ2RiL0NoYW5nZWxvZzoKLQkqIE5FV1M6IEFkZGVkIGVudHJ5LgotCSogYy12YWxw cmludC5jIChjX3ByaW50X3ZhbCk6IFJlc29sdmUgZHluYW1pYyB0YXJnZXQgdHlwZXMuCi0JKiB2 YWxvcHMuYyAodmFsdWVfaW5kKTogUmVzb2x2ZSBkeW5hbWljIHRhcmdldCB0eXBlcy4KLQkqIHZh bHByaW50LmMgKGNoZWNrX3ByaW50YWJsZSk6IERvbid0IHNob3J0Y3V0IG5vdCBhc3NvY2lhdGVk Ci0JICBwb2ludGVycy4KLQotZ2RiL1Rlc3RzdWl0ZS9DaGFuZ2Vsb2c6Ci0JKiBwb2ludGVycy5m OTA6IEFkZGVkIHBvaW50ZXIgdG8gZHluYW1pYyB0eXBlcy4KLQkqIGdkYi5mb3J0cmFuL3BvaW50 ZXJzLmV4cDogTmV3LgotCi1DaGFuZ2UtSWQ6IEk5OThkNGRhNGE1YmE0ODk5YjhjYjIxMTU1NzZm NDRlZmE3NDFlNjk4Ci0tLS0KLSBnZGIvTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArCi0gZ2RiL2MtdmFscHJpbnQuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjIg KysrKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5leHAgICAgICAgfCAgIDQgKysK LSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmV4cCB8IDEyMyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50 ZXJzLmY5MCB8ICAxNyArKysrKwotIGdkYi92YWxvcHMuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDE2ICsrKystCi0gZ2RiL3ZhbHByaW50LmMgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDYgLS0KLSA3IGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50 ZXJzLmV4cAotCi1JbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL05FV1MKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4xMS45MC4yMDE2MDgwNy5vcmlnL2dkYi9ORVdTCTIwMTYtMDgtMDcgMjE6 MTg6NDQuMDMyNDA5MDY1ICswMjAwCi0rKysgZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL05FV1MJ MjAxNi0wOC0wNyAyMToxOToxNy4xNzg3MTUxMTYgKzAyMDAKLUBAIC0xLDYgKzEsOCBAQAotIAkJ V2hhdCBoYXMgY2hhbmdlZCBpbiBHREI/Ci0gCSAgICAgKE9yZ2FuaXplZCByZWxlYXNlIGJ5IHJl bGVhc2UpCi0gCi0rKiBGb3J0cmFuOiBTdXBwb3J0IHBvaW50ZXJzIHRvIGR5bmFtaWMgdHlwZXMu Ci0rCi0gKioqIENoYW5nZXMgaW4gR0RCIDcuMTIKLSAKLSAqIEdEQiBhbmQgR0RCc2VydmVyIG5v dyBidWlsZCB3aXRoIGEgQysrIGNvbXBpbGVyIGJ5IGRlZmF1bHQuCi1JbmRleDogZ2RiLTcuMTEu OTAuMjAxNjA4MDcvZ2RiL2MtdmFscHJpbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjExLjkw LjIwMTYwODA3Lm9yaWcvZ2RiL2MtdmFscHJpbnQuYwkyMDE2LTA4LTA3IDIxOjE4OjQ0LjAzMjQw OTA2NSArMDIwMAotKysrIGdkYi03LjExLjkwLjIwMTYwODA3L2dkYi9jLXZhbHByaW50LmMJMjAx Ni0wOC0wNyAyMToxODo1MS4wODc0NzQyMDcgKzAyMDAKLUBAIC02NDUsNiArNjQ1LDI4IEBACi0g ICAgICAgZWxzZQotIAl7Ci0gCSAgLyogbm9ybWFsIGNhc2UgKi8KLSsJICBpZiAoVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSCi0rCSAgICAgICYmIDEgPT0gaXNfZHluYW1pY190eXBl ICh0eXBlKSkKLSsJICAgIHsKLSsJICAgICAgQ09SRV9BRERSIGFkZHI7Ci0rCSAgICAgIGlmIChO VUxMICE9IFRZUEVfREFUQV9MT0NBVElPTiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpKQotKwkJ YWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7Ci0rCSAgICAgIGVsc2UKLSsJCWFkZHIgPSB2YWx1 ZV9hc19hZGRyZXNzICh2YWwpOwotKwotKwkgICAgICAvKiBXZSByZXNvbHZlIHRoZSB0YXJnZXQt dHlwZSBvbmx5IHdoZW4gdGhlCi0rCSAgICAgICAgIHBvaW50ZXIgaXMgYXNzb2NpYXRlZC4gICov Ci0rCSAgICAgIGlmICgoYWRkciAhPSAwKQotKwkJICAmJiAoMCA9PSB0eXBlX25vdF9hc3NvY2lh dGVkICh0eXBlKSkpCi0rCQkgIFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpID0KLSsJCSAgICAgIHJl c29sdmVfZHluYW1pY190eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLSsJCQkJCSAgICBO VUxMLCBhZGRyKTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIC8qIERvIG5v dGhpbmcuIFJlZmVyZW5jZXMgYXJlIGFscmVhZHkgcmVzb2x2ZWQgZnJvbSB0aGUgYmVnaW5uaW5n LAotKwkgICAgICAgICBvbmx5IHBvaW50ZXJzIGFyZSByZXNvbHZlZCB3aGVuIHdlIGFjdHVhbCBu ZWVkIHRoZSB0YXJnZXQuICAqLwotKwkgICAgfQotIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIigiKTsKLSAJICB0eXBlX3ByaW50ICh2YWx1ZV90eXBlICh2YWwpLCAiIiwgc3RyZWFtLCAt MSk7Ci0gCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAiKTsKLUluZGV4OiBnZGItNy4x MS45MC4yMDE2MDgwNy9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmV4cAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjExLjkwLjIwMTYwODA3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avdmxh LWN4eC5leHAJMjAxNi0wOC0wNyAyMToxODo0NC4wMzM0MDkwNzQgKzAyMDAKLSsrKyBnZGItNy4x MS45MC4yMDE2MDgwNy9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmV4cAkyMDE2LTA4LTA3 IDIxOjE4OjUxLjA4ODQ3NDIxNiArMDIwMAotQEAgLTI2LDYgKzI2LDggQEAKLSBnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCJdCi0g Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkJlZm9yZSBwb2ludGVyIGFzc2lnbm1lbnQiCi0g Z2RiX3Rlc3QgInB0eXBlIHB0ciIgImludCBcXChcXCpcXClcXFxbdmFyaWFibGUgbGVuZ3RoXFxc XSIgInB0eXBlIHB0ciwgQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCIKLStnZGJfdGVzdCAicHJp bnQgcHRyIiAiXFwoaW50IFxcKFxcKlxcKVxcXFt2YXJpYWJsZSBsZW5ndGhcXFxdXFwpIDB4MCIg InByaW50IHB0ciwgQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCIKLStnZGJfdGVzdCAicHJpbnQg KnB0ciIgIkNhbm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJlc3MgMHgwIiAicHJpbnQgKnB0ciwg QmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCIKLSAKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAidmxhc19maWxsZWQiXQotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 bGFzX2ZpbGxlZCIKLUBAIC0zOCwzICs0MCw1IEBACi0gZ2RiX3Rlc3QgInByaW50IHZsYXJlZjIi ICIgPSBcXCguKlxcKSBAJGhleDogXFx7NSwgNywgOVxcfSIKLSBnZGJfdGVzdCAicHJpbnQgYyIg IiA9IFxce2UgPSBcXHtjID0gQCRoZXhcXH1cXH0iCi0gZ2RiX3Rlc3QgInB0eXBlIHB0ciIgImlu dCBcXChcXCpcXClcXFxbM1xcXF0iCi0rZ2RiX3Rlc3QgInByaW50IHB0ciIgIlxcKGludCBcXChc XCpcXClcXFxbM1xcXF1cXCkgJGhleCIKLStnZGJfdGVzdCAicHJpbnQgKnB0ciIgIiA9IFxcezUs IDcsIDlcXH0iCi1JbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9wb2ludGVycy5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4xMS45MC4yMDE2MDgwNy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmV4cAkyMDE2LTA4LTA3IDIxOjE4OjUxLjA4 ODQ3NDIxNiArMDIwMAotQEAgLTAsMCArMSwxMjMgQEAKLSsjIENvcHlyaWdodCAyMDE2IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSAicG9pbnRlcnMuZjkwIgotK2xvYWRfbGliIGZvcnRy YW4uZXhwCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0 ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCAiY291 bGQgbm90IHJ1biB0byBtYWluIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBEZXBlbmRpbmcg b24gdGhlIGNvbXBpbGVyIGJlaW5nIHVzZWQsIHRoZSB0eXBlIG5hbWVzIGNhbiBiZSBwcmludGVk IGRpZmZlcmVudGx5LgotK3NldCBsb2dpY2FsIFtmb3J0cmFuX2xvZ2ljYWw0XQotK3NldCByZWFs IFtmb3J0cmFuX3JlYWw0XQotK3NldCBpbnQgW2ZvcnRyYW5faW50NF0KLStzZXQgY29tcGxleCBb Zm9ydHJhbl9jb21wbGV4NF0KLSsKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAiQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIkJlZm9yZSBwb2ludGVyIGFzc2lnbm1lbnQiCi0rZ2RiX3Rlc3QgInByaW50IGxvZ3Ai ICI9IFxcKFBUUiBUTyAtPiBcXCggJGxvZ2ljYWwgXFwpXFwpIDB4MCIgInByaW50IGxvZ3AsIG5v dCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCAqbG9ncCIgIkNhbm5vdCBhY2Nlc3MgbWVt b3J5IGF0IGFkZHJlc3MgMHgwIiAicHJpbnQgKmxvZ3AsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90 ZXN0ICJwcmludCBjb21wIiAiPSBcXChQVFIgVE8gLT4gXFwoICRjb21wbGV4IFxcKVxcKSAweDAi ICJwcmludCBjb21wLCBub3QgYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHJpbnQgKmNvbXAiICJD YW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MCIgInByaW50ICpjb21wLCBub3QgYXNz b2NpYXRlZCIKLStnZGJfdGVzdCAicHJpbnQgY2hhcnAiICI9IFxcKFBUUiBUTyAtPiBcXCggY2hh cmFjdGVyXFwqMSBcXClcXCkgMHgwIiAicHJpbnQgY2hhcnAsIG5vdCBhc3NvY2lhdGVkIgotK2dk Yl90ZXN0ICJwcmludCAqY2hhcnAiICJDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4 MCIgInByaW50ICpjaGFycCwgbm90IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IGNoYXJh cCIgIj0gXFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCozIFxcKVxcKSAweDAiICJwcmludCBj aGFyYXAsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCAqY2hhcmFwIiAiQ2Fubm90 IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweDAiICJwcmludCAqY2hhcmFwLCBub3QgYXNzb2Np YXRlZCIKLStnZGJfdGVzdCAicHJpbnQgaW50cCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkaW50IFxc KVxcKSAweDAiICJwcmludCBpbnRwLCBub3QgYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHJpbnQg KmludHAiICJDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MCIgInByaW50ICppbnRw LCBub3QgYXNzb2NpYXRlZCIKLStzZXQgdGVzdCAicHJpbnQgaW50YXAsIG5vdCBhc3NvY2lhdGVk IgotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBpbnRhcCIgJHRlc3QgewotKyAgLXJlICIgPSBc XChQVFIgVE8gLT4gXFwoICRpbnQgXFwoOiw6XFwpXFwpXFwpIDxub3QgYXNzb2NpYXRlZD5cclxu JGdkYl9wcm9tcHQgJCIgewotKyAgICBwYXNzICR0ZXN0Ci0rICB9Ci0rICAtcmUgIiA9IDxub3Qg YXNzb2NpYXRlZD5cclxuJGdkYl9wcm9tcHQgJCIgewotKyAgICBwYXNzICR0ZXN0Ci0rICB9Ci0r fQotK2dkYl90ZXN0ICJwcmludCByZWFscCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkcmVhbCBcXClc XCkgMHgwIiAicHJpbnQgcmVhbHAsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCAq cmVhbHAiICJDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MCIgInByaW50ICpyZWFs cCwgbm90IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IFwkbXlfdmFyID0gaW50cCIgIj0g XFwoUFRSIFRPIC0+IFxcKCAkaW50IFxcKVxcKSAweDAiCi0rCi0rCi0rZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgIkJlZm9yZSB2YWx1ZSBhc3NpZ25tZW50Il0KLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAiQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQiCi0rZ2RiX3Rlc3Qg InByaW50ICoodHdvcCklaXZsYTIiICI9IDxub3QgYWxsb2NhdGVkPiIKLSsKLSsKLStnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQWZ0ZXIgdmFsdWUgYXNzaWdubWVudCJdCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkFmdGVyIHZhbHVlIGFzc2lnbm1lbnQiCi0rZ2Ri X3Rlc3QgInByaW50IGxvZ3AiICI9IFxcKFBUUiBUTyAtPiBcXCggJGxvZ2ljYWwgXFwpXFwpICRo ZXhcKCA8Lio+XCk/IgotK2dkYl90ZXN0ICJwcmludCAqbG9ncCIgIj0gXFwuVFJVRVxcLiIKLStn ZGJfdGVzdCAicHJpbnQgY29tcCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkY29tcGxleCBcXClcXCkg JGhleFwoIDwuKj5cKT8iCi0rZ2RiX3Rlc3QgInByaW50ICpjb21wIiAiPSBcXCgxLDJcXCkiCi0r Z2RiX3Rlc3QgInByaW50IGNoYXJwIiAiPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEg XFwpXFwpICRoZXhcKCA8Lio+XCk/IgotK2dkYl90ZXN0ICJwcmludCAqY2hhcnAiICI9ICdhJyIK LStnZGJfdGVzdCAicHJpbnQgY2hhcmFwIiAiPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3Rlclxc KjMgXFwpXFwpICRoZXhcKCA8Lio+XCk/IgotK2dkYl90ZXN0ICJwcmludCAqY2hhcmFwIiAiPSAn YWJjJyIKLStnZGJfdGVzdCAicHJpbnQgaW50cCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkaW50IFxc KVxcKSAkaGV4XCggPC4qPlwpPyIKLStnZGJfdGVzdCAicHJpbnQgKmludHAiICI9IDEwIgotK3Nl dCB0ZXN0X25hbWUgInByaW50IGludGFwLCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0X211bHRpcGxl ICJwcmludCBpbnRhcCIgJHRlc3RfbmFtZSB7Ci0rICAtcmUgIj0gXFwoXFwoIDEsIDEsIDMoLCAx KXs3fVxcKSBcXCggMSgsIDEpezl9XFwpIFxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIHBh c3MgJHRlc3RfbmFtZQotKyAgfQotKyAgLXJlICI9IFxcKFBUUiBUTyAtPiBcXCggJGludCBcXCgx MCwyXFwpXFwpXFwpICRoZXhcKCA8Lio+XCk/XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgZ2Ri X3Rlc3QgInByaW50ICppbnRhcCIgIj0gXFwoXFwoIDEsIDEsIDMoLCAxKXs3fVxcKSBcXCggMSgs IDEpezl9XFwpIFxcKSIKLSsgICAgcGFzcyAkdGVzdF9uYW1lCi0rICB9Ci0rfQotK3NldCB0ZXN0 X25hbWUgInByaW50IGludHZsYXAsIGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInBy aW50IGludHZsYXAiICR0ZXN0X25hbWUgewotKyAgLXJlICI9IFxcKDIsIDIsIDIsIDQoLCAyKXs2 fVxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIHBhc3MgJHRlc3RfbmFtZQotKyAgfQotKyAg LXJlICI9IFxcKFBUUiBUTyAtPiBcXCggJGludCBcXCgxMFxcKVxcKVxcKSAkaGV4XCggPC4qPlwp P1xyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIGdkYl90ZXN0ICJwcmludCAqaW50dmxhcCIgIj0g XFwoMiwgMiwgMiwgNCgsIDIpezZ9XFwpIgotKyAgICBwYXNzICR0ZXN0X25hbWUKLSsgIH0KLSt9 Ci0rZ2RiX3Rlc3QgInByaW50IHJlYWxwIiAiPSBcXChQVFIgVE8gLT4gXFwoICRyZWFsIFxcKVxc KSAkaGV4XCggPC4qPlwpPyIKLStnZGJfdGVzdCAicHJpbnQgKnJlYWxwIiAiPSAzXFwuMTQwMDBc XGQrIgotK2dkYl90ZXN0ICJwcmludCBhcnJheU9mUHRyKDIpJXAiICI9IFxcKFBUUiBUTyAtPiBc XCggVHlwZSB0d28gXFwpXFwpICRoZXhcKCA8Lio+XCk/IgotK2dkYl90ZXN0ICJwcmludCAqKGFy cmF5T2ZQdHIoMiklcCkiICI9IFxcKCBpdmxhMSA9IFxcKDExLCAxMiwgMTNcXCksIGl2bGEyID0g XFwoXFwoIDIxMSwgMjIxXFwpIFxcKCAyMTIsIDIyMlxcKSBcXCkgXFwpIgotK3NldCB0ZXN0X25h bWUgInByaW50IGFycmF5T2ZQdHIoMyklcCIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdF9uYW1l ICR0ZXN0X25hbWUgewotKyAgLXJlICI9IFxcKFBUUiBUTyAtPiBcXCggVHlwZSB0d28gXFwpXFwp IDxub3QgYXNzb2NpYXRlZD5cclxuJGdkYl9wcm9tcHQgJCIgewotKyAgICBwYXNzICR0ZXN0X25h bWUKLSsgIH0KLSsgIC1yZSAiPSBcXChQVFIgVE8gLT4gXFwoIFR5cGUgdHdvIFxcKVxcKSAweDBc clxuJGdkYl9wcm9tcHQgJCIgewotKyAgICBwYXNzICR0ZXN0X25hbWUKLSsgIH0KLSt9Ci0rc2V0 IHRlc3RfbmFtZSAicHJpbnQgKihhcnJheU9mUHRyKDMpJXApLCBhc3NvY2lhdGVkIgotK2dkYl90 ZXN0X211bHRpcGxlICJwcmludCAqKGFycmF5T2ZQdHIoMyklcCkiICR0ZXN0X25hbWUgewotKyAg LXJlICJDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MFxyXG4kZ2RiX3Byb21wdCAk IiB7Ci0rICAgIHBhc3MgJHRlc3RfbmFtZQotKyAgfQotKyAgLXJlICJBdHRlbXB0IHRvIHRha2Ug Y29udGVudHMgb2YgYSBub3QgYXNzb2NpYXRlZCBwb2ludGVyLlxyXG4kZ2RiX3Byb21wdCAkIiB7 Ci0rICAgIHBhc3MgJHRlc3RfbmFtZQotKyAgfQotK30KLStnZGJfdGVzdCAicHJpbnQgKigoaW50 ZWdlciopICZpbnRhICsgMikiICI9IDMiICJwcmludCB0ZW1wb3JhcnkgcG9pbnRlciwgYXJyYXki Ci0rZ2RiX3Rlc3QgInByaW50ICooKGludGVnZXIqKSAmaW50dmxhICsgMykiICI9IDQiICJwcmlu dCB0ZW1wb3JhcnkgcG9pbnRlciwgYWxsb2NhdGVkIHZsYSIKLStnZGJfdGVzdCAicHJpbnQgXCRw YyIgIj0gXFwoUFRSIFRPIC0+IFxcKCB2b2lkIFxcKFxcKVxcKFxcKVxcKVxcKSAkaGV4IDxwb2lu dGVyc1xcK1xcZCs+IiAiUHJpbnQgcHJvZ3JhbSBjb3VudGVyIgotSW5kZXg6IGdkYi03LjExLjkw LjIwMTYwODA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMTEuOTAuMjAxNjA4MDcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3BvaW50ZXJzLmY5MAkyMDE2LTA4LTA3IDIxOjE4OjQ0LjAzMzQwOTA3NCArMDIwMAotKysr IGdkYi03LjExLjkwLjIwMTYwODA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMu ZjkwCTIwMTYtMDgtMDcgMjE6MTg6NTEuMDg4NDc0MjE2ICswMjAwCi1AQCAtMjAsMTQgKzIwLDIw IEBACi0gICAgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGl2bGEyICg6LCA6KQotICAgZW5kIHR5 cGUgdHdvCi0gCi0rICB0eXBlIDo6IHR3b1B0cgotKyAgICB0eXBlICh0d28pLCBwb2ludGVyIDo6 IHAKLSsgIGVuZCB0eXBlIHR3b1B0cgotKwotICAgbG9naWNhbCwgdGFyZ2V0IDo6IGxvZ3YKLSAg IGNvbXBsZXgsIHRhcmdldCA6OiBjb212Ci0gICBjaGFyYWN0ZXIsIHRhcmdldCA6OiBjaGFydgot ICAgY2hhcmFjdGVyIChsZW49MyksIHRhcmdldCA6OiBjaGFyYQotICAgaW50ZWdlciwgdGFyZ2V0 IDo6IGludHYKLSAgIGludGVnZXIsIHRhcmdldCwgZGltZW5zaW9uICgxMCwyKSA6OiBpbnRhCi0r ICBpbnRlZ2VyLCB0YXJnZXQsIGFsbG9jYXRhYmxlLCBkaW1lbnNpb24gKDopIDo6IGludHZsYQot ICAgcmVhbCwgdGFyZ2V0ICAgIDo6IHJlYWx2Ci0gICB0eXBlKHR3byksIHRhcmdldCAgOjogdHdv dgotKyAgdHlwZSh0d29QdHIpIDo6IGFycmF5T2ZQdHIgKDMpCi0gCi0gICBsb2dpY2FsLCBwb2lu dGVyIDo6IGxvZ3AKLSAgIGNvbXBsZXgsIHBvaW50ZXIgOjogY29tcAotQEAgLTM1LDYgKzQxLDcg QEAKLSAgIGNoYXJhY3RlciAobGVuPTMpLCBwb2ludGVyOjogY2hhcmFwCi0gICBpbnRlZ2VyLCBw b2ludGVyIDo6IGludHAKLSAgIGludGVnZXIsIHBvaW50ZXIsIGRpbWVuc2lvbiAoOiw6KSA6OiBp bnRhcAotKyAgaW50ZWdlciwgcG9pbnRlciwgZGltZW5zaW9uICg6KSA6OiBpbnR2bGFwCi0gICBy ZWFsLCBwb2ludGVyIDo6IHJlYWxwCi0gICB0eXBlKHR3byksIHBvaW50ZXIgOjogdHdvcAotIAot QEAgLTQ0LDggKzUxLDEyIEBACi0gICBudWxsaWZ5IChjaGFyYXApCi0gICBudWxsaWZ5IChpbnRw KQotICAgbnVsbGlmeSAoaW50YXApCi0rICBudWxsaWZ5IChpbnR2bGFwKQotICAgbnVsbGlmeSAo cmVhbHApCi0gICBudWxsaWZ5ICh0d29wKQotKyAgbnVsbGlmeSAoYXJyYXlPZlB0cigxKSVwKQot KyAgbnVsbGlmeSAoYXJyYXlPZlB0cigyKSVwKQotKyAgbnVsbGlmeSAoYXJyYXlPZlB0cigzKSVw KQotIAotICAgbG9ncCA9PiBsb2d2ICAgICEgQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudAotICAg Y29tcCA9PiBjb212Ci1AQCAtNTMsOCArNjQsMTAgQEAKLSAgIGNoYXJhcCA9PiBjaGFyYQotICAg aW50cCA9PiBpbnR2Ci0gICBpbnRhcCA9PiBpbnRhCi0rICBpbnR2bGFwID0+IGludHZsYQotICAg cmVhbHAgPT4gcmVhbHYKLSAgIHR3b3AgPT4gdHdvdgotKyAgYXJyYXlPZlB0cigyKSVwID0+IHR3 b3YKLSAKLSAgIGxvZ3YgPSBhc3NvY2lhdGVkKGxvZ3ApICAgICAhIEJlZm9yZSB2YWx1ZSBhc3Np Z25tZW50Ci0gICBjb212ID0gY21wbHgoMSwyKQotQEAgLTYzLDYgKzc2LDEwIEBACi0gICBpbnR2 ID0gMTAKLSAgIGludGEoOiw6KSA9IDEKLSAgIGludGEoMywxKSA9IDMKLSsgIGFsbG9jYXRlIChp bnR2bGEoMTApKQotKyAgaW50dmxhKDopID0gMgotKyAgaW50dmxhKDQpID0gNAotKyAgaW50dmxh cCA9PiBpbnR2bGEKLSAgIHJlYWx2ID0gMy4xNAotIAotICAgYWxsb2NhdGUgKHR3b3YlaXZsYTEo MykpCi1JbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL3ZhbG9wcy5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMTEuOTAuMjAxNjA4MDcub3JpZy9nZGIvdmFsb3BzLmMJMjAxNi0wOC0wNyAy MToxODo0NC4wMzU0MDkwOTMgKzAyMDAKLSsrKyBnZGItNy4xMS45MC4yMDE2MDgwNy9nZGIvdmFs b3BzLmMJMjAxNi0wOC0wNyAyMToxODo1MS4wODk0NzQyMjUgKzAyMDAKLUBAIC0xNTYyLDYgKzE1 NjIsMTkgQEAKLSAgIGlmIChUWVBFX0NPREUgKGJhc2VfdHlwZSkgPT0gVFlQRV9DT0RFX1BUUikK LSAgICAgewotICAgICAgIHN0cnVjdCB0eXBlICplbmNfdHlwZTsKLSsgICAgICBDT1JFX0FERFIg YWRkcjsKLSsKLSsgICAgICBpZiAodHlwZV9ub3RfYXNzb2NpYXRlZCAoYmFzZV90eXBlKSkKLSsg ICAgICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub3QgYXNzb2Np YXRlZCBwb2ludGVyLiIpKTsKLSsKLSsgICAgICBpZiAoTlVMTCAhPSBUWVBFX0RBVEFfTE9DQVRJ T04gKFRZUEVfVEFSR0VUX1RZUEUgKGJhc2VfdHlwZSkpKQotKwlhZGRyID0gdmFsdWVfYWRkcmVz cyAoYXJnMSk7Ci0rICAgICAgZWxzZQotKwlhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAoYXJnMSk7 Ci0rCi0rICAgICAgaWYgKGFkZHIgIT0gMCkKLSsJVFlQRV9UQVJHRVRfVFlQRSAoYmFzZV90eXBl KSA9Ci0rCSAgICByZXNvbHZlX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAoYmFzZV90 eXBlKSwgTlVMTCwgYWRkcik7Ci0gCi0gICAgICAgLyogV2UgbWF5IGJlIHBvaW50aW5nIHRvIHNv bWV0aGluZyBlbWJlZGRlZCBpbiBhIGxhcmdlciBvYmplY3QuCi0gICAgICAgICAgR2V0IHRoZSBy ZWFsIHR5cGUgb2YgdGhlIGVuY2xvc2luZyBvYmplY3QuICAqLwotQEAgLTE1NzcsOCArMTU5MCw3 IEBACi0gICAgICAgZWxzZQotIAkvKiBSZXRyaWV2ZSB0aGUgZW5jbG9zaW5nIG9iamVjdCBwb2lu dGVkIHRvLiAgKi8KLSAJYXJnMiA9IHZhbHVlX2F0X2xhenkgKGVuY190eXBlLCAKLS0JCQkgICAg ICAodmFsdWVfYXNfYWRkcmVzcyAoYXJnMSkKLS0JCQkgICAgICAgLSB2YWx1ZV9wb2ludGVkX3Rv X29mZnNldCAoYXJnMSkpKTsKLSsJCQkgICAgICAoYWRkciAtIHZhbHVlX3BvaW50ZWRfdG9fb2Zm c2V0IChhcmcxKSkpOwotIAotICAgICAgIGVuY190eXBlID0gdmFsdWVfdHlwZSAoYXJnMik7Ci0g ICAgICAgcmV0dXJuIHJlYWRqdXN0X2luZGlyZWN0X3ZhbHVlX3R5cGUgKGFyZzIsIGVuY190eXBl LCBiYXNlX3R5cGUsIGFyZzEpOwotSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwODA3L2dkYi92YWxw cmludC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMTEuOTAuMjAxNjA4MDcub3JpZy9nZGIvdmFs cHJpbnQuYwkyMDE2LTA4LTA3IDA0OjAwOjAxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEx LjkwLjIwMTYwODA3L2dkYi92YWxwcmludC5jCTIwMTYtMDgtMDcgMjE6MTg6NTEuMDkwNDc0MjM1 ICswMjAwCi1AQCAtMTE0MSwxMiArMTE0MSw2IEBACi0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0K LSAKLS0gIGlmICh0eXBlX25vdF9hc3NvY2lhdGVkICh2YWx1ZV90eXBlICh2YWwpKSkKLS0gICAg ewotLSAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKLS0gICAgICByZXR1 cm4gMDsKLS0gICAgfQotLQotICAgaWYgKHR5cGVfbm90X2FsbG9jYXRlZCAodmFsdWVfdHlwZSAo dmFsKSkpCi0gICAgIHsKLSAgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFtKTsK CmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTZvZjcucGF0Y2ggYi9nZGItdmxhLWludGVsLTZv ZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1OTY4ZTkuLjAwMDAwMDAK LS0tIGEvZ2RiLXZsYS1pbnRlbC02b2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICsw LDAgQEAKLUZyb20gODY2NTM0NGMxNGI5YWU4YjJlMGMzN2JhMDZkNjg4MWE1NDZkMWEzNyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlcm5oYXJkIEhlY2tlbCA8YmVybmhhcmQuaGVj a2VsQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMTIgSnVsIDIwMTYgMDg6MTk6MzQgKzAyMDAKLVN1 YmplY3Q6IFtQQVRDSCA2LzddIEZvcnRyYW46IFRlc3RzdWl0ZSwgYWRkIGN5Y2xpYyBwb2ludGVy cy4KLQotMjAxNi0wNS0yNSAgQmVybmhhcmQgSGVja2VsICA8YmVybmhhcmQuaGVja2VsQGludGVs LmNvbT4KLQotZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2Vsb2c6Ci0JKiBwb2ludGVycy5mOTA6IEFkZCBj eWxpYyBwb2ludGVycy4KLQkqIHBvaW50ZXJzLmV4cDogQWRkIHByaW50IG9mIGN5Y2xpYyBwb2lu dGVycy4KLQotQ2hhbmdlLUlkOiBJYzNiNjE4N2M1OTgwZmQ2YzM3ZTJlOTQ3ODdmODMyMWU1Yjdm MmQ3NQotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5leHAgfCAyMCAr KysrKysrKysrKysrKysrKysrKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMu ZjkwIHwgMTIgKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCsp Ci0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZXhwCi1pbmRleCBjMTlkN2UwLi42 N2NmOTk5IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5l eHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZXhwCi1AQCAtNTcs NiArNTcsMjQgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IGludGFwIiAkdGVzdCB7Ci0gZ2Ri X3Rlc3QgInByaW50IHJlYWxwIiAiPSBcXChQVFIgVE8gLT4gXFwoICRyZWFsIFxcKVxcKSAweDAi ICJwcmludCByZWFscCwgbm90IGFzc29jaWF0ZWQiCi0gZ2RiX3Rlc3QgInByaW50ICpyZWFscCIg IkNhbm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJlc3MgMHgwIiAicHJpbnQgKnJlYWxwLCBub3Qg YXNzb2NpYXRlZCIKLSBnZGJfdGVzdCAicHJpbnQgXCRteV92YXIgPSBpbnRwIiAiPSBcXChQVFIg VE8gLT4gXFwoICRpbnQgXFwpXFwpIDB4MCIKLStzZXQgdGVzdCAicHJpbnQgY3ljbGljcDEsIG5v dCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBjeWNsaWNwMSIgJHRlc3Qg ewotKyAgLXJlICI9IFxcKCBpID0gLT9cXGQrLCBwID0gMHgwIFxcKVxyXG4kZ2RiX3Byb21wdCAk IiB7Ci0rICAgIHBhc3MgJHRlc3QKLSsgIH0KLSsgIC1yZSAiPSBcXCggaSA9IC0/XFxkKywgcCA9 IDxub3QgYXNzb2NpYXRlZD4gXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgcGFzcyAkdGVz dAotKyAgfQotK30KLStzZXQgdGVzdCAicHJpbnQgY3ljbGljcDElcCwgbm90IGFzc29jaWF0ZWQi Ci0rZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IGN5Y2xpY3AxJXAiICR0ZXN0IHsKLSsgIC1yZSAi PSBcXChQVFIgVE8gLT4gXFwoIFR5cGUgdHlwZXdpdGhwb2ludGVyIFxcKVxcKSAweDBcclxuJGdk Yl9wcm9tcHQgJCIgewotKyAgICBwYXNzICR0ZXN0Ci0rICB9Ci0rICAtcmUgIj0gXFwoUFRSIFRP IC0+IFxcKCBUeXBlIHR5cGV3aXRocG9pbnRlciBcXClcXCkgPG5vdCBhc3NvY2lhdGVkPlxyXG4k Z2RiX3Byb21wdCAkIiB7Ci0rICAgIHBhc3MgJHRlc3QKLSsgIH0KLSt9Ci0gCi0gCi0gZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkJlZm9yZSB2YWx1ZSBhc3NpZ25tZW50Il0K LUBAIC0xMTgsNiArMTM2LDggQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50ICooYXJyYXlPZlB0 cigzKSVwKSIgJHRlc3RfbmFtZSB7Ci0gICAgIHBhc3MgJHRlc3RfbmFtZQotICAgfQotIH0KLStn ZGJfdGVzdCAicHJpbnQgY3ljbGljcDEiICI9IFxcKCBpID0gMSwgcCA9ICRoZXhcKCA8Lio+XCk/ IFxcKSIKLStnZGJfdGVzdCAicHJpbnQgY3ljbGljcDElcCIgIj0gXFwoUFRSIFRPIC0+IFxcKCBU eXBlIHR5cGV3aXRocG9pbnRlciBcXClcXCkgJGhleFwoIDwuKj5cKT8iCi0gZ2RiX3Rlc3QgInBy aW50ICooKGludGVnZXIqKSAmaW50YSArIDIpIiAiPSAzIiAicHJpbnQgdGVtcG9yYXJ5IHBvaW50 ZXIsIGFycmF5IgotIGdkYl90ZXN0ICJwcmludCAqKChpbnRlZ2VyKikgJmludHZsYSArIDMpIiAi PSA0IiAicHJpbnQgdGVtcG9yYXJ5IHBvaW50ZXIsIGFsbG9jYXRlZCB2bGEiCi0gZ2RiX3Rlc3Qg InByaW50IFwkcGMiICI9IFxcKFBUUiBUTyAtPiBcXCggdm9pZCBcXChcXClcXChcXClcXClcXCkg JGhleCA8cG9pbnRlcnNcXCtcXGQrPiIgIlByaW50IHByb2dyYW0gY291bnRlciIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmY5MCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwCi1pbmRleCAwMDAxOTNjLi42MjQwYzg3IDEwMDY0 NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5mOTAKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwCi1AQCAtMjAsNiArMjAsMTEgQEAg cHJvZ3JhbSBwb2ludGVycwotICAgICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBpdmxhMiAoOiwg OikKLSAgIGVuZCB0eXBlIHR3bwotIAotKyAgdHlwZSA6OiB0eXBlV2l0aFBvaW50ZXIKLSsgICAg aW50ZWdlciBpCi0rICAgIHR5cGUodHlwZVdpdGhQb2ludGVyKSwgcG9pbnRlcjo6IHAKLSsgIGVu ZCB0eXBlIHR5cGVXaXRoUG9pbnRlcgotKwotICAgdHlwZSA6OiB0d29QdHIKLSAgICAgdHlwZSAo dHdvKSwgcG9pbnRlciA6OiBwCi0gICBlbmQgdHlwZSB0d29QdHIKLUBAIC0zNCw2ICszOSw3IEBA IHByb2dyYW0gcG9pbnRlcnMKLSAgIHJlYWwsIHRhcmdldCAgICA6OiByZWFsdgotICAgdHlwZSh0 d28pLCB0YXJnZXQgIDo6IHR3b3YKLSAgIHR5cGUodHdvUHRyKSA6OiBhcnJheU9mUHRyICgzKQot KyAgdHlwZSh0eXBlV2l0aFBvaW50ZXIpLCB0YXJnZXQ6OiBjeWNsaWNwMSxjeWNsaWNwMgotIAot ICAgbG9naWNhbCwgcG9pbnRlciA6OiBsb2dwCi0gICBjb21wbGV4LCBwb2ludGVyIDo6IGNvbXAK LUBAIC01Nyw2ICs2Myw4IEBAIHByb2dyYW0gcG9pbnRlcnMKLSAgIG51bGxpZnkgKGFycmF5T2ZQ dHIoMSklcCkKLSAgIG51bGxpZnkgKGFycmF5T2ZQdHIoMiklcCkKLSAgIG51bGxpZnkgKGFycmF5 T2ZQdHIoMyklcCkKLSsgIG51bGxpZnkgKGN5Y2xpY3AxJXApCi0rICBudWxsaWZ5IChjeWNsaWNw MiVwKQotIAotICAgbG9ncCA9PiBsb2d2ICAgICEgQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudAot ICAgY29tcCA9PiBjb212Ci1AQCAtNjgsNiArNzYsMTAgQEAgcHJvZ3JhbSBwb2ludGVycwotICAg cmVhbHAgPT4gcmVhbHYKLSAgIHR3b3AgPT4gdHdvdgotICAgYXJyYXlPZlB0cigyKSVwID0+IHR3 b3YKLSsgIGN5Y2xpY3AxJWkgPSAxCi0rICBjeWNsaWNwMSVwID0+IGN5Y2xpY3AyCi0rICBjeWNs aWNwMiVpID0gMgotKyAgY3ljbGljcDIlcCA9PiBjeWNsaWNwMQotIAotICAgbG9ndiA9IGFzc29j aWF0ZWQobG9ncCkgICAgICEgQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQKLSAgIGNvbXYgPSBjbXBs eCgxLDIpCi0tLSAKLTIuNy40Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTdvZjcucGF0 Y2ggYi9nZGItdmxhLWludGVsLTdvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDMxMGNhNjAuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC03b2Y3LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLUZyb20gMWU1YmQ5YWVjOWVlMDJjMmY3NzFlNGRj OTk3NTcwYzgyZDc0YjNiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlcm5oYXJk IEhlY2tlbCA8YmVybmhhcmQuaGVja2VsQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMTIgSnVsIDIw MTYgMDg6MTk6MzQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA3LzddIGZvcnRfZHluX2FycmF5OiBG b3J0cmFuIGR5bmFtaWMgc3RyaW5nIHN1cHBvcnQKLQotVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBz ZW1hbnRpYyBvZiB0aGUgRHdhcmYgc3RyaW5nIGxlbmd0aAotYXR0cmlidXRlIHRvIHJlZmxlY3Qg dGhlIHN0YW5kYXJkIGFzIHdlbGwgYXMgZW5hYmxlcwotY29ycmVjdCBzdHJpbmcgbGVuZ3RoIGNh bGN1bGF0aW9uIG9mIGR5bmFtaWMgc3RyaW5ncy4gQWRkCi10ZXN0cyBmb3IgdmFyb3VzIGR5bmFt aWMgc3RyaW5nIGV2YWx1YXRpb25zLgotCi1PbGQ6Ci0oZ2RiKSBwIG15X2R5bl9zdHJpbmcKLUNh bm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJlc3MgMHg2MDVmYzAKLQotTmV3OgotKGdkYikgcCAq bXlfZHluX3N0cmluZwotJDEgPSAnZm9vJwotCi1nZGIvQ2hhbmdsb2c6Ci0JKiBkd2FyZjJyZWFk LmMgKHJlYWRfdGFnX3N0cmluZ190eXBlKTogY2hhbmdlZAotCXNlbWFudGljIG9mIERXX0FUX3N0 cmluZ19sZW5ndGggdG8gYmUgYWJsZSB0bwotCWhhbmRsZSBEd2FyZiBibG9ja3MgYXMgd2VsbC4g U3VwcG9ydCBmb3IKLQlEV19BVF9ieXRlX2xlbmd0aCBhZGRlZCB0byBnZXQgY29ycmVjdCBsZW5n dGgKLQlpZiBzcGVjaWZpZWQgaW4gY29tYmluYXRpb24gd2l0aAotCURXX0FUX3N0cmluZ19sZW5n dGguCi0JKGF0dHJfdG9fZHluYW1pY19wcm9wKTogYWRkZWQKLQlmdW5jdGlvbmFsaXR5IHRvIGFk ZCBEd2FyZiBvcGVyYXRvcnMgdG8gYmF0b24KLQlkYXRhIGF0dHJpYnV0ZS4gQWRkZWQgcG9zdCB2 YWx1ZXMgdG8gYmF0b24KLQlhcyByZXF1aXJlZCBieSB0aGUgc3RyaW5nIGV2YWx1YXRpb24gY2Fz ZS4KLQkocmVhZF9zdWJyYW5nZV90eXBlKTogQWRhcHQgY2FsbGVyLgotCShzZXRfZGllX3R5cGUp OiBBZGFwdCBjYWxsZXIuCi0JKGFkZF9wb3N0X3ZhbHVlc190b19iYXRvbik6IE5ldyBmdW5jdGlv bi4KLSAgICAJKiBnZGJ0eXBlcy5jIChyZXNvbHZlX2R5bmFtaWNfdHlwZSk6IEFkZAotICAgIAlj b25kaXRpb25zIHRvIHN1cHBvcnQgc3RyaW5nIHR5cGVzLgotICAgIAkocmVzb2x2ZV9keW5hbWlj X2FycmF5KTogQWRkIGNvbmRpdGlvbnMgZm9yIGR5bmFtaWMKLSAgICAJc3RyaW5ncyBhbmQgY3Jl YXRlIGEgbmV3IHN0cmluZyB0eXBlLgotICAgIAkoaXNfZHluYW1pY190eXBlKTogRm9sbG93IHBv aW50ZXIgaWYgYSBzdHJpbmcgdHlwZQotICAgIAl3YXMgZGV0ZWN0ZWQsIGFzIEZvcnRyYW4gc3Ry aW5ncyBhcmUgcmVwcmVzZW50ZWQKLSAgICAJYXMgcG9pbnRlcnMgdG8gc3RyaW5ncyBpbnRlcm5h bGx5LgotCi1nZGIvdGVzdHN1aXRlL0NoYW5nZWxvZzoKLQkqIHZsYS1zdHJpbmdzLmY5MDogTmV3 IGZpbGUuCi0JKiB2bGEtc3RyaW5ncy5leHA6IE5ldyBmaWxlLgotCi1DaGFuZ2UtSWQ6IEk3ZDdm NDdjN2E0OTAwYTdmZGI1MTEwMjAzMjQ1NWI1M2Q2MGU2MGQ3Ci0tLS0KLSBnZGIvZHdhcmYycmVh ZC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE1OCArKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0KLSBnZGIvZ2RidHlwZXMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx NSArKy0KLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmV4cCB8IDEwMyAr KysrKysrKysrKysrKysrKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5n cy5mOTAgfCAgMzkgKysrKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDI4NSBpbnNlcnRpb25zKCsp LCAzMCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtc3RyaW5ncy5leHAKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5mOTAKLQotSW5kZXg6IGdkYi03LjExLjkwLjIwMTYw ODA3L2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xMS45MC4yMDE2MDgw Ny5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxNi0wOC0yNSAxNjowODoxNy4zOTc3MTQ5MzYgKzAy MDAKLSsrKyBnZGItNy4xMS45MC4yMDE2MDgwNy9nZGIvZHdhcmYycmVhZC5jCTIwMTYtMDgtMjUg MTY6MDk6NTYuNzAzNTgwNTk3ICswMjAwCi1AQCAtMTc2NCw3ICsxNzY0LDggQEAKLSAKLSBzdGF0 aWMgaW50IGF0dHJfdG9fZHluYW1pY19wcm9wIChjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRy LAotIAkJCQkgc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotLQkJ CQkgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCk7Ci0rCQkJCSBzdHJ1Y3QgZHluYW1pY19wcm9w ICpwcm9wLCBjb25zdCBnZGJfYnl0ZSAqYWRkaXRpb25hbF9kYXRhLAotKwkJCQkgaW50IGFkZGl0 aW9uYWxfZGF0YV9zaXplKTsKLSAKLSAvKiBtZW1vcnkgYWxsb2NhdGlvbiBpbnRlcmZhY2UgKi8K LSAKLUBAIC0xMTQ0Niw3ICsxMTQ0Nyw3IEBACi0gICAgIHsKLSAgICAgICBuZXdvYmotPnN0YXRp Y19saW5rCi0gCT0gWE9CTkVXICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgZHlu YW1pY19wcm9wKTsKLS0gICAgICBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwg bmV3b2JqLT5zdGF0aWNfbGluayk7Ci0rICAgICAgYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIs IGRpZSwgY3UsIG5ld29iai0+c3RhdGljX2xpbmssIE5VTEwsIDApOwotICAgICB9Ci0gCi0gICBj dS0+bGlzdF9pbl9zY29wZSA9ICZsb2NhbF9zeW1ib2xzOwotQEAgLTE0NTEyLDI5ICsxNDUxMyw5 NCBAQAotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpm aWxlKTsKLSAgIHN0cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpj aGFyX3R5cGU7Ci0gICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotLSAgdW5zaWduZWQgaW50IGxl bmd0aDsKLSsgIHVuc2lnbmVkIGludCBsZW5ndGggPSBVSU5UX01BWDsKLSAKLSsgIGluZGV4X3R5 cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2ludDsKLSsgIHJhbmdlX3R5cGUg PSBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7 Ci0rCi0rICAvKiBJZiBEV19BVF9zdHJpbmdfbGVuZ3RoIGlzIGRlZmluZWQsIHRoZSBsZW5ndGgg aXMgc3RvcmVkIGluIG1lbW9yeS4gICovCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdf QVRfc3RyaW5nX2xlbmd0aCwgY3UpOwotICAgaWYgKGF0dHIpCi0gICAgIHsKLS0gICAgICBsZW5n dGggPSBEV19VTlNORCAoYXR0cik7Ci0rICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0 cikpCi0rCXsKLSsJICBzdHJ1Y3QgYXR0cmlidXRlICpieXRlX3NpemUsICpiaXRfc2l6ZTsKLSsJ ICBzdHJ1Y3QgZHluYW1pY19wcm9wIGhpZ2g7Ci0rCi0rCSAgYnl0ZV9zaXplID0gZHdhcmYyX2F0 dHIgKGRpZSwgRFdfQVRfYnl0ZV9zaXplLCBjdSk7Ci0rCSAgYml0X3NpemUgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9iaXRfc2l6ZSwgY3UpOwotKwotKwkgIC8qIERXX0FUX2J5dGVfc2l6ZSBz aG91bGQgbmV2ZXIgb2NjdXIgaW4gY29tYmluYXRpb24gd2l0aAotKwkgICAgIERXX0FUX2JpdF9z aXplLiAgKi8KLSsJICBpZiAoYnl0ZV9zaXplICE9IE5VTEwgJiYgYml0X3NpemUgIT0gTlVMTCkK LSsJICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCSAgICAgICBfKCJEV19B VF9ieXRlX3NpemUgQU5EICIKLSsJCQkgIkRXX0FUX2JpdF9zaXplIGZvdW5kIHRvZ2V0aGVyIGF0 IHRoZSBzYW1lIHRpbWUuIikpOwotKwotKwkgIC8qIElmIERXX0FUX3N0cmluZ19sZW5ndGggQU5E IERXX0FUX2J5dGVfc2l6ZSBleGlzdCB0b2dldGhlciwKLSsJICAgICBEV19BVF9ieXRlX3NpemUg ZGVzY3JpYmVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBzaG91bGQgYmUgcmVhZAotKwkgICAg IGZyb20gdGhlIGxlbmd0aCBtZW1vcnkgbG9jYXRpb24uICAqLwotKwkgIGlmIChieXRlX3NpemUg IT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgLyogQnVpbGQgbmV3IGR3YXJmMl9sb2NleHByX2Jh dG9uIHN0cnVjdHVyZSB3aXRoIGFkZGl0aW9ucyB0byB0aGUKLSsJCSBkYXRhIGF0dHJpYnV0ZSwg dG8gcmVmbGVjdCBEV0FSRiBzcGVjaWFsaXRpZXMgdG8gZ2V0IGFkZHJlc3MKLSsJCSBzaXplcy4g ICovCi0rCSAgICAgIGNvbnN0IGdkYl9ieXRlIGFwcGVuZF9vcHNbXSA9Ci0rCQl7Ci0rCQkvKiBE V19PUF9kZXJlZl9zaXplOiBzaXplIG9mIGFuIGFkZHJlc3Mgb24gdGhlIHRhcmdldCBtYWNoaW5l Ci0rCQkgICAoYnl0ZXMpLCB3aGVyZSB0aGUgc2l6ZSB3aWxsIGJlIHNwZWNpZmllZCBieSB0aGUg bmV4dAotKwkJICAgb3BlcmFuZC4gICovCi0rCQlEV19PUF9kZXJlZl9zaXplLAotKwkJLyogT3Bl cmFuZCBmb3IgRFdfT1BfZGVyZWZfc2l6ZS4gICovCi0rCQlEV19VTlNORChieXRlX3NpemUpIH07 Ci0rCi0rCSAgICAgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZo aWdoLCBhcHBlbmRfb3BzLAotKwkJCQkJIEFSUkFZX1NJWkUoYXBwZW5kX29wcykpKQotKwkJY29t cGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJCSAgIF8oIkNvdWxkIG5vdCBwYXJzZSBE V19BVF9ieXRlX3NpemUiKSk7Ci0rCSAgICB9Ci0rCSAgZWxzZSBpZiAoYml0X3NpemUgIT0gTlVM TCkKLSsJICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCSAgICAgICBfKCJE V19BVF9zdHJpbmdfbGVuZ3RoIEFORCAiCi0rCQkJICJEV19BVF9iaXRfc2l6ZSBmb3VuZCBidXQg bm90IHN1cHBvcnRlZCB5ZXQuIikpOwotKwkgIC8qIElmIERXX0FUX3N0cmluZ19sZW5ndGggV0lU SE9VVCBEV19BVF9ieXRlX3NpemUgZXhpc3QsIHRoZSBkZWZhdWx0Ci0rCSAgICAgaXMgdGhlIGFk ZHJlc3Mgc2l6ZSBvZiB0aGUgdGFyZ2V0IG1hY2hpbmUuICAqLwotKwkgIGVsc2UKLSsJICAgIHsK LSsJICAgICAgY29uc3QgZ2RiX2J5dGUgYXBwZW5kX29wc1tdID0KLSsJCXsgRFdfT1BfZGVyZWYg fTsKLSsKLSsJICAgICAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwg JmhpZ2gsIGFwcGVuZF9vcHMsCi0rCQkJCQkgQVJSQVlfU0laRShhcHBlbmRfb3BzKSkpCi0rCQlj b21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkJICAgXygiQ291bGQgbm90IHBhcnNl IERXX0FUX3N0cmluZ19sZW5ndGgiKSk7Ci0rCSAgICB9Ci0rCi0rCSAgVFlQRV9SQU5HRV9EQVRB IChyYW5nZV90eXBlKS0+aGlnaCA9IGhpZ2g7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBU WVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gRFdfVU5TTkQoYXR0cik7Ci0rCSAgVFlQRV9I SUdIX0JPVU5EX0tJTkQgKHJhbmdlX3R5cGUpID0gUFJPUF9DT05TVDsKLSsJfQotICAgICB9Ci0g ICBlbHNlCi0gICAgIHsKLS0gICAgICAvKiBDaGVjayBmb3IgdGhlIERXX0FUX2J5dGVfc2l6ZSBh dHRyaWJ1dGUuICAqLwotKyAgICAgIC8qIENoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9zaXplIGF0 dHJpYnV0ZSwgd2hpY2ggcmVwcmVzZW50cyB0aGUgbGVuZ3RoCi0rCSBpbiB0aGlzIGNhc2UuICAq LwotICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsK LSAgICAgICBpZiAoYXR0cikKLS0gICAgICAgIHsKLS0gICAgICAgICAgbGVuZ3RoID0gRFdfVU5T TkQgKGF0dHIpOwotLSAgICAgICAgfQotKwl7Ci0rCSAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90 eXBlKSA9IERXX1VOU05EKGF0dHIpOwotKwkgIFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5nZV90 eXBlKSA9IFBST1BfQ09OU1Q7Ci0rCX0KLSAgICAgICBlbHNlCi0tICAgICAgICB7Ci0tICAgICAg ICAgIGxlbmd0aCA9IDE7Ci0tICAgICAgICB9Ci0rCXsKLSsJICBUWVBFX0hJR0hfQk9VTkQgKHJh bmdlX3R5cGUpID0gMTsKLSsJICBUWVBFX0hJR0hfQk9VTkRfS0lORCAocmFuZ2VfdHlwZSkgPSBQ Uk9QX0NPTlNUOwotKwl9Ci0gICAgIH0KLSAKLS0gIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUg KG9iamZpbGUpLT5idWlsdGluX2ludDsKLS0gIHJhbmdlX3R5cGUgPSBjcmVhdGVfc3RhdGljX3Jh bmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7Ci0gICBjaGFyX3R5cGUgPSBs YW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJjaCk7Ci0g ICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdlX3R5cGUp OwotIAotQEAgLTE0ODY0LDcgKzE0OTMwLDggQEAKLSAKLSBzdGF0aWMgaW50Ci0gYXR0cl90b19k eW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkaWVfaW5m byAqZGllLAotLQkJICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UsIHN0cnVjdCBkeW5hbWljX3By b3AgKnByb3ApCi0rCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNf cHJvcCAqcHJvcCwKLSsJCSAgICAgIGNvbnN0IGdkYl9ieXRlICphZGRpdGlvbmFsX2RhdGEsIGlu dCBhZGRpdGlvbmFsX2RhdGFfc2l6ZSkKLSB7Ci0gICBzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2Jh dG9uICpiYXRvbjsKLSAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrID0gJmN1LT5vYmpmaWxlLT5v YmpmaWxlX29ic3RhY2s7Ci1AQCAtMTQ4NzQsMTQgKzE0OTQxLDMzIEBACi0gCi0gICBpZiAoYXR0 cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSAgICAgewotLSAgICAgIGJhdG9uID0gWE9CTkVXIChv YnN0YWNrLCBzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uKTsKLSsgICAgICBiYXRvbiA9IFhP Qk5FVyhvYnN0YWNrLCBzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uKTsKLSAgICAgICBiYXRv bi0+cmVmZXJlbmNlZF90eXBlID0gTlVMTDsKLSAgICAgICBiYXRvbi0+bG9jZXhwci5wZXJfY3Ug PSBjdS0+cGVyX2N1OwotLSAgICAgIGJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAoYXR0 ciktPnNpemU7Ci0tICAgICAgYmF0b24tPmxvY2V4cHIuZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ ZGF0YTsKLSsKLSsgICAgICBpZiAoYWRkaXRpb25hbF9kYXRhICE9IE5VTEwgJiYgYWRkaXRpb25h bF9kYXRhX3NpemUgPiAwKQotKwl7Ci0rCSAgZ2RiX2J5dGUgKmRhdGE7Ci0rCi0rCSAgZGF0YSA9 IChnZGJfYnl0ZSAqKSBvYnN0YWNrX2FsbG9jKAotKwkgICAgICAmY3UtPm9iamZpbGUtPm9iamZp bGVfb2JzdGFjaywKLSsJICAgICAgRFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgYWRkaXRpb25hbF9k YXRhX3NpemUpOwotKwkgIG1lbWNweSAoZGF0YSwgRFdfQkxPQ0sgKGF0dHIpLT5kYXRhLCBEV19C TE9DSyAoYXR0ciktPnNpemUpOwotKwkgIG1lbWNweSAoZGF0YSArIERXX0JMT0NLIChhdHRyKS0+ c2l6ZSwgYWRkaXRpb25hbF9kYXRhLAotKwkJICBhZGRpdGlvbmFsX2RhdGFfc2l6ZSk7Ci0rCi0r CSAgYmF0b24tPmxvY2V4cHIuZGF0YSA9IGRhdGE7Ci0rCSAgYmF0b24tPmxvY2V4cHIuc2l6ZSA9 IERXX0JMT0NLIChhdHRyKS0+c2l6ZSArIGFkZGl0aW9uYWxfZGF0YV9zaXplOwotKwl9Ci0rICAg ICAgZWxzZQotKwl7Ci0rCSAgYmF0b24tPmxvY2V4cHIuZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ ZGF0YTsKLSsJICBiYXRvbi0+bG9jZXhwci5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplOwot Kwl9Ci0rCi0gICAgICAgcHJvcC0+ZGF0YS5iYXRvbiA9IGJhdG9uOwotICAgICAgIHByb3AtPmtp bmQgPSBQUk9QX0xPQ0VYUFI7Ci0tICAgICAgZ2RiX2Fzc2VydCAocHJvcC0+ZGF0YS5iYXRvbiAh PSBOVUxMKTsKLSsgICAgICBnZGJfYXNzZXJ0KHByb3AtPmRhdGEuYmF0b24gIT0gTlVMTCk7Ci0g ICAgIH0KLSAgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19yZWYgKGF0dHIpKQotICAgICB7Ci1AQCAt MTQ5MTQsOCArMTUwMDAsMjggQEAKLSAJCWJhdG9uID0gWE9CTkVXIChvYnN0YWNrLCBzdHJ1Y3Qg ZHdhcmYyX3Byb3BlcnR5X2JhdG9uKTsKLSAJCWJhdG9uLT5yZWZlcmVuY2VkX3R5cGUgPSBkaWVf dHlwZSAodGFyZ2V0X2RpZSwgdGFyZ2V0X2N1KTsKLSAJCWJhdG9uLT5sb2NleHByLnBlcl9jdSA9 IGN1LT5wZXJfY3U7Ci0tCQliYXRvbi0+bG9jZXhwci5zaXplID0gRFdfQkxPQ0sgKHRhcmdldF9h dHRyKS0+c2l6ZTsKLS0JCWJhdG9uLT5sb2NleHByLmRhdGEgPSBEV19CTE9DSyAodGFyZ2V0X2F0 dHIpLT5kYXRhOwotKwotKwkJaWYgKGFkZGl0aW9uYWxfZGF0YSAhPSBOVUxMICYmIGFkZGl0aW9u YWxfZGF0YV9zaXplID4gMCkKLSsJCSAgewotKwkJICAgIGdkYl9ieXRlICpkYXRhOwotKwotKwkJ ICAgIGRhdGEgPSAoZ2RiX2J5dGUgKikgb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCi0rCQkJICAgIERXX0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemUgKyBhZGRp dGlvbmFsX2RhdGFfc2l6ZSk7Ci0rCQkgICAgbWVtY3B5IChkYXRhLCBEV19CTE9DSyAodGFyZ2V0 X2F0dHIpLT5kYXRhLAotKwkJCSAgICBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5zaXplKTsKLSsJ CSAgICBtZW1jcHkgKGRhdGEgKyBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5zaXplLAotKwkJCSAg ICBhZGRpdGlvbmFsX2RhdGEsIGFkZGl0aW9uYWxfZGF0YV9zaXplKTsKLSsKLSsJCSAgICBiYXRv bi0+bG9jZXhwci5kYXRhID0gZGF0YTsKLSsJCSAgICBiYXRvbi0+bG9jZXhwci5zaXplID0gKERX X0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemUKLSsJCQkJCSAgICsgYWRkaXRpb25hbF9kYXRhX3Np emUpOwotKwkJICB9Ci0rCQllbHNlCi0rCQkgIHsKLSsJCSAgICBiYXRvbi0+bG9jZXhwci5kYXRh ID0gRFdfQkxPQ0sgKHRhcmdldF9hdHRyKS0+ZGF0YTsKLSsJCSAgICBiYXRvbi0+bG9jZXhwci5z aXplID0gRFdfQkxPQ0sgKHRhcmdldF9hdHRyKS0+c2l6ZTsKLSsJCSAgfQotKwotIAkJcHJvcC0+ ZGF0YS5iYXRvbiA9IGJhdG9uOwotIAkJcHJvcC0+a2luZCA9IFBST1BfTE9DRVhQUjsKLSAJCWdk Yl9hc3NlcnQgKHByb3AtPmRhdGEuYmF0b24gIT0gTlVMTCk7Ci1AQCAtMTUwMjcsMjQgKzE1MTMz LDI0IEBACi0gCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUs IGN1KTsKLSAgIGlmIChhdHRyKQotLSAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRy LCBkaWUsIGN1LCAmc3RyaWRlKSkKLSsgICAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0 ciwgZGllLCBjdSwgJnN0cmlkZSwgTlVMTCwgMCkpCi0gICAgICAgICBjb21wbGFpbnQgKCZzeW1m aWxlX2NvbXBsYWludHMsIF8oIk1pc3NpbmcgRFdfQVRfYnl0ZV9zdHJpZGUgIgotICAgICAgICAg ICAgICAgICAgICItIERJRSBhdCAweCV4IFtpbiBtb2R1bGUgJXNdIiksCi0gICAgICAgICAgICAg IGRpZS0+b2Zmc2V0LnNlY3Rfb2ZmLCBvYmpmaWxlX25hbWUgKGN1LT5vYmpmaWxlKSk7Ci0gCi0g ICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsKLSAgIGlm IChhdHRyKQotLSAgICBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmxvdyk7 Ci0rICAgIGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmbG93LCBOVUxMLCAw KTsKLSAgIGVsc2UgaWYgKCFsb3dfZGVmYXVsdF9pc192YWxpZCkKLSAgICAgY29tcGxhaW50ICgm c3ltZmlsZV9jb21wbGFpbnRzLCBfKCJNaXNzaW5nIERXX0FUX2xvd2VyX2JvdW5kICIKLSAJCQkJ ICAgICAgIi0gRElFIGF0IDB4JXggW2luIG1vZHVsZSAlc10iKSwKLSAJICAgICAgIGRpZS0+b2Zm c2V0LnNlY3Rfb2ZmLCBvYmpmaWxlX25hbWUgKGN1LT5vYmpmaWxlKSk7Ci0gCi0gICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKLS0gIGlmICghYXR0cl90 b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZoaWdoKSkKLSsgIGlmICghYXR0cl90b19k eW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZoaWdoLCBOVUxMLCAwKSkKLSAgICAgewotICAg ICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3VudCwgY3UpOwotLSAgICAgIGlm IChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gpKQotKyAgICAgIGlm IChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gsIE5VTEwsIDApKQot IAl7Ci0gCSAgLyogSWYgYm91bmRzIGFyZSBjb25zdGFudCBkbyB0aGUgZmluYWwgY2FsY3VsYXRp b24gaGVyZS4gICovCi0gCSAgaWYgKGxvdy5raW5kID09IFBST1BfQ09OU1QgJiYgaGlnaC5raW5k ID09IFBST1BfQ09OU1QpCi1AQCAtMjI0MTYsNyArMjI1MjIsNyBAQAotICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOwotICAgaWYgKGF0dHJfZm9ybV9pc19i bG9jayAoYXR0cikpCi0gICAgIHsKLS0gICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0 dHIsIGRpZSwgY3UsICZwcm9wKSkKLSsgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0 dHIsIGRpZSwgY3UsICZwcm9wLCBOVUxMLCAwKSkKLSAgICAgICAgIGFkZF9keW5fcHJvcCAoRFlO X1BST1BfQUxMT0NBVEVELCBwcm9wLCB0eXBlLCBvYmpmaWxlKTsKLSAgICAgfQotICAgZWxzZSBp ZiAoYXR0ciAhPSBOVUxMKQotQEAgLTIyNDMxLDcgKzIyNTM3LDcgQEAKLSAgIGF0dHIgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7Ci0gICBpZiAoYXR0cl9mb3JtX2lz X2Jsb2NrIChhdHRyKSkKLSAgICAgewotLSAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAo YXR0ciwgZGllLCBjdSwgJnByb3ApKQotKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAo YXR0ciwgZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQotICAgICAgICAgYWRkX2R5bl9wcm9wIChE WU5fUFJPUF9BU1NPQ0lBVEVELCBwcm9wLCB0eXBlLCBvYmpmaWxlKTsKLSAgICAgfQotICAgZWxz ZSBpZiAoYXR0ciAhPSBOVUxMKQotQEAgLTIyNDQ0LDcgKzIyNTUwLDcgQEAKLSAKLSAgIC8qIFJl YWQgRFdfQVRfZGF0YV9sb2NhdGlvbiBhbmQgc2V0IGluIHR5cGUuICAqLwotICAgYXR0ciA9IGR3 YXJmMl9hdHRyIChkaWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGN1KTsKLS0gIGlmIChhdHRyX3Rv X2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3ApKQotKyAgaWYgKGF0dHJfdG9fZHlu YW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmcHJvcCwgTlVMTCwgMCkpCi0gICAgIGFkZF9keW5f cHJvcCAoRFlOX1BST1BfREFUQV9MT0NBVElPTiwgcHJvcCwgdHlwZSwgb2JqZmlsZSk7Ci0gCi0g ICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5kaWVfdHlwZV9oYXNoID09IE5VTEwpCi1JbmRleDog Z2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL2dkYnR5cGVzLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xMS45MC4yMDE2MDgwNy5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTYtMDgtMjUgMTY6MDg6MTcu Mzk3NzE0OTM2ICswMjAwCi0rKysgZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL2dkYnR5cGVzLmMJ MjAxNi0wOC0yNSAxNjowOToxMS42MjMxODc2MjYgKzAyMDAKLUBAIC0xODUxLDYgKzE4NTEsNyBA QAotICAgICAgIH0KLSAKLSAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0rICAgIGNhc2UgVFlQ RV9DT0RFX1NUUklORzoKLSAgICAgICB7Ci0gCWdkYl9hc3NlcnQgKFRZUEVfTkZJRUxEUyAodHlw ZSkgPT0gMSk7Ci0gCi1AQCAtMTk2NCw3ICsxOTY1LDggQEAKLSAgIHN0cnVjdCB0eXBlICphcnlf ZGltOwotICAgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKLSAKLS0gIGdkYl9hc3NlcnQgKFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZKTsKLSsgIGdkYl9hc3NlcnQgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0rCSAgICAgIHx8IFRZUEVfQ09ERSAodHlw ZSkgPT0gVFlQRV9DT0RFX1NUUklORyk7Ci0gCi0gICB0eXBlID0gY29weV90eXBlICh0eXBlKTsK LSAKLUBAIC0xOTg5LDEzICsxOTkxLDE3IEBACi0gCi0gICBhcnlfZGltID0gY2hlY2tfdHlwZWRl ZiAoVFlQRV9UQVJHRVRfVFlQRSAoZWx0X3R5cGUpKTsKLSAKLS0gIGlmIChhcnlfZGltICE9IE5V TEwgJiYgVFlQRV9DT0RFIChhcnlfZGltKSA9PSBUWVBFX0NPREVfQVJSQVkpCi0rICBpZiAoYXJ5 X2RpbSAhPSBOVUxMICYmIChUWVBFX0NPREUgKGFyeV9kaW0pID09IFRZUEVfQ09ERV9BUlJBWQot KyAgICAgIHx8IFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX1NUUklORykpCi0gICAg IGVsdF90eXBlID0gcmVzb2x2ZV9keW5hbWljX2FycmF5IChhcnlfZGltLCBhZGRyX3N0YWNrKTsK LSAgIGVsc2UKLSAgICAgZWx0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKLSAKLS0g IHJldHVybiBjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZSAodHlwZSwgZWx0X3R5cGUsIHJh bmdlX3R5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVf RklFTERfQklUU0laRSAodHlwZSwgMCkpOwotKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQ RV9DT0RFX1NUUklORykKLSsgICAgcmV0dXJuIGNyZWF0ZV9zdHJpbmdfdHlwZSAodHlwZSwgZWx0 X3R5cGUsIHJhbmdlX3R5cGUpOwotKyAgZWxzZQotKyAgICByZXR1cm4gY3JlYXRlX2FycmF5X3R5 cGVfd2l0aF9zdHJpZGUgKHR5cGUsIGVsdF90eXBlLCByYW5nZV90eXBlLAotKwkJCQkJICBUWVBF X0ZJRUxEX0JJVFNJWkUgKHR5cGUsIDApKTsKLSB9Ci0gCi0gLyogUmVzb2x2ZSBkeW5hbWljIGJv dW5kcyBvZiBtZW1iZXJzIG9mIHRoZSB1bmlvbiBUWVBFIHRvIHN0YXRpYwotQEAgLTIyMDAsNiAr MjIwNiw3IEBACi0gIAkgIGJyZWFrOwotIAotIAljYXNlIFRZUEVfQ09ERV9BUlJBWToKLSsJY2Fz ZSBUWVBFX0NPREVfU1RSSU5HOgotIAkgIHJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNf YXJyYXkgKHR5cGUsIGFkZHJfc3RhY2spOwotIAkgIGJyZWFrOwotIAotSW5kZXg6IGdkYi03LjEx LjkwLjIwMTYwODA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtc3RyaW5ncy5leHAJMjAxNi0wOC0yNSAxNjowOToxMS42MjQxODc2MzUgKzAyMDAKLUBAIC0w LDAgKzEsMTAzIEBACi0rIyBDb3B5cmlnaHQgMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVz dGZpbGUgIi5mOTAiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5l eHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgY2hlY2sgdGhhdCBhbGwgZm9ydHJhbiBzdGFuZGFy ZCBkYXRhdHlwZXMgd2lsbCBiZQotKyMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiB1c2luZyBhcyBW TEEncwotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1 biB0byBtYWluIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWFsbG9jYXRlZC0xIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidmFyX2NoYXItYWxsb2NhdGVkLTEiCi0rc2V0IHRlc3QgIndoYXRpcyB2YXJf Y2hhciBmaXJzdCB0aW1lIgotK2dkYl90ZXN0X211bHRpcGxlICJ3aGF0aXMgdmFyX2NoYXIiICR0 ZXN0IHsKLSsgICAgLXJlICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoxMCBcXClc clxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAi dHlwZSA9IGNoYXJhY3RlclxcKjEwXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRl c3QKLSsgICAgfQotK30KLStzZXQgdGVzdCAicHR5cGUgdmFyX2NoYXIgZmlyc3QgdGltZSIKLStn ZGJfdGVzdF9tdWx0aXBsZSAicHR5cGUgdmFyX2NoYXIiICR0ZXN0IHsKLSsgICAgLXJlICJ0eXBl ID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoxMCBcXClcclxuJGdkYl9wcm9tcHQgJCIgewot KwkgICAgcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAidHlwZSA9IGNoYXJhY3RlclxcKjEw XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLSsK LStnZGJfdGVzdCAibmV4dCIgIlxcZCsuKnZhcl9jaGFyID0gJ2ZvbycuKiIgXAotKyAgIm5leHQg dG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgdmFyX2NoYXIiCi0rZ2RiX3Rlc3QgInByaW50IGwiICIg PSBcXC5UUlVFXFwuIiAicHJpbnQgYWxsb2NhdGlvbiBzdGF0dXMgZmlyc3QgdGltZSIKLSsKLSsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyX2NoYXItZmlsbGVkLTEi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJfY2hhci1maWxsZWQtMSIKLStzZXQg dGVzdCAicHJpbnQgdmFyX2NoYXIsIHZhcl9jaGFyLWZpbGxlZC0xIgotK2dkYl90ZXN0X211bHRp cGxlICJwcmludCB2YXJfY2hhciIgJHRlc3QgewotKyAgICAtcmUgIj0gXFwoUFRSIFRPIC0+IFxc KCBjaGFyYWN0ZXJcXCozIFxcKVxcKSAkaGV4XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAg IGdkYl90ZXN0ICJwcmludCAqdmFyX2NoYXIiICI9ICdmb28nIiAicHJpbnQgKnZhcl9jaGFyLCB2 YXJfY2hhci1maWxsZWQtMSIKLSsJICAgIHBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIj0g J2ZvbydcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAkdGVzdAotKyAgICB9Ci0rfQot K3NldCB0ZXN0ICJwdHlwZSB2YXJfY2hhciwgdmFyX2NoYXItZmlsbGVkLTEiCi0rZ2RiX3Rlc3Rf bXVsdGlwbGUgInB0eXBlIHZhcl9jaGFyIiAkdGVzdCB7Ci0rICAgIC1yZSAidHlwZSA9IFBUUiBU TyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXClcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFz cyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAidHlwZSA9IGNoYXJhY3RlclxcKjNcclxuJGdkYl9w cm9tcHQgJCIgewotKwkgICAgcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK2dkYl90ZXN0ICJwcmlu dCB2YXJfY2hhcigxKSIgIiA9IDEwMiAnZiciICJwcmludCB2YXJfY2hhcigxKSIKLStnZGJfdGVz dCAicHJpbnQgdmFyX2NoYXIoMykiICIgPSAxMTEgJ28nIiAicHJpbnQgdmFyX2NoYXIoMykiCi0r Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWZpbGxl ZC0yIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItZmlsbGVkLTIiCi0r c2V0IHRlc3QgInByaW50IHZhcl9jaGFyLCB2YXJfY2hhci1maWxsZWQtMiIKLStnZGJfdGVzdF9t dWx0aXBsZSAicHJpbnQgdmFyX2NoYXIiICR0ZXN0IHsKLSsgICAgLXJlICI9IFxcKFBUUiBUTyAt PiBcXCggY2hhcmFjdGVyXFwqNiBcXClcXCkgJGhleFxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAg ICAgICBnZGJfdGVzdCAicHJpbnQgKnZhcl9jaGFyIiAiPSAnZm9vYmFyJyIgInByaW50ICp2YXJf Y2hhciwgdmFyX2NoYXItZmlsbGVkLTIiCi0rCSAgICBwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAg LXJlICI9ICdmb29iYXInXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsg ICAgfQotK30KLStzZXQgdGVzdCAicHR5cGUgdmFyX2NoYXIsIHZhcl9jaGFyLWZpbGxlZC0yIgot K2dkYl90ZXN0X211bHRpcGxlICJwdHlwZSB2YXJfY2hhciIgJHRlc3QgewotKyAgICAtcmUgInR5 cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsK LSsJICAgIHBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgInR5cGUgPSBjaGFyYWN0ZXJcXCo2 XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsgICAgfQotK30KLUluZGV4 OiBnZGItNy4xMS45MC4yMDE2MDgwNy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJp bmdzLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjExLjkwLjIwMTYwODA3L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXN0cmluZ3MuZjkwCTIwMTYtMDgtMjUgMTY6MDk6MTEuNjI0MTg3NjM1ICsw MjAwCi1AQCAtMCwwICsxLDM5IEBACi0rISBDb3B5cmlnaHQgMjAxNiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3By b2dyYW0gdmxhX3N0cmluZ3MKLSsgIGNoYXJhY3RlcihsZW49OiksIHRhcmdldCwgYWxsb2NhdGFi bGUgICA6OiB2YXJfY2hhcgotKyAgY2hhcmFjdGVyKGxlbj06KSwgcG9pbnRlciAgICAgICAgICAg ICAgIDo6IHZhcl9jaGFyX3AKLSsgIGxvZ2ljYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6OiBsCi0rCi0rICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTEwKSA6OiB2YXJfY2hhcikK LSsgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWFs bG9jYXRlZC0xCi0rICB2YXJfY2hhciA9ICdmb28nCi0rICBkZWFsbG9jYXRlKHZhcl9jaGFyKSAg ICAgICAgICAgICAgICAgICAgISB2YXJfY2hhci1maWxsZWQtMQotKyAgbCA9IGFsbG9jYXRlZCh2 YXJfY2hhcikgICAgICAgICAgICAgICAgICEgdmFyX2NoYXItZGVhbGxvY2F0ZWQKLSsgIGFsbG9j YXRlKGNoYXJhY3RlcihsZW49NDIpIDo6IHZhcl9jaGFyKQotKyAgbCA9IGFsbG9jYXRlZCh2YXJf Y2hhcikKLSsgIHZhcl9jaGFyID0gJ2Zvb2JhcicKLSsgIHZhcl9jaGFyID0gJycgICAgICAgICAg ICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWZpbGxlZC0yCi0rICB2YXJfY2hhciA9ICdiYXIn ICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJfY2hhci1lbXB0eQotKyAgZGVhbGxvY2F0ZSh2 YXJfY2hhcikKLSsgIGFsbG9jYXRlKGNoYXJhY3RlcihsZW49MjEpIDo6IHZhcl9jaGFyKQotKyAg bCA9IGFsbG9jYXRlZCh2YXJfY2hhcikgICAgICAgICAgICAgICAgICEgdmFyX2NoYXItYWxsb2Nh dGVkLTMKLSsgIHZhcl9jaGFyID0gJ2pvaG5kb2UnCi0rICB2YXJfY2hhcl9wID0+IHZhcl9jaGFy Ci0rICBsID0gYXNzb2NpYXRlZCh2YXJfY2hhcl9wKSAgICAgICAgICAgICAgISB2YXJfY2hhcl9w LWFzc29jaWF0ZWQKLSsgIHZhcl9jaGFyX3AgPT4gbnVsbCgpCi0rICBsID0gYXNzb2NpYXRlZCh2 YXJfY2hhcl9wKSAgICAgICAgICAgICAgISB2YXJfY2hhcl9wLW5vdC1hc3NvY2lhdGVkCi0rZW5k IHByb2dyYW0gdmxhX3N0cmluZ3MKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLWJyYW5jaC1m aXgtc3RyaWRlLTFvZjIucGF0Y2ggYi9nZGItdmxhLWludGVsLWJyYW5jaC1maXgtc3RyaWRlLTFv ZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YzY2NzAuLjAwMDAwMDAK LS0tIGEvZ2RiLXZsYS1pbnRlbC1icmFuY2gtZml4LXN0cmlkZS0xb2YyLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNjQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTYtMDgvbXNnMDAyNzguaHRtbAotU3ViamVjdDogUmU6IFtWNCAwMC8yMV0gRm9ydHJh biBkeW5hbWljIGFycmF5IHN1cHBvcnQKLQotCi0tLVgxYk9KM0s3REo1WWtCclQKLUNvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlvbjog aW5saW5lCi0KLU9uIFRodSwgMjUgQXVnIDIwMTYgMTk6MjI6MTcgKzAyMDAsIEphbiBLcmF0b2No dmlsIHdyb3RlOgotPiBJIHNlZSB0aGUgc291cmNlIGhhbmRsZXMgbmVnYXRpdmUgc3RpZGUgc3Bl Y2lhbGx5LiAgUGFydGljdWxhcmx5IHRoZSBjb21tZW50Ci0+IGhlcmUgZG9lcyBub3QgZXhwbGFp biB0aGUgY29kZSBpdCBjb21tZW50czoKLQotV2l0aCB0aGUgYXR0YWNoZWQgcGF0Y2ggZGlzYWJs aW5nIHRoZXNlIGNhc2VzIHN0aWxsIHRoZSBzdXBwbGllZAotZ2RiLmZvcnRyYW4vc3RhdGljLWFy cmF5cy5leHAgYW5kIGdkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwIFBBU1MgKG9uIEZlZG9yYSAy NAoteDg2XzY0KS4KLQotCi1KYW4KLQotLS1YMWJPSjNLN0RKNVlrQnJUCi1Db250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGlu ZTsgZmlsZW5hbWU9MQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlw ZXMuYwotaW5kZXggODg4MDFhYy4uNjk1ODI1YSAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0eXBlcy5j Ci0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTIxOTcsMTIgKzIxOTcsMTQgQEAgcmVzb2x2ZV9k eW5hbWljX3R5cGVfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICp0eXBlLAotICAgICB7Ci0gICAgICAg c3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHJlc29sdmVkX3R5cGUp OwotIAotKyNpZiAwIC8vIEZlZG9yYTogZ2RiLXZsYS1pbnRlbC1icmFuY2gtZml4LXN0cmlkZS5w YXRjaAotICAgICAgIC8qIEFkanVzdCB0aGUgZGF0YSBsb2NhdGlvbiB3aXRoIHRoZSB2YWx1ZSBv ZiBieXRlIHN0cmlkZSBpZiBzZXQsIHdoaWNoCi0gICAgICAgICAgY2FuIGRlc2NyaWJlIHRoZSBz ZXBhcmF0aW9uIGJldHdlZW4gc3VjY2Vzc2l2ZSBlbGVtZW50cyBhbG9uZyB0aGUKLSAgICAgICAg ICBkaW1lbnNpb24uICAqLwotICAgICAgIGlmIChUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBl KSA8IDApCi0gICAgICAgICB2YWx1ZSArPSAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAt IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSkKLSAgICAgICAgICAgICAgICAgICAqIFRZUEVf QllURV9TVFJJREUgKHJhbmdlX3R5cGUpOwotKyNlbmRpZgotIAotICAgICAgIFRZUEVfREFUQV9M T0NBVElPTl9BRERSIChyZXNvbHZlZF90eXBlKSA9IHZhbHVlOwotICAgICAgIFRZUEVfREFUQV9M T0NBVElPTl9LSU5EIChyZXNvbHZlZF90eXBlKSA9IFBST1BfQ09OU1Q7Ci1kaWZmIC0tZ2l0IGEv Z2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYwotaW5kZXggOTA5Mzk2OS4uZWNhNzk5MiAx MDA2NDQKLS0tLSBhL2dkYi92YWxhcml0aC5jCi0rKysgYi9nZGIvdmFsYXJpdGguYwotQEAgLTE5 OSwxMiArMTk5LDE0IEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICph cnJheSwgTE9OR0VTVCBpbmRleCwgaW50IGxvd2VyYm91bmQpCi0gCi0gICBpZiAoZWx0X3N0cmlk ZSA+IDApCi0gICAgIGVsdF9vZmZzICo9IGVsdF9zdHJpZGU7Ci0rI2lmIDAgLy8gRmVkb3JhOiBn ZGItdmxhLWludGVsLWJyYW5jaC1maXgtc3RyaWRlLnBhdGNoCi0gICBlbHNlIGlmIChlbHRfc3Ry aWRlIDwgMCkKLSAgICAgewotICAgICAgIGludCBvZmZzID0gKGVsdF9vZmZzICsgMSkgKiBlbHRf c3RyaWRlOwotIAotICAgICAgIGVsdF9vZmZzID0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpICsg b2ZmczsKLSAgICAgfQotKyNlbmRpZgotICAgZWxzZQotICAgICBlbHRfb2ZmcyAqPSBlbHRfc2l6 ZTsKLSAKLQotLS1YMWJPSjNLN0RKNVlrQnJULS0KLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50 ZWwtYnJhbmNoLWZpeC1zdHJpZGUtMm9mMi5wYXRjaCBiL2dkYi12bGEtaW50ZWwtYnJhbmNoLWZp eC1zdHJpZGUtMm9mMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg0MGQw ZS4uMDAwMDAwMAotLS0gYS9nZGItdmxhLWludGVsLWJyYW5jaC1maXgtc3RyaWRlLTJvZjIucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MjkgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTYtMDgvbXNnMDAyNzQuaHRtbAotU3ViamVjdDogUmU6IFtWNCAw MC8yMV0gRm9ydHJhbiBkeW5hbWljIGFycmF5IHN1cHBvcnQKLQotCi0tLVZiSmtuOVl4QnZudUNI NUoKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1E aXNwb3NpdGlvbjogaW5saW5lCi0KLU9uIFR1ZSwgMjMgQXVnIDIwMTYgMTU6MzQ6MDkgKzAyMDAs IEJlcm5oYXJkIEhlY2tlbCB3cm90ZToKLT4gY3JlYXRlZCBhIGJyYW5jaCB3aXRoIGFsbCBzdHJp ZGUgcGF0Y2hlcy4KLQotdXNlcnMvYmhlY2tlbC9mb3J0cmFuLXN0cmlkZXMKLTJjMzkyZDQxYTNm MmUzOGRlZWI5ZGI1YjdhOTNjYTQ1NjgyYmJlM2IKLQotPiBJIGRvbid0IHNlZSByZWdyZXNzaW9u IG9uIFJINy4xLCBnY2MgNC44LjMtOQotCi1JIHNlZSBhIHJlZ3Jlc3Npb24gZm9yIDMyLWJpdCB0 YXJnZXRzICh4ODZfNjQtbTMyIG9yIG5hdGl2ZSBpNjg2KQotb24gRmVkb3JhIDI0IChnY2MtZ2Zv cnRyYW4tNi4xLjEtMy5mYzI0Lng4Nl82NCkuICBJIGRvIG5vdCBzZWUgdGhlIHJlZ3Jlc3Npb24K LW9uIENlbnRPUy03LjIgKHg4Nl82NC1tMzIpLgotCi1wcmludCBwdmxhXk0KLXZhbHVlIHJlcXVp cmVzIDQyOTQ5NjcyODggYnl0ZXMsIHdoaWNoIGlzIG1vcmUgdGhhbiBtYXgtdmFsdWUtc2l6ZV5N Ci0oZ2RiKSBGQUlMOiBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cDogcHJpbnQgc2luZ2xlLWVs ZW1lbnQKLQotSSBoYXZlIGF0dGFjaGVkIGEgZml4LgotCi1JdCBpcyBiZWNhdXNlOgotICAgIDwx MTU+ICAgRFdfQVRfbG93ZXJfYm91bmQgOiA0IGJ5dGUgYmxvY2s6IDk3IDIzIDEwIDYgICAgICAg IChEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzOyBEV19PUF9wbHVzX3Vjb25zdDogMTY7IERXX09Q X2RlcmVmKQotICAgIDwxMWE+ICAgRFdfQVRfdXBwZXJfYm91bmQgOiA0IGJ5dGUgYmxvY2s6IDk3 IDIzIDE0IDYgICAgICAgIChEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzOyBEV19PUF9wbHVzX3Vj b25zdDogMjA7IERXX09QX2RlcmVmKQotICAgIDwxMWY+ICAgRFdfQVRfYnl0ZV9zdHJpZGUgOiA2 IGJ5dGUgYmxvY2s6IDk3IDIzIGMgNiAzNCAxZSAgIChEV19PUF9wdXNoX29iamVjdF9hZGRyZXNz OyBEV19PUF9wbHVzX3Vjb25zdDogMTI7IERXX09QX2RlcmVmOyBEV19PUF9saXQ0OyBEV19PUF9t dWwpCi0JRFdfQVRfbG93ZXJfYm91bmQgPT0gMQotCURXX0FUX3VwcGVyX2JvdW5kID09IDEKLQlE V19BVF9ieXRlX3N0cmlkZSA9PSAoLTIpICogNCA9PSAtOAotCi1JIGFtIG5vdCBzdXJlIGlmIGdm b3J0cmFuIGlzIHJlYWxseSB3cm9uZyBvciBub3QgYnV0IGEgc3RyaWRlIGRvZXMgbm90IG1ha2UK LXNlbnNlIGZvciBtZSBmb3IgYSBzaW5nbGUgcm93IGFycmF5LgotCi1BdHRhY2hpbmcgYWxzbyBn ZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MCBmcm9tIHlvdXIgYnJhbmNoIGJ1aWx0IHdpdGgKLWdj Yy1nZm9ydHJhbi02LjEuMS0zLmZjMjQueDg2XzY0IG9uIEZlZG9yYSAyNCB4ODZfNjQgaW4gLW0z MiBtb2RlLgotCi1CZXNpZGVzIHRoYXQgSSBzZWUgb24gYWxsIGFyY2hzCi0JLUZBSUw6IGdkYi5w YXNjYWwvYXJyYXlzLmV4cDogUHJpbnQgZHluYW1pYyBhcnJheSBvZiBzdHJpbmcKLQkrRkFJTDog Z2RiLnBhc2NhbC9hcnJheXMuZXhwOiBQcmludCBkeW5hbWljIGFycmF5IG9mIHN0cmluZyAoR0RC IGludGVybmFsIGVycm9yKQotYnV0IHRoYXQgdGVzdGNhc2UgaXMgb25seSBpbiBGZWRvcmEgYW5k IHRoZSBQYXNjYWwgKGZwYykgc3VwcG9ydCBoYXMgYmVlbiBub3QKLXdlbGwgbWFpbnRhaW5lZCBz byBmYXIgc28gSSBhbSBPSyB3aXRoIHRoYXQuCi0KLQotVGhhbmtzLAotSmFuCi0KLS0tVmJKa245 WXhCdm51Q0g1SgotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1D b250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7IGZpbGVuYW1lPTEKLQotZGlmZiAtLWdpdCBhL2dk Yi9nZGJ0eXBlcy5jIGIvZ2RiL2dkYnR5cGVzLmMKLWluZGV4IDg4ODAxYWMuLjFmYmY2OWEgMTAw NjQ0Ci0tLS0gYS9nZGIvZ2RidHlwZXMuYwotKysrIGIvZ2RiL2dkYnR5cGVzLmMKLUBAIC0xMTAz LDEwICsxMTAzLDEyIEBAIGNyZWF0ZV9hcnJheV90eXBlX3dpdGhfc3RyaWRlIChzdHJ1Y3QgdHlw ZSAqcmVzdWx0X3R5cGUsCi0gICAgICAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCi0gCVRZ UEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwotICAgICAgIGVsc2UgaWYgKGJ5dGVfc3RyaWRl ID4gMCkKLS0JVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IGJ5dGVfc3RyaWRlICogKGhpZ2hf Ym91bmQgLSBsb3dfYm91bmQgKyAxKTsKLSsJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IChi eXRlX3N0cmlkZSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kKQotKwkJCQkgICAgICsgVFlQRV9M RU5HVEggKGVsZW1lbnRfdHlwZSkpOwotICAgICAgIGVsc2UgaWYgKGJpdF9zdHJpZGUgPiAwKQot IAlUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KLS0JICAoYml0X3N0cmlkZSAqIChoaWdoX2Jv dW5kIC0gbG93X2JvdW5kICsgMSkgKyA3KSAvIDg7Ci0rCSAgKChiaXRfc3RyaWRlICogKGhpZ2hf Ym91bmQgLSBsb3dfYm91bmQpICsgNykgLyA4Ci0rCSAgICsgVFlQRV9MRU5HVEggKGVsZW1lbnRf dHlwZSkpOwotICAgICAgIGVsc2UKLSAJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9Ci0gCSAg VFlQRV9MRU5HVEggKGVsZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEp OwotCi0tLVZiSmtuOVl4QnZudUNINUoKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9InZs YS1zdHJpZGUucyIKLQotCS5maWxlCSJ2bGEtc3RyaWRlLmY5MCIKLQkudGV4dAotLkx0ZXh0MDoK LQkuc2VjdGlvbgkucm9kYXRhCi0JLmFsaWduIDQKLS5MQzA6Ci0JLnN0cmluZwkiSW50ZWdlciBv dmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIHRoZSBhbW91bnQgb2YgbWVtb3J5IHRvIGFsbG9jYXRl IgotLkxDMToKLQkuc3RyaW5nCSJ2bGEiCi0JLmFsaWduIDQKLS5MQzI6Ci0JLnN0cmluZwkiQXR0 ZW1wdGluZyB0byBhbGxvY2F0ZSBhbHJlYWR5IGFsbG9jYXRlZCB2YXJpYWJsZSAnJXMnIgotCS5h bGlnbiA0Ci0uTEMzOgotCS5zdHJpbmcJIkF0IGxpbmUgMjAgb2YgZmlsZSBnZGIuZm9ydHJhbi92 bGEtc3RyaWRlLmY5MCIKLQkuYWxpZ24gNAotLkxDNDoKLQkuc3RyaW5nCSJBbGxvY2F0aW9uIHdv dWxkIGV4Y2VlZCBtZW1vcnkgbGltaXQiCi0JLnRleHQKLQkudHlwZQlNQUlOX18sIEBmdW5jdGlv bgotTUFJTl9fOgotLkxGQjA6Ci0JLmZpbGUgMSAiZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAi Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoxNgotCS5sb2MgMSAxNiAwCi0JLmNmaV9z dGFydHByb2MKLSMgQkxPQ0sgMiBzZXE6MAotIyBQUkVEOiBFTlRSWSAoRkFMTFRIUlUpCi0JcHVz aGwJJWVicAotCS5jZmlfZGVmX2NmYV9vZmZzZXQgOAotCS5jZmlfb2Zmc2V0IDUsIC04Ci0JbW92 bAklZXNwLCAlZWJwCi0JLmNmaV9kZWZfY2ZhX3JlZ2lzdGVyIDUKLQlwdXNobAklZWRpCi0JcHVz aGwJJWVzaQotCXB1c2hsCSVlYngKLQlzdWJsCSQ2MCwgJWVzcAotCS5jZmlfb2Zmc2V0IDcsIC0x MgotCS5jZmlfb2Zmc2V0IDYsIC0xNgotCS5jZmlfb2Zmc2V0IDMsIC0yMAotCSMgZ2RiLmZvcnRy YW4vdmxhLXN0cmlkZS5mOTA6MTcKLQkubG9jIDEgMTcgMAotCW1vdmwJJDAsIC03MiglZWJwKQot LkxCQjI6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMAotCS5sb2MgMSAyMCAwCi0J bW92bAkkMCwgJWVheAotCXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzogMyAoRkFMTFRIUlUpIDQK LQlqZQkuTDIKLSMgQkxPQ0sgMyBzZXE6MQotIyBQUkVEOiAyIChGQUxMVEhSVSkKLQkjIGdkYi5m b3J0cmFuL3ZsYS1zdHJpZGUuZjkwOjIwCi0JLmxvYyAxIDIwIDAgaXNfc3RtdCAwIGRpc2NyaW1p bmF0b3IgMQotCXN1YmwJJDEyLCAlZXNwCi0JcHVzaGwJJC5MQzAKLSMgU1VDQzoKLQljYWxsCV9n Zm9ydHJhbl9ydW50aW1lX2Vycm9yCi0jIEJMT0NLIDQgc2VxOjIKLSMgUFJFRDogMgotLkwyOgot CSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjAKLQkubG9jIDEgMjAgMCBkaXNjcmltaW5h dG9yIDIKLQltb3ZsCS03MiglZWJwKSwgJWVheAotCXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzog NSAoRkFMTFRIUlUpIDYKLQlqZQkuTDMKLSMgQkxPQ0sgNSBzZXE6MwotIyBQUkVEOiA0IChGQUxM VEhSVSkKLQkjIGdkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwOjIwCi0JLmxvYyAxIDIwIDAgZGlz Y3JpbWluYXRvciAzCi0Jc3VibAkkNCwgJWVzcAotCXB1c2hsCSQuTEMxCi0JcHVzaGwJJC5MQzIK LQlwdXNobAkkLkxDMwotIyBTVUNDOgotCWNhbGwJX2dmb3J0cmFuX3J1bnRpbWVfZXJyb3JfYXQK LSMgQkxPQ0sgNiBzZXE6NAotIyBQUkVEOiA0Ci0uTDM6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3Ry aWRlLmY5MDoyMAotCS5sb2MgMSAyMCAwIGRpc2NyaW1pbmF0b3IgNAotCXN1YmwJJDEyLCAlZXNw Ci0JcHVzaGwJJDQwCi0JY2FsbAltYWxsb2MKLQlhZGRsCSQxNiwgJWVzcAotCW1vdmwJJWVheCwg LTcyKCVlYnApCi0JbW92bAktNzIoJWVicCksICVlYXgKLQl0ZXN0bAklZWF4LCAlZWF4Ci0jIFNV Q0M6IDcgKEZBTExUSFJVKSA4Ci0Jam5lCS5MNAotIyBCTE9DSyA3IHNlcTo1Ci0jIFBSRUQ6IDYg KEZBTExUSFJVKQotCSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjAKLQkubG9jIDEgMjAg MCBkaXNjcmltaW5hdG9yIDUKLQlzdWJsCSQxMiwgJWVzcAotCXB1c2hsCSQuTEM0Ci0jIFNVQ0M6 Ci0JY2FsbAlfZ2ZvcnRyYW5fb3NfZXJyb3IKLSMgQkxPQ0sgOCBzZXE6NgotIyBQUkVEOiA2Ci0u TDQ6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMAotCS5sb2MgMSAyMCAwIGRpc2Ny aW1pbmF0b3IgNgotCW1vdmwJJDI2NSwgLTY0KCVlYnApCi0JbW92bAkkMSwgLTU2KCVlYnApCi0J bW92bAkkMTAsIC01MiglZWJwKQotCW1vdmwJJDEsIC02MCglZWJwKQotCW1vdmwJJC0xLCAtNjgo JWVicCkKLS5MQkIzOgotCSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjEKLQkubG9jIDEg MjEgMCBpc19zdG10IDEgZGlzY3JpbWluYXRvciA2Ci0JbW92bAktNzIoJWVicCksICVlZHgKLQlt b3ZsCS02OCglZWJwKSwgJWVzaQotCW1vdmwJLTU2KCVlYnApLCAlZWJ4Ci0uTEJCNDoKLS5MQkI1 OgotCW1vdmwJLTcyKCVlYnApLCAlZWF4Ci0JdGVzdGwJJWVheCwgJWVheAotCXNldGUJJWFsCi0J bW92emJsCSVhbCwgJWVheAotCXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzogMTAgOSAoRkFMTFRI UlUpCi0Jam5lCS5MNQotIyBCTE9DSyA5IHNlcTo3Ci0jIFBSRUQ6IDggKEZBTExUSFJVKQotCSMg Z2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjEKLQkubG9jIDEgMjEgMCBpc19zdG10IDAgZGlz Y3JpbWluYXRvciAyCi0JbW92bAktNTYoJWVicCksICVlY3gKLQlsZWFsCTkoJWVjeCksICVlZGkK LQltb3ZsCS01MiglZWJwKSwgJWVjeAotCWNtcGwJJWVjeCwgJWVkaQotIyBTVUNDOiAxMCAoRkFM TFRIUlUpIDE4Ci0JamUJLkw2Ci0jIEJMT0NLIDEwIHNlcTo4Ci0jIFBSRUQ6IDggOSAoRkFMTFRI UlUpCi0uTDU6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAw IGRpc2NyaW1pbmF0b3IgMwotCXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzogMTEgKEZBTExUSFJV KSAxMgotCWplCS5MNwotIyBCTE9DSyAxMSBzZXE6OQotIyBQUkVEOiAxMCAoRkFMTFRIUlUpCi0J IyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2NyaW1pbmF0 b3IgNAotCW1vdmwJJDAsICVlYXgKLSMgU1VDQzogMTMgWzEwMC4wJV0gCi0Jam1wCS5MOAotIyBC TE9DSyAxMiBzZXE6MTAKLSMgUFJFRDogMTAKLS5MNzoKLQkjIGdkYi5mb3J0cmFuL3ZsYS1zdHJp ZGUuZjkwOjIxCi0JLmxvYyAxIDIxIDAgZGlzY3JpbWluYXRvciA1Ci0JbW92bAktNTIoJWVicCks ICVlZHgKLQltb3ZsCS01NiglZWJwKSwgJWVheAotCXN1YmwJJWVheCwgJWVkeAotCW1vdmwJJWVk eCwgJWVheAotCWFkZGwJJDEsICVlYXgKLQltb3ZsCSQwLCAlZWR4Ci0JdGVzdGwJJWVheCwgJWVh eAotIyBTVUNDOiAxMyAoRkFMTFRIUlUpCi0JY21vdnMJJWVkeCwgJWVheAotIyBCTE9DSyAxMyBz ZXE6MTEKLSMgUFJFRDogMTIgKEZBTExUSFJVKSAxMSBbMTAwLjAlXSAKLS5MODoKLQkjIGdkYi5m b3J0cmFuL3ZsYS1zdHJpZGUuZjkwOjIxCi0JLmxvYyAxIDIxIDAgZGlzY3JpbWluYXRvciA3Ci0J Y21wbAkkMTAsICVlYXgKLQlzZXRuZQklYWwKLQltb3Z6YmwJJWFsLCAlZWF4Ci0JbW92bAkkMSwg LTU2KCVlYnApCi0JbW92bAkkMTAsIC01MiglZWJwKQotCW1vdmwJJDEsIC02MCglZWJwKQotCW1v dmwJLTU2KCVlYnApLCAlZWR4Ci0JbmVnbAklZWR4Ci0JbW92bAklZWR4LCAtNjgoJWVicCkKLQlt b3ZsCS02OCglZWJwKSwgJWVzaQotCW1vdmwJLTU2KCVlYnApLCAlZWJ4Ci0JbW92bAktNzIoJWVi cCksICVlZHgKLQl0ZXN0bAklZWR4LCAlZWR4Ci0jIFNVQ0M6IDE0IChGQUxMVEhSVSkgMTUKLQlq bmUJLkw5Ci0jIEJMT0NLIDE0IHNlcToxMgotIyBQUkVEOiAxMyAoRkFMTFRIUlUpCi0JIyBnZGIu Zm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2NyaW1pbmF0b3IgOAot CXN1YmwJJDEyLCAlZXNwCi0JcHVzaGwJJDQwCi0JY2FsbAltYWxsb2MKLQlhZGRsCSQxNiwgJWVz cAotCW1vdmwJJWVheCwgLTcyKCVlYnApCi0JbW92bAkkMjY1LCAtNjQoJWVicCkKLSMgU1VDQzog MTcgWzEwMC4wJV0gCi0Jam1wCS5MMTAKLSMgQkxPQ0sgMTUgc2VxOjEzCi0jIFBSRUQ6IDEzCi0u TDk6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2Ny aW1pbmF0b3IgOQotCXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzogMTYgKEZBTExUSFJVKSAxNwot CWplCS5MMTAKLSMgQkxPQ0sgMTYgc2VxOjE0Ci0jIFBSRUQ6IDE1IChGQUxMVEhSVSkKLQkjIGdk Yi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwOjIxCi0JLmxvYyAxIDIxIDAgZGlzY3JpbWluYXRvciAx MQotCW1vdmwJLTcyKCVlYnApLCAlZWF4Ci0Jc3VibAkkOCwgJWVzcAotCXB1c2hsCSQ0MAotCXB1 c2hsCSVlYXgKLQljYWxsCXJlYWxsb2MKLQlhZGRsCSQxNiwgJWVzcAotIyBTVUNDOiAxNyAoRkFM TFRIUlUpCi0JbW92bAklZWF4LCAtNzIoJWVicCkKLSMgQkxPQ0sgMTcgc2VxOjE1Ci0jIFBSRUQ6 IDE2IChGQUxMVEhSVSkgMTUgMTQgWzEwMC4wJV0gCi0uTDEwOgotIyBTVUNDOiAxOCAoRkFMTFRI UlUpCi0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2Ny aW1pbmF0b3IgMTMKLQltb3ZsCS03MiglZWJwKSwgJWVkeAotIyBCTE9DSyAxOCBzZXE6MTYKLSMg UFJFRDogOSAxNyAoRkFMTFRIUlUpCi0uTDY6Ci0uTEJFNToKLSMgU1VDQzogMTkgKEZBTExUSFJV KQotCSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjEKLQkubG9jIDEgMjEgMCBkaXNjcmlt aW5hdG9yIDE0Ci0JbW92bAkkMCwgJWVheAotIyBCTE9DSyAxOSBzZXE6MTcKLSMgUFJFRDogMTgg KEZBTExUSFJVKSAyMCBbMTAwLjAlXSAKLS5MMTI6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRl LmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2NyaW1pbmF0b3IgMTcKLQljbXBsCSQ5LCAlZWF4Ci0j IFNVQ0M6IDIxIDIwIChGQUxMVEhSVSkKLQlqZwkuTDExCi0jIEJMT0NLIDIwIHNlcToxOAotIyBQ UkVEOiAxOSAoRkFMTFRIUlUpCi0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5s b2MgMSAyMSAwIGRpc2NyaW1pbmF0b3IgMTYKLQlsZWFsCSglZWF4LCVlYngpLCAlZWN4Ci0JbGVh bAkoJWVjeCwlZXNpKSwgJWVkaQotCW1vdmwJQS4xLjMzNjgoLCVlYXgsNCksICVlY3gKLQltb3Zs CSVlY3gsICglZWR4LCVlZGksNCkKLQlhZGRsCSQxLCAlZWF4Ci0jIFNVQ0M6IDE5IFsxMDAuMCVd IAotCWptcAkuTDEyCi0jIEJMT0NLIDIxIHNlcToxOQotIyBQUkVEOiAxOQotLkwxMToKLS5MQkU0 OgotLkxCRTM6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMwotCS5sb2MgMSAyMyAw IGlzX3N0bXQgMQotCW1vdmwJJDI2NSwgLTQwKCVlYnApCi0JbW92bAkkMSwgLTMyKCVlYnApCi0J bW92bAkkMTAsIC0yOCglZWJwKQotCW1vdmwJJC0xLCAtMzYoJWVicCkKLQltb3ZsCS03MiglZWJw KSwgJWVheAotCW1vdmwJLTU2KCVlYnApLCAlZWR4Ci0JbW92bAkkMTAsICVlY3gKLQlzdWJsCSVl ZHgsICVlY3gKLQltb3ZsCSVlY3gsICVlZHgKLQlzYWxsCSQyLCAlZWR4Ci0JYWRkbAklZWR4LCAl ZWF4Ci0JbW92bAklZWF4LCAtNDgoJWVicCkKLQltb3ZsCSQxLCAtNDQoJWVicCkKLS5MQkI2Ogot CSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjQKLQkubG9jIDEgMjQgMAotCW1vdmwJJDI2 NSwgLTQwKCVlYnApCi0JbW92bAktMzYoJWVicCksICVlYXgKLQltb3ZsCSQxLCAtMzIoJWVicCkK LQltb3ZsCSQxMCwgLTI4KCVlYnApCi0JbW92bAklZWF4LCAlZWR4Ci0JbmVnbAklZWR4Ci0JbW92 bAklZWR4LCAtMzYoJWVicCkKLQltb3ZsCS00OCglZWJwKSwgJWVkeAotCW1vdmwJLTMyKCVlYnAp LCAlZWN4Ci0JbW92bAkkMTAsICVlYngKLQlzdWJsCSVlY3gsICVlYngKLQltb3ZsCSVlYngsICVl Y3gKLQlpbXVsbAklZWF4LCAlZWN4Ci0Jc2FsbAkkMiwgJWVjeAotCWFkZGwJJWVjeCwgJWVkeAot CW1vdmwJJWVkeCwgLTQ4KCVlYnApCi0JbW92bAklZWF4LCAtNDQoJWVicCkKLS5MQkU2OgotCSMg Z2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjUKLQkubG9jIDEgMjUgMAotCW1vdmwJJDI2NSwg LTQwKCVlYnApCi0JbW92bAkkMSwgLTMyKCVlYnApCi0JbW92bAkkNSwgLTI4KCVlYnApCi0JbW92 bAkkMiwgLTM2KCVlYnApCi0JbW92bAktNzIoJWVicCksICVlYXgKLQltb3ZsCS01NiglZWJwKSwg JWVkeAotCW1vdmwJJDEsICVlY3gKLQlzdWJsCSVlZHgsICVlY3gKLQltb3ZsCSVlY3gsICVlZHgK LQlzYWxsCSQyLCAlZWR4Ci0JYWRkbAklZWR4LCAlZWF4Ci0JbW92bAklZWF4LCAtNDgoJWVicCkK LQltb3ZsCSQtMiwgLTQ0KCVlYnApCi0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyNgot CS5sb2MgMSAyNiAwCi0JbW92bAkkMjY1LCAtNDAoJWVicCkKLQltb3ZsCSQxLCAtMzIoJWVicCkK LQltb3ZsCSQxLCAtMjgoJWVicCkKLQltb3ZsCSQtMiwgLTM2KCVlYnApCi0JbW92bAktNzIoJWVi cCksICVlYXgKLQltb3ZsCS01NiglZWJwKSwgJWVkeAotCW1vdmwJJDUsICVlY3gKLQlzdWJsCSVl ZHgsICVlY3gKLQltb3ZsCSVlY3gsICVlZHgKLQlzYWxsCSQyLCAlZWR4Ci0JYWRkbAklZWR4LCAl ZWF4Ci0JbW92bAklZWF4LCAtNDgoJWVicCkKLQltb3ZsCSQyLCAtNDQoJWVicCkKLQkjIGdkYi5m b3J0cmFuL3ZsYS1zdHJpZGUuZjkwOjI4Ci0JLmxvYyAxIDI4IDAKLQltb3ZsCSQwLCAtNDgoJWVi cCkKLS5MQkUyOgotCSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjkKLQkubG9jIDEgMjkg MAotCW5vcAotCWxlYWwJLTEyKCVlYnApLCAlZXNwCi0JcG9wbAklZWJ4Ci0JLmNmaV9yZXN0b3Jl IDMKLQlwb3BsCSVlc2kKLQkuY2ZpX3Jlc3RvcmUgNgotCXBvcGwJJWVkaQotCS5jZmlfcmVzdG9y ZSA3Ci0JcG9wbAklZWJwCi0JLmNmaV9yZXN0b3JlIDUKLQkuY2ZpX2RlZl9jZmEgNCwgNAotIyBT VUNDOiBFWElUIFsxMDAuMCVdIAotCXJldAotCS5jZmlfZW5kcHJvYwotLkxGRTA6Ci0JLnNpemUJ TUFJTl9fLCAuLU1BSU5fXwotCS5nbG9ibAltYWluCi0JLnR5cGUJbWFpbiwgQGZ1bmN0aW9uCi1t YWluOgotLkxGQjE6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyOQotCS5sb2MgMSAy OSAwCi0JLmNmaV9zdGFydHByb2MKLSMgQkxPQ0sgMiBzZXE6MAotIyBQUkVEOiBFTlRSWSAoRkFM TFRIUlUpCi0JbGVhbAk0KCVlc3ApLCAlZWN4Ci0JLmNmaV9kZWZfY2ZhIDEsIDAKLQlhbmRsCSQt MTYsICVlc3AKLQlwdXNobAktNCglZWN4KQotCXB1c2hsCSVlYnAKLQkuY2ZpX2VzY2FwZSAweDEw LDB4NSwweDIsMHg3NSwwCi0JbW92bAklZXNwLCAlZWJwCi0JcHVzaGwJJWVjeAotCS5jZmlfZXNj YXBlIDB4ZiwweDMsMHg3NSwweDdjLDB4NgotCXN1YmwJJDQsICVlc3AKLQltb3ZsCSVlY3gsICVl YXgKLQkjIGdkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwOjI5Ci0JLmxvYyAxIDI5IDAKLQlzdWJs CSQ4LCAlZXNwCi0JcHVzaGwJNCglZWF4KQotCXB1c2hsCSglZWF4KQotCWNhbGwJX2dmb3J0cmFu X3NldF9hcmdzCi0JYWRkbAkkMTYsICVlc3AKLQlzdWJsCSQ4LCAlZXNwCi0JcHVzaGwJJG9wdGlv bnMuMy4zMzgyCi0JcHVzaGwJJDkKLQljYWxsCV9nZm9ydHJhbl9zZXRfb3B0aW9ucwotCWFkZGwJ JDE2LCAlZXNwCi0JY2FsbAlNQUlOX18KLQltb3ZsCSQwLCAlZWF4Ci0JbW92bAktNCglZWJwKSwg JWVjeAotCS5jZmlfZGVmX2NmYSAxLCAwCi0JbGVhdmUKLQkuY2ZpX3Jlc3RvcmUgNQotCWxlYWwJ LTQoJWVjeCksICVlc3AKLQkuY2ZpX2RlZl9jZmEgNCwgNAotIyBTVUNDOiBFWElUIFsxMDAuMCVd IAotCXJldAotCS5jZmlfZW5kcHJvYwotLkxGRTE6Ci0JLnNpemUJbWFpbiwgLi1tYWluCi0JLnNl Y3Rpb24JLnJvZGF0YQotCS5hbGlnbiAzMgotCS50eXBlCUEuMS4zMzY4LCBAb2JqZWN0Ci0JLnNp emUJQS4xLjMzNjgsIDQwCi1BLjEuMzM2ODoKLQkubG9uZwkxCi0JLmxvbmcJMgotCS5sb25nCTMK LQkubG9uZwk0Ci0JLmxvbmcJNQotCS5sb25nCTYKLQkubG9uZwk3Ci0JLmxvbmcJOAotCS5sb25n CTkKLQkubG9uZwkxMAotCS5hbGlnbiAzMgotCS50eXBlCW9wdGlvbnMuMy4zMzgyLCBAb2JqZWN0 Ci0JLnNpemUJb3B0aW9ucy4zLjMzODIsIDM2Ci1vcHRpb25zLjMuMzM4MjoKLQkubG9uZwk2OAot CS5sb25nCTEwMjMKLQkubG9uZwkwCi0JLmxvbmcJMAotCS5sb25nCTEKLQkubG9uZwkxCi0JLmxv bmcJMAotCS5sb25nCTAKLQkubG9uZwkzMQotCS50ZXh0Ci0uTGV0ZXh0MDoKLQkuc2VjdGlvbgku ZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKLS5MZGVidWdfaW5mbzA6Ci0JLmxvbmcJMHgxMjgJIyBM ZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0JLnZhbHVlCTB4NAkjIERXQVJGIHZlcnNp b24gbnVtYmVyCi0JLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCSMgT2Zmc2V0IEludG8gQWJicmV2LiBT ZWN0aW9uCi0JLmJ5dGUJMHg0CSMgUG9pbnRlciBTaXplIChpbiBieXRlcykKLQkudWxlYjEyOCAw eDEJIyAoRElFICgweGIpIERXX1RBR19jb21waWxlX3VuaXQpCi0JLmxvbmcJLkxBU0Y1CSMgRFdf QVRfcHJvZHVjZXI6ICJHTlUgRm9ydHJhbjIwMDggNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4x LjEtMykgLW0zMiAtbXR1bmU9Z2VuZXJpYyAtbWFyY2g9aTY4NiAtZyAtZmludHJpbnNpYy1tb2R1 bGVzLXBhdGggL3Vzci9saWIvZ2NjL3g4Nl82NC1yZWRoYXQtbGludXgvNi4xLjEvMzIvZmluY2x1 ZGUiCi0JLmJ5dGUJMHhlCSMgRFdfQVRfbGFuZ3VhZ2UKLQkuYnl0ZQkweDIJIyBEV19BVF9pZGVu dGlmaWVyX2Nhc2UKLQkubG9uZwkuTEFTRjYJIyBEV19BVF9uYW1lOiAiZ2RiLmZvcnRyYW4vdmxh LXN0cmlkZS5mOTAiCi0JLmxvbmcJLkxBU0Y3CSMgRFdfQVRfY29tcF9kaXI6ICIvaG9tZS9qa3Jh dG9jaC9yZWRoYXQvZ2RiLWNsZWFuL2dkYi90ZXN0c3VpdGUiCi0JLmxvbmcJLkx0ZXh0MAkjIERX X0FUX2xvd19wYwotCS5sb25nCS5MZXRleHQwLS5MdGV4dDAJIyBEV19BVF9oaWdoX3BjCi0JLmxv bmcJLkxkZWJ1Z19saW5lMAkjIERXX0FUX3N0bXRfbGlzdAotCS51bGViMTI4IDB4MgkjIChESUUg KDB4MjYpIERXX1RBR19iYXNlX3R5cGUpCi0JLmJ5dGUJMHg0CSMgRFdfQVRfYnl0ZV9zaXplCi0J LmJ5dGUJMHg1CSMgRFdfQVRfZW5jb2RpbmcKLQkubG9uZwkuTEFTRjIJIyBEV19BVF9uYW1lOiAi aW50ZWdlcihraW5kPTQpIgotCS51bGViMTI4IDB4MwkjIChESUUgKDB4MmQpIERXX1RBR19jb25z dF90eXBlKQotCS5sb25nCTB4MjYJIyBEV19BVF90eXBlCi0JLnVsZWIxMjggMHg0CSMgKERJRSAo MHgzMikgRFdfVEFHX3N1YnByb2dyYW0pCi0JCQkjIERXX0FUX2V4dGVybmFsCi0JLmxvbmcJLkxB U0Y4CSMgRFdfQVRfbmFtZTogIm1haW4iCi0JLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChn ZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MCkKLQkuYnl0ZQkweDFkCSMgRFdfQVRfZGVjbF9saW5l Ci0JLmxvbmcJMHgyNgkjIERXX0FUX3R5cGUKLQkubG9uZwkuTEZCMQkjIERXX0FUX2xvd19wYwot CS5sb25nCS5MRkUxLS5MRkIxCSMgRFdfQVRfaGlnaF9wYwotCS51bGViMTI4IDB4MQkjIERXX0FU X2ZyYW1lX2Jhc2UKLQkuYnl0ZQkweDljCSMgRFdfT1BfY2FsbF9mcmFtZV9jZmEKLQkJCSMgRFdf QVRfR05VX2FsbF90YWlsX2NhbGxfc2l0ZXMKLQkubG9uZwkweDY5CSMgRFdfQVRfc2libGluZwot CS51bGViMTI4IDB4NQkjIChESUUgKDB4NGIpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotCS5s b25nCS5MQVNGMAkjIERXX0FUX25hbWU6ICJhcmdjIgotCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xf ZmlsZSAoZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTApCi0JLmJ5dGUJMHgxZAkjIERXX0FUX2Rl Y2xfbGluZQotCS5sb25nCTB4MmQJIyBEV19BVF90eXBlCi0JLnVsZWIxMjggMHgyCSMgRFdfQVRf bG9jYXRpb24KLQkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLQkuc2xlYjEyOCAwCi0JLnVsZWIx MjggMHg1CSMgKERJRSAoMHg1OSkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0JLmxvbmcJLkxB U0YxCSMgRFdfQVRfbmFtZTogImFyZ3YiCi0JLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChn ZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MCkKLQkuYnl0ZQkweDFkCSMgRFdfQVRfZGVjbF9saW5l Ci0JLmxvbmcJMHg2OQkjIERXX0FUX3R5cGUKLQkudWxlYjEyOCAweDMJIyBEV19BVF9sb2NhdGlv bgotCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotCS5zbGViMTI4IDQKLQkuYnl0ZQkweDYJIyBE V19PUF9kZXJlZgotCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MzIKLQkudWxl YjEyOCAweDYJIyAoRElFICgweDY5KSBEV19UQUdfcG9pbnRlcl90eXBlKQotCS5ieXRlCTB4NAkj IERXX0FUX2J5dGVfc2l6ZQotCS5sb25nCTB4NmYJIyBEV19BVF90eXBlCi0JLnVsZWIxMjggMHgy CSMgKERJRSAoMHg2ZikgRFdfVEFHX2Jhc2VfdHlwZSkKLQkuYnl0ZQkweDEJIyBEV19BVF9ieXRl X3NpemUKLQkuYnl0ZQkweDgJIyBEV19BVF9lbmNvZGluZwotCS5sb25nCS5MQVNGMwkjIERXX0FU X25hbWU6ICJjaGFyYWN0ZXIoa2luZD0xKSIKLQkudWxlYjEyOCAweDcJIyAoRElFICgweDc2KSBE V19UQUdfc3VicHJvZ3JhbSkKLQkubG9uZwkuTEFTRjkJIyBEV19BVF9uYW1lOiAidmxhX3N0cmlk ZSIKLQkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5mb3J0cmFuL3ZsYS1zdHJpZGUu ZjkwKQotCS5ieXRlCTB4MTAJIyBEV19BVF9kZWNsX2xpbmUKLQkJCSMgRFdfQVRfbWFpbl9zdWJw cm9ncmFtCi0JLmJ5dGUJMHgyCSMgRFdfQVRfY2FsbGluZ19jb252ZW50aW9uCi0JLmxvbmcJLkxG QjAJIyBEV19BVF9sb3dfcGMKLQkubG9uZwkuTEZFMC0uTEZCMAkjIERXX0FUX2hpZ2hfcGMKLQku dWxlYjEyOCAweDEJIyBEV19BVF9mcmFtZV9iYXNlCi0JLmJ5dGUJMHg5YwkjIERXX09QX2NhbGxf ZnJhbWVfY2ZhCi0JCQkjIERXX0FUX0dOVV9hbGxfdGFpbF9jYWxsX3NpdGVzCi0JLmxvbmcJMHhl NwkjIERXX0FUX3NpYmxpbmcKLQkudWxlYjEyOCAweDgJIyAoRElFICgweDhjKSBEV19UQUdfdmFy aWFibGUpCi0JLmFzY2lpICJpXDAiCSMgRFdfQVRfbmFtZQotCS5ieXRlCTB4MQkjIERXX0FUX2Rl Y2xfZmlsZSAoZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTApCi0JLmJ5dGUJMHgxNQkjIERXX0FU X2RlY2xfbGluZQotCS5sb25nCTB4MjYJIyBEV19BVF90eXBlCi0JLnVsZWIxMjggMHg5CSMgKERJ RSAoMHg5NSkgRFdfVEFHX3ZhcmlhYmxlKQotCS5sb25nCS5MQVNGNAkjIERXX0FUX25hbWU6ICJw dmxhIgotCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmZvcnRyYW4vdmxhLXN0cmlk ZS5mOTApCi0JLmJ5dGUJMHgxMgkjIERXX0FUX2RlY2xfbGluZQotCS5sb25nCTB4ZTcJIyBEV19B VF90eXBlCi0JLnVsZWIxMjggMHgyCSMgRFdfQVRfbG9jYXRpb24KLQkuYnl0ZQkweDkxCSMgRFdf T1BfZmJyZWcKLQkuc2xlYjEyOCAtNTYKLQkudWxlYjEyOCAweGEJIyAoRElFICgweGEzKSBEV19U QUdfdmFyaWFibGUpCi0JLmFzY2lpICJ2bGFcMCIJIyBEV19BVF9uYW1lCi0JLmJ5dGUJMHgxCSMg RFdfQVRfZGVjbF9maWxlIChnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MCkKLQkuYnl0ZQkweDEx CSMgRFdfQVRfZGVjbF9saW5lCi0JLmxvbmcJMHgxMGIJIyBEV19BVF90eXBlCi0JLnVsZWIxMjgg MHgzCSMgRFdfQVRfbG9jYXRpb24KLQkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLQkuc2xlYjEy OCAtODAKLQkudWxlYjEyOCAweGIJIyAoRElFICgweGIyKSBEV19UQUdfbGV4aWNhbF9ibG9jaykK LQkubG9uZwkuTEJCMgkjIERXX0FUX2xvd19wYwotCS5sb25nCS5MQkUyLS5MQkIyCSMgRFdfQVRf aGlnaF9wYwotCS51bGViMTI4IDB4YwkjIChESUUgKDB4YmIpIERXX1RBR19sZXhpY2FsX2Jsb2Nr KQotCS5sb25nCS5MQkIzCSMgRFdfQVRfbG93X3BjCi0JLmxvbmcJLkxCRTMtLkxCQjMJIyBEV19B VF9oaWdoX3BjCi0JLmxvbmcJMHhkYwkjIERXX0FUX3NpYmxpbmcKLQkudWxlYjEyOCAweGIJIyAo RElFICgweGM4KSBEV19UQUdfbGV4aWNhbF9ibG9jaykKLQkubG9uZwkuTEJCNAkjIERXX0FUX2xv d19wYwotCS5sb25nCS5MQkU0LS5MQkI0CSMgRFdfQVRfaGlnaF9wYwotCS51bGViMTI4IDB4ZAkj IChESUUgKDB4ZDEpIERXX1RBR19sZXhpY2FsX2Jsb2NrKQotCS5sb25nCS5MQkI1CSMgRFdfQVRf bG93X3BjCi0JLmxvbmcJLkxCRTUtLkxCQjUJIyBEV19BVF9oaWdoX3BjCi0JLmJ5dGUJMAkjIGVu ZCBvZiBjaGlsZHJlbiBvZiBESUUgMHhjOAotCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2Yg RElFIDB4YmIKLQkudWxlYjEyOCAweGQJIyAoRElFICgweGRjKSBEV19UQUdfbGV4aWNhbF9ibG9j aykKLQkubG9uZwkuTEJCNgkjIERXX0FUX2xvd19wYwotCS5sb25nCS5MQkU2LS5MQkI2CSMgRFdf QVRfaGlnaF9wYwotCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YjIKLQkuYnl0 ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDc2Ci0JLnVsZWIxMjggMHhlCSMgKERJRSAo MHhlNykgRFdfVEFHX2FycmF5X3R5cGUpCi0JLnVsZWIxMjggMHgyCSMgRFdfQVRfZGF0YV9sb2Nh dGlvbgotCS5ieXRlCTB4OTcJIyBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzCi0JLmJ5dGUJMHg2 CSMgRFdfT1BfZGVyZWYKLQkudWxlYjEyOCAweDQJIyBEV19BVF9hc3NvY2lhdGVkCi0JLmJ5dGUJ MHg5NwkjIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MKLQkuYnl0ZQkweDYJIyBEV19PUF9kZXJl ZgotCS5ieXRlCTB4MzAJIyBEV19PUF9saXQwCi0JLmJ5dGUJMHgyZQkjIERXX09QX25lCi0JLmxv bmcJMHgyNgkjIERXX0FUX3R5cGUKLQkubG9uZwkweDEwYgkjIERXX0FUX3NpYmxpbmcKLQkudWxl YjEyOCAweGYJIyAoRElFICgweGY4KSBEV19UQUdfc3VicmFuZ2VfdHlwZSkKLQkudWxlYjEyOCAw eDQJIyBEV19BVF9sb3dlcl9ib3VuZAotCS5ieXRlCTB4OTcJIyBEV19PUF9wdXNoX29iamVjdF9h ZGRyZXNzCi0JLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0JLnVsZWIxMjggMHgxMAot CS5ieXRlCTB4NgkjIERXX09QX2RlcmVmCi0JLnVsZWIxMjggMHg0CSMgRFdfQVRfdXBwZXJfYm91 bmQKLQkuYnl0ZQkweDk3CSMgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcwotCS5ieXRlCTB4MjMJ IyBEV19PUF9wbHVzX3Vjb25zdAotCS51bGViMTI4IDB4MTQKLQkuYnl0ZQkweDYJIyBEV19PUF9k ZXJlZgotCS51bGViMTI4IDB4NgkjIERXX0FUX2J5dGVfc3RyaWRlCi0JLmJ5dGUJMHg5NwkjIERX X09QX3B1c2hfb2JqZWN0X2FkZHJlc3MKLQkuYnl0ZQkweDIzCSMgRFdfT1BfcGx1c191Y29uc3QK LQkudWxlYjEyOCAweGMKLQkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgotCS5ieXRlCTB4MzQJIyBE V19PUF9saXQ0Ci0JLmJ5dGUJMHgxZQkjIERXX09QX211bAotCS5ieXRlCTAJIyBlbmQgb2YgY2hp bGRyZW4gb2YgRElFIDB4ZTcKLQkudWxlYjEyOCAweDEwCSMgKERJRSAoMHgxMGIpIERXX1RBR19h cnJheV90eXBlKQotCS51bGViMTI4IDB4MgkjIERXX0FUX2RhdGFfbG9jYXRpb24KLQkuYnl0ZQkw eDk3CSMgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcwotCS5ieXRlCTB4NgkjIERXX09QX2RlcmVm Ci0JLnVsZWIxMjggMHg0CSMgRFdfQVRfYWxsb2NhdGVkCi0JLmJ5dGUJMHg5NwkjIERXX09QX3B1 c2hfb2JqZWN0X2FkZHJlc3MKLQkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgotCS5ieXRlCTB4MzAJ IyBEV19PUF9saXQwCi0JLmJ5dGUJMHgyZQkjIERXX09QX25lCi0JLmxvbmcJMHgyNgkjIERXX0FU X3R5cGUKLQkudWxlYjEyOCAweGYJIyAoRElFICgweDExOCkgRFdfVEFHX3N1YnJhbmdlX3R5cGUp Ci0JLnVsZWIxMjggMHg0CSMgRFdfQVRfbG93ZXJfYm91bmQKLQkuYnl0ZQkweDk3CSMgRFdfT1Bf cHVzaF9vYmplY3RfYWRkcmVzcwotCS5ieXRlCTB4MjMJIyBEV19PUF9wbHVzX3Vjb25zdAotCS51 bGViMTI4IDB4MTAKLQkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgotCS51bGViMTI4IDB4NAkjIERX X0FUX3VwcGVyX2JvdW5kCi0JLmJ5dGUJMHg5NwkjIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MK LQkuYnl0ZQkweDIzCSMgRFdfT1BfcGx1c191Y29uc3QKLQkudWxlYjEyOCAweDE0Ci0JLmJ5dGUJ MHg2CSMgRFdfT1BfZGVyZWYKLQkudWxlYjEyOCAweDYJIyBEV19BVF9ieXRlX3N0cmlkZQotCS5i eXRlCTB4OTcJIyBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzCi0JLmJ5dGUJMHgyMwkjIERXX09Q X3BsdXNfdWNvbnN0Ci0JLnVsZWIxMjggMHhjCi0JLmJ5dGUJMHg2CSMgRFdfT1BfZGVyZWYKLQku Ynl0ZQkweDM0CSMgRFdfT1BfbGl0NAotCS5ieXRlCTB4MWUJIyBEV19PUF9tdWwKLQkuYnl0ZQkw CSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDEwYgotCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRy ZW4gb2YgRElFIDB4YgotCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCi0uTGRl YnVnX2FiYnJldjA6Ci0JLnVsZWIxMjggMHgxCSMgKGFiYnJldiBjb2RlKQotCS51bGViMTI4IDB4 MTEJIyAoVEFHOiBEV19UQUdfY29tcGlsZV91bml0KQotCS5ieXRlCTB4MQkjIERXX2NoaWxkcmVu X3llcwotCS51bGViMTI4IDB4MjUJIyAoRFdfQVRfcHJvZHVjZXIpCi0JLnVsZWIxMjggMHhlCSMg KERXX0ZPUk1fc3RycCkKLQkudWxlYjEyOCAweDEzCSMgKERXX0FUX2xhbmd1YWdlKQotCS51bGVi MTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4NDIJIyAoRFdfQVRfaWRlbnRp Zmllcl9jYXNlKQotCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4 MwkjIChEV19BVF9uYW1lKQotCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0JLnVsZWIx MjggMHgxYgkjIChEV19BVF9jb21wX2RpcikKLQkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJw KQotCS51bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3BjKQotCS51bGViMTI4IDB4MQkjIChEV19G T1JNX2FkZHIpCi0JLnVsZWIxMjggMHgxMgkjIChEV19BVF9oaWdoX3BjKQotCS51bGViMTI4IDB4 NgkjIChEV19GT1JNX2RhdGE0KQotCS51bGViMTI4IDB4MTAJIyAoRFdfQVRfc3RtdF9saXN0KQot CS51bGViMTI4IDB4MTcJIyAoRFdfRk9STV9zZWNfb2Zmc2V0KQotCS5ieXRlCTAKLQkuYnl0ZQkw Ci0JLnVsZWIxMjggMHgyCSMgKGFiYnJldiBjb2RlKQotCS51bGViMTI4IDB4MjQJIyAoVEFHOiBE V19UQUdfYmFzZV90eXBlKQotCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotCS51bGViMTI4IDB4 YgkjIChEV19BVF9ieXRlX3NpemUpCi0JLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0J LnVsZWIxMjggMHgzZQkjIChEV19BVF9lbmNvZGluZykKLQkudWxlYjEyOCAweGIJIyAoRFdfRk9S TV9kYXRhMSkKLQkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLQkudWxlYjEyOCAweGUJIyAo RFdfRk9STV9zdHJwKQotCS5ieXRlCTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjggMHgzCSMgKGFiYnJl diBjb2RlKQotCS51bGViMTI4IDB4MjYJIyAoVEFHOiBEV19UQUdfY29uc3RfdHlwZSkKLQkuYnl0 ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLQkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0JLnVs ZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEy OCAweDQJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJw cm9ncmFtKQotCS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcwotCS51bGViMTI4IDB4M2YJIyAo RFdfQVRfZXh0ZXJuYWwpCi0JLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkK LQkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLQkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9z dHJwKQotCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotCS51bGViMTI4IDB4Ygkj IChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotCS51 bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4NDkJIyAoRFdfQVRfdHlw ZSkKLQkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLQkudWxlYjEyOCAweDExCSMgKERX X0FUX2xvd19wYykKLQkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotCS51bGViMTI4IDB4 MTIJIyAoRFdfQVRfaGlnaF9wYykKLQkudWxlYjEyOCAweDYJIyAoRFdfRk9STV9kYXRhNCkKLQku dWxlYjEyOCAweDQwCSMgKERXX0FUX2ZyYW1lX2Jhc2UpCi0JLnVsZWIxMjggMHgxOAkjIChEV19G T1JNX2V4cHJsb2MpCi0JLnVsZWIxMjggMHgyMTE2CSMgKERXX0FUX0dOVV9hbGxfdGFpbF9jYWxs X3NpdGVzKQotCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCi0JLnVsZWIx MjggMHgxCSMgKERXX0FUX3NpYmxpbmcpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQp Ci0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAweDUJIyAoYWJicmV2IGNvZGUpCi0JLnVs ZWIxMjggMHg1CSMgKFRBRzogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0JLmJ5dGUJMAkjIERX X2NoaWxkcmVuX25vCi0JLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0JLnVsZWIxMjggMHhl CSMgKERXX0ZPUk1fc3RycCkKLQkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLQku dWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEyOCAweDNiCSMgKERXX0FUX2Rl Y2xfbGluZSkKLQkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEyOCAweDQ5 CSMgKERXX0FUX3R5cGUpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLnVsZWIx MjggMHgyCSMgKERXX0FUX2xvY2F0aW9uKQotCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBy bG9jKQotCS5ieXRlCTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjggMHg2CSMgKGFiYnJldiBjb2RlKQot CS51bGViMTI4IDB4ZgkjIChUQUc6IERXX1RBR19wb2ludGVyX3R5cGUpCi0JLmJ5dGUJMAkjIERX X2NoaWxkcmVuX25vCi0JLnVsZWIxMjggMHhiCSMgKERXX0FUX2J5dGVfc2l6ZSkKLQkudWxlYjEy OCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0J LnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxl YjEyOCAweDcJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHgyZQkjIChUQUc6IERXX1RBR19z dWJwcm9ncmFtKQotCS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcwotCS51bGViMTI4IDB4Mwkj IChEV19BVF9uYW1lKQotCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0JLnVsZWIxMjgg MHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0JLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEp Ci0JLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0JLnVsZWIxMjggMHhiCSMgKERX X0ZPUk1fZGF0YTEpCi0JLnVsZWIxMjggMHg2YQkjIChEV19BVF9tYWluX3N1YnByb2dyYW0pCi0J LnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLQkudWxlYjEyOCAweDM2CSMg KERXX0FUX2NhbGxpbmdfY29udmVudGlvbikKLQkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRh MSkKLQkudWxlYjEyOCAweDExCSMgKERXX0FUX2xvd19wYykKLQkudWxlYjEyOCAweDEJIyAoRFdf Rk9STV9hZGRyKQotCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLQkudWxlYjEyOCAw eDYJIyAoRFdfRk9STV9kYXRhNCkKLQkudWxlYjEyOCAweDQwCSMgKERXX0FUX2ZyYW1lX2Jhc2Up Ci0JLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0JLnVsZWIxMjggMHgyMTE2CSMg KERXX0FUX0dOVV9hbGxfdGFpbF9jYWxsX3NpdGVzKQotCS51bGViMTI4IDB4MTkJIyAoRFdfRk9S TV9mbGFnX3ByZXNlbnQpCi0JLnVsZWIxMjggMHgxCSMgKERXX0FUX3NpYmxpbmcpCi0JLnVsZWIx MjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAw eDgJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJpYWJs ZSkKLQkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLQkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFt ZSkKLQkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0JLnVsZWIxMjggMHgzYQkjIChE V19BVF9kZWNsX2ZpbGUpCi0JLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0JLnVsZWIx MjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0JLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0 YTEpCi0JLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotCS51bGViMTI4IDB4MTMJIyAoRFdf Rk9STV9yZWY0KQotCS5ieXRlCTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjggMHg5CSMgKGFiYnJldiBj b2RlKQotCS51bGViMTI4IDB4MzQJIyAoVEFHOiBEV19UQUdfdmFyaWFibGUpCi0JLmJ5dGUJMAkj IERXX2NoaWxkcmVuX25vCi0JLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0JLnVsZWIxMjgg MHhlCSMgKERXX0ZPUk1fc3RycCkKLQkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkK LQkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEyOCAweDNiCSMgKERXX0FU X2RlY2xfbGluZSkKLQkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEyOCAw eDQ5CSMgKERXX0FUX3R5cGUpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLnVs ZWIxMjggMHgyCSMgKERXX0FUX2xvY2F0aW9uKQotCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9l eHBybG9jKQotCS5ieXRlCTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjggMHhhCSMgKGFiYnJldiBjb2Rl KQotCS51bGViMTI4IDB4MzQJIyAoVEFHOiBEV19UQUdfdmFyaWFibGUpCi0JLmJ5dGUJMAkjIERX X2NoaWxkcmVuX25vCi0JLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0JLnVsZWIxMjggMHg4 CSMgKERXX0ZPUk1fc3RyaW5nKQotCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQot CS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4M2IJIyAoRFdfQVRf ZGVjbF9saW5lKQotCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4 NDkJIyAoRFdfQVRfdHlwZSkKLQkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLQkudWxl YjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCi0JLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4 cHJsb2MpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAweGIJIyAoYWJicmV2IGNvZGUp Ci0JLnVsZWIxMjggMHhiCSMgKFRBRzogRFdfVEFHX2xleGljYWxfYmxvY2spCi0JLmJ5dGUJMHgx CSMgRFdfY2hpbGRyZW5feWVzCi0JLnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0JLnVs ZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikKLQkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hf cGMpCi0JLnVsZWIxMjggMHg2CSMgKERXX0ZPUk1fZGF0YTQpCi0JLmJ5dGUJMAotCS5ieXRlCTAK LQkudWxlYjEyOCAweGMJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHhiCSMgKFRBRzogRFdf VEFHX2xleGljYWxfYmxvY2spCi0JLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0JLnVsZWIx MjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0JLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikK LQkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hfcGMpCi0JLnVsZWIxMjggMHg2CSMgKERXX0ZP Uk1fZGF0YTQpCi0JLnVsZWIxMjggMHgxCSMgKERXX0FUX3NpYmxpbmcpCi0JLnVsZWIxMjggMHgx MwkjIChEV19GT1JNX3JlZjQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAweGQJIyAo YWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHhiCSMgKFRBRzogRFdfVEFHX2xleGljYWxfYmxvY2sp Ci0JLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0JLnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3df cGMpCi0JLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikKLQkudWxlYjEyOCAweDEyCSMgKERX X0FUX2hpZ2hfcGMpCi0JLnVsZWIxMjggMHg2CSMgKERXX0ZPUk1fZGF0YTQpCi0JLmJ5dGUJMAot CS5ieXRlCTAKLQkudWxlYjEyOCAweGUJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHgxCSMg KFRBRzogRFdfVEFHX2FycmF5X3R5cGUpCi0JLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0J LnVsZWIxMjggMHg1MAkjIChEV19BVF9kYXRhX2xvY2F0aW9uKQotCS51bGViMTI4IDB4MTgJIyAo RFdfRk9STV9leHBybG9jKQotCS51bGViMTI4IDB4NGYJIyAoRFdfQVRfYXNzb2NpYXRlZCkKLQku dWxlYjEyOCAweDE4CSMgKERXX0ZPUk1fZXhwcmxvYykKLQkudWxlYjEyOCAweDQ5CSMgKERXX0FU X3R5cGUpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLnVsZWIxMjggMHgxCSMg KERXX0FUX3NpYmxpbmcpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLmJ5dGUJ MAotCS5ieXRlCTAKLQkudWxlYjEyOCAweGYJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHgy MQkjIChUQUc6IERXX1RBR19zdWJyYW5nZV90eXBlKQotCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9u bwotCS51bGViMTI4IDB4MjIJIyAoRFdfQVRfbG93ZXJfYm91bmQpCi0JLnVsZWIxMjggMHgxOAkj IChEV19GT1JNX2V4cHJsb2MpCi0JLnVsZWIxMjggMHgyZgkjIChEV19BVF91cHBlcl9ib3VuZCkK LQkudWxlYjEyOCAweDE4CSMgKERXX0ZPUk1fZXhwcmxvYykKLQkudWxlYjEyOCAweDUxCSMgKERX X0FUX2J5dGVfc3RyaWRlKQotCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotCS5i eXRlCTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjggMHgxMAkjIChhYmJyZXYgY29kZSkKLQkudWxlYjEy OCAweDEJIyAoVEFHOiBEV19UQUdfYXJyYXlfdHlwZSkKLQkuYnl0ZQkweDEJIyBEV19jaGlsZHJl bl95ZXMKLQkudWxlYjEyOCAweDUwCSMgKERXX0FUX2RhdGFfbG9jYXRpb24pCi0JLnVsZWIxMjgg MHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0JLnVsZWIxMjggMHg0ZQkjIChEV19BVF9hbGxvY2F0 ZWQpCi0JLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0JLnVsZWIxMjggMHg0OQkj IChEV19BVF90eXBlKQotCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotCS5ieXRlCTAK LQkuYnl0ZQkwCi0JLmJ5dGUJMAotCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0 cwotCS5sb25nCTB4MWMJIyBMZW5ndGggb2YgQWRkcmVzcyBSYW5nZXMgSW5mbwotCS52YWx1ZQkw eDIJIyBEV0FSRiBWZXJzaW9uCi0JLmxvbmcJLkxkZWJ1Z19pbmZvMAkjIE9mZnNldCBvZiBDb21w aWxhdGlvbiBVbml0IEluZm8KLQkuYnl0ZQkweDQJIyBTaXplIG9mIEFkZHJlc3MKLQkuYnl0ZQkw CSMgU2l6ZSBvZiBTZWdtZW50IERlc2NyaXB0b3IKLQkudmFsdWUJMAkjIFBhZCB0byA4IGJ5dGUg Ym91bmRhcnkKLQkudmFsdWUJMAotCS5sb25nCS5MdGV4dDAJIyBBZGRyZXNzCi0JLmxvbmcJLkxl dGV4dDAtLkx0ZXh0MAkjIExlbmd0aAotCS5sb25nCTAKLQkubG9uZwkwCi0JLnNlY3Rpb24JLmRl YnVnX2xpbmUsIiIsQHByb2diaXRzCi0uTGRlYnVnX2xpbmUwOgotCS5zZWN0aW9uCS5kZWJ1Z19z dHIsIk1TIixAcHJvZ2JpdHMsMQotLkxBU0Y3OgotCS5zdHJpbmcJIi9ob21lL2prcmF0b2NoL3Jl ZGhhdC9nZGItY2xlYW4vZ2RiL3Rlc3RzdWl0ZSIKLS5MQVNGMzoKLQkuc3RyaW5nCSJjaGFyYWN0 ZXIoa2luZD0xKSIKLS5MQVNGMDoKLQkuc3RyaW5nCSJhcmdjIgotLkxBU0Y5OgotCS5zdHJpbmcJ InZsYV9zdHJpZGUiCi0uTEFTRjI6Ci0JLnN0cmluZwkiaW50ZWdlcihraW5kPTQpIgotLkxBU0Y1 OgotCS5zdHJpbmcJIkdOVSBGb3J0cmFuMjAwOCA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEu MS0zKSAtbTMyIC1tdHVuZT1nZW5lcmljIC1tYXJjaD1pNjg2IC1nIC1maW50cmluc2ljLW1vZHVs ZXMtcGF0aCAvdXNyL2xpYi9nY2MveDg2XzY0LXJlZGhhdC1saW51eC82LjEuMS8zMi9maW5jbHVk ZSIKLS5MQVNGODoKLQkuc3RyaW5nCSJtYWluIgotLkxBU0Y0OgotCS5zdHJpbmcJInB2bGEiCi0u TEFTRjY6Ci0JLnN0cmluZwkiZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAiCi0uTEFTRjE6Ci0J LnN0cmluZwkiYXJndiIKLQkuaWRlbnQJIkdDQzogKEdOVSkgNi4xLjEgMjAxNjA2MjEgKFJlZCBI YXQgNi4xLjEtMykiCi0JLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwotCi0t LVZiSmtuOVl4QnZudUNINUotLQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC1icmFuY2gu cGF0Y2ggYi9nZGItdmxhLWludGVsLWJyYW5jaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZWUxNmU5OS4uMDAwMDAwMAotLS0gYS9nZGItdmxhLWludGVsLWJyYW5jaC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDE4MzIgKzAsMCBAQAotZ2l0IGRpZmYgLS1zdGF0IC1wIGdk Yi9tYXN0ZXIuLi5nZGIvdXNlcnMvYmhlY2tlbC9mb3J0cmFuLXN0cmlkZXMKLTJjMzkyZDQxYTNm MmUzOGRlZWI5ZGI1YjdhOTNjYTQ1NjgyYmJlM2IKLQotIGdkYi9kd2FyZjJyZWFkLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KLSBnZGIvZXZhbC5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMzkxICsrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gZ2Ri L2V4cHByaW50LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArLQotIGdkYi9l eHByZXNzaW9uLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKy0KLSBnZGIvZi1l eHAueSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQyICsrLQotIGdkYi9mLXZh bHByaW50LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KLSBnZGIvZ2RidHlw ZXMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ1ICsrLQotIGdkYi9nZGJ0eXBl cy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysKLSBnZGIvcGFyc2UuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI0ICstCi0gZ2RiL3J1c3QtZXhwLnkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArLQotIGdkYi9ydXN0LWxhbmcuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKy0KLSBnZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N0YXRpYy1hcnJheXMuZXhwIHwgNDIxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysKLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwIHwgIDU1ICsr KysKLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwICAgIHwgIDQ0ICsr KwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAgICAgfCAgMjkgKysK LSBnZGIvdmFsYXJpdGguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICstCi0g Z2RiL3ZhbG9wcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE5NyArKysrKysr KysrKy0tCi0gZ2RiL3ZhbHVlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArCi0gMTggZmlsZXMgY2hhbmdlZCwgMTE5NyBpbnNlcnRpb25zKCspLCAxNzMgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwot aW5kZXggNjY1OGEzOC4uYTFhYzY1OSAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsr KyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0xNDk1Miw3ICsxNDk1Miw3IEBAIHJlYWRfc3VicmFu Z2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAg c3RydWN0IHR5cGUgKmJhc2VfdHlwZSwgKm9yaWdfYmFzZV90eXBlOwotICAgc3RydWN0IHR5cGUg KnJhbmdlX3R5cGU7Ci0gICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotLSAgc3RydWN0IGR5bmFt aWNfcHJvcCBsb3csIGhpZ2g7Ci0rICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvdywgaGlnaCwgc3Ry aWRlOwotICAgaW50IGxvd19kZWZhdWx0X2lzX3ZhbGlkOwotICAgaW50IGhpZ2hfYm91bmRfaXNf Y291bnQgPSAwOwotICAgY29uc3QgY2hhciAqbmFtZTsKLUBAIC0xNDk3Miw3ICsxNDk3Miw5IEBA IHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQotIAotICAgbG93LmtpbmQgPSBQUk9QX0NPTlNUOwotICAgaGlnaC5raW5kID0gUFJP UF9DT05TVDsKLSsgIHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKLSAgIGhpZ2guZGF0YS5jb25z dF92YWwgPSAwOwotKyAgc3RyaWRlLmRhdGEuY29uc3RfdmFsID0gMDsKLSAKLSAgIC8qIFNldCBM T1dfREVGQVVMVF9JU19WQUxJRCBpZiBjdXJyZW50IGxhbmd1YWdlIGFuZCBEV0FSRiB2ZXJzaW9u IGFsbG93Ci0gICAgICBvbWl0dGluZyBEV19BVF9sb3dlcl9ib3VuZC4gICovCi1AQCAtMTUwMDYs NiArMTUwMDgsMTMgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAKLSsgIGF0dHIg PSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOwotKyAgaWYgKGF0dHIp Ci0rICAgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZzdHJpZGUp KQotKyAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJNaXNzaW5nIERX X0FUX2J5dGVfc3RyaWRlICIKLSsgICAgICAgICAgICAgICAgICAiLSBESUUgYXQgMHgleCBbaW4g bW9kdWxlICVzXSIpLAotKyAgICAgICAgICAgICBkaWUtPm9mZnNldC5zZWN0X29mZiwgb2JqZmls ZV9uYW1lIChjdS0+b2JqZmlsZSkpOwotKwotICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX2xvd2VyX2JvdW5kLCBjdSk7Ci0gICBpZiAoYXR0cikKLSAgICAgYXR0cl90b19keW5hbWlj X3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3cpOwotQEAgLTE1MDgyLDcgKzE1MDkxLDcgQEAgcmVh ZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gICAgICAgJiYgIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGhpZ2guZGF0YS5j b25zdF92YWwgJiBuZWdhdGl2ZV9tYXNrKSkKLSAgICAgaGlnaC5kYXRhLmNvbnN0X3ZhbCB8PSBu ZWdhdGl2ZV9tYXNrOwotIAotLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxM LCBvcmlnX2Jhc2VfdHlwZSwgJmxvdywgJmhpZ2gpOwotKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9y YW5nZV90eXBlIChOVUxMLCBvcmlnX2Jhc2VfdHlwZSwgJmxvdywgJmhpZ2gsICZzdHJpZGUpOwot IAotICAgaWYgKGhpZ2hfYm91bmRfaXNfY291bnQpCi0gICAgIFRZUEVfUkFOR0VfREFUQSAocmFu Z2VfdHlwZSktPmZsYWdfdXBwZXJfYm91bmRfaXNfY291bnQgPSAxOwotZGlmZiAtLWdpdCBhL2dk Yi9ldmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCAwMGExMDdjLi45MWQ4YTAzIDEwMDY0NAotLS0t IGEvZ2RiL2V2YWwuYwotKysrIGIvZ2RiL2V2YWwuYwotQEAgLTM5OSwyOSArMzk5LDMyNSBAQCBp bml0X2FycmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxl bWVudCwKLSAgIHJldHVybiBpbmRleDsKLSB9Ci0gCi0rLyogRXZhbHVhdGVzIGFueSBvcGVyYXRp b24gb24gRm9ydHJhbiBhcnJheXMgb3Igc3RyaW5ncyB3aXRoIGF0IGxlYXN0Ci0rICAgb25lIHVz ZXIgcHJvdmlkZWQgcGFyYW1ldGVyLiAgRXhwZWN0cyB0aGUgaW5wdXQgQVJSQVkgdG8gYmUgZWl0 aGVyCi0rICAgYW4gYXJyYXksIG9yIGEgc3RyaW5nLiAgRXZhbHVhdGVzIEVYUCBieSBpbmNyZW1l bnRpbmcgUE9TLCBhbmQKLSsgICB3cml0ZXMgdGhlIGNvbnRlbnQgZnJvbSB0aGUgZWx0IHN0YWNr IGludG8gYSBsb2NhbCBzdHJ1Y3QuICBOQVJHUwotKyAgIHNwZWNpZmllcyBudW1iZXIgb2YgbGl0 ZXJhbCBvciByYW5nZSBhcmd1bWVudHMgdGhlIHVzZXIgcHJvdmlkZWQuCi0rICAgTkFSR1MgbXVz dCBiZSB0aGUgc2FtZSBudW1iZXIgYXMgQVJSQVkgaGFzIGRpbWVuc2lvbnMuICAqLwotKwotIHN0 YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICph cnJheSwKLS0JCSAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3Np ZGUgbm9zaWRlKQotK3ZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwKLSsJCSAgICBpbnQgKnBvcywgaW50IG5hcmdzLCBlbnVtIG5v c2lkZSBub3NpZGUpCi0gewotLSAgaW50IHBjID0gKCpwb3MpICsgMTsKLSsgIGludCBpLCBkaW1f Y291bnQgPSAwOwotICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0tICBzdHJ1Y3Qg dHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmIChUWVBFX0lOREVYX1RZUEUgKHZhbHVlX3R5cGUg KGFycmF5KSkpOwotLSAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGUKLS0gICAgPSAoZW51bSBy YW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOwotLSAK LS0gICpwb3MgKz0gMzsKLS0KLS0gIGlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxU IHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQotLSAgICBsb3dfYm91bmQgPSBU WVBFX0xPV19CT1VORCAocmFuZ2UpOwotLSAgZWxzZQotLSAgICBsb3dfYm91bmQgPSB2YWx1ZV9h c19sb25nIChldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSkpOwot KyAgc3RydWN0IHZhbHVlICpuZXdfYXJyYXkgPSBhcnJheTsKLSsgIHN0cnVjdCB0eXBlICphcnJh eV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAobmV3X2FycmF5KSk7Ci0rICBzdHJ1 Y3QgdHlwZSAqZWx0X3R5cGU7Ci0rCi0rICB0eXBlZGVmIHN0cnVjdCBzdWJzY3JpcHRfcmFuZ2UK LSsgIHsKLSsgICAgZW51bSByYW5nZV90eXBlIGY5MF9yYW5nZV90eXBlOwotKyAgICBMT05HRVNU IGxvdywgaGlnaCwgc3RyaWRlOwotKyAgfSBzdWJzY3JpcHRfcmFuZ2U7Ci0rCi0rICB0eXBlZGVm IGVudW0gc3Vic2NyaXB0X2tpbmQKLSsgIHsKLSsgICAgU1VCU0NSSVBUX1JBTkdFLCAgICAvKiBl LmcuICIobG93Ym91bmQ6aGlnaGJvdW5kKSIgICovCi0rICAgIFNVQlNDUklQVF9JTkRFWCAgICAv KiBlLmcuICIobGl0ZXJhbCkiICAqLwotKyAgfSBraW5kOwotKwotKyAgLyogTG9jYWwgc3RydWN0 IHRvIGhvbGQgdXNlciBkYXRhIGZvciBGb3J0cmFuIHN1YmFycmF5IGRpbWVuc2lvbnMuICAqLwot KyAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZQotKyAgewotKyAgICAvKiBGb3IgZXZlcnkgZGltZW5z aW9uLCB3ZSBhcmUgZWl0aGVyIHdvcmtpbmcgb24gYSByYW5nZSBvciBhbiBpbmRleAotKyAgICAg ICBleHByZXNzaW9uLCBzbyB3ZSBzdG9yZSB0aGlzIGluZm8gc2VwYXJhdGVseSBmb3IgbGF0ZXIu ICAqLwotKyAgICBlbnVtIHN1YnNjcmlwdF9raW5kIGtpbmQ7Ci0rCi0rICAgIC8qIFdlIGFsc28g c3RvcmUgZWl0aGVyIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmQgaW5mbywgb3IgdGhlIGluZGV4 Ci0rICAgICAgIG51bWJlci4gIEJlZm9yZSBldmFsdWF0aW9uIG9mIHRoZSBpbnB1dCB2YWx1ZXMs IHdlIGRvIG5vdCBrbm93IGlmIHdlIGFyZQotKyAgICAgICBhY3R1YWxseSB3b3JraW5nIG9uIGEg cmFuZ2Ugb2YgcmFuZ2VzLCBvciBhbiBpbmRleCBpbiBhIHJhbmdlLiAgU28gYXMgYQotKyAgICAg ICBmaXJzdCBzdGVwIHdlIHN0b3JlIGFsbCBpbnB1dCBpbiBhIHVuaW9uLiAgVGhlIGFycmF5IGNh bGN1bGF0aW9uIGl0c2VsZgotKyAgICAgICBkZWFscyB3aXRoIHRoaXMgbGF0ZXIgb24uICAqLwot KyAgICB1bmlvbiBlbGVtZW50X3JhbmdlCi0rICAgIHsKLSsgICAgICBzdWJzY3JpcHRfcmFuZ2Ug cmFuZ2U7Ci0rICAgICAgTE9OR0VTVCBudW1iZXI7Ci0rICAgIH0gVTsKLSsgIH0gKnN1YnNjcmlw dF9hcnJheTsKLSsKLSsgIC8qIENoZWNrIGlmIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHByb3Zp ZGVkIGJ5IHRoZSB1c2VyIG1hdGNoZXMKLSsgICAgIHRoZSBudW1iZXIgb2YgZGltZW5zaW9uIG9m IHRoZSBhcnJheS4gIEEgc3RyaW5nIGhhcyBvbmx5IG9uZQotKyAgICAgZGltZW5zaW9uLiAgKi8K LSsgIGlmIChuYXJncyAhPSBjYWxjX2Y3N19hcnJheV9kaW1zICh2YWx1ZV90eXBlIChuZXdfYXJy YXkpKSkKLSsgICAgZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOwotKwot KyAgc3Vic2NyaXB0X2FycmF5ID0gKHN0cnVjdCBzdWJzY3JpcHRfc3RvcmUqKSBhbGxvY2EgKHNp emVvZiAoKnN1YnNjcmlwdF9hcnJheSkgKiBuYXJncyk7Ci0rCi0rICAvKiBQYXJzZSB0aGUgdXNl ciBpbnB1dCBpbnRvIHRoZSBTVUJTQ1JJUFRfQVJSQVkgdG8gc3RvcmUgaXQuICBXZSBuZWVkCi0r ICAgICB0byBldmFsdWF0ZSBpdCBmaXJzdCwgYXMgdGhlIGlucHV0IGlzIGZyb20gbGVmdC10by1y aWdodC4gIFRoZQotKyAgICAgYXJyYXkgaXMgc3RvcmVkIGZyb20gcmlnaHQtdG8tbGVmdC4gIFNv IHdlIGhhdmUgdG8gdXNlIHRoZSB1c2VyCi0rICAgICBpbnB1dCBpbiByZXZlcnNlIG9yZGVyLiAg TGF0ZXIgb24sIHdlIG5lZWQgdGhlIGlucHV0IGluZm9ybWF0aW9uIHRvCi0rICAgICByZS1jYWxj dWxhdGUgdGhlIG91dHB1dCBhcnJheS4gIEZvciBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMsIHdl Ci0rICAgICBjYW4gYmUgZGVhbGluZyB3aXRoIGFueSBwb3NzaWJsZSBjb21iaW5hdGlvbiBvZiBy YW5nZXMgYW5kIGluZGljZXMKLSsgICAgIGZvciBldmVyeSBkaW1lbnNpb24uICAqLwotKyAgZm9y IChpID0gMDsgaSA8IG5hcmdzOyBpKyspCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgc3Vic2NyaXB0 X3N0b3JlICppbmRleCA9ICZzdWJzY3JpcHRfYXJyYXlbaV07Ci0gCi0tICBpZiAocmFuZ2VfdHlw ZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFV TFQpCi0tICAgIGhpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlKTsKLS0gIGVsc2UK LS0gICAgaGlnaF9ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9U WVBFLCBleHAsIHBvcywgbm9zaWRlKSk7Ci0rICAgICAgLyogVGhlIHVzZXIgaW5wdXQgaXMgYSBy YW5nZSwgd2l0aCBvciB3aXRob3V0IGxvd2VyIGFuZCB1cHBlciBib3VuZC4KLSsJIEUuZy46ICJw IGFycnkoMjo1KSIsICJwIGFycnkoIDo1KSIsICJwIGFycnkoIDogKSIsIGV0Yy4gICovCi0rICAg ICAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFOR0UpCi0rCXsKLSsJICBpbnQg cGMgPSAoKnBvcykgKyAxOwotKwkgIHN1YnNjcmlwdF9yYW5nZSAqcmFuZ2U7Ci0rCi0rCSAgaW5k ZXgtPmtpbmQgPSBTVUJTQ1JJUFRfUkFOR0U7Ci0rCSAgcmFuZ2UgPSAmaW5kZXgtPlUucmFuZ2U7 Ci0rCi0rCSAgKnBvcyArPSAzOwotKwkgIHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9IChlbnVtIHJh bmdlX3R5cGUpIGV4cC0+ZWx0c1twY10ubG9uZ2NvbnN0OwotKwotKwkgIC8qIElmIGEgbG93ZXIg Ym91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCB0aGUgYml0IGhhcyBiZWVuCi0rCSAgICAg c2V0IGFuZCB3ZSBjYW4gYXNzaWduIHRoZSB2YWx1ZSBmcm9tIHRoZSBlbHQgc3RhY2suICBTYW1l IGZvcgotKwkgICAgIHVwcGVyIGJvdW5kLiAgKi8KLSsJICBpZiAoKHJhbmdlLT5mOTBfcmFuZ2Vf dHlwZSAmIFNVQkFSUkFZX0xPV19CT1VORCkKLSsJICAgICAgPT0gU1VCQVJSQVlfTE9XX0JPVU5E KQotKwkgICAgcmFuZ2UtPmxvdyA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVM TF9UWVBFLCBleHAsCi0rCQkJCQkJCSBwb3MsIG5vc2lkZSkpOwotKwkgIGlmICgocmFuZ2UtPmY5 MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkKLSsJICAgICAgPT0gU1VCQVJSQVlf SElHSF9CT1VORCkKLSsJICAgIHJhbmdlLT5oaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVf c3ViZXhwIChOVUxMX1RZUEUsIGV4cCwKLSsJCQkJCQkJICBwb3MsIG5vc2lkZSkpOwotKwotKwkg IC8qIEFzc2lnbiB0aGUgdXNlcidzIHN0cmlkZSB2YWx1ZSBpZiBwcm92aWRlZC4gICovCi0rCSAg aWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgJiBTVUJBUlJBWV9TVFJJREUpID09IFNVQkFSUkFZ X1NUUklERSkKLSsJICAgIHJhbmdlLT5zdHJpZGUgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9z dWJleHAgKE5VTExfVFlQRSwgZXhwLAotKwkJCQkJCQkgICAgIHBvcywgbm9zaWRlKSk7Ci0rCi0r CSAgLyogQXNzaWduIHRoZSBkZWZhdWx0IHN0cmlkZSB2YWx1ZSAnMScuICAqLwotKwkgIGVsc2UK LSsJICAgIHJhbmdlLT5zdHJpZGUgPSAxOwotKwotKwkgIC8qIENoZWNrIHRoZSBwcm92aWRlZCBz dHJpZGUgdmFsdWUgaXMgaWxsZWdhbCwgYWthICcwJy4gICovCi0rCSAgaWYgKHJhbmdlLT5zdHJp ZGUgPT0gMCkKLSsJICAgIGVycm9yIChfKCJTdHJpZGUgbXVzdCBub3QgYmUgMCIpKTsKLSsJfQot KyAgICAgIC8qIFVzZXIgaW5wdXQgaXMgYW4gaW5kZXguICBFLmcuOiAicCBhcnJ5KDUpIi4gICov Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgc3RydWN0IHZhbHVlICp2YWw7Ci0rCi0rCSAgaW5kZXgt PmtpbmQgPSBTVUJTQ1JJUFRfSU5ERVg7Ci0rCi0rCSAgLyogRXZhbHVhdGUgZWFjaCBzdWJzY3Jp cHQ7IGl0IG11c3QgYmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gIFRoaXMKLSsJICAgICBlbnN1 cmVzIHRoZSB2YWxpZGl0eSBvZiB0aGUgcHJvdmlkZWQgaW5kZXguICAqLwotKwkgIHZhbCA9IGV2 YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLSsJICBpbmRl eC0+VS5udW1iZXIgPSB2YWx1ZV9hc19sb25nICh2YWwpOwotKwl9Ci0rCi0rICAgIH0KLSsKLSsg IC8qIFRyYXZlcnNlIHRoZSBhcnJheSBmcm9tIHJpZ2h0IHRvIGxlZnQgYW5kIHNldCB0aGUgaGln aCBhbmQgbG93IGJvdW5kcwotKyAgICAgZm9yIGxhdGVyIHVzZS4gICovCi0rICBmb3IgKGkgPSBu YXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN1YnNjcmlwdF9z dG9yZSAqaW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOwotKyAgICAgIHN0cnVjdCB0eXBlICpp bmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKLSsKLSsgICAgICBzd2l0 Y2ggKGluZGV4LT5raW5kKQotKwl7Ci0rCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgotKwkgIHsKLSsK LSsJICAgIC8qIFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIHVz ZXIsIHdlIG11c3QKLSsJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkgYXMg YSByYW5nZS4gIFdlIHNpbXBseQotKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGljaCB0 ZWxscyB1cyBob3cgbWFueSB0aW1lcyB3ZSBhcmUKLSsJICAgICAgIGNhbGxpbmcgVkFMVUVfU0xJ Q0VfMS4gICovCi0rCSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJhbmdl OwotKwotKwkgICAgLyogSWYgbm8gbG93ZXIgYm91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1c2Vy LCB3ZSB0YWtlIHRoZQotKwkgICAgICAgZGVmYXVsdCBib3VuZGFyeS4gIFNhbWUgZm9yIHRoZSBo aWdoIGJvdW5kLiAgKi8KLSsJICAgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJS QVlfTE9XX0JPVU5EKSA9PSAwKQotKwkgICAgICByYW5nZS0+bG93ID0gVFlQRV9MT1dfQk9VTkQg KGluZGV4X3R5cGUpOwotKwotKwkgICAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgJiBTVUJB UlJBWV9ISUdIX0JPVU5EKSA9PSAwKQotKwkgICAgICByYW5nZS0+aGlnaCA9IFRZUEVfSElHSF9C T1VORCAoaW5kZXhfdHlwZSk7Ci0rCi0rCSAgICAvKiBCb3RoIHVzZXIgcHJvdmlkZWQgbG93IGFu ZCBoaWdoIGJvdW5kIGhhdmUgdG8gYmUgaW5zaWRlIHRoZQotKwkgICAgICAgYXJyYXkgYm91bmRz LiAgVGhyb3cgYW4gZXJyb3IgaWYgbm90LiAgKi8KLSsJICAgIGlmIChyYW5nZS0+bG93IDwgVFlQ RV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpCi0rCQl8fCByYW5nZS0+bG93ID4gVFlQRV9ISUdIX0JP VU5EIChpbmRleF90eXBlKQotKwkJfHwgcmFuZ2UtPmhpZ2ggPCBUWVBFX0xPV19CT1VORCAoaW5k ZXhfdHlwZSkKLSsJCXx8IHJhbmdlLT5oaWdoID4gVFlQRV9ISUdIX0JPVU5EIChpbmRleF90eXBl KSkKLSsJICAgICAgZXJyb3IgKF8oInByb3ZpZGVkIGJvdW5kKHMpIG91dHNpZGUgYXJyYXkgYm91 bmQocykiKSk7Ci0rCi0rCSAgICAvKiBGb3IgYSBuZWdhdGl2ZSBzdHJpZGUgdGhlIGxvd2VyIGJv dW5kYXJ5IG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhlCi0rCSAgICAgICB1cHBlciBib3VuZGFyeS4K LSsJICAgICAgIEZvciBhIHBvc2l0aXZlIHN0cmlkZSB0aGUgbG93ZXIgYm91bmRhcnkgbXVzdCBi ZSBzbWFsbGVyIHRoYW4gdGhlCi0rCSAgICAgICB1cHBlciBib3VuZGFyeS4gICovCi0rCSAgICBp ZiAoKHJhbmdlLT5zdHJpZGUgPCAwICYmIHJhbmdlLT5sb3cgPCByYW5nZS0+aGlnaCkKLSsJCXx8 IChyYW5nZS0+c3RyaWRlID4gMCAmJiByYW5nZS0+bG93ID4gcmFuZ2UtPmhpZ2gpKQotKwkgICAg ICBlcnJvciAoXygiV3JvbmcgdmFsdWUgcHJvdmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRhcmll cyIpKTsKLSsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgU1VCU0NSSVBUX0lOREVYOgot KwkgIGJyZWFrOwotKwotKwl9Ci0rCi0rICAgICAgIGFycmF5X3R5cGUgPSBUWVBFX1RBUkdFVF9U WVBFIChhcnJheV90eXBlKTsKLSsgICAgfQotKwotKyAgLyogUmVzZXQgQVJSQVlfVFlQRSBiZWZv cmUgc2xpY2luZy4qLwotKyAgYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KG5ld19hcnJheSkpOwotKwotKyAgLyogVHJhdmVyc2UgdGhlIGFycmF5IGZyb20gcmlnaHQgdG8g bGVmdCBhbmQgZXZhbHVhdGUgZWFjaCBjb3JyZXNwb25kaW5nCi0rICAgICB1c2VyIGlucHV0LiAg VkFMVUVfU1VCU0NSSVBUIGlzIGNhbGxlZCBmb3IgZXZlcnkgaW5kZXgsIHVudGlsIGEgcmFuZ2UK LSsgICAgIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLiAgQWZ0ZXIgYSByYW5nZSBleHByZXNzaW9u IGhhcyBiZWVuIGV2YWx1YXRlZCwKLSsgICAgIGV2ZXJ5IHN1YnNlcXVlbnQgZXhwcmVzc2lvbiBp cyBhbHNvIHRyZWF0ZWQgYXMgYSByYW5nZS4gICovCi0rICBmb3IgKGkgPSBuYXJncyAtIDE7IGkg Pj0gMDsgaS0tKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAqaW5kZXgg PSAmc3Vic2NyaXB0X2FycmF5W2ldOwotKyAgICAgIHN0cnVjdCB0eXBlICppbmRleF90eXBlID0g VFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKLSsKLSsgICAgICBzd2l0Y2ggKGluZGV4LT5r aW5kKQotKwl7Ci0rCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgotKwkgIHsKLSsKLSsJICAgIC8qIFdo ZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHdlIG11c3QK LSsJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkgYXMgYSByYW5nZS4gIFdl IHNpbXBseQotKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGljaCB0ZWxscyB1cyBob3cg bWFueSB0aW1lcyB3ZSBhcmUKLSsJICAgICAgIGNhbGxpbmcgVkFMVUVfU0xJQ0VfMS4gICovCi0r CSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJhbmdlOwotKwotKwkgICAg LyogRElNX0NPVU5UIGNvdW50cyBldmVyeSB1c2VyIGFyZ3VtZW50IHRoYXQgaXMgdHJlYXRlZCBh cyBhIHJhbmdlLgotKwkgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGV4cHJlc3Npb25zIGxp a2UgJ3ByaW50IGFycmF5KDcsIDg6OSkuCi0rCSAgICAgICBIZXJlIHRoZSBmaXJzdCBhcmd1bWVu dCBpcyBhIGxpdGVyYWwsIGJ1dCBtdXN0IGJlIHRyZWF0ZWQgYXMgYQotKwkgICAgICAgcmFuZ2Ug YXJndW1lbnQgdG8gYWxsb3cgdGhlIGNvcnJlY3Qgb3V0cHV0IHJlcHJlc2VudGF0aW9uLiAgKi8K LSsJICAgIGRpbV9jb3VudCsrOwotKwotKwkgICAgbmV3X2FycmF5Ci0rCSAgICAgID0gdmFsdWVf c2xpY2VfMSAobmV3X2FycmF5LCByYW5nZS0+bG93LAotKwkJCSAgICAgICByYW5nZS0+aGlnaCAt IHJhbmdlLT5sb3cgKyAxLAotKwkJCSAgICAgICByYW5nZS0+c3RyaWRlLCBkaW1fY291bnQpOwot KwkgIH0KLSsJICBicmVhazsKLSsKLSsJY2FzZSBTVUJTQ1JJUFRfSU5ERVg6Ci0rCSAgewotKwkg ICAgLyogRElNX0NPVU5UIG9ubHkgc3RheXMgJzAnIHdoZW4gbm8gcmFuZ2UgYXJndW1lbnQgd2Fz IHByb2Nlc3NlZAotKwkgICAgICAgYmVmb3JlLCBzdGFydGluZyBmcm9tIHRoZSBsYXN0IGRpbWVu c2lvbi4gIFRoaXMgd2F5IHdlIGNhbgotKwkgICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2YgZGlt ZW5zaW9ucyBmcm9tIHRoZSByZXN1bHQgYXJyYXkuCi0rCSAgICAgICBIb3dldmVyLCBpZiBhIHJh bmdlIGhhcyBiZWVuIHByb2Nlc3NlZCBiZWZvcmUgYW4gaW5kZXgsIHdlCi0rCSAgICAgICB0cmVh dCB0aGUgaW5kZXggbGlrZSBhIHJhbmdlIHdpdGggZXF1YWwgbG93LSBhbmQgaGlnaCBib3VuZHMK LSsJICAgICAgIHRvIGdldCB0aGUgdmFsdWUgb2Zmc2V0IHJpZ2h0LiAgKi8KLSsJICAgIGlmIChk aW1fY291bnQgPT0gMCkKLSsJICAgICAgbmV3X2FycmF5Ci0rCSAgICAgICAgPSB2YWx1ZV9zdWJz Y3JpcHRlZF9ydmFsdWUgKG5ld19hcnJheSwgaW5kZXgtPlUubnVtYmVyLAotKwkJCQkJICAgIGY3 N19nZXRfbG93ZXJib3VuZCAodmFsdWVfdHlwZQotKwkJCQkJCQkJICAobmV3X2FycmF5KSkpOwot KwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlkaW1fY291bnQrKzsKLSsKLSsJCS8qIFdlIG1pZ2h0 IGVuZCB1cCBoZXJlLCBiZWNhdXNlIHdlIGhhdmUgdG8gdHJlYXQgdGhlIHByb3ZpZGVkCi0rCQkg ICBpbmRleCBsaWtlIGEgcmFuZ2UuIEJ1dCBub3cgVkFMVUVfU1VCU0NSSVBURURfUlZBTFVFCi0r CQkgICBjYW5ub3QgZG8gdGhlIHJhbmdlIGNoZWNrcyBmb3IgdXMuIFNvIHdlIGhhdmUgdG8gbWFr ZSBzdXJlCi0rCQkgICBvdXJzZWx2ZXMgdGhhdCB0aGUgdXNlciBwcm92aWRlZCBpbmRleCBpcyBp bnNpZGUgdGhlCi0rCQkgICBhcnJheSBib3VuZHMuICBUaHJvdyBhbiBlcnJvciBpZiBub3QuICAq LwotKwkJaWYgKGluZGV4LT5VLm51bWJlciA8IFRZUEVfTE9XX0JPVU5EIChpbmRleF90eXBlKQot KwkJICAgICYmIGluZGV4LT5VLm51bWJlciA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSkp Ci0rCQkgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5IGJvdW5kKHMp IikpOwotKwotKwkJaWYgKGluZGV4LT5VLm51bWJlciA+IFRZUEVfTE9XX0JPVU5EIChpbmRleF90 eXBlKQotKwkJICAgICYmIGluZGV4LT5VLm51bWJlciA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhf dHlwZSkpCi0rCQkgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5IGJv dW5kKHMpIikpOwotKwotKwkJbmV3X2FycmF5ID0gdmFsdWVfc2xpY2VfMSAobmV3X2FycmF5LAot KwkJCQkJICAgaW5kZXgtPlUubnVtYmVyLAotKwkJCQkJICAgMSwgLyogQ09VTlQgaXMgJzEnIGVs ZW1lbnQgICovCi0rCQkJCQkgICAxLCAvKiBTVFJJREUgc2V0IHRvICcxJyAgKi8KLSsJCQkJCSAg IGRpbV9jb3VudCk7Ci0rCSAgICAgIH0KLSsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsgICAg ICBhcnJheV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7Ci0rICAgIH0KLSsK LSsgIC8qIFdpdGggRElNX0NPVU5UID4gMSB3ZSBjdXJyZW50bHkgaGF2ZSBhIG9uZSBkaW1lbnNp b25hbCBhcnJheSwgYnV0IGV4cGVjdAotKyAgICAgYW4gYXJyYXkgb2YgYXJyYXlzLCBkZXBlbmRp bmcgb24gaG93IG1hbnkgcmFuZ2VzIGhhdmUgYmVlbiBwcm92aWRlZCBieQotKyAgICAgdGhlIHVz ZXIuICBTbyB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGFycmF5IGRpbWVuc2lvbnMgZm9yIHByaW50 aW5nIGl0Ci0rICAgICBjb3JyZWN0bHkuCi0rICAgICBTdGFydGluZyBmcm9tIHJpZ2h0IHRvIGxl ZnQgaW4gdGhlIHVzZXIgaW5wdXQsIGFmdGVyIHdlIGhpdCB0aGUgZmlyc3QKLSsgICAgIHJhbmdl IGFyZ3VtZW50IGV2ZXJ5IHN1YnNlcXVlbnQgYXJndW1lbnQgaXMgYWxzbyB0cmVhdGVkIGFzIGEg cmFuZ2UuCi0rICAgICBFLmcuOgotKyAgICAgInAgYXJ5KDMsIDcsIDI6MTUpIiBpbiBGb3J0cmFu IGhhcyBvbmx5IDEgZGltZW5zaW9uLCBidXQgd2UgY2FsY3VsYXRlZCAzCi0rICAgICByYW5nZXMu Ci0rICAgICAicCBhcnkoMywgNzoxMiwgNCkiIGluIEZvcnRyYW4gaGFzIG9ubHkgMSBkaW1lbnNp b24sIGJ1dCB3ZSBjYWxjdWxhdGVkIDIKLSsgICAgIHJhbmdlcy4KLSsgICAgICJwIGFyeSgyOjQs IDUsIDcpIiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBhbmQgd2UgY2FsY3VsYXRl ZCAxCi0rICAgICByYW5nZS4gICovCi0rICBpZiAoZGltX2NvdW50ID4gMSkKLSsgICAgewotKyAg ICAgIHN0cnVjdCB2YWx1ZSAqdiA9IE5VTEw7Ci0rCi0rICAgICAgZWx0X3R5cGUgPSBUWVBFX1RB UkdFVF9UWVBFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKLSsKLSsgICAgICAvKiBFdmVyeSBT VUJTQ1JJUFRfUkFOR0UgaW4gdGhlIHVzZXIgaW5wdXQgc2lnbmlmaWVzIGFuIGFjdHVhbCByYW5n ZSBpbgotKwkgdGhlIG91dHB1dCBhcnJheS4gIFNvIHdlIHRyYXZlcnNlIHRoZSBTVUJTQ1JJUFRf QVJSQVkgYWdhaW4sIGxvb2tpbmcKLSsJIGZvciBhIHJhbmdlIGVudHJ5LiAgV2hlbiB3ZSBmaW5k IG9uZSwgd2UgdXNlIHRoZSByYW5nZSBpbmZvIHRvIGNyZWF0ZQotKwkgYW4gYWRkaXRpb25hbCBy YW5nZV90eXBlIHRvIHNldCB0aGUgY29ycmVjdCBib3VuZHMgYW5kIGRpbWVuc2lvbnMgZm9yCi0r CSB0aGUgb3V0cHV0IGFycmF5LiAgSW4gYWRkaXRpb24sIHdlIG1heSBoYXZlIGEgc3RyaWRlIHZh bHVlIHRoYXQgaXMgbm90Ci0rCSAnMScsIGZvcmNpbmcgdXMgdG8gYWRqdXN0IHRoZSBudW1iZXIg b2YgZWxlbWVudHMgaW4gYSByYW5nZSwgYWNjb3JkaW5nCi0rCSB0byB0aGUgc3RyaWRlIHZhbHVl LiAgKi8KLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLSsJewotKwkgIHN0cnVj dCBzdWJzY3JpcHRfc3RvcmUgKmluZGV4ID0gJnN1YnNjcmlwdF9hcnJheVtpXTsKLSsKLSsJICBp ZiAoaW5kZXgtPmtpbmQgPT0gU1VCU0NSSVBUX1JBTkdFKQotKwkgICAgewotKwkgICAgICBzdHJ1 Y3QgdHlwZSAqcmFuZ2VfdHlwZSwgKmludGVyaW1fYXJyYXlfdHlwZTsKLSsKLSsJICAgICAgaW50 IG5ld19sZW5ndGg7Ci0gCi0tICByZXR1cm4gdmFsdWVfc2xpY2UgKGFycmF5LCBsb3dfYm91bmQs IGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKLSsJICAgICAgLyogVGhlIGxlbmd0aCBvZiBh IHN1Yi1kaW1lbnNpb24gd2l0aCBhbGwgZWxlbWVudHMgYmV0d2VlbiB0aGUKLSsJCSBib3VuZHMg cGx1cyB0aGUgc3RhcnQgZWxlbWVudCBpdHNlbGYuICBJdCBtYXkgYmUgbW9kaWZpZWQgYnkKLSsJ CSBhIHVzZXIgcHJvdmlkZWQgc3RyaWRlIHZhbHVlLiAgKi8KLSsJICAgICAgbmV3X2xlbmd0aCA9 IGluZGV4LT5VLnJhbmdlLmhpZ2ggLSBpbmRleC0+VS5yYW5nZS5sb3c7Ci0rCi0rCSAgICAgIG5l d19sZW5ndGggLz0gaW5kZXgtPlUucmFuZ2Uuc3RyaWRlOwotKwotKwkgICAgICByYW5nZV90eXBl Ci0rCQk9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwKLSsJCQkJCSAgICBlbHRfdHlw ZSwKLSsJCQkJCSAgICBpbmRleC0+VS5yYW5nZS5sb3csCi0rCQkJCQkgICAgaW5kZXgtPlUucmFu Z2UubG93ICsgbmV3X2xlbmd0aCk7Ci0rCi0rCSAgICAgIGludGVyaW1fYXJyYXlfdHlwZSA9IGNy ZWF0ZV9hcnJheV90eXBlIChOVUxMLAotKwkJCQkJCSAgICAgIGVsdF90eXBlLAotKwkJCQkJCSAg ICAgIHJhbmdlX3R5cGUpOwotKwotKwkgICAgICBUWVBFX0NPREUgKGludGVyaW1fYXJyYXlfdHlw ZSkKLSsJCT0gVFlQRV9DT0RFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKLSsKLSsJICAgICAg diA9IGFsbG9jYXRlX3ZhbHVlIChpbnRlcmltX2FycmF5X3R5cGUpOwotKwotKwkgICAgICBlbHRf dHlwZSA9IHZhbHVlX3R5cGUgKHYpOwotKwkgICAgfQotKwotKwl9Ci0rICAgICAgdmFsdWVfY29u dGVudHNfY29weSAodiwgMCwgbmV3X2FycmF5LCAwLCBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpKTsK LSsgICAgICByZXR1cm4gdjsKLSsgICAgfQotKwotKyAgcmV0dXJuIG5ld19hcnJheTsKLSB9Ci0g Ci0gCi1AQCAtMTgxMCwxOSArMjEwNiw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3Ry dWN0IHR5cGUgKmV4cGVjdF90eXBlLAotICAgICAgIHN3aXRjaCAoY29kZSkKLSAJewotIAljYXNl IFRZUEVfQ09ERV9BUlJBWToKLS0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9S QU5HRSkKLS0JICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFyZzEsIGV4cCwgcG9zLCBu b3NpZGUpOwotLQkgIGVsc2UKLS0JICAgIGdvdG8gbXVsdGlfZjc3X3N1YnNjcmlwdDsKLS0KLSAJ Y2FzZSBUWVBFX0NPREVfU1RSSU5HOgotLQkgIGlmIChleHAtPmVsdHNbKnBvc10ub3Bjb2RlID09 IE9QX1JBTkdFKQotLQkgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBw b3MsIG5vc2lkZSk7Ci0tCSAgZWxzZQotLQkgICAgewotLQkgICAgICBhcmcyID0gZXZhbHVhdGVf c3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOwotLQkgICAgICByZXR1cm4g dmFsdWVfc3Vic2NyaXB0IChhcmcxLCB2YWx1ZV9hc19sb25nIChhcmcyKSk7Ci0tCSAgICB9Ci0r CSAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5hcmdzLCBub3Np ZGUpOwotIAotIAljYXNlIFRZUEVfQ09ERV9QVFI6Ci0gCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci1A QCAtMjIyMyw0OSArMjUwOCw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAotIAl9Ci0gICAgICAgcmV0dXJuIChhcmcxKTsKLSAKLS0gICAgbXVs dGlfZjc3X3N1YnNjcmlwdDoKLS0gICAgICB7Ci0tCUxPTkdFU1Qgc3Vic2NyaXB0X2FycmF5W01B WF9GT1JUUkFOX0RJTVNdOwotLQlpbnQgbmRpbWVuc2lvbnMgPSAxLCBpOwotLQlzdHJ1Y3QgdmFs dWUgKmFycmF5ID0gYXJnMTsKLS0KLS0JaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKLS0J ICBlcnJvciAoXygiVG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9G T1JUUkFOX0RJTVMpOwotLQotLQluZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5 cGUpOwotLQotLQlpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCi0tCSAgZXJyb3IgKF8oIldyb25n IG51bWJlciBvZiBzdWJzY3JpcHRzIikpOwotLQotLQlnZGJfYXNzZXJ0IChuYXJncyA+IDApOwot LQotLQkvKiBOb3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQg ZXhwcmVzc2lvbiAKLS0JICAgbGV0IHVzIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMgZWxl bWVudCBleGlzdHMgaW4gdGhlIGFycmF5LiAgKi8KLS0KLS0JLyogVGFrZSBhcnJheSBpbmRpY2Vz IGxlZnQgdG8gcmlnaHQuICAqLwotLQlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLS0JICB7 Ci0tCSAgICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGlu dGVnZXIgaW4gRjc3LiAgKi8KLS0JICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2Vy Y2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCi0tCSAgICAvKiBGaWxsIGluIHRoZSBzdWJzY3Jp cHQgYXJyYXkuICAqLwotLQotLQkgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNfbG9u ZyAoYXJnMik7Ci0tCSAgfQotLQotLQkvKiBJbnRlcm5hbCB0eXBlIG9mIGFycmF5IGlzIGFycmFu Z2VkIHJpZ2h0IHRvIGxlZnQuICAqLwotLQlmb3IgKGkgPSBuYXJnczsgaSA+IDA7IGktLSkKLS0J ICB7Ci0tCSAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFycmF5KSk7Ci0tCSAgICBMT05HRVNUIGluZGV4ID0gc3Vic2NyaXB0X2FycmF5W2kg LSAxXTsKLS0KLS0JICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcnJheSwg aW5kZXgsCi0tCQkJCQkgICAgICBmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpKTsKLS0J ICB9Ci0tCi0tCXJldHVybiBhcnJheTsKLS0gICAgICB9Ci0tCi0gICAgIGNhc2UgQklOT1BfTE9H SUNBTF9BTkQ6Ci0gICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAs IHBvcywgbm9zaWRlKTsKLSAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLUBAIC0zMTIz LDYgKzMzNjUsOSBAQCBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlw ZSkKLSAgIGludCBuZGltZW4gPSAxOwotICAgc3RydWN0IHR5cGUgKnRtcF90eXBlOwotIAotKyAg aWYgKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgPT0gVFlQRV9DT0RFX1NUUklORykKLSsgICAgcmV0 dXJuIDE7Ci0rCi0gICBpZiAoKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgIT0gVFlQRV9DT0RFX0FS UkFZKSkKLSAgICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZvciBhIG5vbi1hcnJh eSB0eXBlIikpOwotIAotZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5jIGIvZ2RiL2V4cHByaW50 LmMKLWluZGV4IGMzN2VjYjAuLjIxNGQ1OGUgMTAwNjQ0Ci0tLS0gYS9nZGIvZXhwcHJpbnQuYwot KysrIGIvZ2RiL2V4cHByaW50LmMKLUBAIC01NjgsMTIgKzU2OCwxMCBAQCBwcmludF9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAotIAkqcG9zICs9IDI7 Ci0gCi0gCWZwdXRzX2ZpbHRlcmVkICgiUkFOR0UoIiwgc3RyZWFtKTsKLS0JaWYgKHJhbmdlX3R5 cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUCi0tCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9V TkRfREVGQVVMVCkKLSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKSA9PSBT VUJBUlJBWV9MT1dfQk9VTkQpCi0gCSAgcHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFtLCBQ UkVDX0FCT1ZFX0NPTU1BKTsKLSAJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0cmVhbSk7Ci0tCWlm IChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUCi0tCSAgICB8fCByYW5nZV90eXBlID09 IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9C T1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKLSAJICBwcmludF9zdWJleHAgKGV4cCwgcG9z LCBzdHJlYW0sIFBSRUNfQUJPVkVfQ09NTUEpOwotIAlmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJl YW0pOwotIAlyZXR1cm47Ci1AQCAtMTA1NSwxNiArMTA1MywxNiBAQCBkdW1wX3N1YmV4cF9ib2R5 X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAotIAlzd2l0Y2ggKHJhbmdlX3R5 cGUpCi0gCSAgewotLQkgIGNhc2UgQk9USF9CT1VORF9ERUZBVUxUOgotKwkgIGNhc2UgU1VCQVJS QVlfTk9ORV9CT1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uJyIsIHN0cmVh bSk7Ci0gCSAgICBicmVhazsKLS0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUOgotKwkgIGNhc2Ug U1VCQVJSQVlfSElHSF9CT1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uRVhQ JyIsIHN0cmVhbSk7Ci0gCSAgICBicmVhazsKLS0JICBjYXNlIEhJR0hfQk9VTkRfREVGQVVMVDoK LSsJICBjYXNlIFNVQkFSUkFZX0xPV19CT1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFu Z2UgJ0VYUC4uJyIsIHN0cmVhbSk7Ci0gCSAgICBicmVhazsKLS0JICBjYXNlIE5PTkVfQk9VTkRf REVGQVVMVDoKLSsJICBjYXNlIChTVUJBUlJBWV9MT1dfQk9VTkQgfCBTVUJBUlJBWV9ISUdIX0JP VU5EKToKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJ0VYUC4uRVhQJyIsIHN0cmVhbSk7 Ci0gCSAgICBicmVhazsKLSAJICBkZWZhdWx0OgotQEAgLTEwNzIsMTEgKzEwNzAsOSBAQCBkdW1w X3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAkgICAgYnJl YWs7Ci0gCSAgfQotIAotLQlpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQKLS0J ICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQotKwlpZiAoKHJhbmdlX3R5 cGUgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNVQkFSUkFZX0xPV19CT1VORCkKLSAJICBlbHQg PSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0tCWlmIChyYW5nZV90eXBlID09IExP V19CT1VORF9ERUZBVUxUCi0tCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVM VCkKLSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJSQVlf SElHSF9CT1VORCkKLSAJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0g ICAgICAgfQotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2dkYi9leHByZXNzaW9uLmggYi9n ZGIvZXhwcmVzc2lvbi5oCi1pbmRleCA0OTUyZDg0Li4zNGNhNTRiIDEwMDY0NAotLS0tIGEvZ2Ri L2V4cHJlc3Npb24uaAotKysrIGIvZ2RiL2V4cHJlc3Npb24uaAotQEAgLTE1MiwxNyArMTUyLDE3 IEBAIGV4dGVybiB2b2lkIGR1bXBfcmF3X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICos Ci0gCQkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBjaGFyICopOwotIGV4dGVybiB2b2lkIGR1bXBfcHJl Zml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICopOwot IAotLS8qIEluIGFuIE9QX1JBTkdFIGV4cHJlc3Npb24sIGVpdGhlciBib3VuZCBjb3VsZCBiZSBl bXB0eSwgaW5kaWNhdGluZwotLSAgIHRoYXQgaXRzIHZhbHVlIGlzIGJ5IGRlZmF1bHQgdGhhdCBv ZiB0aGUgY29ycmVzcG9uZGluZyBib3VuZCBvZiB0aGUKLS0gICBhcnJheSBvciBzdHJpbmcuICBT byB3ZSBoYXZlIGZvdXIgc29ydHMgb2Ygc3VicmFuZ2UuICBUaGlzCi0tICAgZW51bWVyYXRpb24g dHlwZSBpcyB0byBpZGVudGlmeSB0aGlzLiAgKi8KLS0gICAKLSsvKiBJbiBhbiBPUF9SQU5HRSBl eHByZXNzaW9uLCBlaXRoZXIgYm91bmQgY2FuIGJlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCBvciBu b3QuCi0rICAgSW4gYWRkaXRpb24gdG8gdGhpcywgdGhlIHVzZXIgY2FuIGFsc28gc3BlY2lmeSBh IHN0cmlkZSB2YWx1ZSB0byBpbmRpY2F0ZWQKLSsgICBvbmx5IGNlcnRhaW4gZWxlbWVudHMgb2Yg dGhlIGFycmF5LiAgVGhpcyBlbnVtZXJhdGlvbiB0eXBlIGlzIHRvIGlkZW50aWZ5Ci0rICAgdGhp cy4gICovCi0rCi0gZW51bSByYW5nZV90eXBlCi0gICB7Ci0tICAgIEJPVEhfQk9VTkRfREVGQVVM VCwJCS8qICIoOikiICAqLwotLSAgICBMT1dfQk9VTkRfREVGQVVMVCwJCS8qICIoOmhpZ2gpIiAg Ki8KLS0gICAgSElHSF9CT1VORF9ERUZBVUxULAkJLyogIihsb3c6KSIgICovCi0tICAgIE5PTkVf Qk9VTkRfREVGQVVMVAkJLyogIihsb3c6aGlnaCkiICAqLwotKyAgICBTVUJBUlJBWV9OT05FX0JP VU5EID0gMHgwLAkJLyogIiggOiApIiAgKi8KLSsgICAgU1VCQVJSQVlfTE9XX0JPVU5EID0gMHgx LAkJLyogIihsb3c6KSIgICovCi0rICAgIFNVQkFSUkFZX0hJR0hfQk9VTkQgPSAweDIsCQkvKiAi KDpoaWdoKSIgICovCi0rICAgIFNVQkFSUkFZX1NUUklERSA9IDB4NAkJLyogIig6OnN0cmlkZSki ICAqLwotICAgfTsKLSAKLSAjZW5kaWYgLyogIWRlZmluZWQgKEVYUFJFU1NJT05fSCkgKi8KLWRp ZmYgLS1naXQgYS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55Ci1pbmRleCBlMzE0OGEzLi43MWYx ODIzIDEwMDY0NAotLS0tIGEvZ2RiL2YtZXhwLnkKLSsrKyBiL2dkYi9mLWV4cC55Ci1AQCAtMjUz LDMxICsyNTMsNjMgQEAgYXJnbGlzdCA6CXN1YnJhbmdlCi0gICAgCi0gYXJnbGlzdAk6CWFyZ2xp c3QgJywnIGV4cCAgICVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJeyBhcmdsaXN0X2xlbisrOyB9Ci0r CXwJYXJnbGlzdCAnLCcgc3VicmFuZ2UJJXByZWMgQUJPVkVfQ09NTUEKLSsJCQl7IGFyZ2xpc3Rf bGVuKys7IH0KLSAJOwotIAotIC8qIFRoZXJlIGFyZSBmb3VyIHNvcnRzIG9mIHN1YnJhbmdlIHR5 cGVzIGluIEY5MC4gICovCi0gCi0gc3VicmFuZ2U6CWV4cCAnOicgZXhwCSVwcmVjIEFCT1ZFX0NP TU1BCi0tCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IAotLQkJ CSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIE5PTkVfQk9VTkRfREVGQVVMVCk7Ci0r CQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0rCQkJICB3cml0 ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwKLSsJCQkJCQkgU1VCQVJSQVlfTE9XX0JPVU5EIHwg U1VCQVJSQVlfSElHSF9CT1VORCk7Ci0gCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRl LCBPUF9SQU5HRSk7IH0KLSAJOwotIAotIHN1YnJhbmdlOglleHAgJzonCSVwcmVjIEFCT1ZFX0NP TU1BCi0gCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0tCQkJ ICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgSElHSF9CT1VORF9ERUZBVUxUKTsKLSsJ CQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9MT1dfQk9VTkQpOwot IAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9Ci0gCTsKLSAK LSBzdWJyYW5nZToJJzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQotIAkJCXsgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwotLQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0 IChwc3RhdGUsIExPV19CT1VORF9ERUZBVUxUKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2Nz dCAocHN0YXRlLCBTVUJBUlJBWV9ISUdIX0JPVU5EKTsKLSAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bj b2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotIAk7Ci0gCi0gc3VicmFuZ2U6CSc6JwklcHJlYyBB Qk9WRV9DT01NQQotIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0Up OwotLQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIEJPVEhfQk9VTkRfREVGQVVM VCk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfTk9ORV9C T1VORCk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0K LSsJOwotKwotKy8qIEVhY2ggc3VicmFuZ2UgdHlwZSBjYW4gaGF2ZSBhIHN0cmlkZSBhcmd1bWVu dC4gICovCi0rc3VicmFuZ2U6CWV4cCAnOicgZXhwICc6JyBleHAgJXByZWMgQUJPVkVfQ09NTUEK LSsJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdy aXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9MT1dfQk9VTkQKLSsJCQkJCQkg fCBTVUJBUlJBWV9ISUdIX0JPVU5ECi0rCQkJCQkJIHwgU1VCQVJSQVlfU1RSSURFKTsKLSsJCQkg IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotKwk7Ci0rCi0rc3Vi cmFuZ2U6CWV4cCAnOicgJzonIGV4cCAlcHJlYyBBQk9WRV9DT01NQQotKwkJCXsgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25n Y3N0IChwc3RhdGUsIFNVQkFSUkFZX0xPV19CT1VORAotKwkJCQkJCSB8IFNVQkFSUkFZX1NUUklE RSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSsJ OwotKwotK3N1YnJhbmdlOgknOicgZXhwICc6JyBleHAgJXByZWMgQUJPVkVfQ09NTUEKLSsJCQl7 IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4 cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9ISUdIX0JPVU5ECi0rCQkJCQkJIHwgU1VC QVJSQVlfU1RSSURFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JB TkdFKTsgfQotKwk7Ci0rCi0rc3VicmFuZ2U6CSc6JyAnOicgZXhwICVwcmVjIEFCT1ZFX0NPTU1B Ci0rCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0rCQkJICB3 cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfU1RSSURFKTsKLSAJCQkgIHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotIAk7Ci0gCi1kaWZmIC0t Z2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKLWluZGV4IDA4MjE1ZTIu LmU2ZWNhNmEgMTAwNjQ0Ci0tLS0gYS9nZGIvZi12YWxwcmludC5jCi0rKysgYi9nZGIvZi12YWxw cmludC5jCi1AQCAtMTIxLDggKzEyMSwxNCBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywg aW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAKLSAgIGlmIChuc3MgIT0gbmRp bWVuc2lvbnMpCi0gICAgIHsKLS0gICAgICBzaXplX3QgZGltX3NpemUgPSBUWVBFX0xFTkdUSCAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotKyAgICAgIHNpemVfdCBkaW1fc2l6ZTsKLSAgICAg ICBzaXplX3Qgb2ZmcyA9IDA7Ci0rICAgICAgTE9OR0VTVCBieXRlX3N0cmlkZSA9IGFicyAoVFlQ RV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkpOwotKwotKyAgICAgIGlmIChieXRlX3N0cmlkZSkK LSsgICAgICAgIGRpbV9zaXplID0gYnl0ZV9zdHJpZGU7Ci0rICAgICAgZWxzZQotKyAgICAgICAg ZGltX3NpemUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotIAotICAg ICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7Ci0gCSAgIChpIDwgdXBwZXJib3VuZCArIDEgJiYgKCpl bHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMg Yi9nZGIvZ2RidHlwZXMuYwotaW5kZXggZWM1YzE3YS4uODg4MDFhYyAxMDA2NDQKLS0tLSBhL2dk Yi9nZGJ0eXBlcy5jCi0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTgzNiw3ICs4MzYsOCBAQCBh bGxvY2F0ZV9zdHViX21ldGhvZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gc3RydWN0IHR5cGUgKgot IGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBl ICppbmRleF90eXBlLAotIAkJICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqbG93X2JvdW5k LAotLQkJICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqaGlnaF9ib3VuZCkKLSsJCSAgIGNv bnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKmhpZ2hfYm91bmQsCi0rCQkgICBjb25zdCBzdHJ1Y3Qg ZHluYW1pY19wcm9wICpzdHJpZGUpCi0gewotICAgaWYgKHJlc3VsdF90eXBlID09IE5VTEwpCi0g ICAgIHJlc3VsdF90eXBlID0gYWxsb2NfdHlwZV9jb3B5IChpbmRleF90eXBlKTsKLUBAIC04NTEs NiArODUyLDcgQEAgY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwg c3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCi0gICAgIFRZUEVfWkFMTE9DIChyZXN1bHRfdHlwZSwg c2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRzKSk7Ci0gICBUWVBFX1JBTkdFX0RBVEEgKHJlc3Vs dF90eXBlKS0+bG93ID0gKmxvd19ib3VuZDsKLSAgIFRZUEVfUkFOR0VfREFUQSAocmVzdWx0X3R5 cGUpLT5oaWdoID0gKmhpZ2hfYm91bmQ7Ci0rICBUWVBFX1JBTkdFX0RBVEEgKHJlc3VsdF90eXBl KS0+c3RyaWRlID0gKnN0cmlkZTsKLSAKLSAgIGlmIChsb3dfYm91bmQtPmtpbmQgPT0gUFJPUF9D T05TVCAmJiBsb3dfYm91bmQtPmRhdGEuY29uc3RfdmFsID49IDApCi0gICAgIFRZUEVfVU5TSUdO RUQgKHJlc3VsdF90eXBlKSA9IDE7Ci1AQCAtODc5LDcgKzg4MSw3IEBAIHN0cnVjdCB0eXBlICoK LSBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3Ry dWN0IHR5cGUgKmluZGV4X3R5cGUsCi0gCQkJICBMT05HRVNUIGxvd19ib3VuZCwgTE9OR0VTVCBo aWdoX2JvdW5kKQotIHsKLS0gIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93LCBoaWdoOwotKyAgc3Ry dWN0IGR5bmFtaWNfcHJvcCBsb3csIGhpZ2gsIHN0cmlkZTsKLSAKLSAgIGxvdy5raW5kID0gUFJP UF9DT05TVDsKLSAgIGxvdy5kYXRhLmNvbnN0X3ZhbCA9IGxvd19ib3VuZDsKLUBAIC04ODcsNyAr ODg5LDExIEBAIGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90 eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwKLSAgIGhpZ2gua2luZCA9IFBST1BfQ09OU1Q7 Ci0gICBoaWdoLmRhdGEuY29uc3RfdmFsID0gaGlnaF9ib3VuZDsKLSAKLS0gIHJlc3VsdF90eXBl ID0gY3JlYXRlX3JhbmdlX3R5cGUgKHJlc3VsdF90eXBlLCBpbmRleF90eXBlLCAmbG93LCAmaGln aCk7Ci0rICBzdHJpZGUua2luZCA9IFBST1BfQ09OU1Q7Ci0rICBzdHJpZGUuZGF0YS5jb25zdF92 YWwgPSAwOwotKwotKyAgcmVzdWx0X3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAocmVzdWx0X3R5 cGUsIGluZGV4X3R5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG93 LCAmaGlnaCwgJnN0cmlkZSk7Ci0gCi0gICByZXR1cm4gcmVzdWx0X3R5cGU7Ci0gfQotQEAgLTEw ODQsMTYgKzEwOTAsMjAgQEAgY3JlYXRlX2FycmF5X3R5cGVfd2l0aF9zdHJpZGUgKHN0cnVjdCB0 eXBlICpyZXN1bHRfdHlwZSwKLSAgICAgICAmJiAoIXR5cGVfbm90X2Fzc29jaWF0ZWQgKHJlc3Vs dF90eXBlKQotIAkgICYmICF0eXBlX25vdF9hbGxvY2F0ZWQgKHJlc3VsdF90eXBlKSkpCi0gICAg IHsKLS0gICAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKLSsgICAgICBMT05HRVNU IGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgYnl0ZV9zdHJpZGU7Ci0gCi0gICAgICAgaWYgKGdldF9k aXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDAp Ci0gCWxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOwotICAgICAgIGVsZW1lbnRfdHlwZSA9IGNo ZWNrX3R5cGVkZWYgKGVsZW1lbnRfdHlwZSk7Ci0rICAgICAgYnl0ZV9zdHJpZGUgPSBhYnMgKFRZ UEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpKTsKLSsKLSAgICAgICAvKiBCZSBjYXJlZnVsIHdo ZW4gc2V0dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKLSAJIGVtcHR5 IGFycmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2Jv dW5kLgotIAkgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVyby4g ICovCi0gICAgICAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCi0gCVRZUEVfTEVOR1RIIChy ZXN1bHRfdHlwZSkgPSAwOwotKyAgICAgIGVsc2UgaWYgKGJ5dGVfc3RyaWRlID4gMCkKLSsJVFlQ RV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IGJ5dGVfc3RyaWRlICogKGhpZ2hfYm91bmQgLSBsb3df Ym91bmQgKyAxKTsKLSAgICAgICBlbHNlIGlmIChiaXRfc3RyaWRlID4gMCkKLSAJVFlQRV9MRU5H VEggKHJlc3VsdF90eXBlKSA9Ci0gCSAgKGJpdF9zdHJpZGUgKiAoaGlnaF9ib3VuZCAtIGxvd19i b3VuZCArIDEpICsgNykgLyA4OwotQEAgLTE4ODgsNyArMTg5OCw4IEBAIHJlc29sdmVfZHluYW1p Y19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl9yYW5nZV90eXBlLAotICAgQ09SRV9BRERSIHZhbHVl OwotICAgc3RydWN0IHR5cGUgKnN0YXRpY19yYW5nZV90eXBlLCAqc3RhdGljX3RhcmdldF90eXBl OwotICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKLS0gIHN0cnVjdCBkeW5hbWlj X3Byb3AgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwotKyAgY29uc3Qgc3RydWN0IGR3YXJmMl9sb2Nl eHByX2JhdG9uICpiYXRvbjsKLSsgIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93X2JvdW5kLCBoaWdo X2JvdW5kLCBzdHJpZGU7Ci0gCi0gICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKGR5bl9yYW5nZV90 eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpOwotIAotQEAgLTE5MTksMTMgKzE5MzAsMjEgQEAgcmVz b2x2ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluX3JhbmdlX3R5cGUsCi0gICAgICAg aGlnaF9ib3VuZC5raW5kID0gUFJPUF9VTkRFRklORUQ7Ci0gICAgICAgaGlnaF9ib3VuZC5kYXRh LmNvbnN0X3ZhbCA9IDA7Ci0gICAgIH0KLSsgIAotKyAgcHJvcCA9ICZUWVBFX1JBTkdFX0RBVEEg KGR5bl9yYW5nZV90eXBlKS0+c3RyaWRlOwotKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0 eSAocHJvcCwgTlVMTCwgYWRkcl9zdGFjaywgJnZhbHVlKSkKLSsgICAgewotKyAgICAgIHN0cmlk ZS5raW5kID0gUFJPUF9DT05TVDsKLSsgICAgICBzdHJpZGUuZGF0YS5jb25zdF92YWwgPSB2YWx1 ZTsKLSsgICAgfQotIAotICAgc3RhdGljX3RhcmdldF90eXBlCi0gICAgID0gcmVzb2x2ZV9keW5h bWljX3R5cGVfaW50ZXJuYWwgKFRZUEVfVEFSR0VUX1RZUEUgKGR5bl9yYW5nZV90eXBlKSwKLSAJ CQkJICAgICBhZGRyX3N0YWNrLCAwKTsKLSAgIHN0YXRpY19yYW5nZV90eXBlID0gY3JlYXRlX3Jh bmdlX3R5cGUgKGNvcHlfdHlwZSAoZHluX3JhbmdlX3R5cGUpLAotIAkJCQkJIHN0YXRpY190YXJn ZXRfdHlwZSwKLS0JCQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCk7Ci0rCQkJCQkgJmxvd19i b3VuZCwgJmhpZ2hfYm91bmQsICZzdHJpZGUpOwotKwotICAgVFlQRV9SQU5HRV9EQVRBIChzdGF0 aWNfcmFuZ2VfdHlwZSktPmZsYWdfYm91bmRfZXZhbHVhdGVkID0gMTsKLSAgIHJldHVybiBzdGF0 aWNfcmFuZ2VfdHlwZTsKLSB9Ci1AQCAtMjE3Niw4ICsyMTk1LDE4IEBAIHJlc29sdmVfZHluYW1p Y190eXBlX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAgIGlmIChwcm9wICE9IE5VTEwK LSAgICAgICAmJiBkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIE5VTEwsIGFkZHJfc3Rh Y2ssICZ2YWx1ZSkpCi0gICAgIHsKLS0gICAgICBUWVBFX0RZTl9QUk9QX0FERFIgKHByb3ApID0g dmFsdWU7Ci0tICAgICAgVFlQRV9EWU5fUFJPUF9LSU5EIChwcm9wKSA9IFBST1BfQ09OU1Q7Ci0r ICAgICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHJlc29sdmVk X3R5cGUpOwotKwotKyAgICAgIC8qIEFkanVzdCB0aGUgZGF0YSBsb2NhdGlvbiB3aXRoIHRoZSB2 YWx1ZSBvZiBieXRlIHN0cmlkZSBpZiBzZXQsIHdoaWNoCi0rICAgICAgICAgY2FuIGRlc2NyaWJl IHRoZSBzZXBhcmF0aW9uIGJldHdlZW4gc3VjY2Vzc2l2ZSBlbGVtZW50cyBhbG9uZyB0aGUKLSsg ICAgICAgICBkaW1lbnNpb24uICAqLwotKyAgICAgIGlmIChUWVBFX0JZVEVfU1RSSURFIChyYW5n ZV90eXBlKSA8IDApCi0rICAgICAgICB2YWx1ZSArPSAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90 eXBlKSAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSkKLSsgICAgICAgICAgICAgICAgICAq IFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpOwotKwotKyAgICAgIFRZUEVfREFUQV9MT0NB VElPTl9BRERSIChyZXNvbHZlZF90eXBlKSA9IHZhbHVlOwotKyAgICAgIFRZUEVfREFUQV9MT0NB VElPTl9LSU5EIChyZXNvbHZlZF90eXBlKSA9IFBST1BfQ09OU1Q7Ci0rCi0gICAgIH0KLSAKLSAg IHJldHVybiByZXNvbHZlZF90eXBlOwotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2Ri L2dkYnR5cGVzLmgKLWluZGV4IDJkZGEwNzQuLjk3MjI3YzkgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2Ri dHlwZXMuaAotKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC01NzcsNiArNTc3LDEwIEBAIHN0cnVj dCByYW5nZV9ib3VuZHMKLSAKLSAgIHN0cnVjdCBkeW5hbWljX3Byb3AgaGlnaDsKLSAKLSsgIC8q ICogU3RyaWRlIG9mIHJhbmdlLiAgKi8KLSsKLSsgIHN0cnVjdCBkeW5hbWljX3Byb3Agc3RyaWRl OwotKwotICAgLyogVHJ1ZSBpZiBISUdIIHJhbmdlIGJvdW5kIGNvbnRhaW5zIHRoZSBudW1iZXIg b2YgZWxlbWVudHMgaW4gdGhlCi0gICAgICBzdWJyYW5nZS4gVGhpcyBhZmZlY3RzIGhvdyB0aGUg ZmluYWwgaGlnaHQgYm91bmQgaXMgY29tcHV0ZWQuICAqLwotIAotQEAgLTc0MCw2ICs3NDQsNyBA QCBzdHJ1Y3QgbWFpbl90eXBlCi0gCi0gICAgIHN0cnVjdCByYW5nZV9ib3VuZHMgKmJvdW5kczsK LSAKLSsKLSAgIH0gZmxkc19ibmRzOwotIAotICAgLyogKiBTbG90IHRvIHBvaW50IHRvIGFkZGl0 aW9uYWwgbGFuZ3VhZ2Utc3BlY2lmaWMgZmllbGRzIG9mIHRoaXMKLUBAIC0xMjU1LDYgKzEyNjAs MTUgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7 Ci0gICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmhpZ2gua2luZAotICNkZWZpbmUgVFlQ RV9MT1dfQk9VTkRfS0lORChyYW5nZV90eXBlKSBcCi0gICBUWVBFX1JBTkdFX0RBVEEocmFuZ2Vf dHlwZSktPmxvdy5raW5kCi0rI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFKHJhbmdlX3R5cGUpIFwK LSsgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEuY29uc3RfdmFsCi0r I2RlZmluZSBUWVBFX0JZVEVfU1RSSURFX0JMT0NLKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFO R0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEubG9jZXhwcgotKyNkZWZpbmUgVFlQRV9C WVRFX1NUUklERV9MT0NMSVNUKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5n ZV90eXBlKS0+c3RyaWRlLmRhdGEubG9jbGlzdAotKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERV9L SU5EKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRl LmtpbmQKLSsKLSAKLSAvKiBQcm9wZXJ0eSBhY2Nlc3NvcnMgZm9yIHRoZSB0eXBlIGRhdGEgbG9j YXRpb24uICAqLwotICNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OKHRoaXN0eXBlKSBcCi1AQCAt MTI4OSw2ICsxMzAzLDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3Ry dWN0IHR5cGUgKik7Ci0gICAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChUWVBFX0lOREVYX1RZ UEUoYXJyYXl0eXBlKSkKLSAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNfVU5ERUZJ TkVEKGFycmF5dHlwZSkgXAotICAgIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRChUWVBFX0lOREVY X1RZUEUoYXJyYXl0eXBlKSkKLSsjZGVmaW5lIFRZUEVfQVJSQVlfU1RSSURFX0lTX1VOREVGSU5F RChhcnJheXR5cGUpIFwKLSsgICAoVFlQRV9CWVRFX1NUUklERShUWVBFX0lOREVYX1RZUEUoYXJy YXl0eXBlKSkgPT0gMCkKLSsKLSAKLSAjZGVmaW5lIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfVkFM VUUoYXJyYXl0eXBlKSBcCi0gICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUoKGFy cmF5dHlwZSkpKSkKLUBAIC0xNzgzLDYgKzE4MDAsNyBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNy ZWF0ZV9hcnJheV90eXBlX3dpdGhfc3RyaWRlCi0gCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVh dGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKLSAJCQkJICAgICAg IGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKiwKLSsJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBk eW5hbWljX3Byb3AgKiwKLSAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKik7 Ci0gCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUg Kiwgc3RydWN0IHR5cGUgKiwKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5j Ci1pbmRleCAyYjAwNzA4Li45OTJhZjg3IDEwMDY0NAotLS0tIGEvZ2RiL3BhcnNlLmMKLSsrKyBi L2dkYi9wYXJzZS5jCi1AQCAtMTAwNiwyMiArMTAwNiwyMCBAQCBvcGVyYXRvcl9sZW5ndGhfc3Rh bmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5kcG9zLAotIAotICAg ICBjYXNlIE9QX1JBTkdFOgotICAgICAgIG9wbGVuID0gMzsKLSsgICAgICBhcmdzID0gMDsKLSAg ICAgICByYW5nZV90eXBlID0gKGVudW0gcmFuZ2VfdHlwZSkKLSAJbG9uZ2VzdF90b19pbnQgKGV4 cHItPmVsdHNbZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsKLSAKLS0gICAgICBzd2l0Y2ggKHJhbmdl X3R5cGUpCi0tCXsKLS0JY2FzZSBMT1dfQk9VTkRfREVGQVVMVDoKLS0JY2FzZSBISUdIX0JPVU5E X0RFRkFVTFQ6Ci0tCSAgYXJncyA9IDE7Ci0tCSAgYnJlYWs7Ci0tCWNhc2UgQk9USF9CT1VORF9E RUZBVUxUOgotLQkgIGFyZ3MgPSAwOwotLQkgIGJyZWFrOwotLQljYXNlIE5PTkVfQk9VTkRfREVG QVVMVDoKLS0JICBhcmdzID0gMjsKLS0JICBicmVhazsKLS0JfQotKyAgICAgIC8qIEluY3JlbWVu dCB0aGUgYXJndW1lbnQgY291bnRlciBmb3IgZWFjaCBhcmd1bWVudAotKwkgcHJvdmlkZWQgYnkg dGhlIHVzZXIuICAqLwotKyAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0xPV19CT1VO RCkgPT0gU1VCQVJSQVlfTE9XX0JPVU5EKQotKwlhcmdzKys7Ci0rCi0rICAgICAgaWYgKChyYW5n ZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKLSsJ YXJncysrOwotKwotKyAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX1NUUklERSkgPT0g U1VCQVJSQVlfU1RSSURFKQotKwlhcmdzKys7Ci0gCi0gICAgICAgYnJlYWs7Ci0gCi1kaWZmIC0t Z2l0IGEvZ2RiL3J1c3QtZXhwLnkgYi9nZGIvcnVzdC1leHAueQotaW5kZXggYWViNjA1OC4uYjFi OTYzMyAxMDA2NDQKLS0tLSBhL2dkYi9ydXN0LWV4cC55Ci0rKysgYi9nZGIvcnVzdC1leHAueQot QEAgLTI0MjksMjMgKzI0MjksMTcgQEAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAoc3RydWN0 IHBhcnNlcl9zdGF0ZSAqc3RhdGUsCi0gCi0gICAgIGNhc2UgT1BfUkFOR0U6Ci0gICAgICAgewot LQllbnVtIHJhbmdlX3R5cGUga2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKLSsJZW51bSByYW5n ZV90eXBlIGtpbmQgPSBTVUJBUlJBWV9OT05FX0JPVU5EOwotIAotIAlpZiAob3BlcmF0aW9uLT5s ZWZ0Lm9wICE9IE5VTEwpCi0gCSAgewotIAkgICAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAo c3RhdGUsIG9wZXJhdGlvbi0+bGVmdC5vcCwgdG9wKTsKLS0JICAgIGtpbmQgPSBISUdIX0JPVU5E X0RFRkFVTFQ7Ci0rCSAgICBraW5kID0gU1VCQVJSQVlfTE9XX0JPVU5EOwotIAkgIH0KLSAJaWYg KG9wZXJhdGlvbi0+cmlnaHQub3AgIT0gTlVMTCkKLSAJICB7Ci0gCSAgICBjb252ZXJ0X2FzdF90 b19leHByZXNzaW9uIChzdGF0ZSwgb3BlcmF0aW9uLT5yaWdodC5vcCwgdG9wKTsKLS0JICAgIGlm IChraW5kID09IEJPVEhfQk9VTkRfREVGQVVMVCkKLS0JICAgICAga2luZCA9IExPV19CT1VORF9E RUZBVUxUOwotLQkgICAgZWxzZQotLQkgICAgICB7Ci0tCQlnZGJfYXNzZXJ0IChraW5kID09IEhJ R0hfQk9VTkRfREVGQVVMVCk7Ci0tCQlraW5kID0gTk9ORV9CT1VORF9ERUZBVUxUOwotLQkgICAg ICB9Ci0rCSAgICBraW5kID0gKHJhbmdlX3R5cGUpIChraW5kIHwgU1VCQVJSQVlfSElHSF9CT1VO RCk7Ci0gCSAgfQotIAl3cml0ZV9leHBfZWx0X29wY29kZSAoc3RhdGUsIE9QX1JBTkdFKTsKLSAJ d3JpdGVfZXhwX2VsdF9sb25nY3N0IChzdGF0ZSwga2luZCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3J1 c3QtbGFuZy5jIGIvZ2RiL3J1c3QtbGFuZy5jCi1pbmRleCAxN2IyMGM2Li4yOTUwMDJmIDEwMDY0 NAotLS0tIGEvZ2RiL3J1c3QtbGFuZy5jCi0rKysgYi9nZGIvcnVzdC1sYW5nLmMKLUBAIC0xMjQx LDkgKzEyNDEsOSBAQCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBv cywgZW51bSBub3NpZGUgbm9zaWRlKQotICAga2luZCA9IChlbnVtIHJhbmdlX3R5cGUpIGxvbmdl c3RfdG9faW50IChleHAtPmVsdHNbKnBvcyArIDFdLmxvbmdjb25zdCk7Ci0gICAqcG9zICs9IDM7 Ci0gCi0tICBpZiAoa2luZCA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9PSBOT05FX0JP VU5EX0RFRkFVTFQpCi0rICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNVQkFS UkFZX0xPV19CT1VORCkKLSAgICAgbG93ID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4 cCwgcG9zLCBub3NpZGUpOwotLSAgaWYgKGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFQgfHwga2lu ZCA9PSBOT05FX0JPVU5EX0RFRkFVTFQpCi0rICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9ISUdIX0JP VU5EKSA9PSBTVUJBUlJBWV9ISUdIX0JPVU5EKQotICAgICBoaWdoID0gZXZhbHVhdGVfc3ViZXhw IChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwotIAotICAgaWYgKG5vc2lkZSA9PSBFVkFM X1NLSVApCi1AQCAtMTMzMiw3ICsxMzMyLDcgQEAgcnVzdF9jb21wdXRlX3JhbmdlIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IHZhbHVlICpyYW5nZSwKLSAKLSAgICpsb3cgPSAwOwotICAgKmhp Z2ggPSAwOwotLSAgKmtpbmQgPSBCT1RIX0JPVU5EX0RFRkFVTFQ7Ci0rICAqa2luZCA9IFNVQkFS UkFZX05PTkVfQk9VTkQ7Ci0gCi0gICBpZiAoVFlQRV9ORklFTERTICh0eXBlKSA9PSAwKQotICAg ICByZXR1cm47Ci1AQCAtMTM0MCwxNSArMTM0MCwxNCBAQCBydXN0X2NvbXB1dGVfcmFuZ2UgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmFsdWUgKnJhbmdlLAotICAgaSA9IDA7Ci0gICBpZiAo c3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIDApLCAic3RhcnQiKSA9PSAwKQotICAgICB7 Ci0tICAgICAgKmtpbmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7Ci0rICAgICAgKmtpbmQgPSBTVUJB UlJBWV9MT1dfQk9VTkQ7Ci0gICAgICAgKmxvdyA9IHZhbHVlX2FzX2xvbmcgKHZhbHVlX2ZpZWxk IChyYW5nZSwgMCkpOwotICAgICAgICsraTsKLSAgICAgfQotICAgaWYgKFRZUEVfTkZJRUxEUyAo dHlwZSkgPiBpCi0gICAgICAgJiYgc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpLCAi ZW5kIikgPT0gMCkKLSAgICAgewotLSAgICAgICpraW5kID0gKCpraW5kID09IEJPVEhfQk9VTkRf REVGQVVMVAotLQkgICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IE5PTkVfQk9VTkRfREVGQVVM VCk7Ci0rICAgICAgKmtpbmQgPSAocmFuZ2VfdHlwZSkgKCpraW5kIHwgU1VCQVJSQVlfSElHSF9C T1VORCk7Ci0gICAgICAgKmhpZ2ggPSB2YWx1ZV9hc19sb25nICh2YWx1ZV9maWVsZCAocmFuZ2Us IGkpKTsKLSAgICAgfQotIH0KLUBAIC0xMzYzLDcgKzEzNjIsNyBAQCBydXN0X3N1YnNjcmlwdCAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKLSAg IHN0cnVjdCB0eXBlICpyaHN0eXBlOwotICAgTE9OR0VTVCBsb3csIGhpZ2hfYm91bmQ7Ci0gICAv KiBJbml0aWFsaXplZCB0byBhcHBlYXNlIHRoZSBjb21waWxlci4gICovCi0tICBlbnVtIHJhbmdl X3R5cGUga2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKLSsgIGVudW0gcmFuZ2VfdHlwZSBraW5k ID0gU1VCQVJSQVlfTk9ORV9CT1VORDsKLSAgIExPTkdFU1QgaGlnaCA9IDA7Ci0gICBpbnQgd2Fu dF9zbGljZSA9IDA7Ci0gCi1AQCAtMTQyNSw3ICsxNDI0LDcgQEAgcnVzdF9zdWJzY3JpcHQgKHN0 cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUsCi0gCWVy cm9yIChfKCJDYW5ub3Qgc3Vic2NyaXB0IG5vbi1hcnJheSB0eXBlIikpOwotIAotICAgICAgIGlm ICh3YW50X3NsaWNlCi0tCSAgJiYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8IGtpbmQg PT0gTE9XX0JPVU5EX0RFRkFVTFQpKQotKwkgICYmICgoa2luZCAmIFNVQkFSUkFZX0xPV19CT1VO RCkgIT0gU1VCQVJSQVlfTE9XX0JPVU5EKSkKLSAJbG93ID0gbG93X2JvdW5kOwotICAgICAgIGlm IChsb3cgPCAwKQotIAllcnJvciAoXygiSW5kZXggbGVzcyB0aGFuIHplcm8iKSk7Ci1AQCAtMTQ0 Myw3ICsxNDQyLDcgQEAgcnVzdF9zdWJzY3JpcHQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUsCi0gCSAgQ09SRV9BRERSIGFkZHI7Ci0gCSAgc3Ry dWN0IHZhbHVlICphZGRydmFsLCAqdGVtOwotIAotLQkgIGlmIChraW5kID09IEJPVEhfQk9VTkRf REVGQVVMVCB8fCBraW5kID09IEhJR0hfQk9VTkRfREVGQVVMVCkKLSsJICBpZiAoKGtpbmQgJiBT VUJBUlJBWV9ISUdIX0JPVU5EKSAhPSBTVUJBUlJBWV9ISUdIX0JPVU5EKQotIAkgICAgaGlnaCA9 IGhpZ2hfYm91bmQ7Ci0gCSAgaWYgKGhpZ2ggPCAwKQotIAkgICAgZXJyb3IgKF8oIkhpZ2ggaW5k ZXggbGVzcyB0aGFuIHplcm8iKSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdGF0aWMtYXJyYXlzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGlj LWFycmF5cy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jYzllY2Mw Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1h cnJheXMuZXhwCi1AQCAtMCwwICsxLDQyMSBAQAotKyMgQ29weXJpZ2h0IDIwMTUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgQ29udHJpYnV0ZWQgYnkgSW50ZWwgQ29ycC4g PGNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNvbT4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlIHN0YXRpYy1hcnJheXMuZjkwCi0rCi0r aWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmls ZSB7ZGVidWcgZjkwfV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1B SU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJ Tl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAiQlAxIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQlAxIiAiLipCUDEu KiIKLSsKLSsjIFRlc3RzIHN1YmFycmF5cyBvZiBvbmUgZGltZW5zaW9uYWwgYXJyYXlzIHdpdGgg c3VicmFuZ2UgdmFyaWF0aW9ucwotK2dkYl90ZXN0ICJwcmludCBhcjEiICJcXCRcWzAtOVxdKyA9 IFxcKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDlcXCkiIFwKLSsJCSJwcmludCBhcjEuIgotK2dk Yl90ZXN0ICJwcmludCBhcjFcKDQ6N1wpIiAiXFwkXFswLTlcXSsgPSBcXCg0LCA1LCA2LCA3XFwp IiBcCi0rCQkicHJpbnQgYXIxXCg0OjdcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIxXCg4OlwpIiAi XFwkXFswLTlcXSsgPSBcXCg4LCA5XFwpLioiIFwKLSsJCSJwcmludCBhcjFcKDg6XCkiCi0rZ2Ri X3Rlc3QgInByaW50IGFyMVwoOjNcKSIgIlxcJFxbMC05XF0rID0gXFwoMSwgMiwgM1xcKS4qIiBc Ci0rCQkicHJpbnQgYXIxXCg6M1wpIgotK2dkYl90ZXN0ICJwcmludCBhcjFcKDpcKSIgIlxcJFxb MC05XF0rID0gXFwoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOVxcKSIgXAotKwkJInByaW50IGFy MVwoOlwpIgotKwotKyMgQ2hlY2sgYXNzaWdubWVudAotK2dkYl90ZXN0X25vX291dHB1dCAic2V0 IFwkbXlfYXJ5ID0gYXIxXCgzOjhcKSIKLStnZGJfdGVzdCAicHJpbnQgXCRteV9hcnkiIFwKLSsJ CSJcXCRcWzAtOVxdKyA9IFxcKDMsIDQsIDUsIDYsIDcsIDhcXCkiIFwKLSsJCSJBc3NpZ25tZW50 IG9mIHN1YmFycmF5IHRvIHZhcmlhYmxlIgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGFyMVwo NVwpID0gNDIiCi0rCQlnZGJfdGVzdCAicHJpbnQgYXIxXCgzOjhcKSIgXAotKwkJIlxcJFxbMC05 XF0rID0gXFwoMywgNCwgNDIsIDYsIDcsIDhcXCkiIFwKLSsJCSJwcmludCBhcjFcKDM6OFwpIGFm dGVyIGFzc2lnbm1lbnQiCi0rZ2RiX3Rlc3QgInByaW50IFwkbXlfYXJ5IiBcCi0rCQkiXFwkXFsw LTlcXSsgPSBcXCgzLCA0LCA1LCA2LCA3LCA4XFwpIiBcCi0rCQkiQXNzaWdubWVudCBvZiBzdWJh cnJheSB0byB2YXJpYWJsZSBhZnRlciBvcmlnaW5hbCBhcnJheSBjaGFuZ2VkIgotKwotKyMgVGVz dCBmb3Igc3ViYXJyYXlzIG9mIG9uZSBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBsaXRlcmFscwot KwkJZ2RiX3Rlc3QgInByaW50IGFyMVwoM1wpIiAiXFwkXFswLTlcXSsgPSAzIiBcCi0rCQkicHJp bnQgYXIxXCgzXCkiCi0rCi0rIyBUZXN0cyBmb3Igc3VicmFuZ2VzIG9mIDIgZGltZW5zaW9uYWwg YXJyYXlzIHdpdGggc3VicmFuZ2UgdmFyaWF0aW9ucwotK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6 MywgMzo0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMywgMzNcXCkgXFwoIDI0LCAz NFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDI6MywgMzo0XCkuIgotK2dkYl90ZXN0ICJwcmlu dCBhcjJcKDg6OSw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODgsIDk4XFwpIFxc KCA4OSwgOTlcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4OjksODpcKSIKLStnZGJfdGVzdCAi cHJpbnQgYXIyXCg4OjksOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDgxLCA5MVxc KSBcXCggODIsIDkyXFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODo5LDoyXCkiCi0rCi0rZ2Ri X3Rlc3QgInByaW50IGFyMlwoODosODo5XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4 OCwgOThcXCkgXFwoIDg5LCA5OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDg6LDg6OVwpIgot K2dkYl90ZXN0ICJwcmludCBhcjJcKDg6LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCA4OCwgOThcXCkgXFwoIDg5LCA5OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDg6LDg6XCki Ci0rZ2RiX3Rlc3QgInByaW50IGFyMlwoODosOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwo XFwoIDgxLCA5MVxcKSBcXCggODIsIDkyXFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODosOjJc KSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg6MiwyOjNcKSIgXAotKwkJIlxcJFxbMC05XF0r ID0gXFwoXFwoIDEyLCAyMlxcKSBcXCggMTMsIDIzXFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwo OjIsMjozXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoOjIsODpcKSIgXAotKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIDE4LCAyOFxcKSBcXCggMTksIDI5XFwpIFxcKSIgXAotKwkJInByaW50IGFy MlwoOjIsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw6MlwpIiBcCi0rCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggMTEsIDIxXFwpIFxcKCAxMiwgMjJcXCkgXFwpIiBcCi0rCQkicHJpbnQg YXIyXCg6Miw6MlwpIgotKwotKyMgVGVzdCBzdWJyYW5nZXMgb2YgMiBkaW1lbnNpb25hbCBhcnJh eXMgd2l0aCBsaXRlcmFscyBhbmQgc3VicmFuZ2UgdmFyaWF0aW9ucwotK2dkYl90ZXN0ICJwcmlu dCBhcjJcKDcsIDM6NlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCg3MywgNzQsIDc1LCA3Nlxc KSIgXAotKwkJInByaW50IGFyMlwoNywgMzo2XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoNyw4 OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCg3OCwgNzlcXCkiIFwKLSsJCSJwcmludCBhcjJc KDcsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg3LDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxd KyA9IFxcKDcxLCA3MlxcKSIgXAotKwkJInByaW50IGFyMlwoNyw6MlwpIgotKwotK2dkYl90ZXN0 ICJwcmludCBhcjJcKDc6OCw0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDc0LCA4NFxcKSIg XAotKwkJInByaW50IGFyMig3OjgsNFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDg6LDRcKSIg XAotKwkJIlxcJFxbMC05XF0rID0gXFwoODQsIDk0XFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4Oiw0 XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoOjIsNFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBc XCgxNCwgMjRcXCkiIFwKLSsJCSJwcmludCBhcjJcKDoyLDRcKSIKLStnZGJfdGVzdCAicHJpbnQg YXIyXCgzLDRcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gMzQiIFwKLSsJCSJwcmludCBhcjJcKDMs NFwpIgotKwotKyMgVGVzdCBzdWJhcnJheXMgb2YgMyBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBs aXRlcmFscyBhbmQgc3VicmFuZ2UgdmFyaWF0aW9ucwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6 NCwzOjQsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjM3LCAzMzcsIDQz N1xcKSBcXCggMjQ3LCAzNDcsIDQ0N1xcKVwKLSsJCSBcXCkgXFwoIFxcKCAyMzgsIDMzOCwgNDM4 XFwpIFxcKCAyNDgsIDM0OCwgNDQ4XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6NCwz OjQsNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDQ6NSw4OlwpIiBcCi0rCQkiXFwk XFswLTlcXSsgPSBcXChcXCggXFwoIDI0OCwgMzQ4XFwpIFxcKCAyNTgsIDM1OFxcKSBcXCkgXFwo XAotKwkJIFxcKCAyNDksIDM0OVxcKSBcXCggMjU5LCAzNTlcXCkgXFwpIFxcKSIgXAotKwkJInBy aW50IGFyM1woMjozLDQ6NSw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw0OjUsOjJc KSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNDEsIDM0MVxcKSBcXCggMjUxLCAz NTFcXCkgXFwpIFxcKFwKLSsJCSBcXCggMjQyLCAzNDJcXCkgXFwoIDI1MiwgMzUyXFwpIFxcKSBc XCkiIFwKLSsJCSJwcmludCBhcjNcKDI6Myw0OjUsOjJcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQg YXIzXCgyOjMsODosNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjg3LCAz ODdcXCkgXFwoIDI5NywgMzk3XFwpIFxcKSBcXChcCi0rCQkgXFwoIDI4OCwgMzg4XFwpIFxcKCAy OTgsIDM5OFxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyOjMsODosNzo4XCkiCi0rZ2Ri X3Rlc3QgInByaW50IGFyM1woMjozLDg6LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCBcXCggMjg4LCAzODhcXCkgXFwoIDI5OCwgMzk4XFwpIFxcKSBcXChcCi0rCQkgXFwoIDI4OSwg Mzg5XFwpIFxcKCAyOTksIDM5OVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyOjMsODos ODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsODosOjJcKSIgXAotKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIFxcKCAyODEsIDM4MVxcKSBcXCggMjkxLCAzOTFcXCkgXFwpIFxcKFwKLSsJ CSBcXCggMjgyLCAzODJcXCkgXFwoIDI5MiwgMzkyXFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBh cjNcKDI6Myw4Oiw6MlwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw6Miw3OjhcKSIg XAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMTcsIDMxN1xcKSBcXCggMjI3LCAzMjdc XCkgXFwpIFxcKFwKLSsJCSBcXCggMjE4LCAzMThcXCkgXFwoIDIyOCwgMzI4XFwpIFxcKSBcXCki IFwKLSsJCSJwcmludCBhcjNcKDI6Myw6Miw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgy OjMsOjIsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMTgsIDMxOFxcKSBc XCggMjI4LCAzMjhcXCkgXFwpIFxcKFwKLSsJCSBcXCggMjE5LCAzMTlcXCkgXFwoIDIyOSwgMzI5 XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6Myw6Miw4OlwpIgotK2dkYl90ZXN0ICJw cmludCBhcjNcKDI6Myw6Miw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDIx MSwgMzExXFwpIFxcKCAyMjEsIDMyMVxcKSBcXCkgXFwoXAotKwkJIFxcKCAyMTIsIDMxMlxcKSBc XCggMjIyLCAzMjJcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMjozLDoyLDoyXCkiCi0r Ci0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosMzo0LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsg PSBcXChcXCggXFwoIDgzNywgOTM3XFwpIFxcKCA4NDcsIDk0N1xcKSBcXCkgXFwoXAotKwkJIFxc KCA4MzgsIDkzOFxcKSBcXCggODQ4LCA5NDhcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1wo ODosMzo0LDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDQ6NSw4OlwpIiBcCi0rCQki XFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDg0OCwgOTQ4XFwpIFxcKCA4NTgsIDk1OFxcKSBcXCkg XFwoXAotKwkJIFxcKCA4NDksIDk0OVxcKSBcXCggODU5LCA5NTlcXCkgXFwpIFxcKSIgXAotKwkJ InByaW50IGFyM1woODosNDo1LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosNDo1LDoy XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODQxLCA5NDFcXCkgXFwoIDg1MSwg OTUxXFwpIFxcKSBcXChcCi0rCQkgXFwoIDg0MiwgOTQyXFwpIFxcKCA4NTIsIDk1MlxcKSBcXCkg XFwpIiBcCi0rCQkicHJpbnQgYXIzXCg4Oiw0OjUsOjJcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQg YXIzXCg4Oiw4Oiw3OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4ODcsIDk4 N1xcKSBcXCggODk3LCA5OTdcXCkgXFwpIFxcKFwKLSsJCSBcXCggODg4LCA5ODhcXCkgXFwoIDg5 OCwgOTk4XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDg6LDc6OFwpIgotK2dkYl90 ZXN0ICJwcmludCBhcjNcKDg6LDg6LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBc XCggODg4LCA5ODhcXCkgXFwoIDg5OCwgOTk4XFwpIFxcKSBcXChcCi0rCQkgXFwoIDg4OSwgOTg5 XFwpIFxcKCA4OTksIDk5OVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg4Oiw4Oiw4Olwp IgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDg6LDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCBcXCggODgxLCA5ODFcXCkgXFwoIDg5MSwgOTkxXFwpIFxcKSBcXChcCi0rCQkgXFwo IDg4MiwgOTgyXFwpIFxcKCA4OTIsIDk5MlxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg4 Oiw4Oiw6MlwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDoyLDc6OFwpIiBcCi0rCQki XFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDgxNywgOTE3XFwpIFxcKCA4MjcsIDkyN1xcKSBcXCkg XFwoXAotKwkJIFxcKCA4MTgsIDkxOFxcKSBcXCggODI4LCA5MjhcXCkgXFwpIFxcKSIgXAotKwkJ InByaW50IGFyM1woODosOjIsNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosOjIsODpc KSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4MTgsIDkxOFxcKSBcXCggODI4LCA5 MjhcXCkgXFwpIFxcKFwKLSsJCSBcXCggODE5LCA5MTlcXCkgXFwoIDgyOSwgOTI5XFwpIFxcKSBc XCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDoyLDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1wo ODosOjIsOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4MTEsIDkxMVxcKSBc XCggODIxLCA5MjFcXCkgXFwpIFxcKFwKLSsJCSBcXCggODEyLCA5MTJcXCkgXFwoIDgyMiwgOTIy XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDoyLDoyXCkiCi0rCi0rCi0rZ2RiX3Rl c3QgInByaW50IGFyM1woOjIsMzo0LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCgg XFwoIDEzNywgMjM3XFwpIFxcKCAxNDcsIDI0N1xcKSBcXCkgXFwoXAotKwkJIFxcKCAxMzgsIDIz OFxcKSBcXCggMTQ4LCAyNDhcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyMyBcKDoyLDM6NCw3 OjhcKS4iCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woOjIsMzo0LDg6XCkiIFwKLSsJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCBcXCggMTM4LCAyMzhcXCkgXFwoIDE0OCwgMjQ4XFwpIFxcKSBcXChcCi0r CQkgXFwoIDEzOSwgMjM5XFwpIFxcKCAxNDksIDI0OVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQg YXIzXCg6MiwzOjQsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6MiwzOjQsOjJcKSIgXAot KwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxMzEsIDIzMVxcKSBcXCggMTQxLCAyNDFcXCkg XFwpIFxcKFwKLSsJCSBcXCggMTMyLCAyMzJcXCkgXFwoIDE0MiwgMjQyXFwpIFxcKSBcXCkiIFwK LSsJCSJwcmludCBhcjNcKDoyLDM6NCw6MlwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoy LDg6LDc6OFwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4NywgMjg3XFwpIFxcKFwKLSsJ CSAxOTcsIDI5N1xcKSBcXCkgXFwoIFxcKCAxODgsIDI4OFxcKSBcXCggMTk4LCAyOThcXCkgXFwp IFxcKSIgXAotKwkJInByaW50IGFyM1woOjIsODosNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFy M1woOjIsODosODpcKSIgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxODgsIDI4OFxcKSBcXCgg MTk4LFwKLSsJCSAyOThcXCkgXFwpIFxcKCBcXCggMTg5LCAyODlcXCkgXFwoIDE5OSwgMjk5XFwp IFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDoyLDg6LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50 IGFyM1woOjIsODosOjJcKSIgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxODEsIDI4MVxcKSBc XCggMTkxLFwKLSsJCSAyOTFcXCkgXFwpIFxcKCBcXCggMTgyLCAyODJcXCkgXFwoIDE5MiwgMjky XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDoyLDg6LDoyXCkiCi0rCi0rZ2RiX3Rlc3Qg InByaW50IGFyM1woOjIsOjIsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCgg MTE3LCAyMTdcXCkgXFwoIDEyNywgMjI3XFwpIFxcKSBcXChcCi0rCQkgXFwoIDExOCwgMjE4XFwp IFxcKCAxMjgsIDIyOFxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6Miw6Miw3OjhcKSIK LStnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw6Miw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBc XChcXCggXFwoIDExOCwgMjE4XFwpIFxcKCAxMjgsIDIyOFxcKSBcXCkgXFwoXAotKwkJIFxcKCAx MTksIDIxOVxcKSBcXCggMTI5LCAyMjlcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woOjIs OjIsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw6Miw6MlwpIiBcCi0rCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggXFwoIDExMSwgMjExXFwpIFxcKCAxMjEsIDIyMVxcKSBcXCkgXFwoXAot KwkJIFxcKCAxMTIsIDIxMlxcKSBcXCggMTIyLCAyMjJcXCkgXFwpIFxcKSIgXAotKwkJInByaW50 IGFyM1woOjIsOjIsOjJcKSIKLSsKLSsjVGVzdHMgZm9yIHN1YmFycmF5cyBvZiAzIGRpbWVuc2lv bmFsIGFycmF5cyB3aXRoIGxpdGVyYWxzIGFuZCBzdWJyYW5nZXMKLStnZGJfdGVzdCAicHJpbnQg YXIzXCgzLDM6NCw3OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDMzNywgMzQ3XFwp IFxcKCAzMzgsIDM0OFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDMsMzo0LDc6OFwpIgotK2dk Yl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCAzNDgsIDM1OFxcKSBcXCggMzQ5LCAzNTlcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzLDQ6 NSw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDoyXCkiIFwKLSsJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCAzNDEsIDM1MVxcKSBcXCggMzQyLCAzNTJcXCkgXFwpIiBcCi0rCQkicHJp bnQgYXIzXCgzLDQ6NSw6MlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDNcKSIgXAot KwkJIlxcJFxbMC05XF0rID0gXFwoMzQzLCAzNTNcXCkiIFwKLSsJCSJwcmludCBhcjNcKDMsNDo1 LDNcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDc6OFwpIiBcCi0rCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggMjg3LCAyOTdcXCkgXFwoIDI4OCwgMjk4XFwpIFxcKSIgXAotKwkJInBy aW50IGFyM1woMiw4Oiw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDg6XCkiIFwK LSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyODgsIDI5OFxcKSBcXCggMjg5LCAyOTlcXCkgXFwp IiBcCi0rCQkicHJpbnQgYXIzXCgyLDg6LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMiw4 Oiw6MlwpIlwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyODEsIDI5MVxcKSBcXCggMjgyLCAy OTJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyLDg6LDoyXCkiCi0rZ2RiX3Rlc3QgInByaW50 IGFyM1woMiw4OiwzXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDI4MywgMjkzXFwpIiBcCi0r CQkicHJpbnQgYXIzXCgyLDg6LDNcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDoyLDc6 OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjE3LCAyMjdcXCkgXFwoIDIxOCwgMjI4 XFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMiw6Miw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQg YXIzXCgyLDoyLDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMTgsIDIyOFxcKSBc XCggMjE5LCAyMjlcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyLDoyLDg6XCkiCi0rZ2RiX3Rl c3QgInByaW50IGFyM1woMiw6Miw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjEx LCAyMjFcXCkgXFwoIDIxMiwgMjIyXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMiw6Miw6Mlwp IgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsOjIsM1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBc XCgyMTMsIDIyM1xcKSIgXAotKwkJInByaW50IGFyM1woMiw6MiwzXCkiCi0rCi0rZ2RiX3Rlc3Qg InByaW50IGFyM1woMyw0LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgzNDcsIDM0OFxc KSIgXAotKwkJInByaW50IGFyM1woMyw0LDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDMs NCw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgzNDgsIDM0OVxcKSIgXAotK2kJCSJwcmlu dCBhcjNcKDMsNCw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNCw6MlwpIiBcCi0rCQki XFwkXFswLTlcXSsgPSBcXCgzNDEsIDM0MlxcKSIgXAotKwkJInByaW50IGFyM1woMyw0LDoyXCki Ci0rZ2RiX3Rlc3QgInByaW50IGFyM1woNSw2LDdcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gNTY3 IiBcCi0rCQkicHJpbnQgYXIzXCg1LDYsN1wpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDM6 NCw2LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzY3LCA0NjdcXCkgXFwoIDM2 OCwgNDY4XFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMzo0LDYsNzo4XCkiCi0rZ2RiX3Rlc3Qg InByaW50IGFyM1woMzo0LDYsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM2OCwg NDY4XFwpIFxcKCAzNjksIDQ2OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDM6NCw2LDg6XCki Ci0rZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDYsOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0g XFwoXFwoIDM2MSwgNDYxXFwpIFxcKCAzNjIsIDQ2MlxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNc KDM6NCw2LDoyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDYsNVwpIiBcCi0rCQkiXFwk XFswLTlcXSsgPSBcXCgzNjUsIDQ2NVxcKSIgXAotKwkJInByaW50IGFyM1woMzo0LDYsNVwpIgot KwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCA4NjcsIDk2N1xcKSBcXCggODY4LCA5NjhcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIz XCg4Oiw2LDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYsODpcKSIgXAotKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIDg2OCwgOTY4XFwpIFxcKCA4NjksIDk2OVxcKSBcXCkiIFwKLSsJ CSJwcmludCBhcjNcKDg6LDYsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw2LDoyXCki IFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4NjEsIDk2MVxcKSBcXCggODYyLCA5NjJcXCkg XFwpIiBcCi0rCQkicHJpbnQgYXIzXCg4Oiw2LDoyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1wo ODosNiw1XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDg2NSwgOTY1XFwpIiBcCi0rCQkicHJp bnQgYXIzXCg4Oiw2LDVcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw2LDc6OFwpIiBc Ci0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTY3LCAyNjdcXCkgXFwoIDE2OCwgMjY4XFwpIFxc KSIgXAotKwkJInByaW50IGFyM1woOjIsNiw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6 Miw2LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNjgsIDI2OFxcKSBcXCggMTY5 LCAyNjlcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6Miw2LDg6XCkiCi0rZ2RiX3Rlc3QgInBy aW50IGFyM1woOjIsNiw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTYxLCAyNjFc XCkgXFwoIDE2MiwgMjYyXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woOjIsNiw6MlwpIgotK2dk Yl90ZXN0ICJwcmludCBhcjNcKDoyLDYsNVwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgxNjUs IDI2NVxcKSIgXAotKwkJInByaW50IGFyM1woOjIsNiw1XCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50 IGFyM1woMzo0LDU6Niw0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAzNTQsIDQ1NFxc KSBcXCggMzY0LCA0NjRcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCgzOjQsNTo2LDRcKSIKLStn ZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw1OjYsNFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChc XCggODU0LCA5NTRcXCkgXFwoIDg2NCwgOTY0XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODos NTo2LDRcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw1OjYsNFwpIiBcCi0rCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggMTU0LCAyNTRcXCkgXFwoIDE2NCwgMjY0XFwpIFxcKSIgXAotKwkJInBy aW50IGFyMlwoOjIsNTo2LDRcKSIKLSsKLSsjIFN0cmlkZSA+IDEKLStnZGJfdGVzdCAicHJpbnQg YXIxXCgyOjY6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgyLCA0LCA2XFwpIiBcCi0rCQki cHJpbnQgYXIxXCgyOjY6MlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6NjoyLDM6NFwpIiBc Ci0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjMsIDQzLCA2M1xcKSBcXCggMjQsIDQ0LCA2NFxc KSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDI6NjoyLDM6NFwpIgotK2dkYl90ZXN0ICJwcmludCBh cjJcKDI6NjoyLDNcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoMjMsIDQzLCA2M1xcKSIgXAot KwkJInByaW50IGFyMlwoMjo2OjIsM1wpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6NjoyLDM6 NToyLDQ6NzozXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjM0LCA0MzQsIDYz NFxcKSBcXCggMjU0LCA0NTQsIDY1NFxcKVwKLSsJCSBcXCkgXFwoIFxcKCAyMzcsIDQzNywgNjM3 XFwpIFxcKCAyNTcsIDQ1NywgNjU3XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6Njoy LDM6NToyLDQ6NzozXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjo2OjIsNSw0Ojc6M1wpIiBc Ci0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjU0LCA0NTQsIDY1NFxcKSBcXCggMjU3LCA0NTcs IDY1N1xcKVwKLSsJCSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6NjoyLDUsNDo3OjNcKSIKLSsK LSsjIFN0cmlkZSA8IDAKLStnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6LTJcKSIgXAotKwkJIlxc JFxbMC05XF0rID0gXFwoOCwgNiwgNCwgMlxcKSIgXAotKwkJInByaW50IGFyMVwoODoyOi0yXCki Ci0rZ2RiX3Rlc3QgInByaW50IGFyMlwoODoyOi0yLDM6NFwpIiBcCi0rCQkiXFwkXFswLTlcXSsg PSBcXChcXCggODMsIDYzLCA0MywgMjNcXCkgXFwoIDg0LCA2NCwgNDQsIDI0XFwpXAotKwkJIFxc KSIgXAotKwkJInByaW50IGFyMlwoODoyOi0yLDM6NFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJc KDI6NjoyLDNcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoMjMsIDQzLCA2M1xcKSIgXAotKwkJ InByaW50IGFyMlwoMjo2OjIsM1wpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw3OjM6LTQs NDo3OjNcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNzQsIDM3NFxcKSBcXCgg MjM0LCAzMzRcXCkgXFwpIFxcKFwKLSsJCSBcXCggMjc3LCAzNzdcXCkgXFwoIDIzNywgMzM3XFwp IFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6Myw3OjM6LTQsNDo3OjNcKSIKLStnZGJfdGVz dCAicHJpbnQgYXIzXCgyOjY6Miw1LDc6NDotM1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChc XCggMjU3LCA0NTcsIDY1N1xcKSBcXCggMjU0LCA0NTQsIDY1NFxcKVwKLSsJCSBcXCkiIFwKLSsJ CSJwcmludCBhcjNcKDI6NjoyLDUsNzo0Oi0zXCkiCi0rCi0rIyBUZXN0cyB3aXRoIG5lZ2F0aXZl IGFuZCBtaXhlZCBpbmRpY2VzCi0rZ2RiX3Rlc3QgInAgYXI0XCgyOjQsIC0yOjEsIC0xNTotMTRc KSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNjEsIDM2MSwgNDYxXFwpIFxcKCAy NzEsIDM3MSwgNDcxXFwpXAotKwkJIFxcKCAyODEsIDM4MSwgNDgxXFwpIFxcKCAyOTEsIDM5MSwg NDkxXFwpIFxcKSBcXCggXFwoIDI2MixcCi0rCQkgMzYyLCA0NjJcXCkgXFwoIDI3MiwgMzcyLCA0 NzJcXCkgXFwoIDI4MiwgMzgyLCA0ODJcXCkgXFwoIDI5MixcCi0rCQkgMzkyLCA0OTJcXCkgXFwp IFxcKSIgXAotKwkJInByaW50IGFyNCgyOjQsIC0yOjEsIC0xNTotMTQpIgotKwotK2dkYl90ZXN0 ICJwIGFyNFwoNywtNjoyOjMsLTdcKSIgXAotKyAgICAgICAgICAgICAgICAiXFwkXFswLTlcXSsg PSBcXCg3MjksIDc1OSwgNzg5XFwpIiBcCi0rICAgICAgICAgICAgICAgICJwcmludCBhcjQoNywt NjoyOjMsLTcpIgotKwotK2dkYl90ZXN0ICJwIGFyNFwoOToyOi0yLCAtNjoyOjMsIC02Oi0xNTot M1wpIiBcCi0rICAgICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggOTMwLCA3 MzAsIDUzMCwgMzMwXFwpIFxcKCA5NjAsIDc2MCxcCi0rCQkgNTYwLCAzNjBcXCkgXFwoIDk5MCwg NzkwLCA1OTAsIDM5MFxcKSBcXCkgXFwoIFxcKCA5MjcsIDcyNyxcCi0rCQkgNTI3LCAzMjdcXCkg XFwoIDk1NywgNzU3LCA1NTcsIDM1N1xcKSBcXCggOTg3LCA3ODcsIDU4NyxcCi0rCQkgMzg3XFwp IFxcKSBcXCggXFwoIDkyNCwgNzI0LCA1MjQsIDMyNFxcKSBcXCggOTU0LCA3NTQsIDU1NCxcCi0r CQkgMzU0XFwpIFxcKCA5ODQsIDc4NCwgNTg0LCAzODRcXCkgXFwpIFxcKCBcXCggOTIxLCA3MjEs IDUyMSxcCi0rCQkgMzIxXFwpIFxcKCA5NTEsIDc1MSwgNTUxLCAzNTFcXCkgXFwoIDk4MSwgNzgx LCA1ODEsIDM4MVxcKSBcXClcCi0rCQkgXFwpIiBcCi0rICAgICAgICAgICAgICAgICJwcmludCBh cjQoOToyOi0yLCAtNjoyOjMsIC02Oi0xNTotMykiCi0rCi0rZ2RiX3Rlc3QgInAgYXI0XCg6LDos OlwpIiBcCi0rICAgICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTExLCAy MTEsIDMxMSwgNDExLCA1MTEsIDYxMSwgNzExLFwKLSsJCSA4MTEsIC4qIiBcCi0rICAgICAgICAg ICAgICAgICJwcmludCBhcjQoOiw6LDopIgotKwotKyMgUHJvdm9rZSBlcnJvciBtZXNzYWdlcyBm b3IgYmFkIHVzZXIgaW5wdXQKLStnZGJfdGVzdCAicHJpbnQgYXIxXCgwOjRcKSIgXAotKwkJInBy b3ZpZGVkIGJvdW5kXFwoc1xcKSBvdXRzaWRlIGFycmF5IGJvdW5kXFwoc1xcKSIgXAotKwkJInBy aW50IGFyMVwoMDo0XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMVwoODoxMlwpIiBcCi0rCQkicHJv dmlkZWQgYm91bmRcXChzXFwpIG91dHNpZGUgYXJyYXkgYm91bmRcXChzXFwpIiBcCi0rCQkicHJp bnQgYXIxXCg4OjEyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMVwoODoyOlwpIiBcCi0rCQkiQSBz eW50YXggZXJyb3IgaW4gZXhwcmVzc2lvbiwgbmVhciBgXFwpJy4iIFwKLSsJCSJwcmludCBhcjFc KDg6MjpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6MlwpIiBcCi0rCQkiV3JvbmcgdmFs dWUgcHJvdmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRhcmllcyIgXAotKwkJInByaW50IGFyMVwo ODoyOjJcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIxXCgyOjg6LTJcKSIgXAotKwkJIldyb25nIHZh bHVlIHByb3ZpZGVkIGZvciBzdHJpZGUgYW5kIGJvdW5kYXJpZXMiIFwKLSsJCSJwcmludCBhcjFc KDI6ODotMlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6NzowXCkiIFwKLSsJCSJTdHJpZGUg bXVzdCBub3QgYmUgMCIgXAotKwkJInByaW50IGFyMVwoMjo3OjBcKSIKLStnZGJfdGVzdCAicHJp bnQgYXIxXCgzOjdcKSA9IDQyIiBcCi0rCQkiSW52YWxpZCBjYXN0LiIgXAotKwkJIkFzc2lnbm1l bnQgb2YgdmFsdWUgdG8gc3ViYXJyYXkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9zdGF0aWMtYXJyYXlzLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Rh dGljLWFycmF5cy5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mMjJm Y2JlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRp Yy1hcnJheXMuZjkwCi1AQCAtMCwwICsxLDU1IEBACi0rISBDb3B5cmlnaHQgMjAxNSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBDb250cmlidXRlZCBieSBJbnRlbCBDb3Jw LiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgotKyEKLSshIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCi0rCi0rc3Vicm91dGluZSBzdWIKLSsgIGludGVnZXIsIGRpbWVuc2lvbig5 KSA6OiBhcjEKLSsgIGludGVnZXIsIGRpbWVuc2lvbig5LDkpIDo6IGFyMgotKyAgaW50ZWdlciwg ZGltZW5zaW9uKDksOSw5KSA6OiBhcjMKLSsgIGludGVnZXIsIGRpbWVuc2lvbigxMCwtNzozLCAt MTU6LTUpIDo6IGFyNAotKyAgaW50ZWdlciA6OiBpLGosawotKwotKyAgYXIxID0gMQotKyAgYXIy ID0gMQotKyAgYXIzID0gMQotKyAgYXI0ID0gNAotKwotKyAgISBSZXN1bHRpbmcgYXJyYXkgYXIz IGxvb2tzIGxpa2UgKCgoIDExMSwgMTEyLCAxMTMsIDExNCwuLi4pKSkKLSsgIGRvIGkgPSAxLCA5 LCAxCi0rICAgIGFyMShpKSA9IGkKLSsgICAgZG8gaiA9IDEsIDksIDEKLSsgICAgICBhcjIoaSxq KSA9IGkqMTAgKyBqCi0rICAgICAgZG8gayA9IDEsIDksIDEKLSsgICAgICAgIGFyMyhpLGosaykg PSBpKjEwMCArIGoqMTAgKyBrCi0rICAgICAgZW5kIGRvCi0rICAgIGVuZCBkbwotKyAgZW5kIGRv Ci0rCi0rICBkbyBpID0gMSwgMTAsIDEKLSsgICAgZG8gaiA9IC03LCAzLCAxCi0rICAgICAgZG8g ayA9IC0xNSwgLTUsIDEKLSsgICAgICAgIGFyNChpLGosaykgPSBpKjEwMCArIChqKzgpKjEwICsg KGsrMTYpCi0rICAgICAgZW5kIGRvCi0rICAgIGVuZCBkbwotKyAgZW5kIGRvCi0rCi0rICBhcjEo MSkgPSAxMSAgIUJQMQotKyAgcmV0dXJuCi0rZW5kCi0rCi0rcHJvZ3JhbSB0ZXN0cHJvZwotKyAg Y2FsbCBzdWIKLStlbmQKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1zdHJpZGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cAot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmRjZjE1ZTUKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAKLUBAIC0w LDAgKzEsNDQgQEAKLSsjIENvcHlyaWdodCAyMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzdGFuZGFyZF90ZXN0 ZmlsZSAiLmY5MCIKLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsgICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewot KyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4gewotKyAgICBw ZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKLSsgICAgY29udGludWUK LSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInJlLXJldmVyc2Ut ZWxlbWVudHMiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJyZS1yZXZlcnNlLWVsZW1l bnRzIgotK2dkYl90ZXN0ICJwcmludCBwdmxhIiAiID0gXFxcKDEsIDIsIDMsIDQsIDUsIDYsIDcs IDgsIDksIDEwXFxcKSIgXAotKyAgInByaW50IHJlLXJldmVyc2UtZWxlbWVudHMiCi0rZ2RiX3Rl c3QgInByaW50IHB2bGEoMSkiICIgPSAxIiAicHJpbnQgZmlyc3QgcmUtcmV2ZXJzZS1lbGVtZW50 IgotK2dkYl90ZXN0ICJwcmludCBwdmxhKDEwKSIgIiA9IDEwIiAicHJpbnQgbGFzdCByZS1yZXZl cnNlLWVsZW1lbnQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm9k ZC1lbGVtZW50cyJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm9kZC1lbGVtZW50cyIK LStnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgxLCAzLCA1LCA3LCA5XFxcKSIgInByaW50 IG9kZC1lbGVtZW50cyIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSgxKSIgIiA9IDEiICJwcmludCBm aXJzdCBvZGQtZWxlbWVudCIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSg1KSIgIiA9IDkiICJwcmlu dCBsYXN0IG9kZC1lbGVtZW50IgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJzaW5nbGUtZWxlbWVudCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInNpbmds ZS1lbGVtZW50IgotK2dkYl90ZXN0ICJwcmludCBwdmxhIiAiID0gXFxcKDVcXFwpIiAicHJpbnQg c2luZ2xlLWVsZW1lbnQiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoMSkiICIgPSA1IiAicHJpbnQg b25lIHNpbmdsZS1lbGVtZW50IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLXN0cmlkZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUu ZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWIwMjc0YwotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MAot QEAgLTAsMCArMSwyOSBAQAotKyEgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshIAotKyEgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSshIAotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3Byb2dy YW0gdmxhX3N0cmlkZQotKyAgaW50ZWdlciwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEgKDop Ci0rICBpbnRlZ2VyLCBwb2ludGVyIDo6IHB2bGEgKDopCi0rCi0rICBhbGxvY2F0ZSh2bGEoMTAp KQotKyAgdmxhID0gKC8gKEksIEkgPSAxLDEwKSAvKQotKwotKyAgcHZsYSA9PiB2bGEoMTA6MTot MSkKLSsgIHB2bGEgPT4gcHZsYSgxMDoxOi0xKQotKyAgcHZsYSA9PiB2bGEoMToxMDoyKSAgICEg cmUtcmV2ZXJzZS1lbGVtZW50cwotKyAgcHZsYSA9PiB2bGEoNTo0Oi0yKSAgICEgb2RkLWVsZW1l bnRzCi0rCi0rICBwdmxhID0+IG51bGwoKSAgICAgICAgISBzaW5nbGUtZWxlbWVudAotK2VuZCBw cm9ncmFtIHZsYV9zdHJpZGUKLWRpZmYgLS1naXQgYS9nZGIvdmFsYXJpdGguYyBiL2dkYi92YWxh cml0aC5jCi1pbmRleCBkZTZmY2ZkLi45MDkzOTY5IDEwMDY0NAotLS0tIGEvZ2RiL3ZhbGFyaXRo LmMKLSsrKyBiL2dkYi92YWxhcml0aC5jCi1AQCAtMTkzLDkgKzE5MywyMSBAQCB2YWx1ZV9zdWJz Y3JpcHRlZF9ydmFsdWUgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIExPTkdFU1QgaW5kZXgsIGludCBs b3dlcmJvdW5kKQotICAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGUgPSBjaGVja190eXBlZGVmICh2 YWx1ZV90eXBlIChhcnJheSkpOwotICAgc3RydWN0IHR5cGUgKmVsdF90eXBlID0gY2hlY2tfdHlw ZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOwotICAgVUxPTkdFU1QgZWx0X3Np emUgPSB0eXBlX2xlbmd0aF91bml0cyAoZWx0X3R5cGUpOwotLSAgVUxPTkdFU1QgZWx0X29mZnMg PSBlbHRfc2l6ZSAqIChpbmRleCAtIGxvd2VyYm91bmQpOwotKyAgVUxPTkdFU1QgZWx0X29mZnMg PSBpbmRleCAtIGxvd2VyYm91bmQ7Ci0rICBMT05HRVNUIGVsdF9zdHJpZGUgPSBUWVBFX0JZVEVf U1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5X3R5cGUpKTsKLSAgIHN0cnVjdCB2YWx1ZSAq djsKLSAKLSsgIGlmIChlbHRfc3RyaWRlID4gMCkKLSsgICAgZWx0X29mZnMgKj0gZWx0X3N0cmlk ZTsKLSsgIGVsc2UgaWYgKGVsdF9zdHJpZGUgPCAwKQotKyAgICB7Ci0rICAgICAgaW50IG9mZnMg PSAoZWx0X29mZnMgKyAxKSAqIGVsdF9zdHJpZGU7Ci0rCi0rICAgICAgZWx0X29mZnMgPSBUWVBF X0xFTkdUSCAoYXJyYXlfdHlwZSkgKyBvZmZzOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIGVsdF9v ZmZzICo9IGVsdF9zaXplOwotKwotICAgaWYgKGluZGV4IDwgbG93ZXJib3VuZCB8fCAoIVRZUEVf QVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQotIAkJCSAgICAgJiYg ZWx0X29mZnMgPj0gdHlwZV9sZW5ndGhfdW5pdHMgKGFycmF5X3R5cGUpKSkKLSAgICAgewotZGlm ZiAtLWdpdCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYwotaW5kZXggNDAzOTJlOC4uMjRm ZmFjYiAxMDA2NDQKLS0tLSBhL2dkYi92YWxvcHMuYwotKysrIGIvZ2RiL3ZhbG9wcy5jCi1AQCAt Mzc3NSw1NiArMzc3NSwxOTEgQEAgdmFsdWVfb2ZfdGhpc19zaWxlbnQgKGNvbnN0IHN0cnVjdCBs YW5ndWFnZV9kZWZuICpsYW5nKQotIHN0cnVjdCB2YWx1ZSAqCi0gdmFsdWVfc2xpY2UgKHN0cnVj dCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKLSB7Ci0rICAvKiBQYXNz IHVuYWx0ZXJlZCBhcmd1bWVudHMgdG8gVkFMVUVfU0xJQ0VfMSwgcGx1cyBhIGRlZmF1bHQgc3Ry aWRlCi0rICAgICB2YWx1ZSBvZiAnMScsIHdoaWNoIHJldHVybnMgZXZlcnkgZWxlbWVudCBiZXR3 ZWVuIExPV0JPVU5EIGFuZAotKyAgICAgKExPV0JPVU5EICsgTEVOR1RIKS4gIFdlIGFsc28gcHJv dmlkZSBhIGRlZmF1bHQgQ0FMTF9DT1VOVCBvZiAnMScKLSsgICAgIGFzIHdlIGFyZSBvbmx5IGNv bnNpZGVyaW5nIHRoZSBoaWdoZXN0IGRpbWVuc2lvbiwgb3Igd2UgYXJlCi0rICAgICB3b3JraW5n IG9uIGEgb25lIGRpbWVuc2lvbmFsIGFycmF5LiAgU28gd2UgY2FsbCBWQUxVRV9TTElDRV8xCi0r ICAgICBleGFjdGx5IG9uY2UuICAqLwotKyAgcmV0dXJuIHZhbHVlX3NsaWNlXzEgKGFycmF5LCBs b3dib3VuZCwgbGVuZ3RoLCAxLCAxKTsKLSt9Ci0rCi0rLyogVkFMVUVfU0xJQ0VfMSBpcyBjYWxs ZWQgZm9yIGVhY2ggYXJyYXkgZGltZW5zaW9uIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyCi0rICAg b2YgZWxlbWVudHMgYXMgZGVmaW5lZCBieSB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24uCi0rICAg Q0FMTF9DT1VOVCBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB3ZSBhcmUgY2FsbGluZyB0aGUgZnVu Y3Rpb24gb25jZSwgZS5nLgotKyAgIHdlIGFyZSB3b3JraW5nIG9uIHRoZSBjdXJyZW50IGRpbWVu c2lvbiBvZiBBUlJBWSwgb3IgaWYgd2UgYXJlIGNhbGxpbmcKLSsgICB0aGUgZnVuY3Rpb24gcmVw ZWF0ZWRseS4gIEluIHRoZSBsYXRlciBjYXNlIHdlIG5lZWQgdG8gdGFrZSBlbGVtZW50cwotKyAg IGZyb20gdGhlIFRBUkdFVF9UWVBFIG9mIEFSUkFZLgotKyAgIFdpdGggYSBDQUxMX0NPVU5UIGdy ZWF0ZXIgdGhhbiAxIHdlIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0cyBmb3IgZXZlcnkgZWxlbWVudAot KyAgIHRoYXQgc2hvdWxkIGJlIGluIHRoZSByZXN1bHQgYXJyYXkuICBUaGVuIHdlIGZldGNoIHRo ZSBjb250ZW50cyBhbmQgdGhlbgotKyAgIGNvcHkgdGhlbSBpbnRvIHRoZSByZXN1bHQgYXJyYXku ICBUaGUgcmVzdWx0IGFycmF5IHdpbGwgaGF2ZSBvbmUgZGltZW5zaW9uCi0rICAgbGVzcyB0aGFu IHRoZSBpbnB1dCBhcnJheSwgc28gbGF0ZXIgb24gd2UgbmVlZCB0byByZWNyZWF0ZSB0aGUgaW5k aWNlcyBhbmQKLSsgICByYW5nZXMgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24uICAqLwotKwotK3N0 cnVjdCB2YWx1ZSAqCi0rdmFsdWVfc2xpY2VfMSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxv d2JvdW5kLCBpbnQgbGVuZ3RoLAotKwkgICAgICAgaW50IHN0cmlkZV9sZW5ndGgsIGludCBjYWxs X2NvdW50KQotK3sKLSAgIHN0cnVjdCB0eXBlICpzbGljZV9yYW5nZV90eXBlLCAqc2xpY2VfdHlw ZSwgKnJhbmdlX3R5cGU7Ci0tICBMT05HRVNUIGxvd2VyYm91bmQsIHVwcGVyYm91bmQ7Ci0tICBz dHJ1Y3QgdmFsdWUgKnNsaWNlOwotLSAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGU7Ci0rICBzdHJ1 Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7 Ci0rICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9U WVBFIChhcnJheV90eXBlKSk7Ci0rICB1bnNpZ25lZCBpbnQgZWx0X3NpemUsIGVsdF9vZmZzOwot KyAgTE9OR0VTVCBhcnlfaGlnaF9ib3VuZCwgYXJ5X2xvd19ib3VuZDsKLSsgIHN0cnVjdCB2YWx1 ZSAqdjsKLSsgIGludCBzbGljZV9yYW5nZV9zaXplLCBpID0gMCwgcm93X2NvdW50ID0gMSwgZWxl bV9jb3VudCA9IDE7Ci0gCi0tICBhcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlw ZSAoYXJyYXkpKTsKLSsgIC8qIENoZWNrIGZvciBsZWdhY3kgY29kZSBpZiB3ZSBhcmUgYWN0dWFs bHkgZGVhbGluZyB3aXRoIGFuIGFycmF5IG9yCi0rICAgICBzdHJpbmcuICAqLwotICAgaWYgKFRZ UEVfQ09ERSAoYXJyYXlfdHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCi0gICAgICAgJiYgVFlQRV9D T0RFIChhcnJheV90eXBlKSAhPSBUWVBFX0NPREVfU1RSSU5HKQotICAgICBlcnJvciAoXygiY2Fu bm90IHRha2Ugc2xpY2Ugb2Ygbm9uLWFycmF5IikpOwotIAotLSAgcmFuZ2VfdHlwZSA9IFRZUEVf SU5ERVhfVFlQRSAoYXJyYXlfdHlwZSk7Ci0tICBpZiAoZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFu Z2VfdHlwZSwgJmxvd2VyYm91bmQsICZ1cHBlcmJvdW5kKSA8IDApCi0tICAgIGVycm9yIChfKCJz bGljZSBmcm9tIGJhZCBhcnJheSBvciBiaXRzdHJpbmciKSk7Ci0rICBhcnlfbG93X2JvdW5kID0g VFlQRV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSkpOwotKyAgYXJ5X2hp Z2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSkp OwotKwotKyAgLyogV2hlbiB3ZSBhcmUgd29ya2luZyBvbiBhIG11bHRpLWRpbWVuc2lvbmFsIGFy cmF5LCB3ZSBuZWVkIHRvIGdldCB0aGUKLSsgICAgIGF0dHJpYnV0ZXMgb2YgdGhlIHVuZGVybHlp bmcgdHlwZS4gICovCi0rICBpZiAoY2FsbF9jb3VudCA+IDEpCi0rICAgIHsKLSsgICAgICBhcnlf bG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoZWx0X3R5cGUpKTsK LSsgICAgICBhcnlfaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAoVFlQRV9JTkRFWF9UWVBF IChlbHRfdHlwZSkpOwotKyAgICAgIGVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJH RVRfVFlQRSAoZWx0X3R5cGUpKTsKLSsgICAgICByb3dfY291bnQgPSBUWVBFX0xFTkdUSCAoYXJy YXlfdHlwZSkKLSsJCSAgICAvIFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90 eXBlKSk7Ci0rICAgIH0KLSsKLSsgIC8qIFdpdGggYSBzdHJpZGUgb2YgJzEnLCB0aGUgbnVtYmVy IG9mIGVsZW1lbnRzIHBlciByZXN1bHQgcm93IGlzIGVxdWFsIHRvCi0rICAgICB0aGUgTEVOR1RI IG9mIHRoZSBzdWJhcnJheS4gIFdpdGggbm9uLWRlZmF1bHQgc3RyaWRlIHZhbHVlcywgd2Ugc2tp cAotKyAgICAgZWxlbWVudHMsIGJ1dCBoYXZlIHRvIGFkZCB0aGUgc3RhcnQgZWxlbWVudCB0byB0 aGUgdG90YWwgbnVtYmVyIG9mCi0rICAgICBlbGVtZW50cyBwZXIgcm93LiAgKi8KLSsgIGlmIChz dHJpZGVfbGVuZ3RoID09IDEpCi0rICAgIGVsZW1fY291bnQgPSBsZW5ndGg7Ci0rICBlbHNlCi0r ICAgIGVsZW1fY291bnQgPSAoKGxlbmd0aCAtIDEpIC8gc3RyaWRlX2xlbmd0aCkgKyAxOwotKwot KyAgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOwotKyAgZWx0X29mZnMgPSBsb3di b3VuZCAtIGFyeV9sb3dfYm91bmQ7Ci0gCi0tICBpZiAobG93Ym91bmQgPCBsb3dlcmJvdW5kIHx8 IGxlbmd0aCA8IDAKLS0gICAgICB8fCBsb3dib3VuZCArIGxlbmd0aCAtIDEgPiB1cHBlcmJvdW5k KQotLSAgICBlcnJvciAoXygic2xpY2Ugb3V0IG9mIHJhbmdlIikpOwotKyAgZWx0X29mZnMgKj0g ZWx0X3NpemU7Ci0rCi0rICAvKiBDaGVjayBmb3IgdmFsaWQgdXNlciBpbnB1dC4gIEluIGNhc2Ug b2YgRm9ydHJhbiB0aGlzIHdhcyBhbHJlYWR5IGRvbmUKLSsgICAgIGluIHRoZSBjYWxsaW5nIGZ1 bmN0aW9uLiAgKi8KLSsgIGlmIChjYWxsX2NvdW50ID09IDEKLSsJJiYgKCFUWVBFX0FSUkFZX1VQ UEVSX0JPVU5EX0lTX1VOREVGSU5FRCAoYXJyYXlfdHlwZSkKLSsJICAgICAgJiYgZWx0X29mZnMg Pj0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpKSkKLSsgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVj dG9yIGVsZW1lbnQiKSk7Ci0rCi0rICAvKiBDQUxMX0NPVU5UIGlzIDEgd2hlbiB3ZSBhcmUgZGVh bGluZyBlaXRoZXIgd2l0aCB0aGUgaGlnaGVzdCBkaW1lbnNpb24KLSsgICAgIG9mIHRoZSBhcnJh eSwgb3IgYSBvbmUgZGltZW5zaW9uYWwgYXJyYXkuICBTZXQgUkFOR0VfVFlQRSBhY2NvcmRpbmds eS4KLSsgICAgIEluIGJvdGggY2FzZXMgd2UgY2FsY3VsYXRlIGhvdyBtYW55IHJvd3MvZWxlbWVu dHMgd2lsbCBiZSBpbiB0aGUgb3V0cHV0Ci0rICAgICBhcnJheSBieSBzZXR0aW5nIHNsaWNlX3Jh bmdlX3NpemUuICAqLwotKyAgaWYgKGNhbGxfY291bnQgPT0gMSkKLSsgICAgewotKyAgICAgIHJh bmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKGFycmF5X3R5cGUpOwotKyAgICAgIHNsaWNlX3Jh bmdlX3NpemUgPSBhcnlfbG93X2JvdW5kICsgZWxlbV9jb3VudCAtIDE7Ci0rCi0rICAgICAgLyog Q2hlY2sgaWYgdGhlIGFycmF5IGJvdW5kcyBhcmUgdmFsaWQuICAqLwotKyAgICAgIGlmIChnZXRf ZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmYXJ5X2xvd19ib3VuZCwgJmFyeV9oaWdoX2Jv dW5kKSA8IDApCi0rCWVycm9yIChfKCJzbGljZSBmcm9tIGJhZCBhcnJheSBvciBiaXRzdHJpbmci KSk7Ci0rICAgIH0KLSsgIC8qIFdoZW4gQ0FMTF9DT1VOVCBpcyBncmVhdGVyIHRoYW4gMSwgd2Ug YXJlIGRlYWxpbmcgd2l0aCBhbiBhcnJheSBvZiBhcnJheXMuCi0rICAgICBTbyB3ZSBuZWVkIHRv IGdldCB0aGUgdHlwZSBiZWxvdyB0aGUgY3VycmVudCBvbmUgYW5kIHNldCB0aGUgUkFOR0VfVFlQ RQotKyAgICAgYWNjb3JkaW5nbHkuICAqLwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgcmFuZ2Vf dHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOwot KyAgICAgIHNsaWNlX3JhbmdlX3NpemUgPSBhcnlfbG93X2JvdW5kICsgKHJvd19jb3VudCAqIGVs ZW1fY291bnQpIC0gMTsKLSsgICAgICBhcnlfbG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKHJh bmdlX3R5cGUpOwotKyAgICB9Ci0gCi0gICAvKiBGSVhNRS10eXBlLWFsbG9jYXRpb246IG5lZWQg YSB3YXkgdG8gZnJlZSB0aGlzIHR5cGUgd2hlbiB3ZSBhcmUKLS0gICAgIGRvbmUgd2l0aCBpdC4g ICovCi0tICBzbGljZV9yYW5nZV90eXBlID0gY3JlYXRlX3N0YXRpY19yYW5nZV90eXBlICgoc3Ry dWN0IHR5cGUgKikgTlVMTCwKLS0JCQkJCSAgICAgICBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90 eXBlKSwKLS0JCQkJCSAgICAgICBsb3dib3VuZCwKLS0JCQkJCSAgICAgICBsb3dib3VuZCArIGxl bmd0aCAtIDEpOwotKyAgICAgIGRvbmUgd2l0aCBpdC4gICovCi0gCi0rICBzbGljZV9yYW5nZV90 eXBlID0gY3JlYXRlX3N0YXRpY19yYW5nZV90eXBlIChOVUxMLCBUWVBFX1RBUkdFVF9UWVBFIChy YW5nZV90eXBlKSwKLSsJCQkJCSAgICAgICBhcnlfbG93X2JvdW5kLCBzbGljZV9yYW5nZV9zaXpl KTsKLSAgIHsKLS0gICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZ UEUgKGFycmF5X3R5cGUpOwotLSAgICBMT05HRVNUIG9mZnNldAotLSAgICAgID0gKGxvd2JvdW5k IC0gbG93ZXJib3VuZCkgKiBUWVBFX0xFTkdUSCAoY2hlY2tfdHlwZWRlZiAoZWxlbWVudF90eXBl KSk7Ci0rICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGU7Ci0rCi0rICAgIC8qIFdoZW4gYm90 aCBDQUxMX0NPVU5UIGFuZCBTVFJJREVfTEVOR1RIIGVxdWFsIDEsIHdlIGNhbiB1c2UgdGhlIGxl Z2FjeQotKyAgICAgICBjb2RlIGZvciBzdWJhcnJheXMuICAqLwotKyAgICBpZiAoY2FsbF9jb3Vu dCA9PSAxICYmIHN0cmlkZV9sZW5ndGggPT0gMSkKLSsgICAgICB7Ci0rCWVsZW1lbnRfdHlwZSA9 IFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpOwotKwotKwlzbGljZV90eXBlID0gY3JlYXRl X2FycmF5X3R5cGUgKE5VTEwsIGVsZW1lbnRfdHlwZSwgc2xpY2VfcmFuZ2VfdHlwZSk7Ci0gCi0t ICAgIHNsaWNlX3R5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoKHN0cnVjdCB0eXBlICopIE5VTEws Ci0tCQkJCSAgICBlbGVtZW50X3R5cGUsCi0tCQkJCSAgICBzbGljZV9yYW5nZV90eXBlKTsKLS0g ICAgVFlQRV9DT0RFIChzbGljZV90eXBlKSA9IFRZUEVfQ09ERSAoYXJyYXlfdHlwZSk7Ci0rCVRZ UEVfQ09ERSAoc2xpY2VfdHlwZSkgPSBUWVBFX0NPREUgKGFycmF5X3R5cGUpOwotIAotLSAgICBp ZiAoVkFMVUVfTFZBTCAoYXJyYXkpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKGFycmF5 KSkKLS0gICAgICBzbGljZSA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHNsaWNlX3R5cGUpOwotKwlp ZiAoVkFMVUVfTFZBTCAoYXJyYXkpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKGFycmF5 KSkKLSsJICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAoc2xpY2VfdHlwZSk7Ci0rCWVsc2UKLSsJ ICB7Ci0rCSAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHNsaWNlX3R5cGUpOwotKwkgICAgdmFsdWVf Y29udGVudHNfY29weSAodiwKLSsJCQkJIHZhbHVlX2VtYmVkZGVkX29mZnNldCAodiksCi0rCQkJ CSBhcnJheSwKLSsJCQkJIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoYXJyYXkpICsgZWx0X29mZnMs Ci0rCQkJCSBlbHRfc2l6ZSAqIGxvbmdlc3RfdG9faW50IChsZW5ndGgpKTsKLSsJICB9Ci0rCi0r ICAgICAgfQotKyAgICAvKiBXaXRoIGEgQ0FMTF9DT1VOVCBvciBTVFJJREVfTEVOR1RIIGFyZSBn cmVhdGVyIHRoYW4gMSB3ZSBhcmUgd29ya2luZwotKyAgICAgICBvbiBhIHJhbmdlIG9mIHJhbmdl cy4gIFNvIHdlIGNvcHkgdGhlIHJlbGV2YW50IGVsZW1lbnRzIGludG8gdGhlCi0rICAgICAgIG5l dyBhcnJheSB3ZSByZXR1cm4uICAqLwotICAgICBlbHNlCi0gICAgICAgewotLQlzbGljZSA9IGFs bG9jYXRlX3ZhbHVlIChzbGljZV90eXBlKTsKLS0JdmFsdWVfY29udGVudHNfY29weSAoc2xpY2Us IDAsIGFycmF5LCBvZmZzZXQsCi0tCQkJICAgICB0eXBlX2xlbmd0aF91bml0cyAoc2xpY2VfdHlw ZSkpOwotKwlpbnQgaiwgb2Zmc19zdG9yZSA9IGVsdF9vZmZzOwotKwlMT05HRVNUIGRzdF9vZmZz ZXQgPSAwOwotKwlMT05HRVNUIHNyY19yb3dfbGVuZ3RoID0gVFlQRV9MRU5HVEggKFRZUEVfVEFS R0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKLSsKLSsJaWYgKGNhbGxfY291bnQgPT0gMSkKLSsJICB7 Ci0rCSAgICAvKiBXaGVuIENBTExfQ09VTlQgaXMgZXF1YWwgdG8gMSB3ZSBhcmUgd29ya2luZyBv biB0aGUgY3VycmVudCByYW5nZQotKwkgICAgICAgYW5kIHVzZSB0aGVzZSBlbGVtZW50cyBkaXJl Y3RseS4gICovCi0rCSAgICBlbGVtZW50X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90 eXBlKTsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICAvKiBXb3JraW5nIG9uIGFuIGFycmF5 IG9mIGFycmF5cywgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnRzIGlzIHRoZSB0eXBlCi0rCSAgICAg ICBvZiB0aGUgc3ViYXJyYXlzJyB0eXBlLiAgKi8KLSsJICAgIGVsZW1lbnRfdHlwZSA9IFRZUEVf VEFSR0VUX1RZUEUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKLSsJICB9Ci0rCi0r CXNsaWNlX3R5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgZWxlbWVudF90eXBlLCBzbGlj ZV9yYW5nZV90eXBlKTsKLSsKLSsJIC8qIElmIHdlIGhhdmUgYSBvbmUgZGltZW5zaW9uYWwgYXJy YXksIHdlIGNvcHkgaXRzIFRZUEVfQ09ERS4gIEZvciBhCi0rCSAgICBtdWx0aSBkaW1lbnNpb25h bCBhcnJheSB3ZSBjb3B5IHRoZSBlbWJlZGRlZCB0eXBlJ3MgVFlQRV9DT0RFLiAgKi8KLSsJaWYg KGNhbGxfY291bnQgPT0gMSkKLSsJICBUWVBFX0NPREUgKHNsaWNlX3R5cGUpID0gVFlQRV9DT0RF IChhcnJheV90eXBlKTsKLSsJZWxzZQotKwkgIFRZUEVfQ09ERSAoc2xpY2VfdHlwZSkgPSBUWVBF X0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKLSsKLSsJdiA9IGFsbG9jYXRl X3ZhbHVlIChzbGljZV90eXBlKTsKLSsKLSsJLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSByb3dzIG9m IHRoZSBvdXRlciBhcnJheSBhbmQgc2V0IHRoZSBuZXcgb2Zmc2V0Ci0rCSAgIGZvciBlYWNoIHJv dy4gICovCi0rCWZvciAoaSA9IDA7IGkgPCByb3dfY291bnQ7IGkrKykKLSsJICB7Ci0rCSAgICBl bHRfb2ZmcyA9IG9mZnNfc3RvcmUgKyBpICogc3JjX3Jvd19sZW5ndGg7Ci0rCi0rCSAgICAvKiBJ dGVyYXRlIHRocm91Z2ggdGhlIGVsZW1lbnRzIGluIGVhY2ggcm93IHRvIGNvcHkgb25seSB0aG9z ZS4gICovCi0rCSAgICBmb3IgKGogPSAxOyBqIDw9IGVsZW1fY291bnQ7IGorKykKLSsJICAgICAg ewotKwkJLyogRmV0Y2hlcyB0aGUgY29udGVudHMgb2YgQVJSQVkgYW5kIGNvcGllcyB0aGVtIGlu dG8gVi4gICovCi0rCQl2YWx1ZV9jb250ZW50c19jb3B5ICh2LCBkc3Rfb2Zmc2V0LCBhcnJheSwg ZWx0X29mZnMsIGVsdF9zaXplKTsKLSsJCWVsdF9vZmZzICs9IGVsdF9zaXplICogc3RyaWRlX2xl bmd0aDsKLSsJCWRzdF9vZmZzZXQgKz0gZWx0X3NpemU7Ci0rCSAgICAgIH0KLSsJICB9Ci0gICAg ICAgfQotIAotLSAgICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzbGljZSwgYXJyYXkp OwotLSAgICBWQUxVRV9GUkFNRV9JRCAoc2xpY2UpID0gVkFMVUVfRlJBTUVfSUQgKGFycmF5KTsK LS0gICAgc2V0X3ZhbHVlX29mZnNldCAoc2xpY2UsIHZhbHVlX29mZnNldCAoYXJyYXkpICsgb2Zm c2V0KTsKLSsgICAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAodiwgYXJyYXkpOwotKyAg ICBWQUxVRV9SRUdOVU0gKHYpID0gVkFMVUVfUkVHTlVNIChhcnJheSk7Ci0rICAgIFZBTFVFX0ZS QU1FX0lEICh2KSA9IFZBTFVFX0ZSQU1FX0lEIChhcnJheSk7Ci0rICAgIHNldF92YWx1ZV9vZmZz ZXQgKHYsIHZhbHVlX29mZnNldCAoYXJyYXkpICsgZWx0X29mZnMpOwotICAgfQotIAotLSAgcmV0 dXJuIHNsaWNlOwotKyAgcmV0dXJuIHY7Ci0gfQotIAotIC8qIENyZWF0ZSBhIHZhbHVlIGZvciBh IEZPUlRSQU4gY29tcGxleCBudW1iZXIuICBDdXJyZW50bHkgbW9zdCBvZiB0aGUKLWRpZmYgLS1n aXQgYS9nZGIvdmFsdWUuaCBiL2dkYi92YWx1ZS5oCi1pbmRleCAwYjQxN2I0Li45YzM3NzEzIDEw MDY0NAotLS0tIGEvZ2RiL3ZhbHVlLmgKLSsrKyBiL2dkYi92YWx1ZS5oCi1AQCAtMTA1Nyw2ICsx MDU3LDggQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFyeWluZ190b19zbGljZSAoc3RydWN0IHZh bHVlICopOwotIAotIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFs dWUgKiwgaW50LCBpbnQpOwotIAotK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3NsaWNlXzEg KHN0cnVjdCB2YWx1ZSAqLCBpbnQsIGludCwgaW50LCBpbnQpOwotKwotIGV4dGVybiBzdHJ1Y3Qg dmFsdWUgKnZhbHVlX2xpdGVyYWxfY29tcGxleCAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB2YWx1 ZSAqLAotIAkJCQkJICAgIHN0cnVjdCB0eXBlICopOwotIAoKZGlmZiAtLWdpdCBhL2dkYi12bGEt aW50ZWwtZm9ydHJhbi1zdHJpZGVzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC1mb3J0cmFuLXN0cmlk ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ3OTIwMAotLS0g L2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtZm9ydHJhbi1zdHJpZGVzLnBhdGNoCkBAIC0w LDAgKzEsMTk3NyBAQAorZ2l0IGRpZmYgLS1zdGF0IC1wIGdkYi9tYXN0ZXIuLi5nZGIvdXNlcnMv YmhlY2tlbC9mb3J0cmFuLXN0cmlkZXMKK2RiZmQ3MTQwYmY0YzA1MDBkMWY1ZDE5MmJlNzgxZjgz Zjc4Zjc5MjIKKworIGdkYi9kd2FyZjJsb2MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgNDYgKystCisgZ2RiL2R3YXJmMmxvYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNiArCisgZ2RiL2R3YXJmMnJlYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx MyArLQorIGdkYi9ldmFsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzOTEg KysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyBnZGIvZXhwcHJpbnQuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDIwICstCisgZ2RiL2V4cHJlc3Npb24uaCAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAxOCArLQorIGdkYi9mLWV4cC55ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNDIgKystCisgZ2RiL2YtdmFscHJpbnQuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgOCArLQorIGdkYi9nZGJ0eXBlcy5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMzQgKystCisgZ2RiL2dkYnR5cGVzLmggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxOCArLQorIGdkYi9wYXJzZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMjQgKy0KKyBnZGIvcnVzdC1leHAueSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDEyICstCisgZ2RiL3J1c3QtbGFuZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAxNyArLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHAg fCA0MjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vc3RhdGljLWFycmF5cy5mOTAgfCAgNTUgKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXB0eXBlLmV4cCAgICAgfCAgIDQgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLXNpemVvZi5leHAgICAgfCAgIDQgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLXN0cmlkZS5leHAgICAgfCAgNDQgKysrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtc3RyaWRlLmY5MCAgICB8ICAyOSArKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LmY5MCAgICAgICAgICAgfCAgMTAgKworIGdkYi92YWxhcml0aC5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMTAgKy0KKyBnZGIvdmFsb3BzLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTk3ICsrKysrKysrKysrLS0KKyBnZGIvdmFsdWUuaCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKKyAyMyBmaWxlcyBjaGFuZ2VkLCAxMjQyIGluc2Vy dGlvbnMoKyksIDE4MyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2Mu YyBiL2dkYi9kd2FyZjJsb2MuYworaW5kZXggNTQ4ZTQ2OC4uNTYwZTE2ZiAxMDA2NDQKKy0tLSBh L2dkYi9kd2FyZjJsb2MuYworKysrIGIvZ2RiL2R3YXJmMmxvYy5jCitAQCAtMjYwMSwxMSArMjYw MSwxNCBAQCBkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QgZHdhcmYyX2xv Y2V4cHJfYmF0b24gKmRsYmF0b24sCisgLyogU2VlIGR3YXJmMmxvYy5oLiAgKi8KKyAKKyBpbnQK Ky1kd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnBy b3AsCisrZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5X3NpZ25lZCAoY29uc3Qgc3RydWN0IGR5bmFt aWNfcHJvcCAqcHJvcCwKKyAJCQkgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKyAJCQkgIHN0 cnVjdCBwcm9wZXJ0eV9hZGRyX2luZm8gKmFkZHJfc3RhY2ssCistCQkJICBDT1JFX0FERFIgKnZh bHVlKQorKwkJCSAgQ09SRV9BRERSICp2YWx1ZSwKKysJCQkgIGludCBpc19zaWduZWQpCisgewor KyAgaW50IHJjID0gMDsKKysKKyAgIGlmIChwcm9wID09IE5VTEwpCisgICAgIHJldHVybiAwOwor IAorQEAgLTI2MjksNyArMjYzMiw3IEBAIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAoY29uc3Qg c3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKyAKKyAJCSp2YWx1ZSA9IHZhbHVlX2FzX2FkZHJl c3MgKHZhbCk7CisgCSAgICAgIH0KKy0JICAgIHJldHVybiAxOworKwkgICAgcmMgPSAxOworIAkg IH0KKyAgICAgICB9CisgICAgICAgYnJlYWs7CitAQCAtMjY1MSw3ICsyNjU0LDcgQEAgZHdhcmYy X2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAorIAkg ICAgaWYgKCF2YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2YWwpKQorIAkgICAgICB7CisgCQkqdmFsdWUg PSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOworLQkJcmV0dXJuIDE7CisrCQlyYyA9IDE7CisgCSAg ICAgIH0KKyAJICB9CisgICAgICAgfQorQEAgLTI2NTksOCArMjY2Miw4IEBAIGR3YXJmMl9ldmFs dWF0ZV9wcm9wZXJ0eSAoY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKyAKKyAgICAg Y2FzZSBQUk9QX0NPTlNUOgorICAgICAgICp2YWx1ZSA9IHByb3AtPmRhdGEuY29uc3RfdmFsOwor LSAgICAgIHJldHVybiAxOworLQorKyAgICAgIHJjID0gMTsKKysgICAgICBicmVhazsKKyAgICAg Y2FzZSBQUk9QX0FERFJfT0ZGU0VUOgorICAgICAgIHsKKyAJc3RydWN0IGR3YXJmMl9wcm9wZXJ0 eV9iYXRvbiAqYmF0b24KK0BAIC0yNjgxLDExICsyNjg0LDM4IEBAIGR3YXJmMl9ldmFsdWF0ZV9w cm9wZXJ0eSAoY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKyAJICB2YWwgPSB2YWx1 ZV9hdCAoYmF0b24tPm9mZnNldF9pbmZvLnR5cGUsCisgCQkJICBwaW5mby0+YWRkciArIGJhdG9u LT5vZmZzZXRfaW5mby5vZmZzZXQpOworIAkqdmFsdWUgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwp OworLQlyZXR1cm4gMTsKKysJcmMgPSAxOworICAgICAgIH0KKysgICAgICBicmVhazsKKyAgICAg fQorIAorLSAgcmV0dXJuIDA7CisrICBpZiAocmMgPT0gMSAmJiBpc19zaWduZWQgPT0gMSkKKysg ICAgeworKyAgICAgIC8qIElmIHdlIGhhdmUgYSB2YWxpZCByZXR1cm4gY2FuZGlkYXRlIGFuZCBp dCdzIHZhbHVlIGlzIHNpZ25lZCwKKysgICAgICAgICB3ZSBoYXZlIHRvIHNpZ24tZXh0ZW5kIHRo ZSB2YWx1ZSBiZWNhdXNlIENPUkVfQUREUiBvbiA2NGJpdCBtYWNoaW5lIGhhcworKyAgICAgICAg IDggYnl0ZXMgYnV0IGFkZHJlc3Mgc2l6ZSBvZiBhbiAzMmJpdCBhcHBsaWNhdGlvbiBpcyA0IGJ5 dGVzLiAgKi8KKysgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqIGdkYmFyY2ggPSB0YXJnZXRfZ2RiYXJj aCAoKTsKKysgICAgICBjb25zdCBpbnQgYWRkcl9iaXQgPSBnZGJhcmNoX2FkZHJfYml0IChnZGJh cmNoKTsKKysgICAgICBjb25zdCBDT1JFX0FERFIgbmVnX21hc2sgPSAoKH4wKSA8PCAgKGFkZHJf Yml0IC0gMSkpOworKworKyAgICAgIC8qIENoZWNrIGlmIHNpZ25lZCBiaXQgaXMgc2V0IGFuZCBz aWduLWV4dGVuZCB2YWx1ZXMuICAqLworKyAgICAgIGlmICgqdmFsdWUgJiAobmVnX21hc2spKQor KwkqdmFsdWUgfD0gKG5lZ19tYXNrICk7CisrICAgIH0KKysgIHJldHVybiByYzsKKyt9CisrCisr aW50CisrZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9w ICpwcm9wLAorKwkJCSAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorKwkJCSAgc3RydWN0IHBy b3BlcnR5X2FkZHJfaW5mbyAqYWRkcl9zdGFjaywKKysJCQkgIENPUkVfQUREUiAqdmFsdWUpCisr eworKyAgcmV0dXJuIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eV9zaWduZWQgKHByb3AsCisrCQkJ CSAgIGZyYW1lLAorKwkJCQkgICBhZGRyX3N0YWNrLAorKwkJCQkgICB2YWx1ZSwKKysJCQkJICAg MCk7CisgfQorIAorIC8qIFNlZSBkd2FyZjJsb2MuaC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL2R3 YXJmMmxvYy5oIGIvZ2RiL2R3YXJmMmxvYy5oCitpbmRleCBmYTgzNDU5Li5kYTZiOWNkIDEwMDY0 NAorLS0tIGEvZ2RiL2R3YXJmMmxvYy5oCisrKysgYi9nZGIvZHdhcmYybG9jLmgKK0BAIC0xMzgs NiArMTM4LDEyIEBAIGludCBkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKGNvbnN0IHN0cnVjdCBk eW5hbWljX3Byb3AgKnByb3AsCisgCQkJICAgICAgc3RydWN0IHByb3BlcnR5X2FkZHJfaW5mbyAq YWRkcl9zdGFjaywKKyAJCQkgICAgICBDT1JFX0FERFIgKnZhbHVlKTsKKyAKKytpbnQgZHdhcmYy X2V2YWx1YXRlX3Byb3BlcnR5X3NpZ25lZCAoY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJv cCwKKysJCQkgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCisrCQkJICAgICAgc3RydWN0 IHByb3BlcnR5X2FkZHJfaW5mbyAqYWRkcl9zdGFjaywKKysJCQkgICAgICBDT1JFX0FERFIgKnZh bHVlLAorKwkJCSAgICAgIGludCBpc19zaWduZWQpOworKworIC8qIEEgaGVscGVyIGZvciB0aGUg Y29tcGlsZXIgaW50ZXJmYWNlIHRoYXQgY29tcGlsZXMgYSBzaW5nbGUgZHluYW1pYworICAgIHBy b3BlcnR5IHRvIEMgY29kZS4KKyAKK2RpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2Ri L2R3YXJmMnJlYWQuYworaW5kZXggNjY1OGEzOC4uYTFhYzY1OSAxMDA2NDQKKy0tLSBhL2dkYi9k d2FyZjJyZWFkLmMKKysrKyBiL2dkYi9kd2FyZjJyZWFkLmMKK0BAIC0xNDk1Miw3ICsxNDk1Miw3 IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZSwgKm9yaWdfYmFzZV90eXBlOwor ICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7CisgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwor LSAgc3RydWN0IGR5bmFtaWNfcHJvcCBsb3csIGhpZ2g7CisrICBzdHJ1Y3QgZHluYW1pY19wcm9w IGxvdywgaGlnaCwgc3RyaWRlOworICAgaW50IGxvd19kZWZhdWx0X2lzX3ZhbGlkOworICAgaW50 IGhpZ2hfYm91bmRfaXNfY291bnQgPSAwOworICAgY29uc3QgY2hhciAqbmFtZTsKK0BAIC0xNDk3 Miw3ICsxNDk3Miw5IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAorICAgbG93LmtpbmQgPSBQUk9QX0NPTlNUOworICAg aGlnaC5raW5kID0gUFJPUF9DT05TVDsKKysgIHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKKyAg IGhpZ2guZGF0YS5jb25zdF92YWwgPSAwOworKyAgc3RyaWRlLmRhdGEuY29uc3RfdmFsID0gMDsK KyAKKyAgIC8qIFNldCBMT1dfREVGQVVMVF9JU19WQUxJRCBpZiBjdXJyZW50IGxhbmd1YWdlIGFu ZCBEV0FSRiB2ZXJzaW9uIGFsbG93CisgICAgICBvbWl0dGluZyBEV19BVF9sb3dlcl9ib3VuZC4g ICovCitAQCAtMTUwMDYsNiArMTUwMDgsMTMgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgYnJlYWs7CisgICAg IH0KKyAKKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3Up OworKyAgaWYgKGF0dHIpCisrICAgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRp ZSwgY3UsICZzdHJpZGUpKQorKyAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRz LCBfKCJNaXNzaW5nIERXX0FUX2J5dGVfc3RyaWRlICIKKysgICAgICAgICAgICAgICAgICAiLSBE SUUgYXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAorKyAgICAgICAgICAgICBkaWUtPm9mZnNldC5z ZWN0X29mZiwgb2JqZmlsZV9uYW1lIChjdS0+b2JqZmlsZSkpOworKworICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7CisgICBpZiAoYXR0cikKKyAgICAg YXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3cpOworQEAgLTE1MDgyLDcg KzE1MDkxLDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgJiYgIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkg JiYgKGhpZ2guZGF0YS5jb25zdF92YWwgJiBuZWdhdGl2ZV9tYXNrKSkKKyAgICAgaGlnaC5kYXRh LmNvbnN0X3ZhbCB8PSBuZWdhdGl2ZV9tYXNrOworIAorLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9y YW5nZV90eXBlIChOVUxMLCBvcmlnX2Jhc2VfdHlwZSwgJmxvdywgJmhpZ2gpOworKyAgcmFuZ2Vf dHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBvcmlnX2Jhc2VfdHlwZSwgJmxvdywgJmhp Z2gsICZzdHJpZGUpOworIAorICAgaWYgKGhpZ2hfYm91bmRfaXNfY291bnQpCisgICAgIFRZUEVf UkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmZsYWdfdXBwZXJfYm91bmRfaXNfY291bnQgPSAxOwor ZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCitpbmRleCAwMGExMDdjLi45MWQ4 YTAzIDEwMDY0NAorLS0tIGEvZ2RiL2V2YWwuYworKysrIGIvZ2RiL2V2YWwuYworQEAgLTM5OSwy OSArMzk5LDMyNSBAQCBpbml0X2FycmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0 cnVjdCB2YWx1ZSAqZWxlbWVudCwKKyAgIHJldHVybiBpbmRleDsKKyB9CisgCisrLyogRXZhbHVh dGVzIGFueSBvcGVyYXRpb24gb24gRm9ydHJhbiBhcnJheXMgb3Igc3RyaW5ncyB3aXRoIGF0IGxl YXN0CisrICAgb25lIHVzZXIgcHJvdmlkZWQgcGFyYW1ldGVyLiAgRXhwZWN0cyB0aGUgaW5wdXQg QVJSQVkgdG8gYmUgZWl0aGVyCisrICAgYW4gYXJyYXksIG9yIGEgc3RyaW5nLiAgRXZhbHVhdGVz IEVYUCBieSBpbmNyZW1lbnRpbmcgUE9TLCBhbmQKKysgICB3cml0ZXMgdGhlIGNvbnRlbnQgZnJv bSB0aGUgZWx0IHN0YWNrIGludG8gYSBsb2NhbCBzdHJ1Y3QuICBOQVJHUworKyAgIHNwZWNpZmll cyBudW1iZXIgb2YgbGl0ZXJhbCBvciByYW5nZSBhcmd1bWVudHMgdGhlIHVzZXIgcHJvdmlkZWQu CisrICAgTkFSR1MgbXVzdCBiZSB0aGUgc2FtZSBudW1iZXIgYXMgQVJSQVkgaGFzIGRpbWVuc2lv bnMuICAqLworKworIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorLXZhbHVlX2Y5MF9zdWJhcnJheSAo c3RydWN0IHZhbHVlICphcnJheSwKKy0JCSAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQg KnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQorK3ZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZh bHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKysJCSAgICBpbnQgKnBvcywgaW50 IG5hcmdzLCBlbnVtIG5vc2lkZSBub3NpZGUpCisgeworLSAgaW50IHBjID0gKCpwb3MpICsgMTsK KysgIGludCBpLCBkaW1fY291bnQgPSAwOworICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91 bmQ7CistICBzdHJ1Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmIChUWVBFX0lOREVYX1RZ UEUgKHZhbHVlX3R5cGUgKGFycmF5KSkpOworLSAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGUK Ky0gICAgPSAoZW51bSByYW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5s b25nY29uc3QpOworLSAKKy0gICpwb3MgKz0gMzsKKy0KKy0gIGlmIChyYW5nZV90eXBlID09IExP V19CT1VORF9ERUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQorLSAg ICBsb3dfYm91bmQgPSBUWVBFX0xPV19CT1VORCAocmFuZ2UpOworLSAgZWxzZQorLSAgICBsb3df Ym91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBw b3MsIG5vc2lkZSkpOworKyAgc3RydWN0IHZhbHVlICpuZXdfYXJyYXkgPSBhcnJheTsKKysgIHN0 cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAobmV3X2Fy cmF5KSk7CisrICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGU7CisrCisrICB0eXBlZGVmIHN0cnVjdCBz dWJzY3JpcHRfcmFuZ2UKKysgIHsKKysgICAgZW51bSByYW5nZV90eXBlIGY5MF9yYW5nZV90eXBl OworKyAgICBMT05HRVNUIGxvdywgaGlnaCwgc3RyaWRlOworKyAgfSBzdWJzY3JpcHRfcmFuZ2U7 CisrCisrICB0eXBlZGVmIGVudW0gc3Vic2NyaXB0X2tpbmQKKysgIHsKKysgICAgU1VCU0NSSVBU X1JBTkdFLCAgICAvKiBlLmcuICIobG93Ym91bmQ6aGlnaGJvdW5kKSIgICovCisrICAgIFNVQlND UklQVF9JTkRFWCAgICAvKiBlLmcuICIobGl0ZXJhbCkiICAqLworKyAgfSBraW5kOworKworKyAg LyogTG9jYWwgc3RydWN0IHRvIGhvbGQgdXNlciBkYXRhIGZvciBGb3J0cmFuIHN1YmFycmF5IGRp bWVuc2lvbnMuICAqLworKyAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZQorKyAgeworKyAgICAvKiBG b3IgZXZlcnkgZGltZW5zaW9uLCB3ZSBhcmUgZWl0aGVyIHdvcmtpbmcgb24gYSByYW5nZSBvciBh biBpbmRleAorKyAgICAgICBleHByZXNzaW9uLCBzbyB3ZSBzdG9yZSB0aGlzIGluZm8gc2VwYXJh dGVseSBmb3IgbGF0ZXIuICAqLworKyAgICBlbnVtIHN1YnNjcmlwdF9raW5kIGtpbmQ7CisrCisr ICAgIC8qIFdlIGFsc28gc3RvcmUgZWl0aGVyIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmQgaW5m bywgb3IgdGhlIGluZGV4CisrICAgICAgIG51bWJlci4gIEJlZm9yZSBldmFsdWF0aW9uIG9mIHRo ZSBpbnB1dCB2YWx1ZXMsIHdlIGRvIG5vdCBrbm93IGlmIHdlIGFyZQorKyAgICAgICBhY3R1YWxs eSB3b3JraW5nIG9uIGEgcmFuZ2Ugb2YgcmFuZ2VzLCBvciBhbiBpbmRleCBpbiBhIHJhbmdlLiAg U28gYXMgYQorKyAgICAgICBmaXJzdCBzdGVwIHdlIHN0b3JlIGFsbCBpbnB1dCBpbiBhIHVuaW9u LiAgVGhlIGFycmF5IGNhbGN1bGF0aW9uIGl0c2VsZgorKyAgICAgICBkZWFscyB3aXRoIHRoaXMg bGF0ZXIgb24uICAqLworKyAgICB1bmlvbiBlbGVtZW50X3JhbmdlCisrICAgIHsKKysgICAgICBz dWJzY3JpcHRfcmFuZ2UgcmFuZ2U7CisrICAgICAgTE9OR0VTVCBudW1iZXI7CisrICAgIH0gVTsK KysgIH0gKnN1YnNjcmlwdF9hcnJheTsKKysKKysgIC8qIENoZWNrIGlmIHRoZSBudW1iZXIgb2Yg YXJndW1lbnRzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIG1hdGNoZXMKKysgICAgIHRoZSBudW1iZXIg b2YgZGltZW5zaW9uIG9mIHRoZSBhcnJheS4gIEEgc3RyaW5nIGhhcyBvbmx5IG9uZQorKyAgICAg ZGltZW5zaW9uLiAgKi8KKysgIGlmIChuYXJncyAhPSBjYWxjX2Y3N19hcnJheV9kaW1zICh2YWx1 ZV90eXBlIChuZXdfYXJyYXkpKSkKKysgICAgZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJz Y3JpcHRzIikpOworKworKyAgc3Vic2NyaXB0X2FycmF5ID0gKHN0cnVjdCBzdWJzY3JpcHRfc3Rv cmUqKSBhbGxvY2EgKHNpemVvZiAoKnN1YnNjcmlwdF9hcnJheSkgKiBuYXJncyk7CisrCisrICAv KiBQYXJzZSB0aGUgdXNlciBpbnB1dCBpbnRvIHRoZSBTVUJTQ1JJUFRfQVJSQVkgdG8gc3RvcmUg aXQuICBXZSBuZWVkCisrICAgICB0byBldmFsdWF0ZSBpdCBmaXJzdCwgYXMgdGhlIGlucHV0IGlz IGZyb20gbGVmdC10by1yaWdodC4gIFRoZQorKyAgICAgYXJyYXkgaXMgc3RvcmVkIGZyb20gcmln aHQtdG8tbGVmdC4gIFNvIHdlIGhhdmUgdG8gdXNlIHRoZSB1c2VyCisrICAgICBpbnB1dCBpbiBy ZXZlcnNlIG9yZGVyLiAgTGF0ZXIgb24sIHdlIG5lZWQgdGhlIGlucHV0IGluZm9ybWF0aW9uIHRv CisrICAgICByZS1jYWxjdWxhdGUgdGhlIG91dHB1dCBhcnJheS4gIEZvciBtdWx0aS1kaW1lbnNp b25hbCBhcnJheXMsIHdlCisrICAgICBjYW4gYmUgZGVhbGluZyB3aXRoIGFueSBwb3NzaWJsZSBj b21iaW5hdGlvbiBvZiByYW5nZXMgYW5kIGluZGljZXMKKysgICAgIGZvciBldmVyeSBkaW1lbnNp b24uICAqLworKyAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCisrICAgIHsKKysgICAgICBz dHJ1Y3Qgc3Vic2NyaXB0X3N0b3JlICppbmRleCA9ICZzdWJzY3JpcHRfYXJyYXlbaV07CisgCist ICBpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBC T1RIX0JPVU5EX0RFRkFVTFQpCistICAgIGhpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKHJh bmdlKTsKKy0gIGVsc2UKKy0gICAgaGlnaF9ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRl X3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgbm9zaWRlKSk7CisrICAgICAgLyogVGhlIHVz ZXIgaW5wdXQgaXMgYSByYW5nZSwgd2l0aCBvciB3aXRob3V0IGxvd2VyIGFuZCB1cHBlciBib3Vu ZC4KKysJIEUuZy46ICJwIGFycnkoMjo1KSIsICJwIGFycnkoIDo1KSIsICJwIGFycnkoIDogKSIs IGV0Yy4gICovCisrICAgICAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFOR0Up CisrCXsKKysJICBpbnQgcGMgPSAoKnBvcykgKyAxOworKwkgIHN1YnNjcmlwdF9yYW5nZSAqcmFu Z2U7CisrCisrCSAgaW5kZXgtPmtpbmQgPSBTVUJTQ1JJUFRfUkFOR0U7CisrCSAgcmFuZ2UgPSAm aW5kZXgtPlUucmFuZ2U7CisrCisrCSAgKnBvcyArPSAzOworKwkgIHJhbmdlLT5mOTBfcmFuZ2Vf dHlwZSA9IChlbnVtIHJhbmdlX3R5cGUpIGV4cC0+ZWx0c1twY10ubG9uZ2NvbnN0OworKworKwkg IC8qIElmIGEgbG93ZXIgYm91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCB0aGUgYml0IGhh cyBiZWVuCisrCSAgICAgc2V0IGFuZCB3ZSBjYW4gYXNzaWduIHRoZSB2YWx1ZSBmcm9tIHRoZSBl bHQgc3RhY2suICBTYW1lIGZvcgorKwkgICAgIHVwcGVyIGJvdW5kLiAgKi8KKysJICBpZiAoKHJh bmdlLT5mOTBfcmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0xPV19CT1VORCkKKysJICAgICAgPT0gU1VC QVJSQVlfTE9XX0JPVU5EKQorKwkgICAgcmFuZ2UtPmxvdyA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1 YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsCisrCQkJCQkJCSBwb3MsIG5vc2lkZSkpOworKwkg IGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkKKysJICAg ICAgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKKysJICAgIHJhbmdlLT5oaWdoID0gdmFsdWVfYXNf bG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwKKysJCQkJCQkJICBwb3MsIG5v c2lkZSkpOworKworKwkgIC8qIEFzc2lnbiB0aGUgdXNlcidzIHN0cmlkZSB2YWx1ZSBpZiBwcm92 aWRlZC4gICovCisrCSAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgJiBTVUJBUlJBWV9TVFJJ REUpID09IFNVQkFSUkFZX1NUUklERSkKKysJICAgIHJhbmdlLT5zdHJpZGUgPSB2YWx1ZV9hc19s b25nIChldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLAorKwkJCQkJCQkgICAgIHBvcywg bm9zaWRlKSk7CisrCisrCSAgLyogQXNzaWduIHRoZSBkZWZhdWx0IHN0cmlkZSB2YWx1ZSAnMScu ICAqLworKwkgIGVsc2UKKysJICAgIHJhbmdlLT5zdHJpZGUgPSAxOworKworKwkgIC8qIENoZWNr IHRoZSBwcm92aWRlZCBzdHJpZGUgdmFsdWUgaXMgaWxsZWdhbCwgYWthICcwJy4gICovCisrCSAg aWYgKHJhbmdlLT5zdHJpZGUgPT0gMCkKKysJICAgIGVycm9yIChfKCJTdHJpZGUgbXVzdCBub3Qg YmUgMCIpKTsKKysJfQorKyAgICAgIC8qIFVzZXIgaW5wdXQgaXMgYW4gaW5kZXguICBFLmcuOiAi cCBhcnJ5KDUpIi4gICovCisrICAgICAgZWxzZQorKwl7CisrCSAgc3RydWN0IHZhbHVlICp2YWw7 CisrCisrCSAgaW5kZXgtPmtpbmQgPSBTVUJTQ1JJUFRfSU5ERVg7CisrCisrCSAgLyogRXZhbHVh dGUgZWFjaCBzdWJzY3JpcHQ7IGl0IG11c3QgYmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gIFRo aXMKKysJICAgICBlbnN1cmVzIHRoZSB2YWxpZGl0eSBvZiB0aGUgcHJvdmlkZWQgaW5kZXguICAq LworKwkgIHZhbCA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9z aWRlKTsKKysJICBpbmRleC0+VS5udW1iZXIgPSB2YWx1ZV9hc19sb25nICh2YWwpOworKwl9Cisr CisrICAgIH0KKysKKysgIC8qIFRyYXZlcnNlIHRoZSBhcnJheSBmcm9tIHJpZ2h0IHRvIGxlZnQg YW5kIHNldCB0aGUgaGlnaCBhbmQgbG93IGJvdW5kcworKyAgICAgZm9yIGxhdGVyIHVzZS4gICov CisrICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQorKyAgICB7CisrICAgICAgc3Ry dWN0IHN1YnNjcmlwdF9zdG9yZSAqaW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOworKyAgICAg IHN0cnVjdCB0eXBlICppbmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsK KysKKysgICAgICBzd2l0Y2ggKGluZGV4LT5raW5kKQorKwl7CisrCWNhc2UgU1VCU0NSSVBUX1JB TkdFOgorKwkgIHsKKysKKysJICAgIC8qIFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVj aWZpZWQgYnkgdGhlIHVzZXIsIHdlIG11c3QKKysJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50 IHVzZXIgZW50cnkgYXMgYSByYW5nZS4gIFdlIHNpbXBseQorKwkgICAgICAgaW5jcmVtZW50IERJ TV9DT1VOVCB3aGljaCB0ZWxscyB1cyBob3cgbWFueSB0aW1lcyB3ZSBhcmUKKysJICAgICAgIGNh bGxpbmcgVkFMVUVfU0xJQ0VfMS4gICovCisrCSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0g JmluZGV4LT5VLnJhbmdlOworKworKwkgICAgLyogSWYgbm8gbG93ZXIgYm91bmQgd2FzIHByb3Zp ZGVkIGJ5IHRoZSB1c2VyLCB3ZSB0YWtlIHRoZQorKwkgICAgICAgZGVmYXVsdCBib3VuZGFyeS4g IFNhbWUgZm9yIHRoZSBoaWdoIGJvdW5kLiAgKi8KKysJICAgIGlmICgocmFuZ2UtPmY5MF9yYW5n ZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKSA9PSAwKQorKwkgICAgICByYW5nZS0+bG93ID0g VFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpOworKworKwkgICAgaWYgKChyYW5nZS0+ZjkwX3Jh bmdlX3R5cGUgJiBTVUJBUlJBWV9ISUdIX0JPVU5EKSA9PSAwKQorKwkgICAgICByYW5nZS0+aGln aCA9IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSk7CisrCisrCSAgICAvKiBCb3RoIHVzZXIg cHJvdmlkZWQgbG93IGFuZCBoaWdoIGJvdW5kIGhhdmUgdG8gYmUgaW5zaWRlIHRoZQorKwkgICAg ICAgYXJyYXkgYm91bmRzLiAgVGhyb3cgYW4gZXJyb3IgaWYgbm90LiAgKi8KKysJICAgIGlmIChy YW5nZS0+bG93IDwgVFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpCisrCQl8fCByYW5nZS0+bG93 ID4gVFlQRV9ISUdIX0JPVU5EIChpbmRleF90eXBlKQorKwkJfHwgcmFuZ2UtPmhpZ2ggPCBUWVBF X0xPV19CT1VORCAoaW5kZXhfdHlwZSkKKysJCXx8IHJhbmdlLT5oaWdoID4gVFlQRV9ISUdIX0JP VU5EIChpbmRleF90eXBlKSkKKysJICAgICAgZXJyb3IgKF8oInByb3ZpZGVkIGJvdW5kKHMpIG91 dHNpZGUgYXJyYXkgYm91bmQocykiKSk7CisrCisrCSAgICAvKiBGb3IgYSBuZWdhdGl2ZSBzdHJp ZGUgdGhlIGxvd2VyIGJvdW5kYXJ5IG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhlCisrCSAgICAgICB1 cHBlciBib3VuZGFyeS4KKysJICAgICAgIEZvciBhIHBvc2l0aXZlIHN0cmlkZSB0aGUgbG93ZXIg Ym91bmRhcnkgbXVzdCBiZSBzbWFsbGVyIHRoYW4gdGhlCisrCSAgICAgICB1cHBlciBib3VuZGFy eS4gICovCisrCSAgICBpZiAoKHJhbmdlLT5zdHJpZGUgPCAwICYmIHJhbmdlLT5sb3cgPCByYW5n ZS0+aGlnaCkKKysJCXx8IChyYW5nZS0+c3RyaWRlID4gMCAmJiByYW5nZS0+bG93ID4gcmFuZ2Ut PmhpZ2gpKQorKwkgICAgICBlcnJvciAoXygiV3JvbmcgdmFsdWUgcHJvdmlkZWQgZm9yIHN0cmlk ZSBhbmQgYm91bmRhcmllcyIpKTsKKysKKysJICB9CisrCSAgYnJlYWs7CisrCisrCWNhc2UgU1VC U0NSSVBUX0lOREVYOgorKwkgIGJyZWFrOworKworKwl9CisrCisrICAgICAgIGFycmF5X3R5cGUg PSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKTsKKysgICAgfQorKworKyAgLyogUmVzZXQg QVJSQVlfVFlQRSBiZWZvcmUgc2xpY2luZy4qLworKyAgYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKHZhbHVlX3R5cGUgKG5ld19hcnJheSkpOworKworKyAgLyogVHJhdmVyc2UgdGhlIGFycmF5 IGZyb20gcmlnaHQgdG8gbGVmdCBhbmQgZXZhbHVhdGUgZWFjaCBjb3JyZXNwb25kaW5nCisrICAg ICB1c2VyIGlucHV0LiAgVkFMVUVfU1VCU0NSSVBUIGlzIGNhbGxlZCBmb3IgZXZlcnkgaW5kZXgs IHVudGlsIGEgcmFuZ2UKKysgICAgIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLiAgQWZ0ZXIgYSBy YW5nZSBleHByZXNzaW9uIGhhcyBiZWVuIGV2YWx1YXRlZCwKKysgICAgIGV2ZXJ5IHN1YnNlcXVl bnQgZXhwcmVzc2lvbiBpcyBhbHNvIHRyZWF0ZWQgYXMgYSByYW5nZS4gICovCisrICBmb3IgKGkg PSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQorKyAgICB7CisrICAgICAgc3RydWN0IHN1YnNjcmlw dF9zdG9yZSAqaW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOworKyAgICAgIHN0cnVjdCB0eXBl ICppbmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKKysKKysgICAgICBz d2l0Y2ggKGluZGV4LT5raW5kKQorKwl7CisrCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgorKwkgIHsK KysKKysJICAgIC8qIFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhl IHVzZXIsIHdlIG11c3QKKysJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkg YXMgYSByYW5nZS4gIFdlIHNpbXBseQorKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGlj aCB0ZWxscyB1cyBob3cgbWFueSB0aW1lcyB3ZSBhcmUKKysJICAgICAgIGNhbGxpbmcgVkFMVUVf U0xJQ0VfMS4gICovCisrCSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJh bmdlOworKworKwkgICAgLyogRElNX0NPVU5UIGNvdW50cyBldmVyeSB1c2VyIGFyZ3VtZW50IHRo YXQgaXMgdHJlYXRlZCBhcyBhIHJhbmdlLgorKwkgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgZm9y IGV4cHJlc3Npb25zIGxpa2UgJ3ByaW50IGFycmF5KDcsIDg6OSkuCisrCSAgICAgICBIZXJlIHRo ZSBmaXJzdCBhcmd1bWVudCBpcyBhIGxpdGVyYWwsIGJ1dCBtdXN0IGJlIHRyZWF0ZWQgYXMgYQor KwkgICAgICAgcmFuZ2UgYXJndW1lbnQgdG8gYWxsb3cgdGhlIGNvcnJlY3Qgb3V0cHV0IHJlcHJl c2VudGF0aW9uLiAgKi8KKysJICAgIGRpbV9jb3VudCsrOworKworKwkgICAgbmV3X2FycmF5Cisr CSAgICAgID0gdmFsdWVfc2xpY2VfMSAobmV3X2FycmF5LCByYW5nZS0+bG93LAorKwkJCSAgICAg ICByYW5nZS0+aGlnaCAtIHJhbmdlLT5sb3cgKyAxLAorKwkJCSAgICAgICByYW5nZS0+c3RyaWRl LCBkaW1fY291bnQpOworKwkgIH0KKysJICBicmVhazsKKysKKysJY2FzZSBTVUJTQ1JJUFRfSU5E RVg6CisrCSAgeworKwkgICAgLyogRElNX0NPVU5UIG9ubHkgc3RheXMgJzAnIHdoZW4gbm8gcmFu Z2UgYXJndW1lbnQgd2FzIHByb2Nlc3NlZAorKwkgICAgICAgYmVmb3JlLCBzdGFydGluZyBmcm9t IHRoZSBsYXN0IGRpbWVuc2lvbi4gIFRoaXMgd2F5IHdlIGNhbgorKwkgICAgICAgcmVkdWNlIHRo ZSBudW1iZXIgb2YgZGltZW5zaW9ucyBmcm9tIHRoZSByZXN1bHQgYXJyYXkuCisrCSAgICAgICBI b3dldmVyLCBpZiBhIHJhbmdlIGhhcyBiZWVuIHByb2Nlc3NlZCBiZWZvcmUgYW4gaW5kZXgsIHdl CisrCSAgICAgICB0cmVhdCB0aGUgaW5kZXggbGlrZSBhIHJhbmdlIHdpdGggZXF1YWwgbG93LSBh bmQgaGlnaCBib3VuZHMKKysJICAgICAgIHRvIGdldCB0aGUgdmFsdWUgb2Zmc2V0IHJpZ2h0LiAg Ki8KKysJICAgIGlmIChkaW1fY291bnQgPT0gMCkKKysJICAgICAgbmV3X2FycmF5CisrCSAgICAg ICAgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKG5ld19hcnJheSwgaW5kZXgtPlUubnVtYmVy LAorKwkJCQkJICAgIGY3N19nZXRfbG93ZXJib3VuZCAodmFsdWVfdHlwZQorKwkJCQkJCQkJICAo bmV3X2FycmF5KSkpOworKwkgICAgZWxzZQorKwkgICAgICB7CisrCQlkaW1fY291bnQrKzsKKysK KysJCS8qIFdlIG1pZ2h0IGVuZCB1cCBoZXJlLCBiZWNhdXNlIHdlIGhhdmUgdG8gdHJlYXQgdGhl IHByb3ZpZGVkCisrCQkgICBpbmRleCBsaWtlIGEgcmFuZ2UuIEJ1dCBub3cgVkFMVUVfU1VCU0NS SVBURURfUlZBTFVFCisrCQkgICBjYW5ub3QgZG8gdGhlIHJhbmdlIGNoZWNrcyBmb3IgdXMuIFNv IHdlIGhhdmUgdG8gbWFrZSBzdXJlCisrCQkgICBvdXJzZWx2ZXMgdGhhdCB0aGUgdXNlciBwcm92 aWRlZCBpbmRleCBpcyBpbnNpZGUgdGhlCisrCQkgICBhcnJheSBib3VuZHMuICBUaHJvdyBhbiBl cnJvciBpZiBub3QuICAqLworKwkJaWYgKGluZGV4LT5VLm51bWJlciA8IFRZUEVfTE9XX0JPVU5E IChpbmRleF90eXBlKQorKwkJICAgICYmIGluZGV4LT5VLm51bWJlciA+IFRZUEVfSElHSF9CT1VO RCAoaW5kZXhfdHlwZSkpCisrCQkgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRl IGFycmF5IGJvdW5kKHMpIikpOworKworKwkJaWYgKGluZGV4LT5VLm51bWJlciA+IFRZUEVfTE9X X0JPVU5EIChpbmRleF90eXBlKQorKwkJICAgICYmIGluZGV4LT5VLm51bWJlciA+IFRZUEVfSElH SF9CT1VORCAoaW5kZXhfdHlwZSkpCisrCQkgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBv dXRzaWRlIGFycmF5IGJvdW5kKHMpIikpOworKworKwkJbmV3X2FycmF5ID0gdmFsdWVfc2xpY2Vf MSAobmV3X2FycmF5LAorKwkJCQkJICAgaW5kZXgtPlUubnVtYmVyLAorKwkJCQkJICAgMSwgLyog Q09VTlQgaXMgJzEnIGVsZW1lbnQgICovCisrCQkJCQkgICAxLCAvKiBTVFJJREUgc2V0IHRvICcx JyAgKi8KKysJCQkJCSAgIGRpbV9jb3VudCk7CisrCSAgICAgIH0KKysKKysJICB9CisrCSAgYnJl YWs7CisrCX0KKysgICAgICBhcnJheV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlw ZSk7CisrICAgIH0KKysKKysgIC8qIFdpdGggRElNX0NPVU5UID4gMSB3ZSBjdXJyZW50bHkgaGF2 ZSBhIG9uZSBkaW1lbnNpb25hbCBhcnJheSwgYnV0IGV4cGVjdAorKyAgICAgYW4gYXJyYXkgb2Yg YXJyYXlzLCBkZXBlbmRpbmcgb24gaG93IG1hbnkgcmFuZ2VzIGhhdmUgYmVlbiBwcm92aWRlZCBi eQorKyAgICAgdGhlIHVzZXIuICBTbyB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGFycmF5IGRpbWVu c2lvbnMgZm9yIHByaW50aW5nIGl0CisrICAgICBjb3JyZWN0bHkuCisrICAgICBTdGFydGluZyBm cm9tIHJpZ2h0IHRvIGxlZnQgaW4gdGhlIHVzZXIgaW5wdXQsIGFmdGVyIHdlIGhpdCB0aGUgZmly c3QKKysgICAgIHJhbmdlIGFyZ3VtZW50IGV2ZXJ5IHN1YnNlcXVlbnQgYXJndW1lbnQgaXMgYWxz byB0cmVhdGVkIGFzIGEgcmFuZ2UuCisrICAgICBFLmcuOgorKyAgICAgInAgYXJ5KDMsIDcsIDI6 MTUpIiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBidXQgd2UgY2FsY3VsYXRlZCAz CisrICAgICByYW5nZXMuCisrICAgICAicCBhcnkoMywgNzoxMiwgNCkiIGluIEZvcnRyYW4gaGFz IG9ubHkgMSBkaW1lbnNpb24sIGJ1dCB3ZSBjYWxjdWxhdGVkIDIKKysgICAgIHJhbmdlcy4KKysg ICAgICJwIGFyeSgyOjQsIDUsIDcpIiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBh bmQgd2UgY2FsY3VsYXRlZCAxCisrICAgICByYW5nZS4gICovCisrICBpZiAoZGltX2NvdW50ID4g MSkKKysgICAgeworKyAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IE5VTEw7CisrCisrICAgICAgZWx0 X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKKysKKysg ICAgICAvKiBFdmVyeSBTVUJTQ1JJUFRfUkFOR0UgaW4gdGhlIHVzZXIgaW5wdXQgc2lnbmlmaWVz IGFuIGFjdHVhbCByYW5nZSBpbgorKwkgdGhlIG91dHB1dCBhcnJheS4gIFNvIHdlIHRyYXZlcnNl IHRoZSBTVUJTQ1JJUFRfQVJSQVkgYWdhaW4sIGxvb2tpbmcKKysJIGZvciBhIHJhbmdlIGVudHJ5 LiAgV2hlbiB3ZSBmaW5kIG9uZSwgd2UgdXNlIHRoZSByYW5nZSBpbmZvIHRvIGNyZWF0ZQorKwkg YW4gYWRkaXRpb25hbCByYW5nZV90eXBlIHRvIHNldCB0aGUgY29ycmVjdCBib3VuZHMgYW5kIGRp bWVuc2lvbnMgZm9yCisrCSB0aGUgb3V0cHV0IGFycmF5LiAgSW4gYWRkaXRpb24sIHdlIG1heSBo YXZlIGEgc3RyaWRlIHZhbHVlIHRoYXQgaXMgbm90CisrCSAnMScsIGZvcmNpbmcgdXMgdG8gYWRq dXN0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSByYW5nZSwgYWNjb3JkaW5nCisrCSB0byB0 aGUgc3RyaWRlIHZhbHVlLiAgKi8KKysgICAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykK KysJeworKwkgIHN0cnVjdCBzdWJzY3JpcHRfc3RvcmUgKmluZGV4ID0gJnN1YnNjcmlwdF9hcnJh eVtpXTsKKysKKysJICBpZiAoaW5kZXgtPmtpbmQgPT0gU1VCU0NSSVBUX1JBTkdFKQorKwkgICAg eworKwkgICAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwgKmludGVyaW1fYXJyYXlfdHlwZTsK KysKKysJICAgICAgaW50IG5ld19sZW5ndGg7CisgCistICByZXR1cm4gdmFsdWVfc2xpY2UgKGFy cmF5LCBsb3dfYm91bmQsIGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKysJICAgICAgLyog VGhlIGxlbmd0aCBvZiBhIHN1Yi1kaW1lbnNpb24gd2l0aCBhbGwgZWxlbWVudHMgYmV0d2VlbiB0 aGUKKysJCSBib3VuZHMgcGx1cyB0aGUgc3RhcnQgZWxlbWVudCBpdHNlbGYuICBJdCBtYXkgYmUg bW9kaWZpZWQgYnkKKysJCSBhIHVzZXIgcHJvdmlkZWQgc3RyaWRlIHZhbHVlLiAgKi8KKysJICAg ICAgbmV3X2xlbmd0aCA9IGluZGV4LT5VLnJhbmdlLmhpZ2ggLSBpbmRleC0+VS5yYW5nZS5sb3c7 CisrCisrCSAgICAgIG5ld19sZW5ndGggLz0gaW5kZXgtPlUucmFuZ2Uuc3RyaWRlOworKworKwkg ICAgICByYW5nZV90eXBlCisrCQk9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwKKysJ CQkJCSAgICBlbHRfdHlwZSwKKysJCQkJCSAgICBpbmRleC0+VS5yYW5nZS5sb3csCisrCQkJCQkg ICAgaW5kZXgtPlUucmFuZ2UubG93ICsgbmV3X2xlbmd0aCk7CisrCisrCSAgICAgIGludGVyaW1f YXJyYXlfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLAorKwkJCQkJCSAgICAgIGVsdF90 eXBlLAorKwkJCQkJCSAgICAgIHJhbmdlX3R5cGUpOworKworKwkgICAgICBUWVBFX0NPREUgKGlu dGVyaW1fYXJyYXlfdHlwZSkKKysJCT0gVFlQRV9DT0RFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkp KTsKKysKKysJICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlIChpbnRlcmltX2FycmF5X3R5cGUpOwor KworKwkgICAgICBlbHRfdHlwZSA9IHZhbHVlX3R5cGUgKHYpOworKwkgICAgfQorKworKwl9Cisr ICAgICAgdmFsdWVfY29udGVudHNfY29weSAodiwgMCwgbmV3X2FycmF5LCAwLCBUWVBFX0xFTkdU SCAoZWx0X3R5cGUpKTsKKysgICAgICByZXR1cm4gdjsKKysgICAgfQorKworKyAgcmV0dXJuIG5l d19hcnJheTsKKyB9CisgCisgCitAQCAtMTgxMCwxOSArMjEwNiw4IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIHN3aXRjaCAoY29k ZSkKKyAJeworIAljYXNlIFRZUEVfQ09ERV9BUlJBWToKKy0JICBpZiAoZXhwLT5lbHRzWypwb3Nd Lm9wY29kZSA9PSBPUF9SQU5HRSkKKy0JICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFy ZzEsIGV4cCwgcG9zLCBub3NpZGUpOworLQkgIGVsc2UKKy0JICAgIGdvdG8gbXVsdGlfZjc3X3N1 YnNjcmlwdDsKKy0KKyAJY2FzZSBUWVBFX0NPREVfU1RSSU5HOgorLQkgIGlmIChleHAtPmVsdHNb KnBvc10ub3Bjb2RlID09IE9QX1JBTkdFKQorLQkgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJh eSAoYXJnMSwgZXhwLCBwb3MsIG5vc2lkZSk7CistCSAgZWxzZQorLQkgICAgeworLQkgICAgICBh cmcyID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOwor LQkgICAgICByZXR1cm4gdmFsdWVfc3Vic2NyaXB0IChhcmcxLCB2YWx1ZV9hc19sb25nIChhcmcy KSk7CistCSAgICB9CisrCSAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBw b3MsIG5hcmdzLCBub3NpZGUpOworIAorIAljYXNlIFRZUEVfQ09ERV9QVFI6CisgCWNhc2UgVFlQ RV9DT0RFX0ZVTkM6CitAQCAtMjIyMyw0OSArMjUwOCw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFu ZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAl9CisgICAgICAgcmV0dXJuIChhcmcx KTsKKyAKKy0gICAgbXVsdGlfZjc3X3N1YnNjcmlwdDoKKy0gICAgICB7CistCUxPTkdFU1Qgc3Vi c2NyaXB0X2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOworLQlpbnQgbmRpbWVuc2lvbnMgPSAxLCBp OworLQlzdHJ1Y3QgdmFsdWUgKmFycmF5ID0gYXJnMTsKKy0KKy0JaWYgKG5hcmdzID4gTUFYX0ZP UlRSQU5fRElNUykKKy0JICBlcnJvciAoXygiVG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICgl ZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJTVMpOworLQorLQluZGltZW5zaW9ucyA9IGNhbGNfZjc3 X2FycmF5X2RpbXMgKHR5cGUpOworLQorLQlpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCistCSAg ZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOworLQorLQlnZGJfYXNzZXJ0 IChuYXJncyA+IDApOworLQorLQkvKiBOb3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBh cnJheSBzdWJzY3JpcHQgZXhwcmVzc2lvbiAKKy0JICAgbGV0IHVzIGFjdHVhbGx5IGZpbmQgb3V0 IHdoZXJlIHRoaXMgZWxlbWVudCBleGlzdHMgaW4gdGhlIGFycmF5LiAgKi8KKy0KKy0JLyogVGFr ZSBhcnJheSBpbmRpY2VzIGxlZnQgdG8gcmlnaHQuICAqLworLQlmb3IgKGkgPSAwOyBpIDwgbmFy Z3M7IGkrKykKKy0JICB7CistCSAgICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVz dCBiZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3LiAgKi8KKy0JICAgIGFyZzIgPSBldmFsdWF0ZV9z dWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CistCistCSAgICAvKiBGaWxs IGluIHRoZSBzdWJzY3JpcHQgYXJyYXkuICAqLworLQorLQkgICAgc3Vic2NyaXB0X2FycmF5W2ld ID0gdmFsdWVfYXNfbG9uZyAoYXJnMik7CistCSAgfQorLQorLQkvKiBJbnRlcm5hbCB0eXBlIG9m IGFycmF5IGlzIGFycmFuZ2VkIHJpZ2h0IHRvIGxlZnQuICAqLworLQlmb3IgKGkgPSBuYXJnczsg aSA+IDA7IGktLSkKKy0JICB7CistCSAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CistCSAgICBMT05HRVNUIGluZGV4ID0gc3Vi c2NyaXB0X2FycmF5W2kgLSAxXTsKKy0KKy0JICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRf cnZhbHVlIChhcnJheSwgaW5kZXgsCistCQkJCQkgICAgICBmNzdfZ2V0X2xvd2VyYm91bmQgKGFy cmF5X3R5cGUpKTsKKy0JICB9CistCistCXJldHVybiBhcnJheTsKKy0gICAgICB9CistCisgICAg IGNhc2UgQklOT1BfTE9HSUNBTF9BTkQ6CisgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAo TlVMTF9UWVBFLCBleHAsIHBvcywgbm9zaWRlKTsKKyAgICAgICBpZiAobm9zaWRlID09IEVWQUxf U0tJUCkKK0BAIC0zMTIzLDYgKzMzNjUsOSBAQCBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3Qg dHlwZSAqYXJyYXlfdHlwZSkKKyAgIGludCBuZGltZW4gPSAxOworICAgc3RydWN0IHR5cGUgKnRt cF90eXBlOworIAorKyAgaWYgKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgPT0gVFlQRV9DT0RFX1NU UklORykKKysgICAgcmV0dXJuIDE7CisrCisgICBpZiAoKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkg IT0gVFlQRV9DT0RFX0FSUkFZKSkKKyAgICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25z IGZvciBhIG5vbi1hcnJheSB0eXBlIikpOworIAorZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5j IGIvZ2RiL2V4cHByaW50LmMKK2luZGV4IGMzN2VjYjAuLjIxNGQ1OGUgMTAwNjQ0CistLS0gYS9n ZGIvZXhwcHJpbnQuYworKysrIGIvZ2RiL2V4cHByaW50LmMKK0BAIC01NjgsMTIgKzU2OCwxMCBA QCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9z LAorIAkqcG9zICs9IDI7CisgCisgCWZwdXRzX2ZpbHRlcmVkICgiUkFOR0UoIiwgc3RyZWFtKTsK Ky0JaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUCistCSAgICB8fCByYW5nZV90 eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKKysJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlf TE9XX0JPVU5EKSA9PSBTVUJBUlJBWV9MT1dfQk9VTkQpCisgCSAgcHJpbnRfc3ViZXhwIChleHAs IHBvcywgc3RyZWFtLCBQUkVDX0FCT1ZFX0NPTU1BKTsKKyAJZnB1dHNfZmlsdGVyZWQgKCIuLiIs IHN0cmVhbSk7CistCWlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUCistCSAgICB8 fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKKysJaWYgKChyYW5nZV90eXBlICYg U1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKKyAJICBwcmludF9z dWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVfQ09NTUEpOworIAlmcHV0c19maWx0 ZXJlZCAoIikiLCBzdHJlYW0pOworIAlyZXR1cm47CitAQCAtMTA1NSwxNiArMTA1MywxNiBAQCBk dW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorIAorIAlz d2l0Y2ggKHJhbmdlX3R5cGUpCisgCSAgeworLQkgIGNhc2UgQk9USF9CT1VORF9ERUZBVUxUOgor KwkgIGNhc2UgU1VCQVJSQVlfTk9ORV9CT1VORDoKKyAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFu Z2UgJy4uJyIsIHN0cmVhbSk7CisgCSAgICBicmVhazsKKy0JICBjYXNlIExPV19CT1VORF9ERUZB VUxUOgorKwkgIGNhc2UgU1VCQVJSQVlfSElHSF9CT1VORDoKKyAJICAgIGZwdXRzX2ZpbHRlcmVk ICgiUmFuZ2UgJy4uRVhQJyIsIHN0cmVhbSk7CisgCSAgICBicmVhazsKKy0JICBjYXNlIEhJR0hf Qk9VTkRfREVGQVVMVDoKKysJICBjYXNlIFNVQkFSUkFZX0xPV19CT1VORDoKKyAJICAgIGZwdXRz X2ZpbHRlcmVkICgiUmFuZ2UgJ0VYUC4uJyIsIHN0cmVhbSk7CisgCSAgICBicmVhazsKKy0JICBj YXNlIE5PTkVfQk9VTkRfREVGQVVMVDoKKysJICBjYXNlIChTVUJBUlJBWV9MT1dfQk9VTkQgfCBT VUJBUlJBWV9ISUdIX0JPVU5EKToKKyAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJ0VYUC4u RVhQJyIsIHN0cmVhbSk7CisgCSAgICBicmVhazsKKyAJICBkZWZhdWx0OgorQEAgLTEwNzIsMTEg KzEwNzAsOSBAQCBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLAorIAkgICAgYnJlYWs7CisgCSAgfQorIAorLQlpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JP VU5EX0RFRkFVTFQKKy0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQor KwlpZiAoKHJhbmdlX3R5cGUgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNVQkFSUkFZX0xPV19C T1VORCkKKyAJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7CistCWlmIChy YW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUCistCSAgICB8fCByYW5nZV90eXBlID09IE5P TkVfQk9VTkRfREVGQVVMVCkKKysJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VO RCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKKyAJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBz dHJlYW0sIGVsdCk7CisgICAgICAgfQorICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2dkYi9l eHByZXNzaW9uLmggYi9nZGIvZXhwcmVzc2lvbi5oCitpbmRleCA0OTUyZDg0Li4zNGNhNTRiIDEw MDY0NAorLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAorKysrIGIvZ2RiL2V4cHJlc3Npb24uaAorQEAg LTE1MiwxNyArMTUyLDE3IEBAIGV4dGVybiB2b2lkIGR1bXBfcmF3X2V4cHJlc3Npb24gKHN0cnVj dCBleHByZXNzaW9uICosCisgCQkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBjaGFyICopOworIGV4dGVy biB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVj dCB1aV9maWxlICopOworIAorLS8qIEluIGFuIE9QX1JBTkdFIGV4cHJlc3Npb24sIGVpdGhlciBi b3VuZCBjb3VsZCBiZSBlbXB0eSwgaW5kaWNhdGluZworLSAgIHRoYXQgaXRzIHZhbHVlIGlzIGJ5 IGRlZmF1bHQgdGhhdCBvZiB0aGUgY29ycmVzcG9uZGluZyBib3VuZCBvZiB0aGUKKy0gICBhcnJh eSBvciBzdHJpbmcuICBTbyB3ZSBoYXZlIGZvdXIgc29ydHMgb2Ygc3VicmFuZ2UuICBUaGlzCist ICAgZW51bWVyYXRpb24gdHlwZSBpcyB0byBpZGVudGlmeSB0aGlzLiAgKi8KKy0gICAKKysvKiBJ biBhbiBPUF9SQU5HRSBleHByZXNzaW9uLCBlaXRoZXIgYm91bmQgY2FuIGJlIHByb3ZpZGVkIGJ5 IHRoZSB1c2VyLCBvciBub3QuCisrICAgSW4gYWRkaXRpb24gdG8gdGhpcywgdGhlIHVzZXIgY2Fu IGFsc28gc3BlY2lmeSBhIHN0cmlkZSB2YWx1ZSB0byBpbmRpY2F0ZWQKKysgICBvbmx5IGNlcnRh aW4gZWxlbWVudHMgb2YgdGhlIGFycmF5LiAgVGhpcyBlbnVtZXJhdGlvbiB0eXBlIGlzIHRvIGlk ZW50aWZ5CisrICAgdGhpcy4gICovCisrCisgZW51bSByYW5nZV90eXBlCisgICB7CistICAgIEJP VEhfQk9VTkRfREVGQVVMVCwJCS8qICIoOikiICAqLworLSAgICBMT1dfQk9VTkRfREVGQVVMVCwJ CS8qICIoOmhpZ2gpIiAgKi8KKy0gICAgSElHSF9CT1VORF9ERUZBVUxULAkJLyogIihsb3c6KSIg ICovCistICAgIE5PTkVfQk9VTkRfREVGQVVMVAkJLyogIihsb3c6aGlnaCkiICAqLworKyAgICBT VUJBUlJBWV9OT05FX0JPVU5EID0gMHgwLAkJLyogIiggOiApIiAgKi8KKysgICAgU1VCQVJSQVlf TE9XX0JPVU5EID0gMHgxLAkJLyogIihsb3c6KSIgICovCisrICAgIFNVQkFSUkFZX0hJR0hfQk9V TkQgPSAweDIsCQkvKiAiKDpoaWdoKSIgICovCisrICAgIFNVQkFSUkFZX1NUUklERSA9IDB4NAkJ LyogIig6OnN0cmlkZSkiICAqLworICAgfTsKKyAKKyAjZW5kaWYgLyogIWRlZmluZWQgKEVYUFJF U1NJT05fSCkgKi8KK2RpZmYgLS1naXQgYS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55CitpbmRl eCBlMzE0OGEzLi43MWYxODIzIDEwMDY0NAorLS0tIGEvZ2RiL2YtZXhwLnkKKysrKyBiL2dkYi9m LWV4cC55CitAQCAtMjUzLDMxICsyNTMsNjMgQEAgYXJnbGlzdCA6CXN1YnJhbmdlCisgICAgCisg YXJnbGlzdAk6CWFyZ2xpc3QgJywnIGV4cCAgICVwcmVjIEFCT1ZFX0NPTU1BCisgCQkJeyBhcmds aXN0X2xlbisrOyB9CisrCXwJYXJnbGlzdCAnLCcgc3VicmFuZ2UJJXByZWMgQUJPVkVfQ09NTUEK KysJCQl7IGFyZ2xpc3RfbGVuKys7IH0KKyAJOworIAorIC8qIFRoZXJlIGFyZSBmb3VyIHNvcnRz IG9mIHN1YnJhbmdlIHR5cGVzIGluIEY5MC4gICovCisgCisgc3VicmFuZ2U6CWV4cCAnOicgZXhw CSVwcmVjIEFCT1ZFX0NPTU1BCistCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBP UF9SQU5HRSk7IAorLQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIE5PTkVfQk9V TkRfREVGQVVMVCk7CisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5H RSk7CisrCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwKKysJCQkJCQkgU1VCQVJS QVlfTE9XX0JPVU5EIHwgU1VCQVJSQVlfSElHSF9CT1VORCk7CisgCQkJICB3cml0ZV9leHBfZWx0 X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KKyAJOworIAorIHN1YnJhbmdlOglleHAgJzon CSVwcmVjIEFCT1ZFX0NPTU1BCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBP UF9SQU5HRSk7CistCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgSElHSF9CT1VO RF9ERUZBVUxUKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJB WV9MT1dfQk9VTkQpOworIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFO R0UpOyB9CisgCTsKKyAKKyBzdWJyYW5nZToJJzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQorIAkJ CXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOworLQkJCSAgd3JpdGVf ZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIExPV19CT1VORF9ERUZBVUxUKTsKKysJCQkgIHdyaXRl X2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9ISUdIX0JPVU5EKTsKKyAJCQkgIHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQorIAk7CisgCisgc3VicmFu Z2U6CSc6JwklcHJlYyBBQk9WRV9DT01NQQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBz dGF0ZSwgT1BfUkFOR0UpOworLQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIEJP VEhfQk9VTkRfREVGQVVMVCk7CisrCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwg U1VCQVJSQVlfTk9ORV9CT1VORCk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRl LCBPUF9SQU5HRSk7IH0KKysJOworKworKy8qIEVhY2ggc3VicmFuZ2UgdHlwZSBjYW4gaGF2ZSBh IHN0cmlkZSBhcmd1bWVudC4gICovCisrc3VicmFuZ2U6CWV4cCAnOicgZXhwICc6JyBleHAgJXBy ZWMgQUJPVkVfQ09NTUEKKysJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JB TkdFKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9MT1df Qk9VTkQKKysJCQkJCQkgfCBTVUJBUlJBWV9ISUdIX0JPVU5ECisrCQkJCQkJIHwgU1VCQVJSQVlf U1RSSURFKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsg fQorKwk7CisrCisrc3VicmFuZ2U6CWV4cCAnOicgJzonIGV4cCAlcHJlYyBBQk9WRV9DT01NQQor KwkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOworKwkJCSAgd3Jp dGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNVQkFSUkFZX0xPV19CT1VORAorKwkJCQkJCSB8 IFNVQkFSUkFZX1NUUklERSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBP UF9SQU5HRSk7IH0KKysJOworKworK3N1YnJhbmdlOgknOicgZXhwICc6JyBleHAgJXByZWMgQUJP VkVfQ09NTUEKKysJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsK KysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9ISUdIX0JPVU5E CisrCQkJCQkJIHwgU1VCQVJSQVlfU1RSSURFKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChwc3RhdGUsIE9QX1JBTkdFKTsgfQorKwk7CisrCisrc3VicmFuZ2U6CSc6JyAnOicgZXhwICVw cmVjIEFCT1ZFX0NPTU1BCisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9S QU5HRSk7CisrCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfU1RS SURFKTsKKyAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQor IAk7CisgCitkaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMK K2luZGV4IDA4MjE1ZTIuLmU2ZWNhNmEgMTAwNjQ0CistLS0gYS9nZGIvZi12YWxwcmludC5jCisr KysgYi9nZGIvZi12YWxwcmludC5jCitAQCAtMTIxLDggKzEyMSwxNCBAQCBmNzdfcHJpbnRfYXJy YXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAKKyAg IGlmIChuc3MgIT0gbmRpbWVuc2lvbnMpCisgICAgIHsKKy0gICAgICBzaXplX3QgZGltX3NpemUg PSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworKyAgICAgIHNpemVfdCBk aW1fc2l6ZTsKKyAgICAgICBzaXplX3Qgb2ZmcyA9IDA7CisrICAgICAgTE9OR0VTVCBieXRlX3N0 cmlkZSA9IGFicyAoVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkpOworKworKyAgICAgIGlm IChieXRlX3N0cmlkZSkKKysgICAgICAgIGRpbV9zaXplID0gYnl0ZV9zdHJpZGU7CisrICAgICAg ZWxzZQorKyAgICAgICAgZGltX3NpemUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkpOworIAorICAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7CisgCSAgIChpIDwgdXBwZXJi b3VuZCArIDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7CitkaWZmIC0tZ2l0IGEv Z2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYworaW5kZXggZWM1YzE3YS4uZWI4Mzc5MSAx MDA2NDQKKy0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKysgYi9nZGIvZ2RidHlwZXMuYworQEAgLTgz Niw3ICs4MzYsOCBAQCBhbGxvY2F0ZV9zdHViX21ldGhvZCAoc3RydWN0IHR5cGUgKnR5cGUpCisg c3RydWN0IHR5cGUgKgorIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5 cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorIAkJICAgY29uc3Qgc3RydWN0IGR5bmFtaWNf cHJvcCAqbG93X2JvdW5kLAorLQkJICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqaGlnaF9i b3VuZCkKKysJCSAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKmhpZ2hfYm91bmQsCisrCQkg ICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpzdHJpZGUpCisgeworICAgaWYgKHJlc3VsdF90 eXBlID09IE5VTEwpCisgICAgIHJlc3VsdF90eXBlID0gYWxsb2NfdHlwZV9jb3B5IChpbmRleF90 eXBlKTsKK0BAIC04NTEsNiArODUyLDcgQEAgY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBl ICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCisgICAgIFRZUEVfWkFMTE9D IChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRzKSk7CisgICBUWVBFX1JB TkdFX0RBVEEgKHJlc3VsdF90eXBlKS0+bG93ID0gKmxvd19ib3VuZDsKKyAgIFRZUEVfUkFOR0Vf REFUQSAocmVzdWx0X3R5cGUpLT5oaWdoID0gKmhpZ2hfYm91bmQ7CisrICBUWVBFX1JBTkdFX0RB VEEgKHJlc3VsdF90eXBlKS0+c3RyaWRlID0gKnN0cmlkZTsKKyAKKyAgIGlmIChsb3dfYm91bmQt PmtpbmQgPT0gUFJPUF9DT05TVCAmJiBsb3dfYm91bmQtPmRhdGEuY29uc3RfdmFsID49IDApCisg ICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7CitAQCAtODc5LDcgKzg4MSw3IEBA IHN0cnVjdCB0eXBlICoKKyBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpy ZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCisgCQkJICBMT05HRVNUIGxvd19i b3VuZCwgTE9OR0VTVCBoaWdoX2JvdW5kKQorIHsKKy0gIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93 LCBoaWdoOworKyAgc3RydWN0IGR5bmFtaWNfcHJvcCBsb3csIGhpZ2gsIHN0cmlkZTsKKyAKKyAg IGxvdy5raW5kID0gUFJPUF9DT05TVDsKKyAgIGxvdy5kYXRhLmNvbnN0X3ZhbCA9IGxvd19ib3Vu ZDsKK0BAIC04ODcsNyArODg5LDExIEBAIGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoc3RydWN0 IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwKKyAgIGhpZ2gua2lu ZCA9IFBST1BfQ09OU1Q7CisgICBoaWdoLmRhdGEuY29uc3RfdmFsID0gaGlnaF9ib3VuZDsKKyAK Ky0gIHJlc3VsdF90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKHJlc3VsdF90eXBlLCBpbmRleF90 eXBlLCAmbG93LCAmaGlnaCk7CisrICBzdHJpZGUua2luZCA9IFBST1BfQ09OU1Q7CisrICBzdHJp ZGUuZGF0YS5jb25zdF92YWwgPSAwOworKworKyAgcmVzdWx0X3R5cGUgPSBjcmVhdGVfcmFuZ2Vf dHlwZSAocmVzdWx0X3R5cGUsIGluZGV4X3R5cGUsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmbG93LCAmaGlnaCwgJnN0cmlkZSk7CisgCisgICByZXR1cm4gcmVzdWx0X3R5 cGU7CisgfQorQEAgLTEwODQsMTYgKzEwOTAsMjAgQEAgY3JlYXRlX2FycmF5X3R5cGVfd2l0aF9z dHJpZGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwKKyAgICAgICAmJiAoIXR5cGVfbm90X2Fz c29jaWF0ZWQgKHJlc3VsdF90eXBlKQorIAkgICYmICF0eXBlX25vdF9hbGxvY2F0ZWQgKHJlc3Vs dF90eXBlKSkpCisgICAgIHsKKy0gICAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsK KysgICAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgYnl0ZV9zdHJpZGU7CisgCisg ICAgICAgaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZo aWdoX2JvdW5kKSA8IDApCisgCWxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOworICAgICAgIGVs ZW1lbnRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKGVsZW1lbnRfdHlwZSk7CisrICAgICAgYnl0ZV9z dHJpZGUgPSBhYnMgKFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpKTsKKysKKyAgICAgICAv KiBCZSBjYXJlZnVsIHdoZW4gc2V0dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBj YW4gYmUKKyAJIGVtcHR5IGFycmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIg dGhhbiB0aGUgbG93X2JvdW5kLgorIAkgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBz aG91bGQgYmUgemVyby4gICovCisgICAgICAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCisg CVRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOworKyAgICAgIGVsc2UgaWYgKGJ5dGVfc3Ry aWRlID4gMCkKKysJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IGJ5dGVfc3RyaWRlICogKGhp Z2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKyAgICAgICBlbHNlIGlmIChiaXRfc3RyaWRlID4g MCkKKyAJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9CisgCSAgKGJpdF9zdHJpZGUgKiAoaGln aF9ib3VuZCAtIGxvd19ib3VuZCArIDEpICsgNykgLyA4OworQEAgLTE4ODgsMTIgKzE4OTgsMTIg QEAgcmVzb2x2ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluX3JhbmdlX3R5cGUsCisg ICBDT1JFX0FERFIgdmFsdWU7CisgICBzdHJ1Y3QgdHlwZSAqc3RhdGljX3JhbmdlX3R5cGUsICpz dGF0aWNfdGFyZ2V0X3R5cGU7CisgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wOwor LSAgc3RydWN0IGR5bmFtaWNfcHJvcCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CisrICBzdHJ1Y3Qg ZHluYW1pY19wcm9wIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgc3RyaWRlOworIAorICAgZ2RiX2Fz c2VydCAoVFlQRV9DT0RFIChkeW5fcmFuZ2VfdHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKTsKKyAK KyAgIHByb3AgPSAmVFlQRV9SQU5HRV9EQVRBIChkeW5fcmFuZ2VfdHlwZSktPmxvdzsKKy0gIGlm IChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIE5VTEwsIGFkZHJfc3RhY2ssICZ2YWx1 ZSkpCisrICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5X3NpZ25lZCAocHJvcCwgTlVMTCwg YWRkcl9zdGFjaywgJnZhbHVlLCAxKSkKKyAgICAgeworICAgICAgIGxvd19ib3VuZC5raW5kID0g UFJPUF9DT05TVDsKKyAgICAgICBsb3dfYm91bmQuZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKK0BA IC0xOTA1LDcgKzE5MTUsNyBAQCByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0eXBlICpk eW5fcmFuZ2VfdHlwZSwKKyAgICAgfQorIAorICAgcHJvcCA9ICZUWVBFX1JBTkdFX0RBVEEgKGR5 bl9yYW5nZV90eXBlKS0+aGlnaDsKKy0gIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHBy b3AsIE5VTEwsIGFkZHJfc3RhY2ssICZ2YWx1ZSkpCisrICBpZiAoZHdhcmYyX2V2YWx1YXRlX3By b3BlcnR5X3NpZ25lZCAocHJvcCwgTlVMTCwgYWRkcl9zdGFjaywgJnZhbHVlLCAxKSkKKyAgICAg eworICAgICAgIGhpZ2hfYm91bmQua2luZCA9IFBST1BfQ09OU1Q7CisgICAgICAgaGlnaF9ib3Vu ZC5kYXRhLmNvbnN0X3ZhbCA9IHZhbHVlOworQEAgLTE5MjAsMTIgKzE5MzAsMjAgQEAgcmVzb2x2 ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluX3JhbmdlX3R5cGUsCisgICAgICAgaGln aF9ib3VuZC5kYXRhLmNvbnN0X3ZhbCA9IDA7CisgICAgIH0KKyAKKysgIHByb3AgPSAmVFlQRV9S QU5HRV9EQVRBIChkeW5fcmFuZ2VfdHlwZSktPnN0cmlkZTsKKysgIGlmIChkd2FyZjJfZXZhbHVh dGVfcHJvcGVydHlfc2lnbmVkIChwcm9wLCBOVUxMLCBhZGRyX3N0YWNrLCAmdmFsdWUsIDEpKQor KyAgICB7CisrICAgICAgc3RyaWRlLmtpbmQgPSBQUk9QX0NPTlNUOworKyAgICAgIHN0cmlkZS5k YXRhLmNvbnN0X3ZhbCA9IHZhbHVlOworKyAgICB9CisrCisgICBzdGF0aWNfdGFyZ2V0X3R5cGUK KyAgICAgPSByZXNvbHZlX2R5bmFtaWNfdHlwZV9pbnRlcm5hbCAoVFlQRV9UQVJHRVRfVFlQRSAo ZHluX3JhbmdlX3R5cGUpLAorIAkJCQkgICAgIGFkZHJfc3RhY2ssIDApOworICAgc3RhdGljX3Jh bmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAoY29weV90eXBlIChkeW5fcmFuZ2VfdHlwZSks CisgCQkJCQkgc3RhdGljX3RhcmdldF90eXBlLAorLQkJCQkJICZsb3dfYm91bmQsICZoaWdoX2Jv dW5kKTsKKysJCQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCwgJnN0cmlkZSk7CisrCisgICBU WVBFX1JBTkdFX0RBVEEgKHN0YXRpY19yYW5nZV90eXBlKS0+ZmxhZ19ib3VuZF9ldmFsdWF0ZWQg PSAxOworICAgcmV0dXJuIHN0YXRpY19yYW5nZV90eXBlOworIH0KK2RpZmYgLS1naXQgYS9nZGIv Z2RidHlwZXMuaCBiL2dkYi9nZGJ0eXBlcy5oCitpbmRleCAyZGRhMDc0Li5iY2M5MjAwIDEwMDY0 NAorLS0tIGEvZ2RiL2dkYnR5cGVzLmgKKysrKyBiL2dkYi9nZGJ0eXBlcy5oCitAQCAtNTc3LDYg KzU3NywxMCBAQCBzdHJ1Y3QgcmFuZ2VfYm91bmRzCisgCisgICBzdHJ1Y3QgZHluYW1pY19wcm9w IGhpZ2g7CisgCisrICAvKiAqIFN0cmlkZSBvZiByYW5nZS4gICovCisrCisrICBzdHJ1Y3QgZHlu YW1pY19wcm9wIHN0cmlkZTsKKysKKyAgIC8qIFRydWUgaWYgSElHSCByYW5nZSBib3VuZCBjb250 YWlucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZQorICAgICAgc3VicmFuZ2UuIFRoaXMg YWZmZWN0cyBob3cgdGhlIGZpbmFsIGhpZ2h0IGJvdW5kIGlzIGNvbXB1dGVkLiAgKi8KKyAKK0BA IC03MzksNyArNzQzLDYgQEAgc3RydWN0IG1haW5fdHlwZQorICAgICAvKiAqIFVuaW9uIG1lbWJl ciB1c2VkIGZvciByYW5nZSB0eXBlcy4gICovCisgCisgICAgIHN0cnVjdCByYW5nZV9ib3VuZHMg KmJvdW5kczsKKy0KKyAgIH0gZmxkc19ibmRzOworIAorICAgLyogKiBTbG90IHRvIHBvaW50IHRv IGFkZGl0aW9uYWwgbGFuZ3VhZ2Utc3BlY2lmaWMgZmllbGRzIG9mIHRoaXMKK0BAIC0xMjU1LDYg KzEyNTgsMTUgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5 cGUgKik7CisgICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmhpZ2gua2luZAorICNkZWZp bmUgVFlQRV9MT1dfQk9VTkRfS0lORChyYW5nZV90eXBlKSBcCisgICBUWVBFX1JBTkdFX0RBVEEo cmFuZ2VfdHlwZSktPmxvdy5raW5kCisrI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFKHJhbmdlX3R5 cGUpIFwKKysgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEuY29uc3Rf dmFsCisrI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFX0JMT0NLKHJhbmdlX3R5cGUpIFwKKysgIFRZ UEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEubG9jZXhwcgorKyNkZWZpbmUg VFlQRV9CWVRFX1NUUklERV9MT0NMSVNUKHJhbmdlX3R5cGUpIFwKKysgIFRZUEVfUkFOR0VfREFU QShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEubG9jbGlzdAorKyNkZWZpbmUgVFlQRV9CWVRFX1NU UklERV9LSU5EKHJhbmdlX3R5cGUpIFwKKysgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+ c3RyaWRlLmtpbmQKKysKKyAKKyAvKiBQcm9wZXJ0eSBhY2Nlc3NvcnMgZm9yIHRoZSB0eXBlIGRh dGEgbG9jYXRpb24uICAqLworICNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OKHRoaXN0eXBlKSBc CitAQCAtMTI4OSw2ICsxMzAxLDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlw ZSAoc3RydWN0IHR5cGUgKik7CisgICAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChUWVBFX0lO REVYX1RZUEUoYXJyYXl0eXBlKSkKKyAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNf VU5ERUZJTkVEKGFycmF5dHlwZSkgXAorICAgIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRChUWVBF X0lOREVYX1RZUEUoYXJyYXl0eXBlKSkKKysjZGVmaW5lIFRZUEVfQVJSQVlfU1RSSURFX0lTX1VO REVGSU5FRChhcnJheXR5cGUpIFwKKysgICAoVFlQRV9CWVRFX1NUUklERShUWVBFX0lOREVYX1RZ UEUoYXJyYXl0eXBlKSkgPT0gMCkKKysKKyAKKyAjZGVmaW5lIFRZUEVfQVJSQVlfVVBQRVJfQk9V TkRfVkFMVUUoYXJyYXl0eXBlKSBcCisgICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZ UEUoKGFycmF5dHlwZSkpKSkKK0BAIC0xNzgzLDYgKzE3OTgsNyBAQCBleHRlcm4gc3RydWN0IHR5 cGUgKmNyZWF0ZV9hcnJheV90eXBlX3dpdGhfc3RyaWRlCisgCisgZXh0ZXJuIHN0cnVjdCB0eXBl ICpjcmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKKyAJCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKiwKKysJCQkJICAgICAgIGNvbnN0IHN0 cnVjdCBkeW5hbWljX3Byb3AgKiwKKyAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3By b3AgKik7CisgCisgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0 IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9w YXJzZS5jCitpbmRleCAyYjAwNzA4Li45OTJhZjg3IDEwMDY0NAorLS0tIGEvZ2RiL3BhcnNlLmMK KysrKyBiL2dkYi9wYXJzZS5jCitAQCAtMTAwNiwyMiArMTAwNiwyMCBAQCBvcGVyYXRvcl9sZW5n dGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5kcG9zLAor IAorICAgICBjYXNlIE9QX1JBTkdFOgorICAgICAgIG9wbGVuID0gMzsKKysgICAgICBhcmdzID0g MDsKKyAgICAgICByYW5nZV90eXBlID0gKGVudW0gcmFuZ2VfdHlwZSkKKyAJbG9uZ2VzdF90b19p bnQgKGV4cHItPmVsdHNbZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsKKyAKKy0gICAgICBzd2l0Y2gg KHJhbmdlX3R5cGUpCistCXsKKy0JY2FzZSBMT1dfQk9VTkRfREVGQVVMVDoKKy0JY2FzZSBISUdI X0JPVU5EX0RFRkFVTFQ6CistCSAgYXJncyA9IDE7CistCSAgYnJlYWs7CistCWNhc2UgQk9USF9C T1VORF9ERUZBVUxUOgorLQkgIGFyZ3MgPSAwOworLQkgIGJyZWFrOworLQljYXNlIE5PTkVfQk9V TkRfREVGQVVMVDoKKy0JICBhcmdzID0gMjsKKy0JICBicmVhazsKKy0JfQorKyAgICAgIC8qIElu Y3JlbWVudCB0aGUgYXJndW1lbnQgY291bnRlciBmb3IgZWFjaCBhcmd1bWVudAorKwkgcHJvdmlk ZWQgYnkgdGhlIHVzZXIuICAqLworKyAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0xP V19CT1VORCkgPT0gU1VCQVJSQVlfTE9XX0JPVU5EKQorKwlhcmdzKys7CisrCisrICAgICAgaWYg KChyYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VO RCkKKysJYXJncysrOworKworKyAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX1NUUklE RSkgPT0gU1VCQVJSQVlfU1RSSURFKQorKwlhcmdzKys7CisgCisgICAgICAgYnJlYWs7CisgCitk aWZmIC0tZ2l0IGEvZ2RiL3J1c3QtZXhwLnkgYi9nZGIvcnVzdC1leHAueQoraW5kZXggYWViNjA1 OC4uYjFiOTYzMyAxMDA2NDQKKy0tLSBhL2dkYi9ydXN0LWV4cC55CisrKysgYi9nZGIvcnVzdC1l eHAueQorQEAgLTI0MjksMjMgKzI0MjksMTcgQEAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAo c3RydWN0IHBhcnNlcl9zdGF0ZSAqc3RhdGUsCisgCisgICAgIGNhc2UgT1BfUkFOR0U6CisgICAg ICAgeworLQllbnVtIHJhbmdlX3R5cGUga2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKKysJZW51 bSByYW5nZV90eXBlIGtpbmQgPSBTVUJBUlJBWV9OT05FX0JPVU5EOworIAorIAlpZiAob3BlcmF0 aW9uLT5sZWZ0Lm9wICE9IE5VTEwpCisgCSAgeworIAkgICAgY29udmVydF9hc3RfdG9fZXhwcmVz c2lvbiAoc3RhdGUsIG9wZXJhdGlvbi0+bGVmdC5vcCwgdG9wKTsKKy0JICAgIGtpbmQgPSBISUdI X0JPVU5EX0RFRkFVTFQ7CisrCSAgICBraW5kID0gU1VCQVJSQVlfTE9XX0JPVU5EOworIAkgIH0K KyAJaWYgKG9wZXJhdGlvbi0+cmlnaHQub3AgIT0gTlVMTCkKKyAJICB7CisgCSAgICBjb252ZXJ0 X2FzdF90b19leHByZXNzaW9uIChzdGF0ZSwgb3BlcmF0aW9uLT5yaWdodC5vcCwgdG9wKTsKKy0J ICAgIGlmIChraW5kID09IEJPVEhfQk9VTkRfREVGQVVMVCkKKy0JICAgICAga2luZCA9IExPV19C T1VORF9ERUZBVUxUOworLQkgICAgZWxzZQorLQkgICAgICB7CistCQlnZGJfYXNzZXJ0IChraW5k ID09IEhJR0hfQk9VTkRfREVGQVVMVCk7CistCQlraW5kID0gTk9ORV9CT1VORF9ERUZBVUxUOwor LQkgICAgICB9CisrCSAgICBraW5kID0gKHJhbmdlX3R5cGUpIChraW5kIHwgU1VCQVJSQVlfSElH SF9CT1VORCk7CisgCSAgfQorIAl3cml0ZV9leHBfZWx0X29wY29kZSAoc3RhdGUsIE9QX1JBTkdF KTsKKyAJd3JpdGVfZXhwX2VsdF9sb25nY3N0IChzdGF0ZSwga2luZCk7CitkaWZmIC0tZ2l0IGEv Z2RiL3J1c3QtbGFuZy5jIGIvZ2RiL3J1c3QtbGFuZy5jCitpbmRleCAxN2IyMGM2Li4yOTUwMDJm IDEwMDY0NAorLS0tIGEvZ2RiL3J1c3QtbGFuZy5jCisrKysgYi9nZGIvcnVzdC1sYW5nLmMKK0BA IC0xMjQxLDkgKzEyNDEsOSBAQCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBp bnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQorICAga2luZCA9IChlbnVtIHJhbmdlX3R5cGUp IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbKnBvcyArIDFdLmxvbmdjb25zdCk7CisgICAqcG9z ICs9IDM7CisgCistICBpZiAoa2luZCA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9PSBO T05FX0JPVU5EX0RFRkFVTFQpCisrICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09 IFNVQkFSUkFZX0xPV19CT1VORCkKKyAgICAgbG93ID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZ UEUsIGV4cCwgcG9zLCBub3NpZGUpOworLSAgaWYgKGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFQg fHwga2luZCA9PSBOT05FX0JPVU5EX0RFRkFVTFQpCisrICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9I SUdIX0JPVU5EKSA9PSBTVUJBUlJBWV9ISUdIX0JPVU5EKQorICAgICBoaWdoID0gZXZhbHVhdGVf c3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOworIAorICAgaWYgKG5vc2lkZSA9 PSBFVkFMX1NLSVApCitAQCAtMTMzMiw3ICsxMzMyLDcgQEAgcnVzdF9jb21wdXRlX3JhbmdlIChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHZhbHVlICpyYW5nZSwKKyAKKyAgICpsb3cgPSAwOwor ICAgKmhpZ2ggPSAwOworLSAgKmtpbmQgPSBCT1RIX0JPVU5EX0RFRkFVTFQ7CisrICAqa2luZCA9 IFNVQkFSUkFZX05PTkVfQk9VTkQ7CisgCisgICBpZiAoVFlQRV9ORklFTERTICh0eXBlKSA9PSAw KQorICAgICByZXR1cm47CitAQCAtMTM0MCwxNSArMTM0MCwxNCBAQCBydXN0X2NvbXB1dGVfcmFu Z2UgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmFsdWUgKnJhbmdlLAorICAgaSA9IDA7Cisg ICBpZiAoc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIDApLCAic3RhcnQiKSA9PSAwKQor ICAgICB7CistICAgICAgKmtpbmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7CisrICAgICAgKmtpbmQg PSBTVUJBUlJBWV9MT1dfQk9VTkQ7CisgICAgICAgKmxvdyA9IHZhbHVlX2FzX2xvbmcgKHZhbHVl X2ZpZWxkIChyYW5nZSwgMCkpOworICAgICAgICsraTsKKyAgICAgfQorICAgaWYgKFRZUEVfTkZJ RUxEUyAodHlwZSkgPiBpCisgICAgICAgJiYgc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUs IGkpLCAiZW5kIikgPT0gMCkKKyAgICAgeworLSAgICAgICpraW5kID0gKCpraW5kID09IEJPVEhf Qk9VTkRfREVGQVVMVAorLQkgICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IE5PTkVfQk9VTkRf REVGQVVMVCk7CisrICAgICAgKmtpbmQgPSAocmFuZ2VfdHlwZSkgKCpraW5kIHwgU1VCQVJSQVlf SElHSF9CT1VORCk7CisgICAgICAgKmhpZ2ggPSB2YWx1ZV9hc19sb25nICh2YWx1ZV9maWVsZCAo cmFuZ2UsIGkpKTsKKyAgICAgfQorIH0KK0BAIC0xMzYzLDcgKzEzNjIsNyBAQCBydXN0X3N1YnNj cmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lk ZSwKKyAgIHN0cnVjdCB0eXBlICpyaHN0eXBlOworICAgTE9OR0VTVCBsb3csIGhpZ2hfYm91bmQ7 CisgICAvKiBJbml0aWFsaXplZCB0byBhcHBlYXNlIHRoZSBjb21waWxlci4gICovCistICBlbnVt IHJhbmdlX3R5cGUga2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKKysgIGVudW0gcmFuZ2VfdHlw ZSBraW5kID0gU1VCQVJSQVlfTk9ORV9CT1VORDsKKyAgIExPTkdFU1QgaGlnaCA9IDA7CisgICBp bnQgd2FudF9zbGljZSA9IDA7CisgCitAQCAtMTQyNSw3ICsxNDI0LDcgQEAgcnVzdF9zdWJzY3Jp cHQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUs CisgCWVycm9yIChfKCJDYW5ub3Qgc3Vic2NyaXB0IG5vbi1hcnJheSB0eXBlIikpOworIAorICAg ICAgIGlmICh3YW50X3NsaWNlCistCSAgJiYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8 IGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFQpKQorKwkgICYmICgoa2luZCAmIFNVQkFSUkFZX0xP V19CT1VORCkgIT0gU1VCQVJSQVlfTE9XX0JPVU5EKSkKKyAJbG93ID0gbG93X2JvdW5kOworICAg ICAgIGlmIChsb3cgPCAwKQorIAllcnJvciAoXygiSW5kZXggbGVzcyB0aGFuIHplcm8iKSk7CitA QCAtMTQ0Myw3ICsxNDQyLDcgQEAgcnVzdF9zdWJzY3JpcHQgKHN0cnVjdCBleHByZXNzaW9uICpl eHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUsCisgCSAgQ09SRV9BRERSIGFkZHI7Cisg CSAgc3RydWN0IHZhbHVlICphZGRydmFsLCAqdGVtOworIAorLQkgIGlmIChraW5kID09IEJPVEhf Qk9VTkRfREVGQVVMVCB8fCBraW5kID09IEhJR0hfQk9VTkRfREVGQVVMVCkKKysJICBpZiAoKGtp bmQgJiBTVUJBUlJBWV9ISUdIX0JPVU5EKSAhPSBTVUJBUlJBWV9ISUdIX0JPVU5EKQorIAkgICAg aGlnaCA9IGhpZ2hfYm91bmQ7CisgCSAgaWYgKGhpZ2ggPCAwKQorIAkgICAgZXJyb3IgKF8oIkhp Z2ggaW5kZXggbGVzcyB0aGFuIHplcm8iKSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9zdGF0aWMtYXJyYXlzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3RhdGljLWFycmF5cy5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5j YzllY2MwCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0 YXRpYy1hcnJheXMuZXhwCitAQCAtMCwwICsxLDQyMSBAQAorKyMgQ29weXJpZ2h0IDIwMTUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgQ29udHJpYnV0ZWQgYnkgSW50ZWwg Q29ycC4gPGNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNvbT4KKysjCisrIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlIHN0YXRpYy1hcnJheXMuZjkw CisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAk c3JjZmlsZSB7ZGVidWcgZjkwfV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1 bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9p bnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiQlAxIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQlAxIiAi LipCUDEuKiIKKysKKysjIFRlc3RzIHN1YmFycmF5cyBvZiBvbmUgZGltZW5zaW9uYWwgYXJyYXlz IHdpdGggc3VicmFuZ2UgdmFyaWF0aW9ucworK2dkYl90ZXN0ICJwcmludCBhcjEiICJcXCRcWzAt OVxdKyA9IFxcKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDlcXCkiIFwKKysJCSJwcmludCBhcjEu IgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDQ6N1wpIiAiXFwkXFswLTlcXSsgPSBcXCg0LCA1LCA2 LCA3XFwpIiBcCisrCQkicHJpbnQgYXIxXCg0OjdcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4 OlwpIiAiXFwkXFswLTlcXSsgPSBcXCg4LCA5XFwpLioiIFwKKysJCSJwcmludCBhcjFcKDg6XCki CisrZ2RiX3Rlc3QgInByaW50IGFyMVwoOjNcKSIgIlxcJFxbMC05XF0rID0gXFwoMSwgMiwgM1xc KS4qIiBcCisrCQkicHJpbnQgYXIxXCg6M1wpIgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDpcKSIg IlxcJFxbMC05XF0rID0gXFwoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOVxcKSIgXAorKwkJInBy aW50IGFyMVwoOlwpIgorKworKyMgQ2hlY2sgYXNzaWdubWVudAorK2dkYl90ZXN0X25vX291dHB1 dCAic2V0IFwkbXlfYXJ5ID0gYXIxXCgzOjhcKSIKKytnZGJfdGVzdCAicHJpbnQgXCRteV9hcnki IFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDMsIDQsIDUsIDYsIDcsIDhcXCkiIFwKKysJCSJBc3Np Z25tZW50IG9mIHN1YmFycmF5IHRvIHZhcmlhYmxlIgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0 IGFyMVwoNVwpID0gNDIiCisrCQlnZGJfdGVzdCAicHJpbnQgYXIxXCgzOjhcKSIgXAorKwkJIlxc JFxbMC05XF0rID0gXFwoMywgNCwgNDIsIDYsIDcsIDhcXCkiIFwKKysJCSJwcmludCBhcjFcKDM6 OFwpIGFmdGVyIGFzc2lnbm1lbnQiCisrZ2RiX3Rlc3QgInByaW50IFwkbXlfYXJ5IiBcCisrCQki XFwkXFswLTlcXSsgPSBcXCgzLCA0LCA1LCA2LCA3LCA4XFwpIiBcCisrCQkiQXNzaWdubWVudCBv ZiBzdWJhcnJheSB0byB2YXJpYWJsZSBhZnRlciBvcmlnaW5hbCBhcnJheSBjaGFuZ2VkIgorKwor KyMgVGVzdCBmb3Igc3ViYXJyYXlzIG9mIG9uZSBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBsaXRl cmFscworKwkJZ2RiX3Rlc3QgInByaW50IGFyMVwoM1wpIiAiXFwkXFswLTlcXSsgPSAzIiBcCisr CQkicHJpbnQgYXIxXCgzXCkiCisrCisrIyBUZXN0cyBmb3Igc3VicmFuZ2VzIG9mIDIgZGltZW5z aW9uYWwgYXJyYXlzIHdpdGggc3VicmFuZ2UgdmFyaWF0aW9ucworK2dkYl90ZXN0ICJwcmludCBh cjJcKDI6MywgMzo0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMywgMzNcXCkgXFwo IDI0LCAzNFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDI6MywgMzo0XCkuIgorK2dkYl90ZXN0 ICJwcmludCBhcjJcKDg6OSw4OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODgsIDk4 XFwpIFxcKCA4OSwgOTlcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg4OjksODpcKSIKKytnZGJf dGVzdCAicHJpbnQgYXIyXCg4OjksOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDgx LCA5MVxcKSBcXCggODIsIDkyXFwpIFxcKSIgXAorKwkJInByaW50IGFyMlwoODo5LDoyXCkiCisr CisrZ2RiX3Rlc3QgInByaW50IGFyMlwoODosODo5XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxc KFxcKCA4OCwgOThcXCkgXFwoIDg5LCA5OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDg6LDg6 OVwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDg6LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCA4OCwgOThcXCkgXFwoIDg5LCA5OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDg6 LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoODosOjJcKSIgXAorKwkJIlxcJFxbMC05XF0r ID0gXFwoXFwoIDgxLCA5MVxcKSBcXCggODIsIDkyXFwpIFxcKSIgXAorKwkJInByaW50IGFyMlwo ODosOjJcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg6MiwyOjNcKSIgXAorKwkJIlxcJFxb MC05XF0rID0gXFwoXFwoIDEyLCAyMlxcKSBcXCggMTMsIDIzXFwpIFxcKSIgXAorKwkJInByaW50 IGFyMlwoOjIsMjozXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoOjIsODpcKSIgXAorKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIDE4LCAyOFxcKSBcXCggMTksIDI5XFwpIFxcKSIgXAorKwkJInBy aW50IGFyMlwoOjIsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw6MlwpIiBcCisrCQki XFwkXFswLTlcXSsgPSBcXChcXCggMTEsIDIxXFwpIFxcKCAxMiwgMjJcXCkgXFwpIiBcCisrCQki cHJpbnQgYXIyXCg6Miw6MlwpIgorKworKyMgVGVzdCBzdWJyYW5nZXMgb2YgMiBkaW1lbnNpb25h bCBhcnJheXMgd2l0aCBsaXRlcmFscyBhbmQgc3VicmFuZ2UgdmFyaWF0aW9ucworK2dkYl90ZXN0 ICJwcmludCBhcjJcKDcsIDM6NlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCg3MywgNzQsIDc1 LCA3NlxcKSIgXAorKwkJInByaW50IGFyMlwoNywgMzo2XCkiCisrZ2RiX3Rlc3QgInByaW50IGFy MlwoNyw4OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCg3OCwgNzlcXCkiIFwKKysJCSJwcmlu dCBhcjJcKDcsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg3LDoyXCkiIFwKKysJCSJcXCRc WzAtOVxdKyA9IFxcKDcxLCA3MlxcKSIgXAorKwkJInByaW50IGFyMlwoNyw6MlwpIgorKworK2dk Yl90ZXN0ICJwcmludCBhcjJcKDc6OCw0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDc0LCA4 NFxcKSIgXAorKwkJInByaW50IGFyMig3OjgsNFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDg6 LDRcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoODQsIDk0XFwpIiBcCisrCQkicHJpbnQgYXIy XCg4Oiw0XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoOjIsNFwpIiBcCisrCQkiXFwkXFswLTlc XSsgPSBcXCgxNCwgMjRcXCkiIFwKKysJCSJwcmludCBhcjJcKDoyLDRcKSIKKytnZGJfdGVzdCAi cHJpbnQgYXIyXCgzLDRcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gMzQiIFwKKysJCSJwcmludCBh cjJcKDMsNFwpIgorKworKyMgVGVzdCBzdWJhcnJheXMgb2YgMyBkaW1lbnNpb25hbCBhcnJheXMg d2l0aCBsaXRlcmFscyBhbmQgc3VicmFuZ2UgdmFyaWF0aW9ucworK2dkYl90ZXN0ICJwcmludCBh cjNcKDI6NCwzOjQsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjM3LCAz MzcsIDQzN1xcKSBcXCggMjQ3LCAzNDcsIDQ0N1xcKVwKKysJCSBcXCkgXFwoIFxcKCAyMzgsIDMz OCwgNDM4XFwpIFxcKCAyNDgsIDM0OCwgNDQ4XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNc KDI6NCwzOjQsNzo4XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDQ6NSw4OlwpIiBcCisr CQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI0OCwgMzQ4XFwpIFxcKCAyNTgsIDM1OFxcKSBc XCkgXFwoXAorKwkJIFxcKCAyNDksIDM0OVxcKSBcXCggMjU5LCAzNTlcXCkgXFwpIFxcKSIgXAor KwkJInByaW50IGFyM1woMjozLDQ6NSw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw0 OjUsOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNDEsIDM0MVxcKSBcXCgg MjUxLCAzNTFcXCkgXFwpIFxcKFwKKysJCSBcXCggMjQyLCAzNDJcXCkgXFwoIDI1MiwgMzUyXFwp IFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw0OjUsOjJcKSIKKysKKytnZGJfdGVzdCAi cHJpbnQgYXIzXCgyOjMsODosNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCgg Mjg3LCAzODdcXCkgXFwoIDI5NywgMzk3XFwpIFxcKSBcXChcCisrCQkgXFwoIDI4OCwgMzg4XFwp IFxcKCAyOTgsIDM5OFxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyOjMsODosNzo4XCki CisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDg6LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCBcXCggMjg4LCAzODhcXCkgXFwoIDI5OCwgMzk4XFwpIFxcKSBcXChcCisrCQkgXFwo IDI4OSwgMzg5XFwpIFxcKCAyOTksIDM5OVxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgy OjMsODosODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsODosOjJcKSIgXAorKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIFxcKCAyODEsIDM4MVxcKSBcXCggMjkxLCAzOTFcXCkgXFwpIFxc KFwKKysJCSBcXCggMjgyLCAzODJcXCkgXFwoIDI5MiwgMzkyXFwpIFxcKSBcXCkiIFwKKysJCSJw cmludCBhcjNcKDI6Myw4Oiw6MlwpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw6Miw3 OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMTcsIDMxN1xcKSBcXCggMjI3 LCAzMjdcXCkgXFwpIFxcKFwKKysJCSBcXCggMjE4LCAzMThcXCkgXFwoIDIyOCwgMzI4XFwpIFxc KSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw6Miw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQg YXIzXCgyOjMsOjIsODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMTgsIDMx OFxcKSBcXCggMjI4LCAzMjhcXCkgXFwpIFxcKFwKKysJCSBcXCggMjE5LCAzMTlcXCkgXFwoIDIy OSwgMzI5XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw6Miw4OlwpIgorK2dkYl90 ZXN0ICJwcmludCBhcjNcKDI6Myw6Miw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCgg XFwoIDIxMSwgMzExXFwpIFxcKCAyMjEsIDMyMVxcKSBcXCkgXFwoXAorKwkJIFxcKCAyMTIsIDMx MlxcKSBcXCggMjIyLCAzMjJcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMjozLDoyLDoy XCkiCisrCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosMzo0LDc6OFwpIiBcCisrCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggXFwoIDgzNywgOTM3XFwpIFxcKCA4NDcsIDk0N1xcKSBcXCkgXFwoXAor KwkJIFxcKCA4MzgsIDkzOFxcKSBcXCggODQ4LCA5NDhcXCkgXFwpIFxcKSIgXAorKwkJInByaW50 IGFyM1woODosMzo0LDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDQ6NSw4OlwpIiBc CisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDg0OCwgOTQ4XFwpIFxcKCA4NTgsIDk1OFxc KSBcXCkgXFwoXAorKwkJIFxcKCA4NDksIDk0OVxcKSBcXCggODU5LCA5NTlcXCkgXFwpIFxcKSIg XAorKwkJInByaW50IGFyM1woODosNDo1LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODos NDo1LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODQxLCA5NDFcXCkgXFwo IDg1MSwgOTUxXFwpIFxcKSBcXChcCisrCQkgXFwoIDg0MiwgOTQyXFwpIFxcKCA4NTIsIDk1Mlxc KSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg4Oiw0OjUsOjJcKSIKKysKKytnZGJfdGVzdCAi cHJpbnQgYXIzXCg4Oiw4Oiw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4 ODcsIDk4N1xcKSBcXCggODk3LCA5OTdcXCkgXFwpIFxcKFwKKysJCSBcXCggODg4LCA5ODhcXCkg XFwoIDg5OCwgOTk4XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDg6LDc6OFwpIgor K2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDg6LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxc KFxcKCBcXCggODg4LCA5ODhcXCkgXFwoIDg5OCwgOTk4XFwpIFxcKSBcXChcCisrCQkgXFwoIDg4 OSwgOTg5XFwpIFxcKCA4OTksIDk5OVxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg4Oiw4 Oiw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDg6LDoyXCkiIFwKKysJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCBcXCggODgxLCA5ODFcXCkgXFwoIDg5MSwgOTkxXFwpIFxcKSBcXChcCisr CQkgXFwoIDg4MiwgOTgyXFwpIFxcKCA4OTIsIDk5MlxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQg YXIzXCg4Oiw4Oiw6MlwpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDoyLDc6OFwpIiBc CisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDgxNywgOTE3XFwpIFxcKCA4MjcsIDkyN1xc KSBcXCkgXFwoXAorKwkJIFxcKCA4MTgsIDkxOFxcKSBcXCggODI4LCA5MjhcXCkgXFwpIFxcKSIg XAorKwkJInByaW50IGFyM1woODosOjIsNzo4XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODos OjIsODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4MTgsIDkxOFxcKSBcXCgg ODI4LCA5MjhcXCkgXFwpIFxcKFwKKysJCSBcXCggODE5LCA5MTlcXCkgXFwoIDgyOSwgOTI5XFwp IFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDoyLDg6XCkiCisrZ2RiX3Rlc3QgInByaW50 IGFyM1woODosOjIsOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4MTEsIDkx MVxcKSBcXCggODIxLCA5MjFcXCkgXFwpIFxcKFwKKysJCSBcXCggODEyLCA5MTJcXCkgXFwoIDgy MiwgOTIyXFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDoyLDoyXCkiCisrCisrCisr Z2RiX3Rlc3QgInByaW50IGFyM1woOjIsMzo0LDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBc XChcXCggXFwoIDEzNywgMjM3XFwpIFxcKCAxNDcsIDI0N1xcKSBcXCkgXFwoXAorKwkJIFxcKCAx MzgsIDIzOFxcKSBcXCggMTQ4LCAyNDhcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyMyBcKDoy LDM6NCw3OjhcKS4iCisrZ2RiX3Rlc3QgInByaW50IGFyM1woOjIsMzo0LDg6XCkiIFwKKysJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTM4LCAyMzhcXCkgXFwoIDE0OCwgMjQ4XFwpIFxcKSBc XChcCisrCQkgXFwoIDEzOSwgMjM5XFwpIFxcKCAxNDksIDI0OVxcKSBcXCkgXFwpIiBcCisrCQki cHJpbnQgYXIzXCg6MiwzOjQsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6MiwzOjQsOjJc KSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxMzEsIDIzMVxcKSBcXCggMTQxLCAy NDFcXCkgXFwpIFxcKFwKKysJCSBcXCggMTMyLCAyMzJcXCkgXFwoIDE0MiwgMjQyXFwpIFxcKSBc XCkiIFwKKysJCSJwcmludCBhcjNcKDoyLDM6NCw6MlwpIgorKworK2dkYl90ZXN0ICJwcmludCBh cjNcKDoyLDg6LDc6OFwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4NywgMjg3XFwpIFxc KFwKKysJCSAxOTcsIDI5N1xcKSBcXCkgXFwoIFxcKCAxODgsIDI4OFxcKSBcXCggMTk4LCAyOThc XCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsODosNzo4XCkiCisrZ2RiX3Rlc3QgInBy aW50IGFyM1woOjIsODosODpcKSIgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxODgsIDI4OFxc KSBcXCggMTk4LFwKKysJCSAyOThcXCkgXFwpIFxcKCBcXCggMTg5LCAyODlcXCkgXFwoIDE5OSwg Mjk5XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDoyLDg6LDg6XCkiCisrZ2RiX3Rlc3Qg InByaW50IGFyM1woOjIsODosOjJcKSIgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxODEsIDI4 MVxcKSBcXCggMTkxLFwKKysJCSAyOTFcXCkgXFwpIFxcKCBcXCggMTgyLCAyODJcXCkgXFwoIDE5 MiwgMjkyXFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDoyLDg6LDoyXCkiCisrCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woOjIsOjIsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCBcXCggMTE3LCAyMTdcXCkgXFwoIDEyNywgMjI3XFwpIFxcKSBcXChcCisrCQkgXFwoIDExOCwg MjE4XFwpIFxcKCAxMjgsIDIyOFxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw6Miw3 OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw6Miw4OlwpIiBcCisrCQkiXFwkXFswLTlc XSsgPSBcXChcXCggXFwoIDExOCwgMjE4XFwpIFxcKCAxMjgsIDIyOFxcKSBcXCkgXFwoXAorKwkJ IFxcKCAxMTksIDIxOVxcKSBcXCggMTI5LCAyMjlcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFy M1woOjIsOjIsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw6Miw6MlwpIiBcCisrCQki XFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDExMSwgMjExXFwpIFxcKCAxMjEsIDIyMVxcKSBcXCkg XFwoXAorKwkJIFxcKCAxMTIsIDIxMlxcKSBcXCggMTIyLCAyMjJcXCkgXFwpIFxcKSIgXAorKwkJ InByaW50IGFyM1woOjIsOjIsOjJcKSIKKysKKysjVGVzdHMgZm9yIHN1YmFycmF5cyBvZiAzIGRp bWVuc2lvbmFsIGFycmF5cyB3aXRoIGxpdGVyYWxzIGFuZCBzdWJyYW5nZXMKKytnZGJfdGVzdCAi cHJpbnQgYXIzXCgzLDM6NCw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDMzNywg MzQ3XFwpIFxcKCAzMzgsIDM0OFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDMsMzo0LDc6OFwp IgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCAzNDgsIDM1OFxcKSBcXCggMzQ5LCAzNTlcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIz XCgzLDQ6NSw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDoyXCkiIFwKKysJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCAzNDEsIDM1MVxcKSBcXCggMzQyLCAzNTJcXCkgXFwpIiBcCisr CQkicHJpbnQgYXIzXCgzLDQ6NSw6MlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDNc KSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoMzQzLCAzNTNcXCkiIFwKKysJCSJwcmludCBhcjNc KDMsNDo1LDNcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDc6OFwpIiBcCisrCQki XFwkXFswLTlcXSsgPSBcXChcXCggMjg3LCAyOTdcXCkgXFwoIDI4OCwgMjk4XFwpIFxcKSIgXAor KwkJInByaW50IGFyM1woMiw4Oiw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDg6 XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyODgsIDI5OFxcKSBcXCggMjg5LCAyOTlc XCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyLDg6LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFy M1woMiw4Oiw6MlwpIlwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyODEsIDI5MVxcKSBcXCgg MjgyLCAyOTJcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyLDg6LDoyXCkiCisrZ2RiX3Rlc3Qg InByaW50IGFyM1woMiw4OiwzXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDI4MywgMjkzXFwp IiBcCisrCQkicHJpbnQgYXIzXCgyLDg6LDNcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgy LDoyLDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjE3LCAyMjdcXCkgXFwoIDIx OCwgMjI4XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMiw6Miw3OjhcKSIKKytnZGJfdGVzdCAi cHJpbnQgYXIzXCgyLDoyLDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMTgsIDIy OFxcKSBcXCggMjE5LCAyMjlcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyLDoyLDg6XCkiCisr Z2RiX3Rlc3QgInByaW50IGFyM1woMiw6Miw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChc XCggMjExLCAyMjFcXCkgXFwoIDIxMiwgMjIyXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMiw6 Miw6MlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsOjIsM1wpIiBcCisrCQkiXFwkXFswLTlc XSsgPSBcXCgyMTMsIDIyM1xcKSIgXAorKwkJInByaW50IGFyM1woMiw6MiwzXCkiCisrCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woMyw0LDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgzNDcs IDM0OFxcKSIgXAorKwkJInByaW50IGFyM1woMyw0LDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBh cjNcKDMsNCw4OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgzNDgsIDM0OVxcKSIgXAorK2kJ CSJwcmludCBhcjNcKDMsNCw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNCw6MlwpIiBc CisrCQkiXFwkXFswLTlcXSsgPSBcXCgzNDEsIDM0MlxcKSIgXAorKwkJInByaW50IGFyM1woMyw0 LDoyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woNSw2LDdcKSIgXAorKwkJIlxcJFxbMC05XF0r ID0gNTY3IiBcCisrCQkicHJpbnQgYXIzXCg1LDYsN1wpIgorKworK2dkYl90ZXN0ICJwcmludCBh cjNcKDM6NCw2LDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzY3LCA0NjdcXCkg XFwoIDM2OCwgNDY4XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMzo0LDYsNzo4XCkiCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woMzo0LDYsODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IDM2OCwgNDY4XFwpIFxcKCAzNjksIDQ2OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDM6NCw2 LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDYsOjJcKSIgXAorKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIDM2MSwgNDYxXFwpIFxcKCAzNjIsIDQ2MlxcKSBcXCkiIFwKKysJCSJwcmlu dCBhcjNcKDM6NCw2LDoyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDYsNVwpIiBcCisr CQkiXFwkXFswLTlcXSsgPSBcXCgzNjUsIDQ2NVxcKSIgXAorKwkJInByaW50IGFyM1woMzo0LDYs NVwpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYsNzo4XCkiIFwKKysJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCA4NjcsIDk2N1xcKSBcXCggODY4LCA5NjhcXCkgXFwpIiBcCisrCQkicHJp bnQgYXIzXCg4Oiw2LDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYsODpcKSIgXAor KwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDg2OCwgOTY4XFwpIFxcKCA4NjksIDk2OVxcKSBcXCki IFwKKysJCSJwcmludCBhcjNcKDg6LDYsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw2 LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4NjEsIDk2MVxcKSBcXCggODYyLCA5 NjJcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg4Oiw2LDoyXCkiCisrZ2RiX3Rlc3QgInByaW50 IGFyM1woODosNiw1XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDg2NSwgOTY1XFwpIiBcCisr CQkicHJpbnQgYXIzXCg4Oiw2LDVcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw2LDc6 OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTY3LCAyNjdcXCkgXFwoIDE2OCwgMjY4 XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsNiw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQg YXIzXCg6Miw2LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNjgsIDI2OFxcKSBc XCggMTY5LCAyNjlcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw2LDg6XCkiCisrZ2RiX3Rl c3QgInByaW50IGFyM1woOjIsNiw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTYx LCAyNjFcXCkgXFwoIDE2MiwgMjYyXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsNiw6Mlwp IgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDYsNVwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBc XCgxNjUsIDI2NVxcKSIgXAorKwkJInByaW50IGFyM1woOjIsNiw1XCkiCisrCisrZ2RiX3Rlc3Qg InByaW50IGFyM1woMzo0LDU6Niw0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAzNTQs IDQ1NFxcKSBcXCggMzY0LCA0NjRcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCgzOjQsNTo2LDRc KSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw1OjYsNFwpIiBcCisrCQkiXFwkXFswLTlcXSsg PSBcXChcXCggODU0LCA5NTRcXCkgXFwoIDg2NCwgOTY0XFwpIFxcKSIgXAorKwkJInByaW50IGFy MlwoODosNTo2LDRcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw1OjYsNFwpIiBcCisrCQki XFwkXFswLTlcXSsgPSBcXChcXCggMTU0LCAyNTRcXCkgXFwoIDE2NCwgMjY0XFwpIFxcKSIgXAor KwkJInByaW50IGFyMlwoOjIsNTo2LDRcKSIKKysKKysjIFN0cmlkZSA+IDEKKytnZGJfdGVzdCAi cHJpbnQgYXIxXCgyOjY6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgyLCA0LCA2XFwpIiBc CisrCQkicHJpbnQgYXIxXCgyOjY6MlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6NjoyLDM6 NFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjMsIDQzLCA2M1xcKSBcXCggMjQsIDQ0 LCA2NFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDI6NjoyLDM6NFwpIgorK2dkYl90ZXN0ICJw cmludCBhcjJcKDI6NjoyLDNcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoMjMsIDQzLCA2M1xc KSIgXAorKwkJInByaW50IGFyMlwoMjo2OjIsM1wpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6 NjoyLDM6NToyLDQ6NzozXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjM0LCA0 MzQsIDYzNFxcKSBcXCggMjU0LCA0NTQsIDY1NFxcKVwKKysJCSBcXCkgXFwoIFxcKCAyMzcsIDQz NywgNjM3XFwpIFxcKCAyNTcsIDQ1NywgNjU3XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNc KDI6NjoyLDM6NToyLDQ6NzozXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjo2OjIsNSw0Ojc6 M1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjU0LCA0NTQsIDY1NFxcKSBcXCggMjU3 LCA0NTcsIDY1N1xcKVwKKysJCSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6NjoyLDUsNDo3OjNc KSIKKysKKysjIFN0cmlkZSA8IDAKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6LTJcKSIgXAor KwkJIlxcJFxbMC05XF0rID0gXFwoOCwgNiwgNCwgMlxcKSIgXAorKwkJInByaW50IGFyMVwoODoy Oi0yXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoODoyOi0yLDM6NFwpIiBcCisrCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggODMsIDYzLCA0MywgMjNcXCkgXFwoIDg0LCA2NCwgNDQsIDI0XFwpXAor KwkJIFxcKSIgXAorKwkJInByaW50IGFyMlwoODoyOi0yLDM6NFwpIgorK2dkYl90ZXN0ICJwcmlu dCBhcjJcKDI6NjoyLDNcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoMjMsIDQzLCA2M1xcKSIg XAorKwkJInByaW50IGFyMlwoMjo2OjIsM1wpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw3 OjM6LTQsNDo3OjNcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNzQsIDM3NFxc KSBcXCggMjM0LCAzMzRcXCkgXFwpIFxcKFwKKysJCSBcXCggMjc3LCAzNzdcXCkgXFwoIDIzNywg MzM3XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw3OjM6LTQsNDo3OjNcKSIKKytn ZGJfdGVzdCAicHJpbnQgYXIzXCgyOjY6Miw1LDc6NDotM1wpIiBcCisrCQkiXFwkXFswLTlcXSsg PSBcXChcXCggMjU3LCA0NTcsIDY1N1xcKSBcXCggMjU0LCA0NTQsIDY1NFxcKVwKKysJCSBcXCki IFwKKysJCSJwcmludCBhcjNcKDI6NjoyLDUsNzo0Oi0zXCkiCisrCisrIyBUZXN0cyB3aXRoIG5l Z2F0aXZlIGFuZCBtaXhlZCBpbmRpY2VzCisrZ2RiX3Rlc3QgInAgYXI0XCgyOjQsIC0yOjEsIC0x NTotMTRcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNjEsIDM2MSwgNDYxXFwp IFxcKCAyNzEsIDM3MSwgNDcxXFwpXAorKwkJIFxcKCAyODEsIDM4MSwgNDgxXFwpIFxcKCAyOTEs IDM5MSwgNDkxXFwpIFxcKSBcXCggXFwoIDI2MixcCisrCQkgMzYyLCA0NjJcXCkgXFwoIDI3Miwg MzcyLCA0NzJcXCkgXFwoIDI4MiwgMzgyLCA0ODJcXCkgXFwoIDI5MixcCisrCQkgMzkyLCA0OTJc XCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyNCgyOjQsIC0yOjEsIC0xNTotMTQpIgorKworK2dk Yl90ZXN0ICJwIGFyNFwoNywtNjoyOjMsLTdcKSIgXAorKyAgICAgICAgICAgICAgICAiXFwkXFsw LTlcXSsgPSBcXCg3MjksIDc1OSwgNzg5XFwpIiBcCisrICAgICAgICAgICAgICAgICJwcmludCBh cjQoNywtNjoyOjMsLTcpIgorKworK2dkYl90ZXN0ICJwIGFyNFwoOToyOi0yLCAtNjoyOjMsIC02 Oi0xNTotM1wpIiBcCisrICAgICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCgg OTMwLCA3MzAsIDUzMCwgMzMwXFwpIFxcKCA5NjAsIDc2MCxcCisrCQkgNTYwLCAzNjBcXCkgXFwo IDk5MCwgNzkwLCA1OTAsIDM5MFxcKSBcXCkgXFwoIFxcKCA5MjcsIDcyNyxcCisrCQkgNTI3LCAz MjdcXCkgXFwoIDk1NywgNzU3LCA1NTcsIDM1N1xcKSBcXCggOTg3LCA3ODcsIDU4NyxcCisrCQkg Mzg3XFwpIFxcKSBcXCggXFwoIDkyNCwgNzI0LCA1MjQsIDMyNFxcKSBcXCggOTU0LCA3NTQsIDU1 NCxcCisrCQkgMzU0XFwpIFxcKCA5ODQsIDc4NCwgNTg0LCAzODRcXCkgXFwpIFxcKCBcXCggOTIx LCA3MjEsIDUyMSxcCisrCQkgMzIxXFwpIFxcKCA5NTEsIDc1MSwgNTUxLCAzNTFcXCkgXFwoIDk4 MSwgNzgxLCA1ODEsIDM4MVxcKSBcXClcCisrCQkgXFwpIiBcCisrICAgICAgICAgICAgICAgICJw cmludCBhcjQoOToyOi0yLCAtNjoyOjMsIC02Oi0xNTotMykiCisrCisrZ2RiX3Rlc3QgInAgYXI0 XCg6LDosOlwpIiBcCisrICAgICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCgg MTExLCAyMTEsIDMxMSwgNDExLCA1MTEsIDYxMSwgNzExLFwKKysJCSA4MTEsIC4qIiBcCisrICAg ICAgICAgICAgICAgICJwcmludCBhcjQoOiw6LDopIgorKworKyMgUHJvdm9rZSBlcnJvciBtZXNz YWdlcyBmb3IgYmFkIHVzZXIgaW5wdXQKKytnZGJfdGVzdCAicHJpbnQgYXIxXCgwOjRcKSIgXAor KwkJInByb3ZpZGVkIGJvdW5kXFwoc1xcKSBvdXRzaWRlIGFycmF5IGJvdW5kXFwoc1xcKSIgXAor KwkJInByaW50IGFyMVwoMDo0XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMVwoODoxMlwpIiBcCisr CQkicHJvdmlkZWQgYm91bmRcXChzXFwpIG91dHNpZGUgYXJyYXkgYm91bmRcXChzXFwpIiBcCisr CQkicHJpbnQgYXIxXCg4OjEyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMVwoODoyOlwpIiBcCisr CQkiQSBzeW50YXggZXJyb3IgaW4gZXhwcmVzc2lvbiwgbmVhciBgXFwpJy4iIFwKKysJCSJwcmlu dCBhcjFcKDg6MjpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6MlwpIiBcCisrCQkiV3Jv bmcgdmFsdWUgcHJvdmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRhcmllcyIgXAorKwkJInByaW50 IGFyMVwoODoyOjJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCgyOjg6LTJcKSIgXAorKwkJIldy b25nIHZhbHVlIHByb3ZpZGVkIGZvciBzdHJpZGUgYW5kIGJvdW5kYXJpZXMiIFwKKysJCSJwcmlu dCBhcjFcKDI6ODotMlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6NzowXCkiIFwKKysJCSJT dHJpZGUgbXVzdCBub3QgYmUgMCIgXAorKwkJInByaW50IGFyMVwoMjo3OjBcKSIKKytnZGJfdGVz dCAicHJpbnQgYXIxXCgzOjdcKSA9IDQyIiBcCisrCQkiSW52YWxpZCBjYXN0LiIgXAorKwkJIkFz c2lnbm1lbnQgb2YgdmFsdWUgdG8gc3ViYXJyYXkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9zdGF0aWMtYXJyYXlzLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3RhdGljLWFycmF5cy5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li5mMjJmY2JlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3N0YXRpYy1hcnJheXMuZjkwCitAQCAtMCwwICsxLDU1IEBACisrISBDb3B5cmlnaHQgMjAxNSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBDb250cmlidXRlZCBieSBJbnRl bCBDb3JwLiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorKyEKKyshIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3Vicm91dGluZSBzdWIKKysgIGludGVnZXIsIGRpbWVu c2lvbig5KSA6OiBhcjEKKysgIGludGVnZXIsIGRpbWVuc2lvbig5LDkpIDo6IGFyMgorKyAgaW50 ZWdlciwgZGltZW5zaW9uKDksOSw5KSA6OiBhcjMKKysgIGludGVnZXIsIGRpbWVuc2lvbigxMCwt NzozLCAtMTU6LTUpIDo6IGFyNAorKyAgaW50ZWdlciA6OiBpLGosaworKworKyAgYXIxID0gMQor KyAgYXIyID0gMQorKyAgYXIzID0gMQorKyAgYXI0ID0gNAorKworKyAgISBSZXN1bHRpbmcgYXJy YXkgYXIzIGxvb2tzIGxpa2UgKCgoIDExMSwgMTEyLCAxMTMsIDExNCwuLi4pKSkKKysgIGRvIGkg PSAxLCA5LCAxCisrICAgIGFyMShpKSA9IGkKKysgICAgZG8gaiA9IDEsIDksIDEKKysgICAgICBh cjIoaSxqKSA9IGkqMTAgKyBqCisrICAgICAgZG8gayA9IDEsIDksIDEKKysgICAgICAgIGFyMyhp LGosaykgPSBpKjEwMCArIGoqMTAgKyBrCisrICAgICAgZW5kIGRvCisrICAgIGVuZCBkbworKyAg ZW5kIGRvCisrCisrICBkbyBpID0gMSwgMTAsIDEKKysgICAgZG8gaiA9IC03LCAzLCAxCisrICAg ICAgZG8gayA9IC0xNSwgLTUsIDEKKysgICAgICAgIGFyNChpLGosaykgPSBpKjEwMCArIChqKzgp KjEwICsgKGsrMTYpCisrICAgICAgZW5kIGRvCisrICAgIGVuZCBkbworKyAgZW5kIGRvCisrCisr ICBhcjEoMSkgPSAxMSAgIUJQMQorKyAgcmV0dXJuCisrZW5kCisrCisrcHJvZ3JhbSB0ZXN0cHJv ZworKyAgY2FsbCBzdWIKKytlbmQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS1wdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5l eHAKK2luZGV4IDE3NTY2MWYuLjU0NGQ0MGEgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLXB0eXBlLmV4cAorQEAgLTk4LDMgKzk4LDcgQEAgZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0 eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMiBub3QgYWxsb2NhdGVkIgorIGdkYl90 ZXN0ICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkiIFwKKyAgICJubyBzdWNoIHZlY3RvciBlbGVtZW50 IFxcXCh2ZWN0b3Igbm90IGFsbG9jYXRlZFxcXCkiIFwKKyAgICJwdHlwZSB2bGEyKDUsIDQ1LCAy MCkgbm90IGFsbG9jYXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAidmxhMS1uZWctYm91bmRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1u ZWctYm91bmRzIgorK2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9ICRyZWFsIFxcKC0yOjEs LTU6NCwtMzotMVxcKSIgInB0eXBlIHZsYTEgbmVnYXRpdmUgYm91bmRzIgorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVvZi5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCitpbmRleCA4MDEwYzBhLi5mODI1OGExIDEwMDY0 NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cAorQEAgLTQ0LDMgKzQ0LDcg QEAgZ2RiX3Rlc3QgInByaW50IHNpemVvZihwdmxhKSIgIiA9IDAiICJwcmludCBzaXplb2Ygbm9u LWFzc29jaWF0ZWQgcHZsYSIKKyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi cHZsYS1hc3NvY2lhdGVkIl0KKyBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1hc3Nv Y2lhdGVkIgorIGdkYl90ZXN0ICJwcmludCBzaXplb2YocHZsYSkiICIgPSA0MDAwIiAicHJpbnQg c2l6ZW9mIGFzc29jaWF0ZWQgcHZsYSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmxhMS1uZWctYm91bmRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmxhMS1uZWctYm91bmRzIgorK2dkYl90ZXN0ICJwcmludCBzaXplb2YodmxhMSkiICIgPSA0ODAi ICJwcmludCBzaXplb2YgdmxhMSBuZWdhdGl2ZSBib3VuZHMiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXN0cmlkZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li5kY2YxNWU1CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1zdHJpZGUuZXhwCitAQCAtMCwwICsxLDQ0IEBACisrIyBDb3B5cmlnaHQgMjAxNiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3Jf dGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtk ZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8g TUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBN QUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJyZS1yZXZlcnNlLWVsZW1lbnRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAicmUtcmV2ZXJzZS1lbGVtZW50cyIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxc XCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxcXCkiIFwKKysgICJwcmludCByZS1yZXZl cnNlLWVsZW1lbnRzIgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMSIgInByaW50IGZp cnN0IHJlLXJldmVyc2UtZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSgxMCkiICIgPSAx MCIgInByaW50IGxhc3QgcmUtcmV2ZXJzZS1lbGVtZW50IgorKworK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJvZGQtZWxlbWVudHMiXQorK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJvZGQtZWxlbWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSBcXFwoMSwg MywgNSwgNywgOVxcXCkiICJwcmludCBvZGQtZWxlbWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2 bGEoMSkiICIgPSAxIiAicHJpbnQgZmlyc3Qgb2RkLWVsZW1lbnQiCisrZ2RiX3Rlc3QgInByaW50 IHB2bGEoNSkiICIgPSA5IiAicHJpbnQgbGFzdCBvZGQtZWxlbWVudCIKKysKKytnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAic2luZ2xlLWVsZW1lbnQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJzaW5nbGUtZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIg IiA9IFxcXCg1XFxcKSIgInByaW50IHNpbmdsZS1lbGVtZW50IgorK2dkYl90ZXN0ICJwcmludCBw dmxhKDEpIiAiID0gNSIgInByaW50IG9uZSBzaW5nbGUtZWxlbWVudCIKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjhkMjQyNTIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXN0cmlkZS5mOTAKK0BAIC0wLDAgKzEsMjkgQEAKKyshIENvcHlyaWdodCAyMDE2 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisrCisrcHJvZ3JhbSB2bGFfc3RyaWRlCisrICBpbnRlZ2VyLCB0YXJnZXQsIGFs bG9jYXRhYmxlIDo6IHZsYSAoOikKKysgIGludGVnZXIsIHBvaW50ZXIgOjogcHZsYSAoOikKKysK KysgIGFsbG9jYXRlKHZsYSgxMCkpCisrICB2bGEgPSAoLyAoSSwgSSA9IDEsMTApIC8pCisrCisr ICBwdmxhID0+IHZsYSgxMDoxOi0xKQorKyAgcHZsYSA9PiBwdmxhKDEwOjE6LTEpCisrICBwdmxh ID0+IHZsYSgxOjEwOjIpICAgISByZS1yZXZlcnNlLWVsZW1lbnRzCisrICBwdmxhID0+IHZsYSg1 OjQ6LTIpICAgISBvZGQtZWxlbWVudHMKKysKKysgIHB2bGEgPT4gbnVsbCgpICAgICAgICAhIHNp bmdsZS1lbGVtZW50CisrZW5kIHByb2dyYW0gdmxhX3N0cmlkZQorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLmY5MAoraW5kZXggYzc2ZDI0Yy4uZWYzMDdiNyAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLmY5MAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEuZjkwCitAQCAtNTQsNCArNTQsMTQgQEAgcHJvZ3JhbSB2bGEKKyAKKyAgIGFsbG9jYXRlICh2 bGEzICgyLDIpKSAgICAgICAgICAgICAgICEgdmxhMi1kZWFsbG9jYXRlZAorICAgdmxhMyg6LDop ID0gMTMKKysKKysgIGFsbG9jYXRlICh2bGExICgtMjoxLCAtNTo0LCAtMzotMSkpCisrICBsID0g YWxsb2NhdGVkKHZsYTEpCisrCisrICB2bGExKDosIDosIDopID0gMQorKyAgdmxhMSgtMiwgLTMs IC0xKSA9IC0yMzEKKysKKysgIGRlYWxsb2NhdGUgKHZsYTEpICAgICAgICAgICAgICAgICAgICEg dmxhMS1uZWctYm91bmRzCisrICBsID0gYWxsb2NhdGVkKHZsYTEpCisrCisgZW5kIHByb2dyYW0g dmxhCitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYworaW5kZXgg ZGU2ZmNmZC4uOTc1MzUwNiAxMDA2NDQKKy0tLSBhL2dkYi92YWxhcml0aC5jCisrKysgYi9nZGIv dmFsYXJpdGguYworQEAgLTE5MywxMSArMTkzLDE3IEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1 ZSAoc3RydWN0IHZhbHVlICphcnJheSwgTE9OR0VTVCBpbmRleCwgaW50IGxvd2VyYm91bmQpCisg ICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy cmF5KSk7CisgICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RB UkdFVF9UWVBFIChhcnJheV90eXBlKSk7CisgICBVTE9OR0VTVCBlbHRfc2l6ZSA9IHR5cGVfbGVu Z3RoX3VuaXRzIChlbHRfdHlwZSk7CistICBVTE9OR0VTVCBlbHRfb2ZmcyA9IGVsdF9zaXplICog KGluZGV4IC0gbG93ZXJib3VuZCk7CisrICBMT05HRVNUIGVsdF9vZmZzID0gaW5kZXggLSBsb3dl cmJvdW5kOworKyAgTE9OR0VTVCBlbHRfc3RyaWRlID0gVFlQRV9CWVRFX1NUUklERSAoVFlQRV9J TkRFWF9UWVBFIChhcnJheV90eXBlKSk7CisgICBzdHJ1Y3QgdmFsdWUgKnY7CisgCisrICBpZiAo ZWx0X3N0cmlkZSAhPSAwKQorKyAgICBlbHRfb2ZmcyAqPSBlbHRfc3RyaWRlOworKyAgZWxzZQor KyAgICBlbHRfb2ZmcyAqPSBlbHRfc2l6ZTsKKysKKyAgIGlmIChpbmRleCA8IGxvd2VyYm91bmQg fHwgKCFUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAoYXJyYXlfdHlwZSkKKy0J CQkgICAgICYmIGVsdF9vZmZzID49IHR5cGVfbGVuZ3RoX3VuaXRzIChhcnJheV90eXBlKSkpCisr CQkJICAgICAmJiBhYnMgKGVsdF9vZmZzKSA+PSB0eXBlX2xlbmd0aF91bml0cyAoYXJyYXlfdHlw ZSkpKQorICAgICB7CisgICAgICAgaWYgKHR5cGVfbm90X2Fzc29jaWF0ZWQgKGFycmF5X3R5cGUp KQorICAgICAgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgKHZlY3RvciBub3Qg YXNzb2NpYXRlZCkiKSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5j CitpbmRleCA0MDM5MmU4Li4yNGZmYWNiIDEwMDY0NAorLS0tIGEvZ2RiL3ZhbG9wcy5jCisrKysg Yi9nZGIvdmFsb3BzLmMKK0BAIC0zNzc1LDU2ICszNzc1LDE5MSBAQCB2YWx1ZV9vZl90aGlzX3Np bGVudCAoY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmcpCisgc3RydWN0IHZhbHVlICoK KyB2YWx1ZV9zbGljZSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVu Z3RoKQorIHsKKysgIC8qIFBhc3MgdW5hbHRlcmVkIGFyZ3VtZW50cyB0byBWQUxVRV9TTElDRV8x LCBwbHVzIGEgZGVmYXVsdCBzdHJpZGUKKysgICAgIHZhbHVlIG9mICcxJywgd2hpY2ggcmV0dXJu cyBldmVyeSBlbGVtZW50IGJldHdlZW4gTE9XQk9VTkQgYW5kCisrICAgICAoTE9XQk9VTkQgKyBM RU5HVEgpLiAgV2UgYWxzbyBwcm92aWRlIGEgZGVmYXVsdCBDQUxMX0NPVU5UIG9mICcxJworKyAg ICAgYXMgd2UgYXJlIG9ubHkgY29uc2lkZXJpbmcgdGhlIGhpZ2hlc3QgZGltZW5zaW9uLCBvciB3 ZSBhcmUKKysgICAgIHdvcmtpbmcgb24gYSBvbmUgZGltZW5zaW9uYWwgYXJyYXkuICBTbyB3ZSBj YWxsIFZBTFVFX1NMSUNFXzEKKysgICAgIGV4YWN0bHkgb25jZS4gICovCisrICByZXR1cm4gdmFs dWVfc2xpY2VfMSAoYXJyYXksIGxvd2JvdW5kLCBsZW5ndGgsIDEsIDEpOworK30KKysKKysvKiBW QUxVRV9TTElDRV8xIGlzIGNhbGxlZCBmb3IgZWFjaCBhcnJheSBkaW1lbnNpb24gdG8gY2FsY3Vs YXRlIHRoZSBudW1iZXIKKysgICBvZiBlbGVtZW50cyBhcyBkZWZpbmVkIGJ5IHRoZSBzdWJzY3Jp cHQgZXhwcmVzc2lvbi4KKysgICBDQUxMX0NPVU5UIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHdl IGFyZSBjYWxsaW5nIHRoZSBmdW5jdGlvbiBvbmNlLCBlLmcuCisrICAgd2UgYXJlIHdvcmtpbmcg b24gdGhlIGN1cnJlbnQgZGltZW5zaW9uIG9mIEFSUkFZLCBvciBpZiB3ZSBhcmUgY2FsbGluZwor KyAgIHRoZSBmdW5jdGlvbiByZXBlYXRlZGx5LiAgSW4gdGhlIGxhdGVyIGNhc2Ugd2UgbmVlZCB0 byB0YWtlIGVsZW1lbnRzCisrICAgZnJvbSB0aGUgVEFSR0VUX1RZUEUgb2YgQVJSQVkuCisrICAg V2l0aCBhIENBTExfQ09VTlQgZ3JlYXRlciB0aGFuIDEgd2UgY2FsY3VsYXRlIHRoZSBvZmZzZXRz IGZvciBldmVyeSBlbGVtZW50CisrICAgdGhhdCBzaG91bGQgYmUgaW4gdGhlIHJlc3VsdCBhcnJh eS4gIFRoZW4gd2UgZmV0Y2ggdGhlIGNvbnRlbnRzIGFuZCB0aGVuCisrICAgY29weSB0aGVtIGlu dG8gdGhlIHJlc3VsdCBhcnJheS4gIFRoZSByZXN1bHQgYXJyYXkgd2lsbCBoYXZlIG9uZSBkaW1l bnNpb24KKysgICBsZXNzIHRoYW4gdGhlIGlucHV0IGFycmF5LCBzbyBsYXRlciBvbiB3ZSBuZWVk IHRvIHJlY3JlYXRlIHRoZSBpbmRpY2VzIGFuZAorKyAgIHJhbmdlcyBpbiB0aGUgY2FsbGluZyBm dW5jdGlvbi4gICovCisrCisrc3RydWN0IHZhbHVlICoKKyt2YWx1ZV9zbGljZV8xIChzdHJ1Y3Qg dmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgsCisrCSAgICAgICBpbnQgc3Ry aWRlX2xlbmd0aCwgaW50IGNhbGxfY291bnQpCisreworICAgc3RydWN0IHR5cGUgKnNsaWNlX3Jh bmdlX3R5cGUsICpzbGljZV90eXBlLCAqcmFuZ2VfdHlwZTsKKy0gIExPTkdFU1QgbG93ZXJib3Vu ZCwgdXBwZXJib3VuZDsKKy0gIHN0cnVjdCB2YWx1ZSAqc2xpY2U7CistICBzdHJ1Y3QgdHlwZSAq YXJyYXlfdHlwZTsKKysgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAo dmFsdWVfdHlwZSAoYXJyYXkpKTsKKysgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKysgIHVuc2lnbmVkIGludCBl bHRfc2l6ZSwgZWx0X29mZnM7CisrICBMT05HRVNUIGFyeV9oaWdoX2JvdW5kLCBhcnlfbG93X2Jv dW5kOworKyAgc3RydWN0IHZhbHVlICp2OworKyAgaW50IHNsaWNlX3JhbmdlX3NpemUsIGkgPSAw LCByb3dfY291bnQgPSAxLCBlbGVtX2NvdW50ID0gMTsKKyAKKy0gIGFycmF5X3R5cGUgPSBjaGVj a190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOworKyAgLyogQ2hlY2sgZm9yIGxlZ2FjeSBj b2RlIGlmIHdlIGFyZSBhY3R1YWxseSBkZWFsaW5nIHdpdGggYW4gYXJyYXkgb3IKKysgICAgIHN0 cmluZy4gICovCisgICBpZiAoVFlQRV9DT0RFIChhcnJheV90eXBlKSAhPSBUWVBFX0NPREVfQVJS QVkKKyAgICAgICAmJiBUWVBFX0NPREUgKGFycmF5X3R5cGUpICE9IFRZUEVfQ09ERV9TVFJJTkcp CisgICAgIGVycm9yIChfKCJjYW5ub3QgdGFrZSBzbGljZSBvZiBub24tYXJyYXkiKSk7CisgCist ICByYW5nZV90eXBlID0gVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKKy0gIGlmIChnZXRf ZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQpIDwg MCkKKy0gICAgZXJyb3IgKF8oInNsaWNlIGZyb20gYmFkIGFycmF5IG9yIGJpdHN0cmluZyIpKTsK KysgIGFyeV9sb3dfYm91bmQgPSBUWVBFX0xPV19CT1VORCAoVFlQRV9JTkRFWF9UWVBFIChhcnJh eV90eXBlKSk7CisrICBhcnlfaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAoVFlQRV9JTkRF WF9UWVBFIChhcnJheV90eXBlKSk7CisrCisrICAvKiBXaGVuIHdlIGFyZSB3b3JraW5nIG9uIGEg bXVsdGktZGltZW5zaW9uYWwgYXJyYXksIHdlIG5lZWQgdG8gZ2V0IHRoZQorKyAgICAgYXR0cmli dXRlcyBvZiB0aGUgdW5kZXJseWluZyB0eXBlLiAgKi8KKysgIGlmIChjYWxsX2NvdW50ID4gMSkK KysgICAgeworKyAgICAgIGFyeV9sb3dfYm91bmQgPSBUWVBFX0xPV19CT1VORCAoVFlQRV9JTkRF WF9UWVBFIChlbHRfdHlwZSkpOworKyAgICAgIGFyeV9oaWdoX2JvdW5kID0gVFlQRV9ISUdIX0JP VU5EIChUWVBFX0lOREVYX1RZUEUgKGVsdF90eXBlKSk7CisrICAgICAgZWx0X3R5cGUgPSBjaGVj a190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChlbHRfdHlwZSkpOworKyAgICAgIHJvd19jb3Vu dCA9IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKQorKwkJICAgIC8gVFlQRV9MRU5HVEggKFRZUEVf VEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKysgICAgfQorKworKyAgLyogV2l0aCBhIHN0cmlk ZSBvZiAnMScsIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcGVyIHJlc3VsdCByb3cgaXMgZXF1YWwg dG8KKysgICAgIHRoZSBMRU5HVEggb2YgdGhlIHN1YmFycmF5LiAgV2l0aCBub24tZGVmYXVsdCBz dHJpZGUgdmFsdWVzLCB3ZSBza2lwCisrICAgICBlbGVtZW50cywgYnV0IGhhdmUgdG8gYWRkIHRo ZSBzdGFydCBlbGVtZW50IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YKKysgICAgIGVsZW1lbnRzIHBl ciByb3cuICAqLworKyAgaWYgKHN0cmlkZV9sZW5ndGggPT0gMSkKKysgICAgZWxlbV9jb3VudCA9 IGxlbmd0aDsKKysgIGVsc2UKKysgICAgZWxlbV9jb3VudCA9ICgobGVuZ3RoIC0gMSkgLyBzdHJp ZGVfbGVuZ3RoKSArIDE7CisrCisrICBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlwZSk7 CisrICBlbHRfb2ZmcyA9IGxvd2JvdW5kIC0gYXJ5X2xvd19ib3VuZDsKKyAKKy0gIGlmIChsb3di b3VuZCA8IGxvd2VyYm91bmQgfHwgbGVuZ3RoIDwgMAorLSAgICAgIHx8IGxvd2JvdW5kICsgbGVu Z3RoIC0gMSA+IHVwcGVyYm91bmQpCistICAgIGVycm9yIChfKCJzbGljZSBvdXQgb2YgcmFuZ2Ui KSk7CisrICBlbHRfb2ZmcyAqPSBlbHRfc2l6ZTsKKysKKysgIC8qIENoZWNrIGZvciB2YWxpZCB1 c2VyIGlucHV0LiAgSW4gY2FzZSBvZiBGb3J0cmFuIHRoaXMgd2FzIGFscmVhZHkgZG9uZQorKyAg ICAgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24uICAqLworKyAgaWYgKGNhbGxfY291bnQgPT0gMQor KwkmJiAoIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQor KwkgICAgICAmJiBlbHRfb2ZmcyA+PSBUWVBFX0xFTkdUSCAoYXJyYXlfdHlwZSkpKQorKyAgICBl cnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIpKTsKKysKKysgIC8qIENBTExfQ09VTlQg aXMgMSB3aGVuIHdlIGFyZSBkZWFsaW5nIGVpdGhlciB3aXRoIHRoZSBoaWdoZXN0IGRpbWVuc2lv bgorKyAgICAgb2YgdGhlIGFycmF5LCBvciBhIG9uZSBkaW1lbnNpb25hbCBhcnJheS4gIFNldCBS QU5HRV9UWVBFIGFjY29yZGluZ2x5LgorKyAgICAgSW4gYm90aCBjYXNlcyB3ZSBjYWxjdWxhdGUg aG93IG1hbnkgcm93cy9lbGVtZW50cyB3aWxsIGJlIGluIHRoZSBvdXRwdXQKKysgICAgIGFycmF5 IGJ5IHNldHRpbmcgc2xpY2VfcmFuZ2Vfc2l6ZS4gICovCisrICBpZiAoY2FsbF9jb3VudCA9PSAx KQorKyAgICB7CisrICAgICAgcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlw ZSk7CisrICAgICAgc2xpY2VfcmFuZ2Vfc2l6ZSA9IGFyeV9sb3dfYm91bmQgKyBlbGVtX2NvdW50 IC0gMTsKKysKKysgICAgICAvKiBDaGVjayBpZiB0aGUgYXJyYXkgYm91bmRzIGFyZSB2YWxpZC4g ICovCisrICAgICAgaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZhcnlfbG93 X2JvdW5kLCAmYXJ5X2hpZ2hfYm91bmQpIDwgMCkKKysJZXJyb3IgKF8oInNsaWNlIGZyb20gYmFk IGFycmF5IG9yIGJpdHN0cmluZyIpKTsKKysgICAgfQorKyAgLyogV2hlbiBDQUxMX0NPVU5UIGlz IGdyZWF0ZXIgdGhhbiAxLCB3ZSBhcmUgZGVhbGluZyB3aXRoIGFuIGFycmF5IG9mIGFycmF5cy4K KysgICAgIFNvIHdlIG5lZWQgdG8gZ2V0IHRoZSB0eXBlIGJlbG93IHRoZSBjdXJyZW50IG9uZSBh bmQgc2V0IHRoZSBSQU5HRV9UWVBFCisrICAgICBhY2NvcmRpbmdseS4gICovCisrICBlbHNlCisr ICAgIHsKKysgICAgICByYW5nZV90eXBlID0gVFlQRV9JTkRFWF9UWVBFIChUWVBFX1RBUkdFVF9U WVBFIChhcnJheV90eXBlKSk7CisrICAgICAgc2xpY2VfcmFuZ2Vfc2l6ZSA9IGFyeV9sb3dfYm91 bmQgKyAocm93X2NvdW50ICogZWxlbV9jb3VudCkgLSAxOworKyAgICAgIGFyeV9sb3dfYm91bmQg PSBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSk7CisrICAgIH0KKyAKKyAgIC8qIEZJWE1FLXR5 cGUtYWxsb2NhdGlvbjogbmVlZCBhIHdheSB0byBmcmVlIHRoaXMgdHlwZSB3aGVuIHdlIGFyZQor LSAgICAgZG9uZSB3aXRoIGl0LiAgKi8KKy0gIHNsaWNlX3JhbmdlX3R5cGUgPSBjcmVhdGVfc3Rh dGljX3JhbmdlX3R5cGUgKChzdHJ1Y3QgdHlwZSAqKSBOVUxMLAorLQkJCQkJICAgICAgIFRZUEVf VEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAorLQkJCQkJICAgICAgIGxvd2JvdW5kLAorLQkJCQkJ ICAgICAgIGxvd2JvdW5kICsgbGVuZ3RoIC0gMSk7CisrICAgICAgZG9uZSB3aXRoIGl0LiAgKi8K KyAKKysgIHNsaWNlX3JhbmdlX3R5cGUgPSBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKE5VTEws IFRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAorKwkJCQkJICAgICAgIGFyeV9sb3dfYm91 bmQsIHNsaWNlX3JhbmdlX3NpemUpOworICAgeworLSAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90 eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CistICAgIExPTkdFU1Qgb2Zmc2V0 CistICAgICAgPSAobG93Ym91bmQgLSBsb3dlcmJvdW5kKSAqIFRZUEVfTEVOR1RIIChjaGVja190 eXBlZGVmIChlbGVtZW50X3R5cGUpKTsKKysgICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZTsK KysKKysgICAgLyogV2hlbiBib3RoIENBTExfQ09VTlQgYW5kIFNUUklERV9MRU5HVEggZXF1YWwg MSwgd2UgY2FuIHVzZSB0aGUgbGVnYWN5CisrICAgICAgIGNvZGUgZm9yIHN1YmFycmF5cy4gICov CisrICAgIGlmIChjYWxsX2NvdW50ID09IDEgJiYgc3RyaWRlX2xlbmd0aCA9PSAxKQorKyAgICAg IHsKKysJZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CisrCisr CXNsaWNlX3R5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgZWxlbWVudF90eXBlLCBzbGlj ZV9yYW5nZV90eXBlKTsKKyAKKy0gICAgc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlICgo c3RydWN0IHR5cGUgKikgTlVMTCwKKy0JCQkJICAgIGVsZW1lbnRfdHlwZSwKKy0JCQkJICAgIHNs aWNlX3JhbmdlX3R5cGUpOworLSAgICBUWVBFX0NPREUgKHNsaWNlX3R5cGUpID0gVFlQRV9DT0RF IChhcnJheV90eXBlKTsKKysJVFlQRV9DT0RFIChzbGljZV90eXBlKSA9IFRZUEVfQ09ERSAoYXJy YXlfdHlwZSk7CisgCistICAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkg JiYgdmFsdWVfbGF6eSAoYXJyYXkpKQorLSAgICAgIHNsaWNlID0gYWxsb2NhdGVfdmFsdWVfbGF6 eSAoc2xpY2VfdHlwZSk7CisrCWlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkg JiYgdmFsdWVfbGF6eSAoYXJyYXkpKQorKwkgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5IChzbGlj ZV90eXBlKTsKKysJZWxzZQorKwkgIHsKKysJICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAoc2xpY2Vf dHlwZSk7CisrCSAgICB2YWx1ZV9jb250ZW50c19jb3B5ICh2LAorKwkJCQkgdmFsdWVfZW1iZWRk ZWRfb2Zmc2V0ICh2KSwKKysJCQkJIGFycmF5LAorKwkJCQkgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0 IChhcnJheSkgKyBlbHRfb2ZmcywKKysJCQkJIGVsdF9zaXplICogbG9uZ2VzdF90b19pbnQgKGxl bmd0aCkpOworKwkgIH0KKysKKysgICAgICB9CisrICAgIC8qIFdpdGggYSBDQUxMX0NPVU5UIG9y IFNUUklERV9MRU5HVEggYXJlIGdyZWF0ZXIgdGhhbiAxIHdlIGFyZSB3b3JraW5nCisrICAgICAg IG9uIGEgcmFuZ2Ugb2YgcmFuZ2VzLiAgU28gd2UgY29weSB0aGUgcmVsZXZhbnQgZWxlbWVudHMg aW50byB0aGUKKysgICAgICAgbmV3IGFycmF5IHdlIHJldHVybi4gICovCisgICAgIGVsc2UKKyAg ICAgICB7CistCXNsaWNlID0gYWxsb2NhdGVfdmFsdWUgKHNsaWNlX3R5cGUpOworLQl2YWx1ZV9j b250ZW50c19jb3B5IChzbGljZSwgMCwgYXJyYXksIG9mZnNldCwKKy0JCQkgICAgIHR5cGVfbGVu Z3RoX3VuaXRzIChzbGljZV90eXBlKSk7CisrCWludCBqLCBvZmZzX3N0b3JlID0gZWx0X29mZnM7 CisrCUxPTkdFU1QgZHN0X29mZnNldCA9IDA7CisrCUxPTkdFU1Qgc3JjX3Jvd19sZW5ndGggPSBU WVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOworKworKwlpZiAoY2Fs bF9jb3VudCA9PSAxKQorKwkgIHsKKysJICAgIC8qIFdoZW4gQ0FMTF9DT1VOVCBpcyBlcXVhbCB0 byAxIHdlIGFyZSB3b3JraW5nIG9uIHRoZSBjdXJyZW50IHJhbmdlCisrCSAgICAgICBhbmQgdXNl IHRoZXNlIGVsZW1lbnRzIGRpcmVjdGx5LiAgKi8KKysJICAgIGVsZW1lbnRfdHlwZSA9IFRZUEVf VEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpOworKwkgIH0KKysJZWxzZQorKwkgIHsKKysJICAgIC8q IFdvcmtpbmcgb24gYW4gYXJyYXkgb2YgYXJyYXlzLCB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudHMg aXMgdGhlIHR5cGUKKysJICAgICAgIG9mIHRoZSBzdWJhcnJheXMnIHR5cGUuICAqLworKwkgICAg ZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlf dHlwZSkpOworKwkgIH0KKysKKysJc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxM LCBlbGVtZW50X3R5cGUsIHNsaWNlX3JhbmdlX3R5cGUpOworKworKwkgLyogSWYgd2UgaGF2ZSBh IG9uZSBkaW1lbnNpb25hbCBhcnJheSwgd2UgY29weSBpdHMgVFlQRV9DT0RFLiAgRm9yIGEKKysJ ICAgIG11bHRpIGRpbWVuc2lvbmFsIGFycmF5IHdlIGNvcHkgdGhlIGVtYmVkZGVkIHR5cGUncyBU WVBFX0NPREUuICAqLworKwlpZiAoY2FsbF9jb3VudCA9PSAxKQorKwkgIFRZUEVfQ09ERSAoc2xp Y2VfdHlwZSkgPSBUWVBFX0NPREUgKGFycmF5X3R5cGUpOworKwllbHNlCisrCSAgVFlQRV9DT0RF IChzbGljZV90eXBlKSA9IFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkp OworKworKwl2ID0gYWxsb2NhdGVfdmFsdWUgKHNsaWNlX3R5cGUpOworKworKwkvKiBJdGVyYXRl IHRocm91Z2ggdGhlIHJvd3Mgb2YgdGhlIG91dGVyIGFycmF5IGFuZCBzZXQgdGhlIG5ldyBvZmZz ZXQKKysJICAgZm9yIGVhY2ggcm93LiAgKi8KKysJZm9yIChpID0gMDsgaSA8IHJvd19jb3VudDsg aSsrKQorKwkgIHsKKysJICAgIGVsdF9vZmZzID0gb2Zmc19zdG9yZSArIGkgKiBzcmNfcm93X2xl bmd0aDsKKysKKysJICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgZWxlbWVudHMgaW4gZWFjaCBy b3cgdG8gY29weSBvbmx5IHRob3NlLiAgKi8KKysJICAgIGZvciAoaiA9IDE7IGogPD0gZWxlbV9j b3VudDsgaisrKQorKwkgICAgICB7CisrCQkvKiBGZXRjaGVzIHRoZSBjb250ZW50cyBvZiBBUlJB WSBhbmQgY29waWVzIHRoZW0gaW50byBWLiAgKi8KKysJCXZhbHVlX2NvbnRlbnRzX2NvcHkgKHYs IGRzdF9vZmZzZXQsIGFycmF5LCBlbHRfb2ZmcywgZWx0X3NpemUpOworKwkJZWx0X29mZnMgKz0g ZWx0X3NpemUgKiBzdHJpZGVfbGVuZ3RoOworKwkJZHN0X29mZnNldCArPSBlbHRfc2l6ZTsKKysJ ICAgICAgfQorKwkgIH0KKyAgICAgICB9CisgCistICAgIHNldF92YWx1ZV9jb21wb25lbnRfbG9j YXRpb24gKHNsaWNlLCBhcnJheSk7CistICAgIFZBTFVFX0ZSQU1FX0lEIChzbGljZSkgPSBWQUxV RV9GUkFNRV9JRCAoYXJyYXkpOworLSAgICBzZXRfdmFsdWVfb2Zmc2V0IChzbGljZSwgdmFsdWVf b2Zmc2V0IChhcnJheSkgKyBvZmZzZXQpOworKyAgICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0 aW9uICh2LCBhcnJheSk7CisrICAgIFZBTFVFX1JFR05VTSAodikgPSBWQUxVRV9SRUdOVU0gKGFy cmF5KTsKKysgICAgVkFMVUVfRlJBTUVfSUQgKHYpID0gVkFMVUVfRlJBTUVfSUQgKGFycmF5KTsK KysgICAgc2V0X3ZhbHVlX29mZnNldCAodiwgdmFsdWVfb2Zmc2V0IChhcnJheSkgKyBlbHRfb2Zm cyk7CisgICB9CisgCistICByZXR1cm4gc2xpY2U7CisrICByZXR1cm4gdjsKKyB9CisgCisgLyog Q3JlYXRlIGEgdmFsdWUgZm9yIGEgRk9SVFJBTiBjb21wbGV4IG51bWJlci4gIEN1cnJlbnRseSBt b3N0IG9mIHRoZQorZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5oIGIvZ2RiL3ZhbHVlLmgKK2luZGV4 IDBiNDE3YjQuLjljMzc3MTMgMTAwNjQ0CistLS0gYS9nZGIvdmFsdWUuaAorKysrIGIvZ2RiL3Zh bHVlLmgKK0BAIC0xMDU3LDYgKzEwNTcsOCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YXJ5aW5n X3RvX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKik7CisgCisgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFs dWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqLCBpbnQsIGludCk7CisgCisrZXh0ZXJuIHN0cnVjdCB2 YWx1ZSAqdmFsdWVfc2xpY2VfMSAoc3RydWN0IHZhbHVlICosIGludCwgaW50LCBpbnQsIGludCk7 CisrCisgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfbGl0ZXJhbF9jb21wbGV4IChzdHJ1Y3Qg dmFsdWUgKiwgc3RydWN0IHZhbHVlICosCisgCQkJCQkgICAgc3RydWN0IHR5cGUgKik7CisgCgpk aWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC1mb3J0cmFuLXZsYS1zdHJpbmdzLnBhdGNoIGIvZ2Ri LXZsYS1pbnRlbC1mb3J0cmFuLXZsYS1zdHJpbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjY2NTUzOTAKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVs LWZvcnRyYW4tdmxhLXN0cmluZ3MucGF0Y2gKQEAgLTAsMCArMSwxNDg4IEBACitnaXQgZGlmZiAt LXN0YXQgLXAgZ2RiL21hc3Rlci4uLmdkYi91c2Vycy9iaGVja2VsL2ZvcnRyYW4tdmxhLXN0cmlu Z3MKKzBhZDdkOGQxYTNhMzZjNmUwNGUzYjZkMzdkODgyNWYxOGQ1OTU3MjMKKworIGdkYi9ORVdT ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKKyBnZGIvYy12YWxwcmlu dC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArKysrKworIGdkYi9kd2FyZjJyZWFk LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTU4ICsrKysrKysrKysrKysrKysrKysrKysr KystLS0tLQorIGdkYi9mLXR5cGVwcmludC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkz ICsrKysrKysrKy0tLS0tLS0tLQorIGdkYi9nZGJ0eXBlcy5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDQ0ICsrKysrKysrLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1jeHguY2Mg ICAgICAgICAgIHwgICA5ICsrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5leHAgICAg ICAgICAgfCAgIDkgKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmV4cCAg ICB8IDE0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3BvaW50ZXJzLmY5MCAgICB8IDEwOSArKysrKysrKysrKysrKysrKysrKysKKyBnZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ByaW50X3R5cGUuZXhwICB8IDEwMCArKysrKysrKysrKysr KysrKysrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwICAgfCAgMTIg Ky0tCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5leHAgfCAxMDMgKysr KysrKysrKysrKysrKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3Mu ZjkwIHwgIDM5ICsrKysrKysrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5l eHAgICAgfCAgIDcgKy0KKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAg ICB8ICAxMiArKy0KKyBnZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAgICB8 ICAgNyArLQorIGdkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cCAgIHwgIDI3 ICsrLS0tCisgZ2RiL3R5cGVwcmludC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTkg KysrKworIGdkYi92YWxvcHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICsr LQorIGdkYi92YWxwcmludC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2IC0tCisg MjAgZmlsZXMgY2hhbmdlZCwgODI3IGluc2VydGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkKKwor SW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuMTEuOTAuMjAxNjA5MDcub3JpZy9nZGIvTkVXUwkyMDE2LTA5LTA3IDIxOjUyOjEwLjI3MzU2 MzA2MCArMDIwMAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi9ORVdTCTIwMTYtMDktMDcg MjE6NTM6MjIuNzA4MjEwNDE2ICswMjAwCitAQCAtMSw2ICsxLDggQEAKKyAJCVdoYXQgaGFzIGNo YW5nZWQgaW4gR0RCPworIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBieSByZWxlYXNlKQorIAor KyogRm9ydHJhbjogU3VwcG9ydCBwb2ludGVycyB0byBkeW5hbWljIHR5cGVzLgorKworICoqKiBD aGFuZ2VzIGluIEdEQiA3LjEyCisgCisgKiBHREIgYW5kIEdEQnNlcnZlciBub3cgYnVpbGQgd2l0 aCBhIEMrKyBjb21waWxlciBieSBkZWZhdWx0LgorSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3 L2dkYi9jLXZhbHByaW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xMS45MC4yMDE2MDkwNy5v cmlnL2dkYi9jLXZhbHByaW50LmMJMjAxNi0wOS0wNyAyMTo1MjoxMC4yNzI1NjMwNTEgKzAyMDAK KysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvYy12YWxwcmludC5jCTIwMTYtMDktMDcgMjE6 NTM6MjIuNzA4MjEwNDE2ICswMjAwCitAQCAtNjQ1LDYgKzY0NSwyOCBAQAorICAgICAgIGVsc2UK KyAJeworIAkgIC8qIG5vcm1hbCBjYXNlICovCisrCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX1BUUgorKwkgICAgICAmJiAxID09IGlzX2R5bmFtaWNfdHlwZSAodHlwZSkpCisr CSAgICB7CisrCSAgICAgIENPUkVfQUREUiBhZGRyOworKwkgICAgICBpZiAoTlVMTCAhPSBUWVBF X0RBVEFfTE9DQVRJT04gKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkKKysJCWFkZHIgPSB2YWx1 ZV9hZGRyZXNzICh2YWwpOworKwkgICAgICBlbHNlCisrCQlhZGRyID0gdmFsdWVfYXNfYWRkcmVz cyAodmFsKTsKKysKKysJICAgICAgLyogV2UgcmVzb2x2ZSB0aGUgdGFyZ2V0LXR5cGUgb25seSB3 aGVuIHRoZQorKwkgICAgICAgICBwb2ludGVyIGlzIGFzc29jaWF0ZWQuICAqLworKwkgICAgICBp ZiAoKGFkZHIgIT0gMCkKKysJCSAgJiYgKDAgPT0gdHlwZV9ub3RfYXNzb2NpYXRlZCAodHlwZSkp KQorKwkJICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSA9CisrCQkgICAgICByZXNvbHZlX2R5bmFt aWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCisrCQkJCQkgICAgTlVMTCwgYWRkcik7 CisrCSAgICB9CisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICAvKiBEbyBub3RoaW5nLiBSZWZl cmVuY2VzIGFyZSBhbHJlYWR5IHJlc29sdmVkIGZyb20gdGhlIGJlZ2lubmluZywKKysJICAgICAg ICAgb25seSBwb2ludGVycyBhcmUgcmVzb2x2ZWQgd2hlbiB3ZSBhY3R1YWwgbmVlZCB0aGUgdGFy Z2V0LiAgKi8KKysJICAgIH0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7Cisg CSAgdHlwZV9wcmludCAodmFsdWVfdHlwZSAodmFsKSwgIiIsIHN0cmVhbSwgLTEpOworIAkgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikgIik7CitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5 MDcvZ2RiL2R3YXJmMnJlYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjExLjkwLjIwMTYwOTA3 Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE2LTA5LTA3IDIxOjUyOjUzLjcwMDk1MTE3NSArMDIw MAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi9kd2FyZjJyZWFkLmMJMjAxNi0wOS0wNyAy MTo1NDowMi4xNDA1NjI4MjUgKzAyMDAKK0BAIC0xNzY0LDcgKzE3NjQsOCBAQAorIAorIHN0YXRp YyBpbnQgYXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIs CisgCQkJCSBzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCistCQkJ CSBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wKTsKKysJCQkJIHN0cnVjdCBkeW5hbWljX3Byb3Ag KnByb3AsIGNvbnN0IGdkYl9ieXRlICphZGRpdGlvbmFsX2RhdGEsCisrCQkJCSBpbnQgYWRkaXRp b25hbF9kYXRhX3NpemUpOworIAorIC8qIG1lbW9yeSBhbGxvY2F0aW9uIGludGVyZmFjZSAqLwor IAorQEAgLTExNDQ2LDcgKzExNDQ3LDcgQEAKKyAgICAgeworICAgICAgIG5ld29iai0+c3RhdGlj X2xpbmsKKyAJPSBYT0JORVcgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBkeW5h bWljX3Byb3ApOworLSAgICAgIGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCBu ZXdvYmotPnN0YXRpY19saW5rKTsKKysgICAgICBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwg ZGllLCBjdSwgbmV3b2JqLT5zdGF0aWNfbGluaywgTlVMTCwgMCk7CisgICAgIH0KKyAKKyAgIGN1 LT5saXN0X2luX3Njb3BlID0gJmxvY2FsX3N5bWJvbHM7CitAQCAtMTQ1MTIsMjkgKzE0NTEzLDk0 IEBACisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZp bGUpOworICAgc3RydWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNo YXJfdHlwZTsKKyAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CistICB1bnNpZ25lZCBpbnQgbGVu Z3RoOworKyAgdW5zaWduZWQgaW50IGxlbmd0aCA9IFVJTlRfTUFYOworIAorKyAgaW5kZXhfdHlw ZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OworKyAgcmFuZ2VfdHlwZSA9 IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwgaW5kZXhfdHlwZSwgMSwgbGVuZ3RoKTsK KysKKysgIC8qIElmIERXX0FUX3N0cmluZ19sZW5ndGggaXMgZGVmaW5lZCwgdGhlIGxlbmd0aCBp cyBzdG9yZWQgaW4gbWVtb3J5LiAgKi8KKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9zdHJpbmdfbGVuZ3RoLCBjdSk7CisgICBpZiAoYXR0cikKKyAgICAgeworLSAgICAgIGxlbmd0 aCA9IERXX1VOU05EIChhdHRyKTsKKysgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRy KSkKKysJeworKwkgIHN0cnVjdCBhdHRyaWJ1dGUgKmJ5dGVfc2l6ZSwgKmJpdF9zaXplOworKwkg IHN0cnVjdCBkeW5hbWljX3Byb3AgaGlnaDsKKysKKysJICBieXRlX3NpemUgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKKysJICBiaXRfc2l6ZSA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX2JpdF9zaXplLCBjdSk7CisrCisrCSAgLyogRFdfQVRfYnl0ZV9zaXplIHNo b3VsZCBuZXZlciBvY2N1ciBpbiBjb21iaW5hdGlvbiB3aXRoCisrCSAgICAgRFdfQVRfYml0X3Np emUuICAqLworKwkgIGlmIChieXRlX3NpemUgIT0gTlVMTCAmJiBiaXRfc2l6ZSAhPSBOVUxMKQor KwkgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKwkJICAgICAgIF8oIkRXX0FU X2J5dGVfc2l6ZSBBTkQgIgorKwkJCSAiRFdfQVRfYml0X3NpemUgZm91bmQgdG9nZXRoZXIgYXQg dGhlIHNhbWUgdGltZS4iKSk7CisrCisrCSAgLyogSWYgRFdfQVRfc3RyaW5nX2xlbmd0aCBBTkQg RFdfQVRfYnl0ZV9zaXplIGV4aXN0IHRvZ2V0aGVyLAorKwkgICAgIERXX0FUX2J5dGVfc2l6ZSBk ZXNjcmliZXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHNob3VsZCBiZSByZWFkCisrCSAgICAg ZnJvbSB0aGUgbGVuZ3RoIG1lbW9yeSBsb2NhdGlvbi4gICovCisrCSAgaWYgKGJ5dGVfc2l6ZSAh PSBOVUxMKQorKwkgICAgeworKwkgICAgICAvKiBCdWlsZCBuZXcgZHdhcmYyX2xvY2V4cHJfYmF0 b24gc3RydWN0dXJlIHdpdGggYWRkaXRpb25zIHRvIHRoZQorKwkJIGRhdGEgYXR0cmlidXRlLCB0 byByZWZsZWN0IERXQVJGIHNwZWNpYWxpdGllcyB0byBnZXQgYWRkcmVzcworKwkJIHNpemVzLiAg Ki8KKysJICAgICAgY29uc3QgZ2RiX2J5dGUgYXBwZW5kX29wc1tdID0KKysJCXsKKysJCS8qIERX X09QX2RlcmVmX3NpemU6IHNpemUgb2YgYW4gYWRkcmVzcyBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUK KysJCSAgIChieXRlcyksIHdoZXJlIHRoZSBzaXplIHdpbGwgYmUgc3BlY2lmaWVkIGJ5IHRoZSBu ZXh0CisrCQkgICBvcGVyYW5kLiAgKi8KKysJCURXX09QX2RlcmVmX3NpemUsCisrCQkvKiBPcGVy YW5kIGZvciBEV19PUF9kZXJlZl9zaXplLiAgKi8KKysJCURXX1VOU05EKGJ5dGVfc2l6ZSkgfTsK KysKKysJICAgICAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhp Z2gsIGFwcGVuZF9vcHMsCisrCQkJCQkgQVJSQVlfU0laRShhcHBlbmRfb3BzKSkpCisrCQljb21w bGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisrCQkJICAgXygiQ291bGQgbm90IHBhcnNlIERX X0FUX2J5dGVfc2l6ZSIpKTsKKysJICAgIH0KKysJICBlbHNlIGlmIChiaXRfc2l6ZSAhPSBOVUxM KQorKwkgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKwkJICAgICAgIF8oIkRX X0FUX3N0cmluZ19sZW5ndGggQU5EICIKKysJCQkgIkRXX0FUX2JpdF9zaXplIGZvdW5kIGJ1dCBu b3Qgc3VwcG9ydGVkIHlldC4iKSk7CisrCSAgLyogSWYgRFdfQVRfc3RyaW5nX2xlbmd0aCBXSVRI T1VUIERXX0FUX2J5dGVfc2l6ZSBleGlzdCwgdGhlIGRlZmF1bHQKKysJICAgICBpcyB0aGUgYWRk cmVzcyBzaXplIG9mIHRoZSB0YXJnZXQgbWFjaGluZS4gICovCisrCSAgZWxzZQorKwkgICAgewor KwkgICAgICBjb25zdCBnZGJfYnl0ZSBhcHBlbmRfb3BzW10gPQorKwkJeyBEV19PUF9kZXJlZiB9 OworKworKwkgICAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAm aGlnaCwgYXBwZW5kX29wcywKKysJCQkJCSBBUlJBWV9TSVpFKGFwcGVuZF9vcHMpKSkKKysJCWNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJCQkgICBfKCJDb3VsZCBub3QgcGFyc2Ug RFdfQVRfc3RyaW5nX2xlbmd0aCIpKTsKKysJICAgIH0KKysKKysJICBUWVBFX1JBTkdFX0RBVEEg KHJhbmdlX3R5cGUpLT5oaWdoID0gaGlnaDsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIFRZ UEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSBEV19VTlNORChhdHRyKTsKKysJICBUWVBFX0hJ R0hfQk9VTkRfS0lORCAocmFuZ2VfdHlwZSkgPSBQUk9QX0NPTlNUOworKwl9CisgICAgIH0KKyAg IGVsc2UKKyAgICAgeworLSAgICAgIC8qIENoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9zaXplIGF0 dHJpYnV0ZS4gICovCisrICAgICAgLyogQ2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0 cmlidXRlLCB3aGljaCByZXByZXNlbnRzIHRoZSBsZW5ndGgKKysJIGluIHRoaXMgY2FzZS4gICov CisgICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOwor ICAgICAgIGlmIChhdHRyKQorLSAgICAgICAgeworLSAgICAgICAgICBsZW5ndGggPSBEV19VTlNO RCAoYXR0cik7CistICAgICAgICB9CisrCXsKKysJICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5 cGUpID0gRFdfVU5TTkQoYXR0cik7CisrCSAgVFlQRV9ISUdIX0JPVU5EX0tJTkQgKHJhbmdlX3R5 cGUpID0gUFJPUF9DT05TVDsKKysJfQorICAgICAgIGVsc2UKKy0gICAgICAgIHsKKy0gICAgICAg ICAgbGVuZ3RoID0gMTsKKy0gICAgICAgIH0KKysJeworKwkgIFRZUEVfSElHSF9CT1VORCAocmFu Z2VfdHlwZSkgPSAxOworKwkgIFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5nZV90eXBlKSA9IFBS T1BfQ09OU1Q7CisrCX0KKyAgICAgfQorIAorLSAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAo b2JqZmlsZSktPmJ1aWx0aW5faW50OworLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9zdGF0aWNfcmFu Z2VfdHlwZSAoTlVMTCwgaW5kZXhfdHlwZSwgMSwgbGVuZ3RoKTsKKyAgIGNoYXJfdHlwZSA9IGxh bmd1YWdlX3N0cmluZ19jaGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKKyAg IHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7 CisgCitAQCAtMTQ4NjQsNyArMTQ5MzAsOCBAQAorIAorIHN0YXRpYyBpbnQKKyBhdHRyX3RvX2R5 bmFtaWNfcHJvcCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9pbmZv ICpkaWUsCistCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNfcHJv cCAqcHJvcCkKKysJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBzdHJ1Y3QgZHluYW1pY19w cm9wICpwcm9wLAorKwkJICAgICAgY29uc3QgZ2RiX2J5dGUgKmFkZGl0aW9uYWxfZGF0YSwgaW50 IGFkZGl0aW9uYWxfZGF0YV9zaXplKQorIHsKKyAgIHN0cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0 b24gKmJhdG9uOworICAgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2sgPSAmY3UtPm9iamZpbGUtPm9i amZpbGVfb2JzdGFjazsKK0BAIC0xNDg3NCwxNCArMTQ5NDEsMzMgQEAKKyAKKyAgIGlmIChhdHRy X2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorICAgICB7CistICAgICAgYmF0b24gPSBYT0JORVcgKG9i c3RhY2ssIHN0cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0b24pOworKyAgICAgIGJhdG9uID0gWE9C TkVXKG9ic3RhY2ssIHN0cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0b24pOworICAgICAgIGJhdG9u LT5yZWZlcmVuY2VkX3R5cGUgPSBOVUxMOworICAgICAgIGJhdG9uLT5sb2NleHByLnBlcl9jdSA9 IGN1LT5wZXJfY3U7CistICAgICAgYmF0b24tPmxvY2V4cHIuc2l6ZSA9IERXX0JMT0NLIChhdHRy KS0+c2l6ZTsKKy0gICAgICBiYXRvbi0+bG9jZXhwci5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5k YXRhOworKworKyAgICAgIGlmIChhZGRpdGlvbmFsX2RhdGEgIT0gTlVMTCAmJiBhZGRpdGlvbmFs X2RhdGFfc2l6ZSA+IDApCisrCXsKKysJICBnZGJfYnl0ZSAqZGF0YTsKKysKKysJICBkYXRhID0g KGdkYl9ieXRlICopIG9ic3RhY2tfYWxsb2MoCisrCSAgICAgICZjdS0+b2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLAorKwkgICAgICBEV19CTE9DSyAoYXR0ciktPnNpemUgKyBhZGRpdGlvbmFsX2Rh dGFfc2l6ZSk7CisrCSAgbWVtY3B5IChkYXRhLCBEV19CTE9DSyAoYXR0ciktPmRhdGEsIERXX0JM T0NLIChhdHRyKS0+c2l6ZSk7CisrCSAgbWVtY3B5IChkYXRhICsgRFdfQkxPQ0sgKGF0dHIpLT5z aXplLCBhZGRpdGlvbmFsX2RhdGEsCisrCQkgIGFkZGl0aW9uYWxfZGF0YV9zaXplKTsKKysKKysJ ICBiYXRvbi0+bG9jZXhwci5kYXRhID0gZGF0YTsKKysJICBiYXRvbi0+bG9jZXhwci5zaXplID0g RFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgYWRkaXRpb25hbF9kYXRhX3NpemU7CisrCX0KKysgICAg ICBlbHNlCisrCXsKKysJICBiYXRvbi0+bG9jZXhwci5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5k YXRhOworKwkgIGJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7Cisr CX0KKysKKyAgICAgICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247CisgICAgICAgcHJvcC0+a2lu ZCA9IFBST1BfTE9DRVhQUjsKKy0gICAgICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9 IE5VTEwpOworKyAgICAgIGdkYl9hc3NlcnQocHJvcC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKKyAg ICAgfQorICAgZWxzZSBpZiAoYXR0cl9mb3JtX2lzX3JlZiAoYXR0cikpCisgICAgIHsKK0BAIC0x NDkxNCw4ICsxNTAwMCwyOCBAQAorIAkJYmF0b24gPSBYT0JORVcgKG9ic3RhY2ssIHN0cnVjdCBk d2FyZjJfcHJvcGVydHlfYmF0b24pOworIAkJYmF0b24tPnJlZmVyZW5jZWRfdHlwZSA9IGRpZV90 eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOworIAkJYmF0b24tPmxvY2V4cHIucGVyX2N1ID0g Y3UtPnBlcl9jdTsKKy0JCWJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAodGFyZ2V0X2F0 dHIpLT5zaXplOworLQkJYmF0b24tPmxvY2V4cHIuZGF0YSA9IERXX0JMT0NLICh0YXJnZXRfYXR0 ciktPmRhdGE7CisrCisrCQlpZiAoYWRkaXRpb25hbF9kYXRhICE9IE5VTEwgJiYgYWRkaXRpb25h bF9kYXRhX3NpemUgPiAwKQorKwkJICB7CisrCQkgICAgZ2RiX2J5dGUgKmRhdGE7CisrCisrCQkg ICAgZGF0YSA9IChnZGJfYnl0ZSAqKSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZp bGVfb2JzdGFjaywKKysJCQkgICAgRFdfQkxPQ0sgKHRhcmdldF9hdHRyKS0+c2l6ZSArIGFkZGl0 aW9uYWxfZGF0YV9zaXplKTsKKysJCSAgICBtZW1jcHkgKGRhdGEsIERXX0JMT0NLICh0YXJnZXRf YXR0ciktPmRhdGEsCisrCQkJICAgIERXX0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemUpOworKwkJ ICAgIG1lbWNweSAoZGF0YSArIERXX0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemUsCisrCQkJICAg IGFkZGl0aW9uYWxfZGF0YSwgYWRkaXRpb25hbF9kYXRhX3NpemUpOworKworKwkJICAgIGJhdG9u LT5sb2NleHByLmRhdGEgPSBkYXRhOworKwkJICAgIGJhdG9uLT5sb2NleHByLnNpemUgPSAoRFdf QkxPQ0sgKHRhcmdldF9hdHRyKS0+c2l6ZQorKwkJCQkJICAgKyBhZGRpdGlvbmFsX2RhdGFfc2l6 ZSk7CisrCQkgIH0KKysJCWVsc2UKKysJCSAgeworKwkJICAgIGJhdG9uLT5sb2NleHByLmRhdGEg PSBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5kYXRhOworKwkJICAgIGJhdG9uLT5sb2NleHByLnNp emUgPSBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5zaXplOworKwkJICB9CisrCisgCQlwcm9wLT5k YXRhLmJhdG9uID0gYmF0b247CisgCQlwcm9wLT5raW5kID0gUFJPUF9MT0NFWFBSOworIAkJZ2Ri X2Fzc2VydCAocHJvcC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKK0BAIC0xNTAyNywyNCArMTUxMzMs MjQgQEAKKyAKKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwg Y3UpOworICAgaWYgKGF0dHIpCistICAgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIs IGRpZSwgY3UsICZzdHJpZGUpKQorKyAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRy LCBkaWUsIGN1LCAmc3RyaWRlLCBOVUxMLCAwKSkKKyAgICAgICAgIGNvbXBsYWludCAoJnN5bWZp bGVfY29tcGxhaW50cywgXygiTWlzc2luZyBEV19BVF9ieXRlX3N0cmlkZSAiCisgICAgICAgICAg ICAgICAgICAgIi0gRElFIGF0IDB4JXggW2luIG1vZHVsZSAlc10iKSwKKyAgICAgICAgICAgICAg ZGllLT5vZmZzZXQuc2VjdF9vZmYsIG9iamZpbGVfbmFtZSAoY3UtPm9iamZpbGUpKTsKKyAKKyAg IGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOworICAgaWYg KGF0dHIpCistICAgIGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmbG93KTsK KysgICAgYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3csIE5VTEwsIDAp OworICAgZWxzZSBpZiAoIWxvd19kZWZhdWx0X2lzX3ZhbGlkKQorICAgICBjb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsIF8oIk1pc3NpbmcgRFdfQVRfbG93ZXJfYm91bmQgIgorIAkJCQkg ICAgICAiLSBESUUgYXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAorIAkgICAgICAgZGllLT5vZmZz ZXQuc2VjdF9vZmYsIG9iamZpbGVfbmFtZSAoY3UtPm9iamZpbGUpKTsKKyAKKyAgIGF0dHIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOworLSAgaWYgKCFhdHRyX3Rv X2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gpKQorKyAgaWYgKCFhdHRyX3RvX2R5 bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gsIE5VTEwsIDApKQorICAgICB7CisgICAg ICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7CistICAgICAgaWYg KGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCkpCisrICAgICAgaWYg KGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwgTlVMTCwgMCkpCisg CXsKKyAJICAvKiBJZiBib3VuZHMgYXJlIGNvbnN0YW50IGRvIHRoZSBmaW5hbCBjYWxjdWxhdGlv biBoZXJlLiAgKi8KKyAJICBpZiAobG93LmtpbmQgPT0gUFJPUF9DT05TVCAmJiBoaWdoLmtpbmQg PT0gUFJPUF9DT05TVCkKK0BAIC0yMjQxNiw3ICsyMjUyMiw3IEBACisgICBhdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfYWxsb2NhdGVkLCBjdSk7CisgICBpZiAoYXR0cl9mb3JtX2lzX2Js b2NrIChhdHRyKSkKKyAgICAgeworLSAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0 ciwgZGllLCBjdSwgJnByb3ApKQorKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0 ciwgZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQorICAgICAgICAgYWRkX2R5bl9wcm9wIChEWU5f UFJPUF9BTExPQ0FURUQsIHByb3AsIHR5cGUsIG9iamZpbGUpOworICAgICB9CisgICBlbHNlIGlm IChhdHRyICE9IE5VTEwpCitAQCAtMjI0MzEsNyArMjI1MzcsNyBAQAorICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2Fzc29jaWF0ZWQsIGN1KTsKKyAgIGlmIChhdHRyX2Zvcm1faXNf YmxvY2sgKGF0dHIpKQorICAgICB7CistICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChh dHRyLCBkaWUsIGN1LCAmcHJvcCkpCisrICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChh dHRyLCBkaWUsIGN1LCAmcHJvcCwgTlVMTCwgMCkpCisgICAgICAgICBhZGRfZHluX3Byb3AgKERZ Tl9QUk9QX0FTU09DSUFURUQsIHByb3AsIHR5cGUsIG9iamZpbGUpOworICAgICB9CisgICBlbHNl IGlmIChhdHRyICE9IE5VTEwpCitAQCAtMjI0NDQsNyArMjI1NTAsNyBAQAorIAorICAgLyogUmVh ZCBEV19BVF9kYXRhX2xvY2F0aW9uIGFuZCBzZXQgaW4gdHlwZS4gICovCisgICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfZGF0YV9sb2NhdGlvbiwgY3UpOworLSAgaWYgKGF0dHJfdG9f ZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmcHJvcCkpCisrICBpZiAoYXR0cl90b19keW5h bWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZwcm9wLCBOVUxMLCAwKSkKKyAgICAgYWRkX2R5bl9w cm9wIChEWU5fUFJPUF9EQVRBX0xPQ0FUSU9OLCBwcm9wLCB0eXBlLCBvYmpmaWxlKTsKKyAKKyAg IGlmIChkd2FyZjJfcGVyX29iamZpbGUtPmRpZV90eXBlX2hhc2ggPT0gTlVMTCkKK0luZGV4OiBn ZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvZi10eXBlcHJpbnQuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjExLjkwLjIwMTYwOTA3Lm9yaWcvZ2RiL2YtdHlwZXByaW50LmMJMjAxNi0wOS0wNyAyMTo1 MjoxMC4yNzI1NjMwNTEgKzAyMDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvZi10eXBl cHJpbnQuYwkyMDE2LTA5LTA3IDIxOjUzOjIyLjcxMzIxMDQ2MSArMDIwMAorQEAgLTM3LDcgKzM3 LDcgQEAKKyAjZW5kaWYKKyAKKyBzdGF0aWMgdm9pZCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZm aXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwKKy0JCQkJCSBpbnQsIGlu dCwgaW50KTsKKysJCQkJCSBpbnQsIGludCwgaW50LCBpbnQpOworIAorIHZvaWQgZl90eXBlX3By aW50X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAorIAkJ CQkgIGludCwgaW50KTsKK0BAIC01NCwxOCArNTQsNiBAQAorICAgZW51bSB0eXBlX2NvZGUgY29k ZTsKKyAgIGludCBkZW1hbmdsZWRfYXJnczsKKyAKKy0gIGlmICh0eXBlX25vdF9hc3NvY2lhdGVk ICh0eXBlKSkKKy0gICAgeworLSAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFt KTsKKy0gICAgICByZXR1cm47CistICAgIH0KKy0KKy0gIGlmICh0eXBlX25vdF9hbGxvY2F0ZWQg KHR5cGUpKQorLSAgICB7CistICAgICAgdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cmVhbSk7 CistICAgICAgcmV0dXJuOworLSAgICB9CistCisgICBmX3R5cGVfcHJpbnRfYmFzZSAodHlwZSwg c3RyZWFtLCBzaG93LCBsZXZlbCk7CisgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKKyAgIGlm ICgodmFyc3RyaW5nICE9IE5VTEwgJiYgKnZhcnN0cmluZyAhPSAnXDAnKQorQEAgLTg3LDcgKzc1 LDcgQEAKKyAgICAgICAgICBzbyBkb24ndCBwcmludCBhbiBhZGRpdGlvbmFsIHBhaXIgb2YgKCkn cy4gICovCisgCisgICAgICAgZGVtYW5nbGVkX2FyZ3MgPSB2YXJzdHJpbmdbc3RybGVuICh2YXJz dHJpbmcpIC0gMV0gPT0gJyknOyAKKy0gICAgICBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXgg KHR5cGUsIHN0cmVhbSwgc2hvdywgMCwgZGVtYW5nbGVkX2FyZ3MsIDApOworKyAgICAgIGZfdHlw ZV9wcmludF92YXJzcGVjX3N1ZmZpeCAodHlwZSwgc3RyZWFtLCBzaG93LCAwLCBkZW1hbmdsZWRf YXJncywgMCwgMCk7CisgICAgfQorIH0KKyAKK0BAIC0xNTcsNyArMTQ1LDcgQEAKKyBzdGF0aWMg dm9pZAorIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sCisgCQkJICAgICBpbnQgc2hvdywgaW50IHBhc3NlZF9hX3B0 ciwgaW50IGRlbWFuZ2xlZF9hcmdzLAorLQkJCSAgICAgaW50IGFycmF5cHJpbnRfcmVjdXJzZV9s ZXZlbCkKKysJCQkgICAgIGludCBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwsIGludCBwcmludF9y YW5rX29ubHkpCisgeworICAgaW50IHVwcGVyX2JvdW5kLCBsb3dlcl9ib3VuZDsKKyAKK0BAIC0x ODEsMzQgKzE2OSw1MCBAQAorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7CisgCisg ICAgICAgaWYgKHR5cGVfbm90X2Fzc29jaWF0ZWQgKHR5cGUpKQorLSAgICAgICAgdmFsX3ByaW50 X25vdF9hc3NvY2lhdGVkIChzdHJlYW0pOworKwlwcmludF9yYW5rX29ubHkgPSAxOworICAgICAg IGVsc2UgaWYgKHR5cGVfbm90X2FsbG9jYXRlZCAodHlwZSkpCistICAgICAgICB2YWxfcHJpbnRf bm90X2FsbG9jYXRlZCAoc3RyZWFtKTsKKysJcHJpbnRfcmFua19vbmx5ID0gMTsKKysgICAgICBl bHNlIGlmICgoVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpCisrCQkmJiBQUk9QX0NPTlNUICE9 IFRZUEVfRFlOX1BST1BfS0lORCAoVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpKSkKKysJICAg ICAgfHwgKFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5cGUpCisrCQkmJiBQUk9QX0NPTlNUICE9IFRZ UEVfRFlOX1BST1BfS0lORCAoVFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSkpKQorKwkgICAgICB8 fCAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKQorKwkJICAmJiBQUk9QX0NPTlNUICE9IFRZUEVf RFlOX1BST1BfS0lORCAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSkpKQorKwkvKiBUaGlzIGNh c2UgZXhpc3Qgd2hlbiB3ZSBwdHlwZSBhIHR5cGVuYW1lIHdoaWNoIGhhcyB0aGUKKysJICAgZHlu YW1pYyBwcm9wZXJ0aWVzIGJ1dCBjYW5ub3QgYmUgcmVzb2x2ZWQgYXMgdGhlcmUgaXMKKysJICAg bm8gb2JqZWN0LiAgKi8KKysJcHJpbnRfcmFua19vbmx5ID0gMTsKKysKKysgICAgICBpZiAoVFlQ RV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPT0gVFlQRV9DT0RFX0FSUkFZKQorKwlm X3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJl YW0sIDAsCisrCQkJCSAgICAgMCwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsLAorKwkJCQkg ICAgIHByaW50X3Jhbmtfb25seSk7CisrCisrICAgICAgaWYgKHByaW50X3Jhbmtfb25seSA9PSAx KQorKwlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI6Iik7CisgICAgICAgZWxzZQorLSAgICAg ICAgeworLSAgICAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkg PT0gVFlQRV9DT0RFX0FSUkFZKQorLSAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1 ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVs KTsKKy0KKy0gICAgICAgICAgbG93ZXJfYm91bmQgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUp OworLSAgICAgICAgICBpZiAobG93ZXJfYm91bmQgIT0gMSkJLyogTm90IHRoZSBkZWZhdWx0LiAg Ki8KKy0gICAgICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZDoiLCBsb3dlcl9i b3VuZCk7CistCistICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0LCBpZiB3ZSBoYXZlIGFuIGFz c3VtZWQgc2l6ZSBhcnJheSwgd2UKKy0gICAgICAgICAgICAgcHJpbnQgb3V0IGEgd2FybmluZyBh bmQgcHJpbnQgdGhlIHVwcGVyYm91bmQgYXMgJyonLiAgKi8KKy0KKy0gICAgICAgICAgaWYgKFRZ UEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKKy0gICAgICAgICAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIqIik7CistICAgICAgICAgIGVsc2UKKy0gICAgICAg ICAgICB7CistICAgICAgICAgICAgICB1cHBlcl9ib3VuZCA9IGY3N19nZXRfdXBwZXJib3VuZCAo dHlwZSk7CistICAgICAgICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIHVw cGVyX2JvdW5kKTsKKy0gICAgICAgICAgICB9CistCistICAgICAgICAgIGlmIChUWVBFX0NPREUg KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCistICAgICAgICAg ICAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwg c3RyZWFtLCAwLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw LCBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpOworLSAgICAgICAgfQorKwl7CisrCSAgbG93ZXJf Ym91bmQgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOworKwkgIGlmIChsb3dlcl9ib3VuZCAh PSAxKQkvKiBOb3QgdGhlIGRlZmF1bHQuICAqLworKwkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiJWQ6IiwgbG93ZXJfYm91bmQpOworKworKwkgIC8qIE1ha2Ugc3VyZSB0aGF0LCBpZiB3 ZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSwgd2UKKysJICAgICAgIHByaW50IG91dCBhIHdh cm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4gICovCisrCisrCSAgaWYgKFRZ UEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKKysJICAgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIioiKTsKKysJICBlbHNlCisrCSAgICB7CisrCSAgICAgIHVwcGVy X2JvdW5kID0gZjc3X2dldF91cHBlcmJvdW5kICh0eXBlKTsKKysJICAgICAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiJWQiLCB1cHBlcl9ib3VuZCk7CisrCSAgICB9CisrCX0KKysKKysgICAg ICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX0FS UkFZKQorKwlmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpLCBzdHJlYW0sIDAsCisrCQkJCSAgICAgMCwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVs LAorKwkJCQkgICAgIHByaW50X3Jhbmtfb25seSk7CisrCisgICAgICAgaWYgKGFycmF5cHJpbnRf cmVjdXJzZV9sZXZlbCA9PSAxKQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7Cisg ICAgICAgZWxzZQorQEAgLTIxOSwxMyArMjIzLDE0IEBACisgICAgIGNhc2UgVFlQRV9DT0RFX1BU UjoKKyAgICAgY2FzZSBUWVBFX0NPREVfUkVGOgorICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVj X3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMSwgMCwKKy0JCQkJ ICAgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsKTsKKysJCQkJICAgYXJyYXlwcmludF9yZWN1cnNl X2xldmVsLCAwKTsKKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7CisgICAg ICAgYnJlYWs7CisgCisgICAgIGNhc2UgVFlQRV9DT0RFX0ZVTkM6CisgICAgICAgZl90eXBlX3By aW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLAor LQkJCQkgICBwYXNzZWRfYV9wdHIsIDAsIGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7CisrCQkJ CSAgIHBhc3NlZF9hX3B0ciwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsLAorKwkJCQkgICAw KTsKKyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICIpIik7CisgCitAQCAtMzc2LDcgKzM4MSw3IEBACisgCSAgICAgIGZwdXRzX2ZpbHRlcmVkICgi IDo6ICIsIHN0cmVhbSk7CisgCSAgICAgIGZwdXRzX2ZpbHRlcmVkIChUWVBFX0ZJRUxEX05BTUUg KHR5cGUsIGluZGV4KSwgc3RyZWFtKTsKKyAJICAgICAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3Vm Zml4IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGluZGV4KSwKKy0JCQkJCSAgIHN0cmVhbSwgc2hv dyAtIDEsIDAsIDAsIDApOworKwkJCQkJICAgc3RyZWFtLCBzaG93IC0gMSwgMCwgMCwgMCwgMCk7 CisgCSAgICAgIGZwdXRzX2ZpbHRlcmVkICgiXG4iLCBzdHJlYW0pOworIAkgICAgfQorIAkgIGZw cmludGZpX2ZpbHRlcmVkIChsZXZlbCwgc3RyZWFtLCAiRW5kIFR5cGUgIik7CitJbmRleDogZ2Ri LTcuMTEuOTAuMjAxNjA5MDcvZ2RiL2dkYnR5cGVzLmMKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4x MS45MC4yMDE2MDkwNy5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTYtMDktMDcgMjE6NTI6NTMuNzAz OTUxMjAyICswMjAwCisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL2dkYnR5cGVzLmMJMjAx Ni0wOS0wNyAyMTo1MzoyMi43MTQyMTA0NzAgKzAyMDAKK0BAIC0xODE2LDcgKzE4MTYsOCBAQAor ICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOworIAorICAgLyogV2Ugb25seSB3YW50IHRv IHJlY29nbml6ZSByZWZlcmVuY2VzIGF0IHRoZSBvdXRlcm1vc3QgbGV2ZWwuICAqLworLSAgaWYg KHRvcF9sZXZlbCAmJiBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCisrICBpZiAo dG9wX2xldmVsICYmCisrICAgICAgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRiB8 fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIpKQorICAgICB0eXBlID0gY2hlY2tf dHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworIAorICAgLyogVHlwZXMgdGhhdCBo YXZlIGEgZHluYW1pYyBUWVBFX0RBVEFfTE9DQVRJT04gYXJlIGNvbnNpZGVyZWQKK0BAIC0xODUw LDYgKzE4NTEsNyBAQAorICAgICAgIH0KKyAKKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6Cisr ICAgIGNhc2UgVFlQRV9DT0RFX1NUUklORzoKKyAgICAgICB7CisgCWdkYl9hc3NlcnQgKFRZUEVf TkZJRUxEUyAodHlwZSkgPT0gMSk7CisgCitAQCAtMTk2Miw3ICsxOTY0LDggQEAKKyAgIHN0cnVj dCB0eXBlICphcnlfZGltOworICAgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKKyAKKy0gIGdk Yl9hc3NlcnQgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZKTsKKysgIGdkYl9h c3NlcnQgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisrCSAgICAgIHx8IFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUklORyk7CisgCisgICB0eXBlID0gY29weV90 eXBlICh0eXBlKTsKKyAKK0BAIC0xOTg3LDEzICsxOTkwLDE3IEBACisgCisgICBhcnlfZGltID0g Y2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoZWx0X3R5cGUpKTsKKyAKKy0gIGlmIChh cnlfZGltICE9IE5VTEwgJiYgVFlQRV9DT0RFIChhcnlfZGltKSA9PSBUWVBFX0NPREVfQVJSQVkp CisrICBpZiAoYXJ5X2RpbSAhPSBOVUxMICYmIChUWVBFX0NPREUgKGFyeV9kaW0pID09IFRZUEVf Q09ERV9BUlJBWQorKyAgICAgIHx8IFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX1NU UklORykpCisgICAgIGVsdF90eXBlID0gcmVzb2x2ZV9keW5hbWljX2FycmF5IChhcnlfZGltLCBh ZGRyX3N0YWNrKTsKKyAgIGVsc2UKKyAgICAgZWx0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKTsKKyAKKy0gIHJldHVybiBjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZSAodHlwZSwg ZWx0X3R5cGUsIHJhbmdlX3R5cGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgMCkpOworKyAgaWYgKFRZUEVfQ09ERSAo dHlwZSkgPT0gVFlQRV9DT0RFX1NUUklORykKKysgICAgcmV0dXJuIGNyZWF0ZV9zdHJpbmdfdHlw ZSAodHlwZSwgZWx0X3R5cGUsIHJhbmdlX3R5cGUpOworKyAgZWxzZQorKyAgICByZXR1cm4gY3Jl YXRlX2FycmF5X3R5cGVfd2l0aF9zdHJpZGUgKHR5cGUsIGVsdF90eXBlLCByYW5nZV90eXBlLAor KwkJCQkJICBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIDApKTsKKyB9CisgCisgLyogUmVzb2x2 ZSBkeW5hbWljIGJvdW5kcyBvZiBtZW1iZXJzIG9mIHRoZSB1bmlvbiBUWVBFIHRvIHN0YXRpYwor QEAgLTIxMjMsNiArMjEzMCwyOCBAQAorICAgcmV0dXJuIHJlc29sdmVkX3R5cGU7CisgfQorIAor Ky8qIFdvcmtlciBmb3IgcG9pbnRlciB0eXBlcy4gICovCisrCisrc3RhdGljIHN0cnVjdCB0eXBl ICoKKytyZXNvbHZlX2R5bmFtaWNfcG9pbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsCisrCQkJIHN0 cnVjdCBwcm9wZXJ0eV9hZGRyX2luZm8gKmFkZHJfc3RhY2spCisreworKyAgc3RydWN0IGR5bmFt aWNfcHJvcCAqcHJvcDsKKysgIENPUkVfQUREUiB2YWx1ZTsKKysKKysgIHR5cGUgPSBjb3B5X3R5 cGUgKHR5cGUpOworKworKyAgLyogUmVzb2x2ZSBhc3NvY2lhdGVkIHByb3BlcnR5LiAgKi8KKysg IHByb3AgPSBUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSk7CisrICBpZiAocHJvcCAhPSBOVUxM ICYmIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgTlVMTCwgYWRkcl9zdGFjaywgJnZh bHVlKSkKKysgICAgeworKyAgICAgIFRZUEVfRFlOX1BST1BfQUREUiAocHJvcCkgPSB2YWx1ZTsK KysgICAgICBUWVBFX0RZTl9QUk9QX0tJTkQgKHByb3ApID0gUFJPUF9DT05TVDsKKysgICAgfQor KworKyAgcmV0dXJuIHR5cGU7CisrfQorKworIC8qIFdvcmtlciBmb3IgcmVzb2x2ZWRfZHluYW1p Y190eXBlLiAgKi8KKyAKKyBzdGF0aWMgc3RydWN0IHR5cGUgKgorQEAgLTIxNzEsNyArMjIwMCwx MiBAQAorIAkgICAgYnJlYWs7CisgCSAgfQorIAorKyAgICAgICAgY2FzZSBUWVBFX0NPREVfUFRS OgorKyAJICByZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX3BvaW50ZXIgKHR5cGUsIGFk ZHJfc3RhY2spOworKyAJICBicmVhazsKKysKKyAJY2FzZSBUWVBFX0NPREVfQVJSQVk6CisrCWNh c2UgVFlQRV9DT0RFX1NUUklORzoKKyAJICByZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWlj X2FycmF5ICh0eXBlLCBhZGRyX3N0YWNrKTsKKyAJICBicmVhazsKKyAKK0luZGV4OiBnZGItNy4x MS45MC4yMDE2MDkwNy9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmNjCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuMTEuOTAuMjAxNjA5MDcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEt Y3h4LmNjCTIwMTYtMDktMDcgMjE6NTI6MTAuMjcyNTYzMDUxICswMjAwCisrKysgZ2RiLTcuMTEu OTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5jYwkyMDE2LTA5LTA3IDIx OjUzOjIyLjcxNDIxMDQ3MCArMDIwMAorQEAgLTE1LDYgKzE1LDEwIEBACisgICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisgCisrZXh0ZXJuICJDIiB7CisrI2luY2x1ZGUgPHN0ZGRl Zi5oPgorK30KKysKKyBzdHJ1Y3QgY29udGFpbmVyOworIAorIHN0cnVjdCBlbGVtZW50CitAQCAt NDAsMTEgKzQ0LDE2IEBACisgICB0eXBlZGVmIHR5cGVvZiAodmxhKSAmdmxhcmVmdHlwZWRlZjsK KyAgIHZsYXJlZnR5cGVkZWYgdmxhcmVmMiAodmxhKTsKKyAgIGNvbnRhaW5lciBjOworKyAgdHlw ZW9mICh2bGEpICpwdHIgPSBOVUxMOworKworKyAgLy8gQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVu dAorKyAgcHRyID0gJnZsYTsKKyAKKyAgIGZvciAoaW50IGkgPSAwOyBpIDwgejsgKytpKQorICAg ICB2bGFbaV0gPSA1ICsgMiAqIGk7CisgCisgICAvLyB2bGFzX2ZpbGxlZAorICAgdmxhWzBdID0g MiAqIHZsYVswXTsKKysKKyAgIHJldHVybiB2bGFbMl07CisgfQorSW5kZXg6IGdkYi03LjExLjkw LjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1jeHguZXhwCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuMTEuOTAuMjAxNjA5MDcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4 LmV4cAkyMDE2LTA5LTA3IDIxOjUyOjEwLjI3MjU2MzA1MSArMDIwMAorKysrIGdkYi03LjExLjkw LjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1jeHguZXhwCTIwMTYtMDktMDcgMjE6 NTM6MjIuNzE1MjEwNDc5ICswMjAwCitAQCAtMjMsNiArMjMsMTIgQEAKKyAgICAgcmV0dXJuIC0x CisgfQorIAorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCZWZvcmUgcG9p bnRlciBhc3NpZ25tZW50Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQmVmb3JlIHBv aW50ZXIgYXNzaWdubWVudCIKKytnZGJfdGVzdCAicHR5cGUgcHRyIiAiaW50IFxcKFxcKlxcKVxc XFt2YXJpYWJsZSBsZW5ndGhcXFxdIiAicHR5cGUgcHRyLCBCZWZvcmUgcG9pbnRlciBhc3NpZ25t ZW50IgorK2dkYl90ZXN0ICJwcmludCBwdHIiICJcXChpbnQgXFwoXFwqXFwpXFxcW3ZhcmlhYmxl IGxlbmd0aFxcXF1cXCkgMHgwIiAicHJpbnQgcHRyLCBCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50 IgorK2dkYl90ZXN0ICJwcmludCAqcHRyIiAiQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVz cyAweDAiICJwcmludCAqcHRyLCBCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50IgorKworIGdkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGFzX2ZpbGxlZCJdCisgZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZsYXNfZmlsbGVkIgorIAorQEAgLTMzLDMgKzM5LDYgQEAKKyAj IGJ1ZyBiZWluZyB0ZXN0ZWQsIGl0J3MgYmV0dGVyIG5vdCB0byBkZXBlbmQgb24gdGhlIGV4YWN0 IHNwZWxsaW5nLgorIGdkYl90ZXN0ICJwcmludCB2bGFyZWYyIiAiID0gXFwoLipcXCkgQCRoZXg6 IFxcezUsIDcsIDlcXH0iCisgZ2RiX3Rlc3QgInByaW50IGMiICIgPSBcXHtlID0gXFx7YyA9IEAk aGV4XFx9XFx9IgorK2dkYl90ZXN0ICJwdHlwZSBwdHIiICJpbnQgXFwoXFwqXFwpXFxcWzNcXFxd IgorK2dkYl90ZXN0ICJwcmludCBwdHIiICJcXChpbnQgXFwoXFwqXFwpXFxcWzNcXFxdXFwpICRo ZXgiCisrZ2RiX3Rlc3QgInByaW50ICpwdHIiICIgPSBcXHs1LCA3LCA5XFx9IgorSW5kZXg6IGdk Yi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZXhw Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9wb2ludGVycy5leHAJMjAxNi0wOS0wNyAyMTo1MzoyMi43MTUyMTA0NzkgKzAyMDAKK0BAIC0w LDAgKzEsMTQzIEBACisrIyBDb3B5cmlnaHQgMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVz dGZpbGUgInBvaW50ZXJzLmY5MCIKKytsb2FkX2xpYiBmb3J0cmFuLmV4cAorKworK2lmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0g XAorKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytp ZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIK KysgICAgcmV0dXJuIC0xCisrfQorKworKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBiZWlu ZyB1c2VkLCB0aGUgdHlwZSBuYW1lcyBjYW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4KKytzZXQg bG9naWNhbCBbZm9ydHJhbl9sb2dpY2FsNF0KKytzZXQgcmVhbCBbZm9ydHJhbl9yZWFsNF0KKytz ZXQgaW50IFtmb3J0cmFuX2ludDRdCisrc2V0IGNvbXBsZXggW2ZvcnRyYW5fY29tcGxleDRdCisr CisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkJlZm9yZSBwb2ludGVy IGFzc2lnbm1lbnQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCZWZvcmUgcG9pbnRl ciBhc3NpZ25tZW50IgorK2dkYl90ZXN0ICJwcmludCBsb2dwIiAiPSBcXChQVFIgVE8gLT4gXFwo ICRsb2dpY2FsIFxcKVxcKSAweDAiICJwcmludCBsb2dwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJf dGVzdCAicHJpbnQgKmxvZ3AiICJDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MCIg InByaW50ICpsb2dwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgY29tcCIgIj0g XFwoUFRSIFRPIC0+IFxcKCAkY29tcGxleCBcXClcXCkgMHgwIiAicHJpbnQgY29tcCwgbm90IGFz c29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50ICpjb21wIiAiQ2Fubm90IGFjY2VzcyBtZW1vcnkg YXQgYWRkcmVzcyAweDAiICJwcmludCAqY29tcCwgbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3Qg InByaW50IGNoYXJwIiAiPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEgXFwpXFwpIDB4 MCIgInByaW50IGNoYXJwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgKmNoYXJw IiAiQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweDAiICJwcmludCAqY2hhcnAsIG5v dCBhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCBjaGFyYXAiICI9IFxcKFBUUiBUTyAtPiBc XCggY2hhcmFjdGVyXFwqMyBcXClcXCkgMHgwIiAicHJpbnQgY2hhcmFwLCBub3QgYXNzb2NpYXRl ZCIKKytnZGJfdGVzdCAicHJpbnQgKmNoYXJhcCIgIkNhbm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFk ZHJlc3MgMHgwIiAicHJpbnQgKmNoYXJhcCwgbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInBy aW50IGludHAiICI9IFxcKFBUUiBUTyAtPiBcXCggJGludCBcXClcXCkgMHgwIiAicHJpbnQgaW50 cCwgbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50ICppbnRwIiAiQ2Fubm90IGFjY2Vz cyBtZW1vcnkgYXQgYWRkcmVzcyAweDAiICJwcmludCAqaW50cCwgbm90IGFzc29jaWF0ZWQiCisr c2V0IHRlc3QgInByaW50IGludGFwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdF9tdWx0aXBs ZSAicHJpbnQgaW50YXAiICR0ZXN0IHsKKysgIC1yZSAiID0gXFwoUFRSIFRPIC0+IFxcKCAkaW50 IFxcKDosOlxcKVxcKVxcKSA8bm90IGFzc29jaWF0ZWQ+XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysg ICAgcGFzcyAkdGVzdAorKyAgfQorKyAgLXJlICIgPSA8bm90IGFzc29jaWF0ZWQ+XHJcbiRnZGJf cHJvbXB0ICQiIHsKKysgICAgcGFzcyAkdGVzdAorKyAgfQorK30KKytnZGJfdGVzdCAicHJpbnQg cmVhbHAiICI9IFxcKFBUUiBUTyAtPiBcXCggJHJlYWwgXFwpXFwpIDB4MCIgInByaW50IHJlYWxw LCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgKnJlYWxwIiAiQ2Fubm90IGFjY2Vz cyBtZW1vcnkgYXQgYWRkcmVzcyAweDAiICJwcmludCAqcmVhbHAsIG5vdCBhc3NvY2lhdGVkIgor K2dkYl90ZXN0ICJwcmludCBcJG15X3ZhciA9IGludHAiICI9IFxcKFBUUiBUTyAtPiBcXCggJGlu dCBcXClcXCkgMHgwIgorK3NldCB0ZXN0ICJwcmludCBjeWNsaWNwMSwgbm90IGFzc29jaWF0ZWQi CisrZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IGN5Y2xpY3AxIiAkdGVzdCB7CisrICAtcmUgIj0g XFwoIGkgPSAtP1xcZCssIHAgPSAweDAgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgcGFz cyAkdGVzdAorKyAgfQorKyAgLXJlICI9IFxcKCBpID0gLT9cXGQrLCBwID0gPG5vdCBhc3NvY2lh dGVkPiBcXClcclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICBwYXNzICR0ZXN0CisrICB9CisrfQor K3NldCB0ZXN0ICJwcmludCBjeWNsaWNwMSVwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdF9t dWx0aXBsZSAicHJpbnQgY3ljbGljcDElcCIgJHRlc3QgeworKyAgLXJlICI9IFxcKFBUUiBUTyAt PiBcXCggVHlwZSB0eXBld2l0aHBvaW50ZXIgXFwpXFwpIDB4MFxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrICAgIHBhc3MgJHRlc3QKKysgIH0KKysgIC1yZSAiPSBcXChQVFIgVE8gLT4gXFwoIFR5cGUg dHlwZXdpdGhwb2ludGVyIFxcKVxcKSA8bm90IGFzc29jaWF0ZWQ+XHJcbiRnZGJfcHJvbXB0ICQi IHsKKysgICAgcGFzcyAkdGVzdAorKyAgfQorK30KKysKKysKKytnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAiQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJCZWZvcmUgdmFsdWUgYXNzaWdubWVudCIKKytnZGJfdGVzdCAicHJp bnQgKih0d29wKSVpdmxhMiIgIj0gPG5vdCBhbGxvY2F0ZWQ+IgorKworKworK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJBZnRlciB2YWx1ZSBhc3NpZ25tZW50Il0KKytnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiQWZ0ZXIgdmFsdWUgYXNzaWdubWVudCIKKytnZGJfdGVz dCAicHJpbnQgbG9ncCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkbG9naWNhbCBcXClcXCkgJGhleFwo IDwuKj5cKT8iCisrZ2RiX3Rlc3QgInByaW50ICpsb2dwIiAiPSBcXC5UUlVFXFwuIgorK2dkYl90 ZXN0ICJwcmludCBjb21wIiAiPSBcXChQVFIgVE8gLT4gXFwoICRjb21wbGV4IFxcKVxcKSAkaGV4 XCggPC4qPlwpPyIKKytnZGJfdGVzdCAicHJpbnQgKmNvbXAiICI9IFxcKDEsMlxcKSIKKytnZGJf dGVzdCAicHJpbnQgY2hhcnAiICI9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMSBcXClc XCkgJGhleFwoIDwuKj5cKT8iCisrZ2RiX3Rlc3QgInByaW50ICpjaGFycCIgIj0gJ2EnIgorK2dk Yl90ZXN0ICJwcmludCBjaGFyYXAiICI9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMyBc XClcXCkgJGhleFwoIDwuKj5cKT8iCisrZ2RiX3Rlc3QgInByaW50ICpjaGFyYXAiICI9ICdhYmMn IgorK2dkYl90ZXN0ICJwcmludCBpbnRwIiAiPSBcXChQVFIgVE8gLT4gXFwoICRpbnQgXFwpXFwp ICRoZXhcKCA8Lio+XCk/IgorK2dkYl90ZXN0ICJwcmludCAqaW50cCIgIj0gMTAiCisrc2V0IHRl c3RfbmFtZSAicHJpbnQgaW50YXAsIGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInBy aW50IGludGFwIiAkdGVzdF9uYW1lIHsKKysgIC1yZSAiPSBcXChcXCggMSwgMSwgMygsIDEpezd9 XFwpIFxcKCAxKCwgMSl7OX1cXCkgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgcGFzcyAk dGVzdF9uYW1lCisrICB9CisrICAtcmUgIj0gXFwoUFRSIFRPIC0+IFxcKCAkaW50IFxcKDEwLDJc XClcXClcXCkgJGhleFwoIDwuKj5cKT9cclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICBnZGJfdGVz dCAicHJpbnQgKmludGFwIiAiPSBcXChcXCggMSwgMSwgMygsIDEpezd9XFwpIFxcKCAxKCwgMSl7 OX1cXCkgXFwpIgorKyAgICBwYXNzICR0ZXN0X25hbWUKKysgIH0KKyt9Cisrc2V0IHRlc3RfbmFt ZSAicHJpbnQgaW50dmxhcCwgYXNzb2NpYXRlZCIKKytnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQg aW50dmxhcCIgJHRlc3RfbmFtZSB7CisrICAtcmUgIj0gXFwoMiwgMiwgMiwgNCgsIDIpezZ9XFwp XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgcGFzcyAkdGVzdF9uYW1lCisrICB9CisrICAtcmUg Ij0gXFwoUFRSIFRPIC0+IFxcKCAkaW50IFxcKDEwXFwpXFwpXFwpICRoZXhcKCA8Lio+XCk/XHJc biRnZGJfcHJvbXB0ICQiIHsKKysgICAgZ2RiX3Rlc3QgInByaW50ICppbnR2bGFwIiAiPSBcXCgy LCAyLCAyLCA0KCwgMil7Nn1cXCkiCisrICAgIHBhc3MgJHRlc3RfbmFtZQorKyAgfQorK30KKytn ZGJfdGVzdCAicHJpbnQgcmVhbHAiICI9IFxcKFBUUiBUTyAtPiBcXCggJHJlYWwgXFwpXFwpICRo ZXhcKCA8Lio+XCk/IgorK2dkYl90ZXN0ICJwcmludCAqcmVhbHAiICI9IDNcXC4xNDAwMFxcZCsi CisrZ2RiX3Rlc3QgInByaW50IGFycmF5T2ZQdHIoMiklcCIgIj0gXFwoUFRSIFRPIC0+IFxcKCBU eXBlIHR3byBcXClcXCkgJGhleFwoIDwuKj5cKT8iCisrZ2RiX3Rlc3QgInByaW50ICooYXJyYXlP ZlB0cigyKSVwKSIgIj0gXFwoIGl2bGExID0gXFwoMTEsIDEyLCAxM1xcKSwgaXZsYTIgPSBcXChc XCggMjExLCAyMjFcXCkgXFwoIDIxMiwgMjIyXFwpIFxcKSBcXCkiCisrc2V0IHRlc3RfbmFtZSAi cHJpbnQgYXJyYXlPZlB0cigzKSVwIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0X25hbWUgJHRl c3RfbmFtZSB7CisrICAtcmUgIj0gXFwoUFRSIFRPIC0+IFxcKCBUeXBlIHR3byBcXClcXCkgPG5v dCBhc3NvY2lhdGVkPlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgIHBhc3MgJHRlc3RfbmFtZQor KyAgfQorKyAgLXJlICI9IFxcKFBUUiBUTyAtPiBcXCggVHlwZSB0d28gXFwpXFwpIDB4MFxyXG4k Z2RiX3Byb21wdCAkIiB7CisrICAgIHBhc3MgJHRlc3RfbmFtZQorKyAgfQorK30KKytzZXQgdGVz dF9uYW1lICJwcmludCAqKGFycmF5T2ZQdHIoMyklcCksIGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3Rf bXVsdGlwbGUgInByaW50ICooYXJyYXlPZlB0cigzKSVwKSIgJHRlc3RfbmFtZSB7CisrICAtcmUg IkNhbm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJlc3MgMHgwXHJcbiRnZGJfcHJvbXB0ICQiIHsK KysgICAgcGFzcyAkdGVzdF9uYW1lCisrICB9CisrICAtcmUgIkF0dGVtcHQgdG8gdGFrZSBjb250 ZW50cyBvZiBhIG5vdCBhc3NvY2lhdGVkIHBvaW50ZXIuXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysg ICAgcGFzcyAkdGVzdF9uYW1lCisrICB9CisrfQorK2dkYl90ZXN0ICJwcmludCBjeWNsaWNwMSIg Ij0gXFwoIGkgPSAxLCBwID0gJGhleFwoIDwuKj5cKT8gXFwpIgorK2dkYl90ZXN0ICJwcmludCBj eWNsaWNwMSVwIiAiPSBcXChQVFIgVE8gLT4gXFwoIFR5cGUgdHlwZXdpdGhwb2ludGVyIFxcKVxc KSAkaGV4XCggPC4qPlwpPyIKKytnZGJfdGVzdCAicHJpbnQgKigoaW50ZWdlciopICZpbnRhICsg MikiICI9IDMiICJwcmludCB0ZW1wb3JhcnkgcG9pbnRlciwgYXJyYXkiCisrZ2RiX3Rlc3QgInBy aW50ICooKGludGVnZXIqKSAmaW50dmxhICsgMykiICI9IDQiICJwcmludCB0ZW1wb3JhcnkgcG9p bnRlciwgYWxsb2NhdGVkIHZsYSIKKytnZGJfdGVzdCAicHJpbnQgXCRwYyIgIj0gXFwoUFRSIFRP IC0+IFxcKCB2b2lkIFxcKFxcKVxcKFxcKVxcKVxcKSAkaGV4IDxwb2ludGVyc1xcK1xcZCs+IiAi UHJpbnQgcHJvZ3JhbSBjb3VudGVyIgorSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMTEuOTAu MjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5mOTAJMjAxNi0wOS0w NyAyMTo1MzoyMi43MTUyMTA0NzkgKzAyMDAKK0BAIC0wLDAgKzEsMTA5IEBACisrISBDb3B5cmln aHQgMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKworK3Byb2dyYW0gcG9pbnRlcnMKKysKKysgIHR5cGUgOjogdHdv CisrICAgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGl2bGExICg6KQorKyAgICBpbnRlZ2VyLCBh bGxvY2F0YWJsZSA6OiBpdmxhMiAoOiwgOikKKysgIGVuZCB0eXBlIHR3bworKworKyAgdHlwZSA6 OiB0eXBlV2l0aFBvaW50ZXIKKysgICAgaW50ZWdlciBpCisrICAgIHR5cGUodHlwZVdpdGhQb2lu dGVyKSwgcG9pbnRlcjo6IHAKKysgIGVuZCB0eXBlIHR5cGVXaXRoUG9pbnRlcgorKworKyAgdHlw ZSA6OiB0d29QdHIKKysgICAgdHlwZSAodHdvKSwgcG9pbnRlciA6OiBwCisrICBlbmQgdHlwZSB0 d29QdHIKKysKKysgIGxvZ2ljYWwsIHRhcmdldCA6OiBsb2d2CisrICBjb21wbGV4LCB0YXJnZXQg OjogY29tdgorKyAgY2hhcmFjdGVyLCB0YXJnZXQgOjogY2hhcnYKKysgIGNoYXJhY3RlciAobGVu PTMpLCB0YXJnZXQgOjogY2hhcmEKKysgIGludGVnZXIsIHRhcmdldCA6OiBpbnR2CisrICBpbnRl Z2VyLCB0YXJnZXQsIGRpbWVuc2lvbiAoMTAsMikgOjogaW50YQorKyAgaW50ZWdlciwgdGFyZ2V0 LCBhbGxvY2F0YWJsZSwgZGltZW5zaW9uICg6KSA6OiBpbnR2bGEKKysgIHJlYWwsIHRhcmdldCAg ICA6OiByZWFsdgorKyAgdHlwZSh0d28pLCB0YXJnZXQgIDo6IHR3b3YKKysgIHR5cGUodHdvUHRy KSA6OiBhcnJheU9mUHRyICgzKQorKyAgdHlwZSh0eXBlV2l0aFBvaW50ZXIpLCB0YXJnZXQ6OiBj eWNsaWNwMSxjeWNsaWNwMgorKworKyAgbG9naWNhbCwgcG9pbnRlciA6OiBsb2dwCisrICBjb21w bGV4LCBwb2ludGVyIDo6IGNvbXAKKysgIGNoYXJhY3RlciwgcG9pbnRlcjo6IGNoYXJwCisrICBj aGFyYWN0ZXIgKGxlbj0zKSwgcG9pbnRlcjo6IGNoYXJhcAorKyAgaW50ZWdlciwgcG9pbnRlciA6 OiBpbnRwCisrICBpbnRlZ2VyLCBwb2ludGVyLCBkaW1lbnNpb24gKDosOikgOjogaW50YXAKKysg IGludGVnZXIsIHBvaW50ZXIsIGRpbWVuc2lvbiAoOikgOjogaW50dmxhcAorKyAgcmVhbCwgcG9p bnRlciA6OiByZWFscAorKyAgdHlwZSh0d28pLCBwb2ludGVyIDo6IHR3b3AKKysKKysgIG51bGxp ZnkgKGxvZ3ApCisrICBudWxsaWZ5IChjb21wKQorKyAgbnVsbGlmeSAoY2hhcnApCisrICBudWxs aWZ5IChjaGFyYXApCisrICBudWxsaWZ5IChpbnRwKQorKyAgbnVsbGlmeSAoaW50YXApCisrICBu dWxsaWZ5IChpbnR2bGFwKQorKyAgbnVsbGlmeSAocmVhbHApCisrICBudWxsaWZ5ICh0d29wKQor KyAgbnVsbGlmeSAoYXJyYXlPZlB0cigxKSVwKQorKyAgbnVsbGlmeSAoYXJyYXlPZlB0cigyKSVw KQorKyAgbnVsbGlmeSAoYXJyYXlPZlB0cigzKSVwKQorKyAgbnVsbGlmeSAoY3ljbGljcDElcCkK KysgIG51bGxpZnkgKGN5Y2xpY3AyJXApCisrCisrICBsb2dwID0+IGxvZ3YgICAgISBCZWZvcmUg cG9pbnRlciBhc3NpZ25tZW50CisrICBjb21wID0+IGNvbXYKKysgIGNoYXJwID0+IGNoYXJ2Cisr ICBjaGFyYXAgPT4gY2hhcmEKKysgIGludHAgPT4gaW50dgorKyAgaW50YXAgPT4gaW50YQorKyAg aW50dmxhcCA9PiBpbnR2bGEKKysgIHJlYWxwID0+IHJlYWx2CisrICB0d29wID0+IHR3b3YKKysg IGFycmF5T2ZQdHIoMiklcCA9PiB0d292CisrICBjeWNsaWNwMSVpID0gMQorKyAgY3ljbGljcDEl cCA9PiBjeWNsaWNwMgorKyAgY3ljbGljcDIlaSA9IDIKKysgIGN5Y2xpY3AyJXAgPT4gY3ljbGlj cDEKKysKKysgIGxvZ3YgPSBhc3NvY2lhdGVkKGxvZ3ApICAgICAhIEJlZm9yZSB2YWx1ZSBhc3Np Z25tZW50CisrICBjb212ID0gY21wbHgoMSwyKQorKyAgY2hhcnYgPSAiYSIKKysgIGNoYXJhID0g ImFiYyIKKysgIGludHYgPSAxMAorKyAgaW50YSg6LDopID0gMQorKyAgaW50YSgzLDEpID0gMwor KyAgYWxsb2NhdGUgKGludHZsYSgxMCkpCisrICBpbnR2bGEoOikgPSAyCisrICBpbnR2bGEoNCkg PSA0CisrICBpbnR2bGFwID0+IGludHZsYQorKyAgcmVhbHYgPSAzLjE0CisrCisrICBhbGxvY2F0 ZSAodHdvdiVpdmxhMSgzKSkKKysgIGFsbG9jYXRlICh0d292JWl2bGEyKDIsMikpCisrICB0d292 JWl2bGExKDEpID0gMTEKKysgIHR3b3YlaXZsYTEoMikgPSAxMgorKyAgdHdvdiVpdmxhMSgzKSA9 IDEzCisrICB0d292JWl2bGEyKDEsMSkgPSAyMTEKKysgIHR3b3YlaXZsYTIoMiwxKSA9IDIyMQor KyAgdHdvdiVpdmxhMigxLDIpID0gMjEyCisrICB0d292JWl2bGEyKDIsMikgPSAyMjIKKysKKysg IGludHYgPSBpbnR2ICsgMSAhIEFmdGVyIHZhbHVlIGFzc2lnbm1lbnQKKysKKytlbmQgcHJvZ3Jh bSBwb2ludGVycworSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vcHJpbnRfdHlwZS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ByaW50X3R5cGUuZXhwCTIwMTYtMDktMDcgMjE6NTM6 MjIuNzE1MjEwNDc5ICswMjAwCitAQCAtMCwwICsxLDEwMCBAQAorKyMgQ29weXJpZ2h0IDIwMTYg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICJwb2ludGVycy5mOTAiCisrbG9hZF9saWIg Zm9ydHJhbi5leHAKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewor KyAgICByZXR1cm4gLTEKKyt9CisrCisrCisraWYgIVtydW50b19tYWluXSB7CisrICAgIHVudGVz dGVkICJjb3VsZCBub3QgcnVuIHRvIG1haW4iCisrICAgIHJldHVybiAtMQorK30KKysKKysjIERl cGVuZGluZyBvbiB0aGUgY29tcGlsZXIgYmVpbmcgdXNlZCwgdGhlIHR5cGUgbmFtZXMgY2FuIGJl IHByaW50ZWQgZGlmZmVyZW50bHkuCisrc2V0IGxvZ2ljYWwgW2ZvcnRyYW5fbG9naWNhbDRdCisr c2V0IHJlYWwgW2ZvcnRyYW5fcmVhbDRdCisrc2V0IGludCBbZm9ydHJhbl9pbnQ0XQorK3NldCBj b21wbGV4IFtmb3J0cmFuX2NvbXBsZXg0XQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50Il0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCIKKytnZGJfdGVzdCAicHR5cGUg bG9ncCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoICRsb2dpY2FsIFxcKSIgInB0eXBlIGxvZ3AsIG5v dCBhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSBjb21wIiAidHlwZSA9IFBUUiBUTyAtPiBc XCggJGNvbXBsZXggXFwpIiAicHR5cGUgY29tcCwgbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3Qg InB0eXBlIGNoYXJwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMSBcXCkiICJw dHlwZSBjaGFycCwgbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIGNoYXJhcCIgInR5 cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjMgXFwpIiAicHR5cGUgY2hhcmFwLCBub3Qg YXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgaW50cCIgInR5cGUgPSBQVFIgVE8gLT4gXFwo ICRpbnQgXFwpIiAicHR5cGUgaW50cCwgbm90IGFzc29jaWF0ZWQiCisrc2V0IHRlc3QgInB0eXBl IGludGFwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdF9tdWx0aXBsZSAicHR5cGUgaW50YXAi ICR0ZXN0IHsKKysgICAgLXJlICJ0eXBlID0gUFRSIFRPIC0+IFxcKCAkaW50IFxcKDosOlxcKVxc KVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgICAgICBwYXNzICR0ZXN0CisrICAgIH0KKysgICAg LXJlICJ0eXBlID0gJGludCBcXCg6LDpcXClcclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICAgICAg cGFzcyAkdGVzdAorKyAgICB9CisrfQorK2dkYl90ZXN0ICJwdHlwZSByZWFscCIgInR5cGUgPSBQ VFIgVE8gLT4gXFwoICRyZWFsIFxcKSIgInB0eXBlIHJlYWxwLCBub3QgYXNzb2NpYXRlZCIKKytn ZGJfdGVzdCAicHR5cGUgdHdvcCIgXAorKyAgICBbbXVsdGlfbGluZSAidHlwZSA9IFBUUiBUTyAt PiBcXCggVHlwZSB0d28iIFwKKysgICAgICAgICAgICAgICAgIiAgICAkaW50IDo6IGl2bGExXFwo OlxcKSIgXAorKyAgICAgICAgICAgICAgICAiICAgICRpbnQgOjogaXZsYTJcXCg6LDpcXCkiIFwK KysgICAgICAgICAgICAgICAgIkVuZCBUeXBlIHR3byBcXCkiXSBcCisrICAgICJwdHlwZSB0d29w LCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdHdvIiBcCisrICAgIFttdWx0aV9s aW5lICJ0eXBlID0gVHlwZSB0d28iIFwKKysgICAgICAgICAgICAgICAgIiAgICAkaW50IDo6IGl2 bGExXFwoOlxcKSIgXAorKyAgICAgICAgICAgICAgICAiICAgICRpbnQgOjogaXZsYTJcXCg6LDpc XCkiIFwKKysgICAgICAgICAgICAgICAgIkVuZCBUeXBlIHR3byJdCisrCisrCisrZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkJlZm9yZSB2YWx1ZSBhc3NpZ25tZW50Il0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQiCisrZ2Ri X3Rlc3QgInB0eXBlIHR3b3AiIFwKKysgICAgW211bHRpX2xpbmUgInR5cGUgPSBQVFIgVE8gLT4g XFwoIFR5cGUgdHdvIiBcCisrICAgICAgICAgICAgICAgICIgICAgJGludCA6OiBpdmxhMVxcKDpc XCkiIFwKKysgICAgICAgICAgICAgICAgIiAgICAkaW50IDo6IGl2bGEyXFwoOiw6XFwpIiBcCisr ICAgICAgICAgICAgICAgICJFbmQgVHlwZSB0d28gXFwpIl0KKysKKysKKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiQWZ0ZXIgdmFsdWUgYXNzaWdubWVudCJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgIkFmdGVyIHZhbHVlIGFzc2lnbm1lbnQiCisrZ2RiX3Rlc3Qg InB0eXBlIGxvZ3YiICJ0eXBlID0gJGxvZ2ljYWwiCisrZ2RiX3Rlc3QgInB0eXBlIGNvbXYiICJ0 eXBlID0gJGNvbXBsZXgiCisrZ2RiX3Rlc3QgInB0eXBlIGNoYXJ2IiAidHlwZSA9IGNoYXJhY3Rl clxcKjEiCisrZ2RiX3Rlc3QgInB0eXBlIGNoYXJhIiAidHlwZSA9IGNoYXJhY3RlclxcKjMiCisr Z2RiX3Rlc3QgInB0eXBlIGludHYiICJ0eXBlID0gJGludCIKKytnZGJfdGVzdCAicHR5cGUgaW50 YSIgInR5cGUgPSAkaW50IFxcKDEwLDJcXCkiCisrZ2RiX3Rlc3QgInB0eXBlIHJlYWx2IiAidHlw ZSA9ICRyZWFsIgorKworKworK2dkYl90ZXN0ICJwdHlwZSBsb2dwIiAidHlwZSA9IFBUUiBUTyAt PiBcXCggJGxvZ2ljYWwgXFwpIgorK2dkYl90ZXN0ICJwdHlwZSBjb21wIiAidHlwZSA9IFBUUiBU TyAtPiBcXCggJGNvbXBsZXggXFwpIgorK2dkYl90ZXN0ICJwdHlwZSBjaGFycCIgInR5cGUgPSBQ VFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEgXFwpIgorK2dkYl90ZXN0ICJwdHlwZSBjaGFyYXAi ICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCozIFxcKSIKKytnZGJfdGVzdCAicHR5 cGUgaW50cCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoICRpbnQgXFwpIgorK3NldCB0ZXN0ICJwdHlw ZSBpbnRhcCIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAidHlw ZSA9ICRpbnQgXFwoMTAsMlxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgICAgICBwYXNzICR0 ZXN0CisrICAgIH0KKysgICAgLXJlICJ0eXBlID0gUFRSIFRPIC0+IFxcKCAkaW50IFxcKDEwLDJc XClcXClcclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICAgICAgcGFzcyAkdGVzdAorKyAgICB9Cisr fQorK2dkYl90ZXN0ICJwdHlwZSByZWFscCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoICRyZWFsIFxc KSIKK0luZGV4OiBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1wdHlwZS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xMS45MC4yMDE2MDkwNy5vcmln L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLmV4cAkyMDE2LTA5LTA3IDIxOjUy OjUzLjcwNTk1MTIyMCArMDIwMAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLmV4cAkyMDE2LTA5LTA3IDIxOjUzOjIyLjcxNTIxMDQ3 OSArMDIwMAorQEAgLTMyLDkgKzMyLDkgQEAKKyAjIENoZWNrIHRoZSBwdHlwZSBvZiB2YXJpb3Vz IFZMQSBzdGF0ZXMgYW5kIHBvaW50ZXIgdG8gVkxBJ3MuCisgZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgInZsYTEtaW5pdCJdCisgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InZsYTEtaW5pdCIKKy1nZGJfdGVzdCAicHR5cGUgdmxhMSIgInR5cGUgPSA8bm90IGFsbG9jYXRl ZD4iICJwdHlwZSB2bGExIG5vdCBpbml0aWFsaXplZCIKKy1nZGJfdGVzdCAicHR5cGUgdmxhMiIg InR5cGUgPSA8bm90IGFsbG9jYXRlZD4iICJwdHlwZSB2bGEyIG5vdCBpbml0aWFsaXplZCIKKy1n ZGJfdGVzdCAicHR5cGUgcHZsYSIgInR5cGUgPSA8bm90IGFzc29jaWF0ZWQ+IiAicHR5cGUgcHZs YSBub3QgaW5pdGlhbGl6ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gJHJlYWwg XFwoOiw6LDpcXCkiICJwdHlwZSB2bGExIG5vdCBpbml0aWFsaXplZCIKKytnZGJfdGVzdCAicHR5 cGUgdmxhMiIgInR5cGUgPSAkcmVhbCBcXCg6LDosOlxcKSIgInB0eXBlIHZsYTIgbm90IGluaXRp YWxpemVkIgorK2dkYl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9ICRyZWFsIFxcKDosOiw6XFwp IiAicHR5cGUgcHZsYSBub3QgaW5pdGlhbGl6ZWQiCisgZ2RiX3Rlc3QgInB0eXBlIHZsYTEoMywg NiwgOSkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IFxcXCh2ZWN0b3Igbm90IGFsbG9jYXRlZFxc XCkiIFwKKyAgICJwdHlwZSB2bGExKDMsIDYsIDkpIG5vdCBpbml0aWFsaXplZCIKKyBnZGJfdGVz dCAicHR5cGUgdmxhMig1LCA0NSwgMjApIiBcCitAQCAtODEsMjAgKzgxLDIwIEBACisgCisgZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEtZGVhc3NvY2lhdGVkIl0KKyBn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1kZWFzc29jaWF0ZWQiCistZ2RiX3Rlc3Qg InB0eXBlIHB2bGEiICJ0eXBlID0gPG5vdCBhc3NvY2lhdGVkPiIgInB0eXBlIHB2bGEgZGVhc3Nv Y2lhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9ICRyZWFsIFxcKDosOiw6XFwp IiAicHR5cGUgcHZsYSBkZWFzc29jaWF0ZWQiCisgZ2RiX3Rlc3QgInB0eXBlIHB2bGEoNSwgNDUs IDIwKSIgXAorICAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxcKHZlY3RvciBub3QgYXNzb2Np YXRlZFxcXCkiIFwKKyAgICJwdHlwZSBwdmxhKDUsIDQ1LCAyMCkgbm90IGFzc29jaWF0ZWQiCisg CisgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZGVhbGxvY2F0ZWQi XQorIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWRlYWxsb2NhdGVkIgorLWdkYl90 ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZsYTEgbm90 IGFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdmxhMSIgInR5cGUgPSAkcmVhbCBcXCg6LDos OlxcKSIgInB0eXBlIHZsYTEgbm90IGFsbG9jYXRlZCIKKyBnZGJfdGVzdCAicHR5cGUgdmxhMSgz LCA2LCA5KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxcKHZlY3RvciBub3QgYWxsb2NhdGVk XFxcKSIgXAorICAgInB0eXBlIHZsYTEoMywgNiwgOSkgbm90IGFsbG9jYXRlZCIKKyAKKyBnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMi1kZWFsbG9jYXRlZCJdCisgZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItZGVhbGxvY2F0ZWQiCistZ2RiX3Rlc3QgInB0 eXBlIHZsYTIiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMiBub3QgYWxsb2Nh dGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGEyIiAidHlwZSA9ICRyZWFsIFxcKDosOiw6XFwpIiAi cHR5cGUgdmxhMiBub3QgYWxsb2NhdGVkIgorIGdkYl90ZXN0ICJwdHlwZSB2bGEyKDUsIDQ1LCAy MCkiIFwKKyAgICJubyBzdWNoIHZlY3RvciBlbGVtZW50IFxcXCh2ZWN0b3Igbm90IGFsbG9jYXRl ZFxcXCkiIFwKKyAgICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkgbm90IGFsbG9jYXRlZCIKK0luZGV4 OiBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJp bmdzLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwCTIwMTYtMDktMDcgMjE6NTM6MjIuNzE2MjEwNDg4ICsw MjAwCitAQCAtMCwwICsxLDEwMyBAQAorKyMgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3N0 YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgorKworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0 ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAgICB7ZGVidWcgZjkwIHF1 aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKysjIGNoZWNrIHRoYXQgYWxsIGZvcnRy YW4gc3RhbmRhcmQgZGF0YXR5cGVzIHdpbGwgYmUKKysjIGhhbmRsZWQgY29ycmVjdGx5IHdoZW4g dXNpbmcgYXMgVkxBJ3MKKysKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgImNv dWxkIG5vdCBydW4gdG8gbWFpbiIKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1hbGxvY2F0ZWQtMSJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcl9jaGFyLWFsbG9jYXRlZC0xIgorK3NldCB0ZXN0ICJ3 aGF0aXMgdmFyX2NoYXIgZmlyc3QgdGltZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAid2hhdGlzIHZh cl9jaGFyIiAkdGVzdCB7CisrICAgIC1yZSAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVy XFwqMTAgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysgICAgfQor KyAgICAtcmUgInR5cGUgPSBjaGFyYWN0ZXJcXCoxMFxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAg ICBwYXNzICR0ZXN0CisrICAgIH0KKyt9Cisrc2V0IHRlc3QgInB0eXBlIHZhcl9jaGFyIGZpcnN0 IHRpbWUiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInB0eXBlIHZhcl9jaGFyIiAkdGVzdCB7CisrICAg IC1yZSAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMTAgXFwpXHJcbiRnZGJfcHJv bXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgInR5cGUgPSBjaGFy YWN0ZXJcXCoxMFxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBwYXNzICR0ZXN0CisrICAgIH0K Kyt9CisrCisrCisrZ2RiX3Rlc3QgIm5leHQiICJcXGQrLip2YXJfY2hhciA9ICdmb28nLioiIFwK KysgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9mIHZhcl9jaGFyIgorK2dkYl90ZXN0ICJw cmludCBsIiAiID0gXFwuVFJVRVxcLiIgInByaW50IGFsbG9jYXRpb24gc3RhdHVzIGZpcnN0IHRp bWUiCisrCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFy LWZpbGxlZC0xIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItZmlsbGVk LTEiCisrc2V0IHRlc3QgInByaW50IHZhcl9jaGFyLCB2YXJfY2hhci1maWxsZWQtMSIKKytnZGJf dGVzdF9tdWx0aXBsZSAicHJpbnQgdmFyX2NoYXIiICR0ZXN0IHsKKysgICAgLXJlICI9IFxcKFBU UiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXClcXCkgJGhleFxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrICAgICAgICBnZGJfdGVzdCAicHJpbnQgKnZhcl9jaGFyIiAiPSAnZm9vJyIgInByaW50ICp2 YXJfY2hhciwgdmFyX2NoYXItZmlsbGVkLTEiCisrCSAgICBwYXNzICR0ZXN0CisrICAgIH0KKysg ICAgLXJlICI9ICdmb28nXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysg ICAgfQorK30KKytzZXQgdGVzdCAicHR5cGUgdmFyX2NoYXIsIHZhcl9jaGFyLWZpbGxlZC0xIgor K2dkYl90ZXN0X211bHRpcGxlICJwdHlwZSB2YXJfY2hhciIgJHRlc3QgeworKyAgICAtcmUgInR5 cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjMgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsK KysJICAgIHBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgInR5cGUgPSBjaGFyYWN0ZXJcXCoz XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysgICAgfQorK30KKytnZGJf dGVzdCAicHJpbnQgdmFyX2NoYXIoMSkiICIgPSAxMDIgJ2YnIiAicHJpbnQgdmFyX2NoYXIoMSki CisrZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyKDMpIiAiID0gMTExICdvJyIgInByaW50IHZhcl9j aGFyKDMpIgorKworKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJf Y2hhci1maWxsZWQtMiJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcl9jaGFyLWZp bGxlZC0yIgorK3NldCB0ZXN0ICJwcmludCB2YXJfY2hhciwgdmFyX2NoYXItZmlsbGVkLTIiCisr Z2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IHZhcl9jaGFyIiAkdGVzdCB7CisrICAgIC1yZSAiPSBc XChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpXFwpICRoZXhcclxuJGdkYl9wcm9tcHQg JCIgeworKyAgICAgICAgZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgIj0gJ2Zvb2JhciciICJw cmludCAqdmFyX2NoYXIsIHZhcl9jaGFyLWZpbGxlZC0yIgorKwkgICAgcGFzcyAkdGVzdAorKyAg ICB9CisrICAgIC1yZSAiPSAnZm9vYmFyJ1xyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBwYXNz ICR0ZXN0CisrICAgIH0KKyt9Cisrc2V0IHRlc3QgInB0eXBlIHZhcl9jaGFyLCB2YXJfY2hhci1m aWxsZWQtMiIKKytnZGJfdGVzdF9tdWx0aXBsZSAicHR5cGUgdmFyX2NoYXIiICR0ZXN0IHsKKysg ICAgLXJlICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCo2IFxcKVxyXG4kZ2RiX3By b21wdCAkIiB7CisrCSAgICBwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJ0eXBlID0gY2hh cmFjdGVyXFwqNlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBwYXNzICR0ZXN0CisrICAgIH0K Kyt9CitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtc3RyaW5ncy5mOTAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmY5MAkyMDE2LTA5LTA3IDIxOjUzOjIyLjcx NjIxMDQ4OCArMDIwMAorQEAgLTAsMCArMSwzOSBAQAorKyEgQ29weXJpZ2h0IDIwMTYgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysKKytwcm9ncmFtIHZsYV9zdHJpbmdzCisrICBjaGFyYWN0ZXIobGVuPTopLCB0YXJnZXQs IGFsbG9jYXRhYmxlICAgOjogdmFyX2NoYXIKKysgIGNoYXJhY3RlcihsZW49OiksIHBvaW50ZXIg ICAgICAgICAgICAgICA6OiB2YXJfY2hhcl9wCisrICBsb2dpY2FsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOjogbAorKworKyAgYWxsb2NhdGUoY2hhcmFjdGVyKGxlbj0xMCkgOjog dmFyX2NoYXIpCisrICBsID0gYWxsb2NhdGVkKHZhcl9jaGFyKSAgICAgICAgICAgICAgICAgISB2 YXJfY2hhci1hbGxvY2F0ZWQtMQorKyAgdmFyX2NoYXIgPSAnZm9vJworKyAgZGVhbGxvY2F0ZSh2 YXJfY2hhcikgICAgICAgICAgICAgICAgICAgICEgdmFyX2NoYXItZmlsbGVkLTEKKysgIGwgPSBh bGxvY2F0ZWQodmFyX2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWRlYWxsb2NhdGVk CisrICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTQyKSA6OiB2YXJfY2hhcikKKysgIGwgPSBhbGxv Y2F0ZWQodmFyX2NoYXIpCisrICB2YXJfY2hhciA9ICdmb29iYXInCisrICB2YXJfY2hhciA9ICcn ICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJfY2hhci1maWxsZWQtMgorKyAgdmFyX2No YXIgPSAnYmFyJyAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyX2NoYXItZW1wdHkKKysgIGRl YWxsb2NhdGUodmFyX2NoYXIpCisrICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTIxKSA6OiB2YXJf Y2hhcikKKysgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9j aGFyLWFsbG9jYXRlZC0zCisrICB2YXJfY2hhciA9ICdqb2huZG9lJworKyAgdmFyX2NoYXJfcCA9 PiB2YXJfY2hhcgorKyAgbCA9IGFzc29jaWF0ZWQodmFyX2NoYXJfcCkgICAgICAgICAgICAgICEg dmFyX2NoYXJfcC1hc3NvY2lhdGVkCisrICB2YXJfY2hhcl9wID0+IG51bGwoKQorKyAgbCA9IGFz c29jaWF0ZWQodmFyX2NoYXJfcCkgICAgICAgICAgICAgICEgdmFyX2NoYXJfcC1ub3QtYXNzb2Np YXRlZAorK2VuZCBwcm9ncmFtIHZsYV9zdHJpbmdzCitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5 MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBnZGItNy4xMS45MC4yMDE2MDkwNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXR5cGUuZXhwCTIwMTYtMDktMDcgMjE6NTI6MTAuMjcyNTYzMDUxICswMjAwCisrKysgZ2RiLTcu MTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAJMjAx Ni0wOS0wNyAyMTo1MzoyMi43MTYyMTA0ODggKzAyMDAKK0BAIC0xMzIsNyArMTMyLDEwIEBACisg ICAgICAgICAgICAgICAgICAgICAgIkVuZCBUeXBlIG9uZSIgXQorIAorICMgQ2hlY2sgYWxsb2Nh dGlvbiBzdGF0dXMgb2YgZHluYW1pYyBhcnJheSBhbmQgaXQncyBkeW5hbWljIG1lbWJlcnMKKy1n ZGJfdGVzdCAicHR5cGUgZml2ZWR5bmFyciIgInR5cGUgPSA8bm90IGFsbG9jYXRlZD4iCisrZ2Ri X3Rlc3QgInB0eXBlIGZpdmVkeW5hcnIiIFwKKysgICAgICAgICBbbXVsdGlfbGluZSAidHlwZSA9 IFR5cGUgZml2ZSIgXAorKyAgICAgICAgICAgICAgICAgICAgICIgICAgVHlwZSBvbmUgOjogdG9u ZSIgXAorKyAgICAgICAgICAgICAgICAgICAgICJFbmQgVHlwZSBmaXZlIFxcKDpcXCkiIF0KKyBn ZGJfdGVzdCAibmV4dCIgIiIKKyBnZGJfdGVzdCAicHR5cGUgZml2ZWR5bmFycigyKSIgXAorICAg ICAgICAgIFttdWx0aV9saW5lICJ0eXBlID0gVHlwZSBmaXZlIiBcCitAQCAtMTQxLDcgKzE0NCw3 IEBACisgICAgICAgICAgInB0eXBlIGZpdmVkeW5hcnIoMiksIHRvbmUgaXMgbm90IGFsbG9jYXRl ZCIKKyBnZGJfdGVzdCAicHR5cGUgZml2ZWR5bmFycigyKSV0b25lIiBcCisgICAgICAgICAgW211 bHRpX2xpbmUgInR5cGUgPSBUeXBlIG9uZSIgXAorLSAgICAgICAgICAgICAgICAgICAgICIgICAg JGludCA6OiBpdmxhXFwoPG5vdCBhbGxvY2F0ZWQ+XFwpIiBcCisrICAgICAgICAgICAgICAgICAg ICAgIiAgICAkaW50IDo6IGl2bGFcXCg6LDosOlxcKSIgXAorICAgICAgICAgICAgICAgICAgICAg ICJFbmQgVHlwZSBvbmUiIF0gXAorICAgICAgICAgICJwdHlwZSBmaXZlZHluYXJyKDIpJXRvbmUs IG5vdCBhbGxvY2F0ZWQiCisgCitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMTEu OTAuMjAxNjA5MDcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAJ MjAxNi0wOS0wNyAyMTo1MjoxMC4yNzI1NjMwNTEgKzAyMDAKKysrKyBnZGItNy4xMS45MC4yMDE2 MDkwNy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAJMjAxNi0wOS0wNyAy MTo1MzoyMi43MTYyMTA0ODggKzAyMDAKK0BAIC0xNCw2ICsxNCw3IEBACisgIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKyAKKyBzdGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKKytsb2FkX2xpYiAiZm9ydHJhbi5l eHAiCisgCisgaWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0 ZmlsZX0gJHtzcmNmaWxlfSBcCisgICAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CitAQCAtMjUs MTIgKzI2LDE1IEBACisgICAgIHJldHVybiAtMQorIH0KKyAKKysjIERlcGVuZGluZyBvbiB0aGUg Y29tcGlsZXIgYmVpbmcgdXNlZCwgdGhlIHR5cGUgbmFtZXMgY2FuIGJlIHByaW50ZWQgZGlmZmVy ZW50bHkuCisrc2V0IHJlYWwgW2ZvcnRyYW5fcmVhbDRdCisrCisgIyBUcnkgdG8gYWNjZXNzIHZh bHVlcyBpbiBub24gYWxsb2NhdGVkIFZMQQorIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ2bGExLWluaXQiXQorIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWlu aXQiCisgZ2RiX3Rlc3QgInByaW50IHZsYTEiICIgPSA8bm90IGFsbG9jYXRlZD4iICJwcmludCBu b24tYWxsb2NhdGVkIHZsYTEiCisgZ2RiX3Rlc3QgInByaW50ICZ2bGExIiBcCistICAiID0gXFxc KFBUUiBUTyAtPiBcXFwoIHJlYWxcXFwoa2luZD00XFxcKSBcXFwoPG5vdCBhbGxvY2F0ZWQ+XFxc KVxcXClcXFwpICRoZXgiIFwKKysgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJlYWwgXFxcKDos Oiw6XFxcKVxcXClcXFwpICRoZXgiIFwKKyAgICJwcmludCBub24tYWxsb2NhdGVkICZ2bGExIgor IGdkYl90ZXN0ICJwcmludCB2bGExKDEsMSwxKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxc KHZlY3RvciBub3QgYWxsb2NhdGVkXFxcKSIgXAorICAgInByaW50IG1lbWJlciBpbiBub24tYWxs b2NhdGVkIHZsYTEgKDEpIgorQEAgLTUxLDcgKzU1LDcgQEAKKyAJInN0ZXAgb3ZlciB2YWx1ZSBh c3NpZ25tZW50IG9mIHZsYTEiCisgfQorIGdkYl90ZXN0ICJwcmludCAmdmxhMSIgXAorLSAgIiA9 IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEwLDEwXFxcKVxc XClcXFwpICRoZXgiIFwKKysgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJlYWwgXFxcKDEwLDEw LDEwXFxcKVxcXClcXFwpICRoZXgiIFwKKyAgICJwcmludCBhbGxvY2F0ZWQgJnZsYTEiCisgZ2Ri X3Rlc3QgInByaW50IHZsYTEoMywgNiwgOSkiICIgPSAxMzExIiAicHJpbnQgYWxsb2NhdGVkIHZs YTEoMyw2LDkpIgorIGdkYl90ZXN0ICJwcmludCB2bGExKDEsIDMsIDgpIiAiID0gMTMxMSIgInBy aW50IGFsbG9jYXRlZCB2bGExKDEsMyw4KSIKK0BAIC03MSw3ICs3NSw3IEBACisgIyBUcnkgdG8g YWNjZXNzIHZhbHVlcyBpbiB1bmRlZmluZWQgcG9pbnRlciB0byBWTEEgKGRhbmdsaW5nKQorIGdk Yl90ZXN0ICJwcmludCBwdmxhIiAiID0gPG5vdCBhc3NvY2lhdGVkPiIgInByaW50IHVuZGVmaW5l ZCBwdmxhIgorIGdkYl90ZXN0ICJwcmludCAmcHZsYSIgXAorLSAgIiA9IFxcXChQVFIgVE8gLT4g XFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDxub3QgYXNzb2NpYXRlZD5cXFwpXFxcKVxcXCkg JGhleCIgXAorKyAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCAkcmVhbCBcXFwoOiw6LDpcXFwpXFxc KVxcXCkgJGhleCIgXAorICAgInByaW50IG5vbi1hc3NvY2lhdGVkICZwdmxhIgorIGdkYl90ZXN0 ICJwcmludCBwdmxhKDEsIDMsIDgpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwodmVjdG9y IG5vdCBhc3NvY2lhdGVkXFxcKSIgXAorICAgInByaW50IHVuZGVmaW5lZCBwdmxhKDEsMyw4KSIK K0BAIC04MCw3ICs4NCw3IEBACisgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InB2bGEtYXNzb2NpYXRlZCJdCisgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtYXNz b2NpYXRlZCIKKyBnZGJfdGVzdCAicHJpbnQgJnB2bGEiIFwKKy0gICIgPSBcXFwoUFRSIFRPIC0+ IFxcXCggcmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXClcXFwpXFxcKSAkaGV4IiBc CisrICAiID0gXFxcKFBUUiBUTyAtPiBcXFwoICRyZWFsIFxcXCgxMCwxMCwxMFxcXClcXFwpXFxc KSAkaGV4IiBcCisgICAicHJpbnQgYXNzb2NpYXRlZCAmcHZsYSIKKyBnZGJfdGVzdCAicHJpbnQg cHZsYSgzLCA2LCA5KSIgIiA9IDQyIiAicHJpbnQgYXNzb2NpYXRlZCBwdmxhKDMsNiw5KSIKKyBn ZGJfdGVzdCAicHJpbnQgcHZsYSgxLCAzLCA4KSIgIiA9IDEwMDEiICJwcmludCBhc3NvY2lhdGVk IHB2bGEoMSwzLDgpIgorSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUv Z2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjExLjkwLjIw MTYwOTA3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCTIwMTYt MDktMDcgMjE6NTI6MTAuMjcyNTYzMDUxICswMjAwCisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCTIwMTYtMDktMDcgMjE6NTM6 MjIuNzE2MjEwNDg4ICswMjAwCitAQCAtMTcsNiArMTcsNyBAQAorIAorIGxvYWRfbGliIG1pLXN1 cHBvcnQuZXhwCisgc2V0IE1JRkxBR1MgIi1pPW1pIgorK2xvYWRfbGliICJmb3J0cmFuLmV4cCIK KyAKKyBpZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1cm4gLTEgfQorIAorQEAgLTQw LDEwICs0MSw4IEBACisgbWlfY3JlYXRlX3Zhcm9iaiAiYXJyYXkiICJhcnJheSIgImNyZWF0ZSBs b2NhbCB2YXJpYWJsZSBhcnJheSIKKyAKKyAKKy0jIERlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIg dmVyc2lvbiBiZWluZyB1c2VkLCB0aGUgbmFtZSBvZiB0aGUgNC1ieXRlIGludGVnZXIKKy0jIGFu ZCByZWFsIHR5cGVzIGNhbiBiZSBwcmludGVkIGRpZmZlcmVudGx5LiAgRm9yIGluc3RhbmNlLCBn Zm9ydHJhbi00LjEgdXNlcworLSMgImludDQiIHdoZXJlYXMgZ2ZvcnRyYW4tNC4zIHVzZXMgImlu dGVnZXIoa2luZD00KSIuCistc2V0IGludDQgIihpbnQ0fGludGVnZXJcXChraW5kPTRcXCkpIgor KyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBiZWluZyB1c2VkLCB0aGUgdHlwZSBuYW1lcyBj YW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4KKytzZXQgaW50NCBbZm9ydHJhbl9pbnQ0XQorIAor IHNldCBjaGlsZHJlbiBbbGlzdCBbbGlzdCAiYXJyYXkuLTEiICItMSIgMiAiJGludDQgXFwoMlxc KSJdIFwKKyAJCSAgW2xpc3QgImFycmF5LjAiICIwIiAyICIkaW50NCBcXCgyXFwpIl0gXAorSW5k ZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0 cmFuLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjExLjkwLjIwMTYwOTA3Lm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwCTIwMTYtMDktMDcgMjE6NTI6MTAuMjcy NTYzMDUxICswMjAwCisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIu bWkvbWktdmxhLWZvcnRyYW4uZXhwCTIwMTYtMDktMDcgMjE6NTM6MjIuNzE2MjEwNDg4ICswMjAw CitAQCAtMTcsNyArMTcsOSBAQAorICMgQXJyYXkgKFZMQSkuCisgCisgbG9hZF9saWIgbWktc3Vw cG9ydC5leHAKKytsb2FkX2xpYiBmb3J0cmFuLmV4cAorIHNldCBNSUZMQUdTICItaT1taSIKKyts b2FkX2xpYiAiZm9ydHJhbi5leHAiCisgCisgZ2RiX2V4aXQKKyBpZiBbbWlfZ2RiX3N0YXJ0XSB7 CitAQCAtMzIsNiArMzQsOSBAQAorICAgICAgcmV0dXJuIC0xCisgfQorIAorKyMgRGVwZW5kaW5n IG9uIHRoZSBjb21waWxlciBiZWluZyB1c2VkLCB0aGUgdHlwZSBuYW1lcyBjYW4gYmUgcHJpbnRl ZCBkaWZmZXJlbnRseS4KKytzZXQgcmVhbCBbZm9ydHJhbl9yZWFsNF0KKysKKyBtaV9kZWxldGVf YnJlYWtwb2ludHMKKyBtaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyBt aV9nZGJfbG9hZCAke2JpbmZpbGV9CitAQCAtNDYsMTAgKzUxLDEwIEBACisgbWlfZ2RiX3Rlc3Qg IjUwMC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSIgXAorICAgIjUwMFxcXmRvbmUsdmFs dWU9XCI8bm90IGFsbG9jYXRlZD5cIiIgImV2YWx1YXRlIG5vdCBhbGxvY2F0ZWQgdmxhIgorIAor LW1pX2NyZWF0ZV92YXJvYmpfY2hlY2tlZCB2bGExX25vdF9hbGxvY2F0ZWQgdmxhMSAiPG5vdCBh bGxvY2F0ZWQ+IiBcCisrbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHZsYTFfbm90X2FsbG9jYXRl ZCB2bGExICIkcmVhbCBcXCg6XFwpIiBcCisgICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZsYTFf bm90X2FsbG9jYXRlZCIKKyBtaV9nZGJfdGVzdCAiNTAxLXZhci1pbmZvLXR5cGUgdmxhMV9ub3Rf YWxsb2NhdGVkIiBcCistICAiNTAxXFxeZG9uZSx0eXBlPVwiPG5vdCBhbGxvY2F0ZWQ+XCIiIFwK KysgICI1MDFcXF5kb25lLHR5cGU9XCIkcmVhbCBcXCg6XFwpXCIiIFwKKyAgICJpbmZvIHR5cGUg dmFyaWFibGUgdmxhMV9ub3RfYWxsb2NhdGVkIgorIG1pX2dkYl90ZXN0ICI1MDItdmFyLXNob3ct Zm9ybWF0IHZsYTFfbm90X2FsbG9jYXRlZCIgXAorICAgIjUwMlxcXmRvbmUsZm9ybWF0PVwibmF0 dXJhbFwiIiBcCitAQCAtNTgsNyArNjMsNyBAQAorICAgIjUwM1xcXmRvbmUsdmFsdWU9XCJcXFxb MFxcXF1cIiIgXAorICAgImV2YWwgdmFyaWFibGUgdmxhMV9ub3RfYWxsb2NhdGVkIgorIG1pX2xp c3RfYXJyYXlfdmFyb2JqX2NoaWxkcmVuX3dpdGhfaW5kZXggInZsYTFfbm90X2FsbG9jYXRlZCIg IjAiICIxIiBcCistICAgICJyZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hpbGRyZW4gb2Ygdmxh MV9ub3RfYWxsb2NhdGVkIgorKyAgICAiJHJlYWwiICJnZXQgY2hpbGRyZW4gb2YgdmxhMV9ub3Rf YWxsb2NhdGVkIgorIAorIAorIAorQEAgLTcxLDEwICs3NiwxMCBAQAorIG1pX2dkYl90ZXN0ICI1 MTAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEiIFwKKyAgICI1MTBcXF5kb25lLHZhbHVl PVwiXFwoLipcXClcIiIgImV2YWx1YXRlIGFsbG9jYXRlZCB2bGEiCisgCistbWlfY3JlYXRlX3Zh cm9ial9jaGVja2VkIHZsYTFfYWxsb2NhdGVkIHZsYTEgInJlYWxcXFwoa2luZD00XFxcKSBcXFwo NVxcXCkiIFwKKyttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgdmxhMV9hbGxvY2F0ZWQgdmxhMSAi JHJlYWwgXFxcKDVcXFwpIiBcCisgICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZsYTFfYWxsb2Nh dGVkIgorIG1pX2dkYl90ZXN0ICI1MTEtdmFyLWluZm8tdHlwZSB2bGExX2FsbG9jYXRlZCIgXAor LSAgIjUxMVxcXmRvbmUsdHlwZT1cInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNVxcXClcIiIgXAor KyAgIjUxMVxcXmRvbmUsdHlwZT1cIiRyZWFsIFxcXCg1XFxcKVwiIiBcCisgICAiaW5mbyB0eXBl IHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgorIG1pX2dkYl90ZXN0ICI1MTItdmFyLXNob3ctZm9y bWF0IHZsYTFfYWxsb2NhdGVkIiBcCisgICAiNTEyXFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIi IFwKK0BAIC04Myw3ICs4OCw3IEBACisgICAiNTEzXFxeZG9uZSx2YWx1ZT1cIlxcXFs1XFxcXVwi IiBcCisgICAiZXZhbCB2YXJpYWJsZSB2bGExX2FsbG9jYXRlZCIKKyBtaV9saXN0X2FycmF5X3Zh cm9ial9jaGlsZHJlbl93aXRoX2luZGV4ICJ2bGExX2FsbG9jYXRlZCIgIjUiICIxIiBcCistICAg ICJyZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hpbGRyZW4gb2YgdmxhMV9hbGxvY2F0ZWQiCisr ICAgICIkcmVhbCIgImdldCBjaGlsZHJlbiBvZiB2bGExX2FsbG9jYXRlZCIKKyAKKyAKKyBzZXQg YnBfbGluZW5vIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJdCitAQCAtMTM2LDEw ICsxNDEsMTAgQEAKKyAgICAgLXJlICI1ODBcXF5kb25lLHZhbHVlPVwiPG5vdCBhc3NvY2lhdGVk PlwiLioke21pX2dkYl9wcm9tcHR9JCIgeworIAlwYXNzICR0ZXN0CisgCistCW1pX2NyZWF0ZV92 YXJvYmpfY2hlY2tlZCBwdmxhMl9ub3RfYXNzb2NpYXRlZCBwdmxhMiAiPG5vdCBhc3NvY2lhdGVk PiIgXAorKwltaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJfbm90X2Fzc29jaWF0ZWQgcHZs YTIgIiRyZWFsIFxcKDosOlxcKSIgXAorIAkgICAgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSBwdmxh Ml9ub3RfYXNzb2NpYXRlZCIKKyAJbWlfZ2RiX3Rlc3QgIjU4MS12YXItaW5mby10eXBlIHB2bGEy X25vdF9hc3NvY2lhdGVkIiBcCistCSAgICAiNTgxXFxeZG9uZSx0eXBlPVwiPG5vdCBhc3NvY2lh dGVkPlwiIiBcCisrCSAgICAiNTgxXFxeZG9uZSx0eXBlPVwiJHJlYWwgXFwoOiw6XFwpXCIiIFwK KyAJICAgICJpbmZvIHR5cGUgdmFyaWFibGUgcHZsYTJfbm90X2Fzc29jaWF0ZWQiCisgCW1pX2dk Yl90ZXN0ICI1ODItdmFyLXNob3ctZm9ybWF0IHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCisgCSAg ICAiNTgyXFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKK0BAIC0xNDgsNyArMTUzLDcgQEAK KyAJICAgICI1ODNcXF5kb25lLHZhbHVlPVwiXFxcWzBcXFxdXCIiIFwKKyAJICAgICJldmFsIHZh cmlhYmxlIHB2bGEyX25vdF9hc3NvY2lhdGVkIgorIAltaV9saXN0X2FycmF5X3Zhcm9ial9jaGls ZHJlbl93aXRoX2luZGV4ICJwdmxhMl9ub3RfYXNzb2NpYXRlZCIgIjAiICIxIiBcCistCSAgICAi cmVhbFxcXChraW5kPTRcXFwpIiAiZ2V0IGNoaWxkcmVuIG9mIHB2bGEyX25vdF9hc3NvY2lhdGVk IgorKwkgICAgIiRyZWFsIiAiZ2V0IGNoaWxkcmVuIG9mIHB2bGEyX25vdF9hc3NvY2lhdGVkIgor ICAgICB9CisgICAgIC1yZSAiNTgwXFxeZXJyb3IsbXNnPVwidmFsdWUgY29udGVudHMgdG9vIGxh cmdlIFxcKFxbMC05XF0rIGJ5dGVzXFwpLioke21pX2dkYl9wcm9tcHR9JCIgeworIAkjIFVuZGVm aW5lZCBiZWhhdmlvdXIgaW4gZ2ZvcnRyYW4uCitAQCAtMTczLDkgKzE3OCw5IEBACisgICAiZXZh bHVhdGUgYXNzb2NpYXRlZCB2bGEiCisgCisgbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHB2bGEy X2Fzc29jaWF0ZWQgcHZsYTIgXAorLSAgInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNSwyXFxcKSIg ImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgorKyAgIiRyZWFsIFxcXCg1 LDJcXFwpIiAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQiCisgbWlfZ2Ri X3Rlc3QgIjU5MS12YXItaW5mby10eXBlIHB2bGEyX2Fzc29jaWF0ZWQiIFwKKy0gICI1OTFcXF5k b25lLHR5cGU9XCJyZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDUsMlxcXClcIiIgXAorKyAgIjU5MVxc XmRvbmUsdHlwZT1cIiRyZWFsIFxcXCg1LDJcXFwpXCIiIFwKKyAgICJpbmZvIHR5cGUgdmFyaWFi bGUgcHZsYTJfYXNzb2NpYXRlZCIKKyBtaV9nZGJfdGVzdCAiNTkyLXZhci1zaG93LWZvcm1hdCBw dmxhMl9hc3NvY2lhdGVkIiBcCisgICAiNTkyXFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwK K0luZGV4OiBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdHlwZXByaW50LmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy4xMS45MC4yMDE2MDkwNy5vcmlnL2dkYi90eXBlcHJpbnQuYwkyMDE2LTA5LTA3 IDIxOjUyOjEwLjI3MjU2MzA1MSArMDIwMAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90 eXBlcHJpbnQuYwkyMDE2LTA5LTA3IDIxOjUzOjIyLjcxNzIxMDQ5NyArMDIwMAorQEAgLTQ4NSw2 ICs0ODUsMjUgQEAKKyAgICAgICBwcmludGZfZmlsdGVyZWQgKCIgKi9cbiIpOyAgICAKKyAgICAg fQorIAorKyAgLyogUmVzb2x2ZSBhbnkgZHluYW1pYyB0YXJnZXQgdHlwZSwgYXMgd2UgbWlnaHQg cHJpbnQKKysgICAgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhcmdldC4KKysg ICAgIEZvciBleGFtcGxlLCBpbiBGb3J0cmFuIGFuZCBDIHdlIGFyZSBwcmludGluZyB0aGUgZGlt ZW5zaW9uIG9mIHRoZQorKyAgICAgZHluYW1pYyBhcnJheSB0aGUgcG9pbnRlciBpcyBwb2ludGlu ZyB0by4gICovCisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSCisrICAg ICAgJiYgaXNfZHluYW1pY190eXBlICh0eXBlKSA9PSAxKQorKyAgICB7CisrICAgICAgQ09SRV9B RERSIGFkZHI7CisrICAgICAgaWYgKE5VTEwgIT0gVFlQRV9EQVRBX0xPQ0FUSU9OIChUWVBFX1RB UkdFVF9UWVBFKHR5cGUpKSkKKysJYWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7CisrICAgICAg ZWxzZQorKwlhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKKysKKysgICAgICBpZiAoYWRk ciAhPSAwCisrCSAgJiYgdHlwZV9ub3RfYXNzb2NpYXRlZCAodHlwZSkgPT0gMCkKKysJVFlQRV9U QVJHRVRfVFlQRSAodHlwZSkgPSByZXNvbHZlX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSksCisrCQkJCQkJCU5VTEwsIGFkZHIpOworKyAgICB9CisrCisgICBMQV9QUklOVF9U WVBFICh0eXBlLCAiIiwgZ2RiX3N0ZG91dCwgc2hvdywgMCwgJmZsYWdzKTsKKyAgIHByaW50Zl9m aWx0ZXJlZCAoIlxuIik7CisgCitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3ZhbG9w cy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMTEuOTAuMjAxNjA5MDcub3JpZy9nZGIvdmFsb3Bz LmMJMjAxNi0wOS0wNyAyMTo1Mjo1My43MDc5NTEyMzggKzAyMDAKKysrKyBnZGItNy4xMS45MC4y MDE2MDkwNy9nZGIvdmFsb3BzLmMJMjAxNi0wOS0wNyAyMTo1MzoyMi43MTcyMTA0OTcgKzAyMDAK K0BAIC0xNTYyLDYgKzE1NjIsMTkgQEAKKyAgIGlmIChUWVBFX0NPREUgKGJhc2VfdHlwZSkgPT0g VFlQRV9DT0RFX1BUUikKKyAgICAgeworICAgICAgIHN0cnVjdCB0eXBlICplbmNfdHlwZTsKKysg ICAgICBDT1JFX0FERFIgYWRkcjsKKysKKysgICAgICBpZiAodHlwZV9ub3RfYXNzb2NpYXRlZCAo YmFzZV90eXBlKSkKKysgICAgICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMg b2YgYSBub3QgYXNzb2NpYXRlZCBwb2ludGVyLiIpKTsKKysKKysgICAgICBpZiAoTlVMTCAhPSBU WVBFX0RBVEFfTE9DQVRJT04gKFRZUEVfVEFSR0VUX1RZUEUgKGJhc2VfdHlwZSkpKQorKwlhZGRy ID0gdmFsdWVfYWRkcmVzcyAoYXJnMSk7CisrICAgICAgZWxzZQorKwlhZGRyID0gdmFsdWVfYXNf YWRkcmVzcyAoYXJnMSk7CisrCisrICAgICAgaWYgKGFkZHIgIT0gMCkKKysJVFlQRV9UQVJHRVRf VFlQRSAoYmFzZV90eXBlKSA9CisrCSAgICByZXNvbHZlX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJH RVRfVFlQRSAoYmFzZV90eXBlKSwgTlVMTCwgYWRkcik7CisgCisgICAgICAgLyogV2UgbWF5IGJl IHBvaW50aW5nIHRvIHNvbWV0aGluZyBlbWJlZGRlZCBpbiBhIGxhcmdlciBvYmplY3QuCisgICAg ICAgICAgR2V0IHRoZSByZWFsIHR5cGUgb2YgdGhlIGVuY2xvc2luZyBvYmplY3QuICAqLworQEAg LTE1NzcsOCArMTU5MCw3IEBACisgICAgICAgZWxzZQorIAkvKiBSZXRyaWV2ZSB0aGUgZW5jbG9z aW5nIG9iamVjdCBwb2ludGVkIHRvLiAgKi8KKyAJYXJnMiA9IHZhbHVlX2F0X2xhenkgKGVuY190 eXBlLCAKKy0JCQkgICAgICAodmFsdWVfYXNfYWRkcmVzcyAoYXJnMSkKKy0JCQkgICAgICAgLSB2 YWx1ZV9wb2ludGVkX3RvX29mZnNldCAoYXJnMSkpKTsKKysJCQkgICAgICAoYWRkciAtIHZhbHVl X3BvaW50ZWRfdG9fb2Zmc2V0IChhcmcxKSkpOworIAorICAgICAgIGVuY190eXBlID0gdmFsdWVf dHlwZSAoYXJnMik7CisgICAgICAgcmV0dXJuIHJlYWRqdXN0X2luZGlyZWN0X3ZhbHVlX3R5cGUg KGFyZzIsIGVuY190eXBlLCBiYXNlX3R5cGUsIGFyZzEpOworSW5kZXg6IGdkYi03LjExLjkwLjIw MTYwOTA3L2dkYi92YWxwcmludC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMTEuOTAuMjAxNjA5 MDcub3JpZy9nZGIvdmFscHJpbnQuYwkyMDE2LTA5LTA3IDIxOjUyOjEwLjI3MzU2MzA2MCArMDIw MAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi92YWxwcmludC5jCTIwMTYtMDktMDcgMjE6 NTM6MjIuNzE4MjEwNTA2ICswMjAwCitAQCAtMTE0MSwxMiArMTE0MSw2IEBACisgICAgICAgcmV0 dXJuIDA7CisgICAgIH0KKyAKKy0gIGlmICh0eXBlX25vdF9hc3NvY2lhdGVkICh2YWx1ZV90eXBl ICh2YWwpKSkKKy0gICAgeworLSAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFt KTsKKy0gICAgICByZXR1cm4gMDsKKy0gICAgfQorLQorICAgaWYgKHR5cGVfbm90X2FsbG9jYXRl ZCAodmFsdWVfdHlwZSAodmFsKSkpCisgICAgIHsKKyAgICAgICB2YWxfcHJpbnRfbm90X2FsbG9j YXRlZCAoc3RyZWFtKTsKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDk5 NzFjYWIuLjRmMGQ1MTUgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0y MiwxMyArMjIsMTMgQEAgTmFtZTogJXs/c2NsX3ByZWZpeH1nZGIKICVnbG9iYWwgc25hcHNyYyAg ICAyMDE2MDgwMQogIyBTZWUgdGltZXN0YW1wIG9mIHNvdXJjZSBnbnVsaWIgaW5zdGFsbGVkIGlu dG8gZ2RiL2dudWxpYi8gLgogJWdsb2JhbCBzbmFwZ251bGliIDIwMTUwODIyCi0lZ2xvYmFsIHRh cmRhdGUgMjAxNjA5MDQKKyVnbG9iYWwgdGFyZGF0ZSAyMDE2MDkwNwogJWdsb2JhbCB0YXJuYW1l IGdkYi03LjExLjkwLiV7dGFyZGF0ZX0KIFZlcnNpb246IDcuMTIKIAogIyBUaGUgcmVsZWFzZSBh bHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4K ICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBk ZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiAwLjEyLiV7 dGFyZGF0ZX0lez9kaXN0fQorUmVsZWFzZTogMC4xMy4le3RhcmRhdGV9JXs/ZGlzdH0KIAogTGlj ZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysgd2l0aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQ THYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTCsgYW5kIExHUEx2MisgYW5kIEJTRCBhbmQgUHVi bGljIERvbWFpbiBhbmQgR0ZETAogR3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwpAQCAtNTIx LDE2ICs1MjEsOCBAQCBQYXRjaDg0ODogZ2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNo CiBQYXRjaDg1MjogZ2RiLWduYXQtZHdhcmYtY3Jhc2gtM29mMy5wYXRjaAogCiAjIFZMQSAoRm9y dHJhbiBkeW5hbWljIGFycmF5cykgZnJvbSBJbnRlbCArIGFyY2hlci1qYW5rcmF0b2NodmlsLXZs YSB0ZXN0cy4KLVBhdGNoMTA1ODogZ2RiLXZsYS1pbnRlbC1icmFuY2gucGF0Y2gKLVBhdGNoMTA1 OTogZ2RiLXZsYS1pbnRlbC1icmFuY2gtZml4LXN0cmlkZS0xb2YyLnBhdGNoCi1QYXRjaDEwNjA6 IGdkYi12bGEtaW50ZWwtYnJhbmNoLWZpeC1zdHJpZGUtMm9mMi5wYXRjaAotUGF0Y2gxMTMyOiBn ZGItdmxhLWludGVsLTFvZjcucGF0Y2gKLVBhdGNoMTEzMzogZ2RiLXZsYS1pbnRlbC0yb2Y3LnBh dGNoCi1QYXRjaDExMzQ6IGdkYi12bGEtaW50ZWwtM29mNy5wYXRjaAotUGF0Y2gxMTM1OiBnZGIt dmxhLWludGVsLTRvZjcucGF0Y2gKLVBhdGNoMTEzNjogZ2RiLXZsYS1pbnRlbC01b2Y3LnBhdGNo Ci1QYXRjaDExMzc6IGdkYi12bGEtaW50ZWwtNm9mNy5wYXRjaAotUGF0Y2gxMTM4OiBnZGItdmxh LWludGVsLTdvZjcucGF0Y2gKK1BhdGNoMTA1ODogZ2RiLXZsYS1pbnRlbC1mb3J0cmFuLXN0cmlk ZXMucGF0Y2gKK1BhdGNoMTEzMjogZ2RiLXZsYS1pbnRlbC1mb3J0cmFuLXZsYS1zdHJpbmdzLnBh dGNoCiBQYXRjaDg4OTogZ2RiLXZsYS1pbnRlbC1zdHJpbmdidC1maXgucGF0Y2gKIFBhdGNoODg3 OiBnZGItYXJjaGVyLXZsYS10ZXN0cy5wYXRjaAogUGF0Y2g4ODg6IGdkYi12bGEtaW50ZWwtdGVz dHMucGF0Y2gKQEAgLTc4OSwxNSArNzgxLDcgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mg cm0gLWYKICNwYXRjaDIzMiAtcDEKICVwYXRjaDM0OSAtcDEKICVwYXRjaDEwNTggLXAxCi0lcGF0 Y2gxMDU5IC1wMQotJXBhdGNoMTA2MCAtcDEKICVwYXRjaDExMzIgLXAxCi0lcGF0Y2gxMTMzIC1w MQotJXBhdGNoMTEzNCAtcDEKLSVwYXRjaDExMzUgLXAxCi0lcGF0Y2gxMTM2IC1wMQotJXBhdGNo MTEzNyAtcDEKLSVwYXRjaDExMzggLXAxCiAlcGF0Y2g4ODkgLXAxCiAlcGF0Y2gxIC1wMQogCkBA IC0xNDY4LDYgKzE0NTIsMTAgQEAgdGhlbgogZmkKIAogJWNoYW5nZWxvZworKiBXZWQgU2VwICA3 IDIwMTYgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4xMi0w LjEzLjIwMTYwOTA3LmZjMjUKKy0gUmViYXNlIHRvIEZTRiBHREIgNy4xMS45MC4yMDE2MDkwNyAo cHJlLTcuMTIgYnJhbmNoIHNuYXBzaG90KS4KKy0gUmViYXNlIEludGVsIFZMQSBwYXRjaHNldC4K KwogKiBXZWQgU2VwICA3IDIwMTYgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+IC0gNy4xMi0wLjEyLjIwMTYwOTA0LmZjMjUKIC0gW3JoZWw2KzddIEZpeCBjb21wYXRp YmlsaXR5IG9mIGJpc29uIDwzLjEgYW5kIGdjYyA+PTYuCiAKCmRpZmYgLS1naXQgYS9zb3VyY2Vz IGIvc291cmNlcwppbmRleCBjMTk1MGE1Li42YTBiMGYwIDEwMDY0NAotLS0gYS9zb3VyY2VzCisr KyBiL3NvdXJjZXMKQEAgLTEsMyArMSwzIEBACiAxMzFkMGRmZDIwY2Q2MDE0YzE2OGZiY2FiOWJl MmM0MyAgZ2RiLWxpYnN0ZGMrKy12My1weXRob24tNi4xLjEtMjAxNjA4MTcudGFyLnh6CiAyOWVm YzA4MjE5ZDlkNmEwNTM2ZDU4Zjk4MDdjODcyMiAgdjEuNS50YXIuZ3oKLTY3ZTJhNWE1YzRmYWVh ZDE4ODM3ZmE1NGFlOTA1NzZhICBnZGItNy4xMS45MC4yMDE2MDkwNC50YXIueHoKKzczMWYwOWQ3 ZTNiNWQ0MGFmMzMxOGEyOTcwZGIwY2M1ICBnZGItNy4xMS45MC4yMDE2MDkwNy50YXIueHoK