From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v7 04/15] argo: init, destroy and soft-reset, with enable command line opt Date: Wed, 30 Jan 2019 20:28:09 -0800 Message-ID: <1548908900-1128-5-git-send-email-christopher.w.clark@gmail.com> References: <1548908900-1128-1-git-send-email-christopher.w.clark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gp3y6-0007Z2-Fb for xen-devel@lists.xenproject.org; Thu, 31 Jan 2019 04:28:50 +0000 Received: by mail-it1-x141.google.com with SMTP id d11so1852817itf.2 for ; Wed, 30 Jan 2019 20:28:48 -0800 (PST) In-Reply-To: <1548908900-1128-1-git-send-email-christopher.w.clark@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Stefano Stabellini , Wei Liu , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , James McKenzie , Eric Chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org SW5pdGlhbGlzZXMgYmFzaWMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJmb3JtcyB0ZWFyZG93biBv ZiBhcmdvIHN0YXRlCmZvciBkb21haW4gc2h1dGRvd24uCgpJbmNsdXNpb24gb2YgdGhlIEFyZ28g aW1wbGVtZW50YXRpb24gaXMgZGVwZW5kZW50IG9uIENPTkZJR19BUkdPLgoKSW50cm9kdWNlcyBh IG5ldyBYZW4gY29tbWFuZCBsaW5lIHBhcmFtZXRlciAnYXJnbyc6IGJvb2wgdG8gZW5hYmxlL2Rp c2FibGUKdGhlIGFyZ28gaHlwZXJjYWxsLiBEZWZhdWx0cyB0byBkaXNhYmxlZC4KCk5ldyBoZWFk ZXJzOgogIHB1YmxpYy9hcmdvLmg6IHdpdGggZGVmaW5pb25zIG9mIGFkZHJlc3NlcyBhbmQgcmlu ZyBzdHJ1Y3R1cmUsIGluY2x1ZGluZwogIGluZGV4ZXMgZm9yIGF0b21pYyB1cGRhdGUgZm9yIGNv bW11bmljYXRpb24gYmV0d2VlbiBkb21haW4gYW5kIGh5cGVydmlzb3IuCgogIHhlbi9hcmdvLmg6 IHRvIGV4cG9zZSB0aGUgaG9va3MgZm9yIGludGVncmF0aW9uIGludG8gZG9tYWluIGxpZmVjeWNs ZToKICAgIGFyZ29faW5pdDogcGVyLWRvbWFpbiBpbml0IG9mIGFyZ28gZGF0YSBzdHJ1Y3R1cmVz IGZvciBkb21haW5fY3JlYXRlLgogICAgYXJnb19kZXN0cm95OiB0ZWFyZG93biBmb3IgZG9tYWlu X2Rlc3Ryb3kgYW5kIHRoZSBlcnJvciBleGl0CiAgICAgICAgICAgICAgICAgIHBhdGggb2YgZG9t YWluX2NyZWF0ZS4KICAgIGFyZ29fc29mdF9yZXNldDogcmVzZXQgb2YgZG9tYWluIHN0YXRlIGZv ciBkb21haW5fc29mdF9yZXNldC4KCkFkZHMgYSBuZXcgZmllbGQgdG8gc3RydWN0IGRvbWFpbjog c3RydWN0IGFyZ29fZG9tYWluICphcmdvOwoKSW4gYWNjb3JkYW5jZSB3aXRoIHJlY2VudCB3b3Jr IG9uIF9kb21haW5fZGVzdHJveSwgYXJnb19kZXN0cm95IGlzCmlkZW1wb3RlbnQuIEl0IHdpbGwg dGVhciBkb3duOiBhbGwgcmluZ3MgcmVnaXN0ZXJlZCBieSB0aGlzIGRvbWFpbiwgYWxsCnJpbmdz IHdoZXJlIHRoaXMgZG9tYWluIGlzIHRoZSBzaW5nbGUgc2VuZGVyIChpZS4gc3BlY2lmaWVkIHBh cnRuZXIsCm5vbi13aWxkY2FyZCByaW5ncyksIGFuZCBhbGwgcGVuZGluZyBub3RpZmljYXRpb25z IHdoZXJlIHRoaXMgZG9tYWluIGlzCmF3YWl0aW5nIHNpZ25hbCBhYm91dCBhdmFpbGFibGUgc3Bh Y2UgaW4gdGhlIHJpbmdzIG9mIG90aGVyIGRvbWFpbnMuCgpBIGNvdW50IHdpbGwgYmUgbWFpbnRh aW5lZCBvZiB0aGUgbnVtYmVyIG9mIHJpbmdzIHRoYXQgYSBkb21haW4gaGFzCnJlZ2lzdGVyZWQg aW4gb3JkZXIgdG8gbGltaXQgaXQgYmVsb3cgdGhlIGZpeGVkIG1heGltdW0gbGltaXQgZGVmaW5l ZCBoZXJlLgoKTWFjcm9zIGFyZSBkZWZpbmVkIHRvIHZlcmlmeSB0aGUgaW50ZXJuYWwgbG9ja2lu ZyBzdGF0ZSB3aXRoaW4gdGhlIGFyZ28KaW1wbGVtZW50YXRpb24uIFRoZSBtYWNyb3MgYXJlIEFT U0VSVGVkIG9uIGVudHJ5IHRvIGZ1bmN0aW9ucyB0byB2YWxpZGF0ZQphbmQgZG9jdW1lbnQgdGhl IHJlcXVpcmVkIGxvY2sgc3RhdGUgcHJpb3IgdG8gY2FsbGluZy4KClRoZSBoYXNoIGZ1bmN0aW9u IGZvciB0aGUgaGFzaHRhYmxlcyB0aGF0IGhvbGQgcmluZyBzdGF0ZSBpcyBkZXJpdmVkIGZyb20K dGhlIHN0cmluZyBoYXNoaW5nIGZ1bmN0aW9uIGRqYjIgKGh0dHA6Ly93d3cuY3NlLnlvcmt1LmNh L35vei9oYXNoLmh0bWwpCmJ5IERhbmllbCBKLiBCZXJuc3RlaW4uIEJhc2ljIHRlc3Rpbmcgd2l0 aCBhIGxpbWl0ZWQgbnVtYmVyIG9mIGRvbWFpbnMgYW5kCnBvcnRzIGhhcyBzaG93biByZWFzb25h YmxlIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIHRhYmxlIHNpemUuCgpUaGUgc29mdHdhcmUgbGljZW5z ZSBvbiB0aGUgcHVibGljIGhlYWRlciBpcyB0aGUgQlNEIGxpY2Vuc2UsIHN0YW5kYXJkCnByb2Nl ZHVyZSBmb3IgdGhlIHB1YmxpYyBYZW4gaGVhZGVycy4gVGhlIHB1YmxpYyBoZWFkZXIgd2FzIG9y aWdpbmFsbHkKcG9zdGVkIHVuZGVyIGEgR1BMIGxpY2Vuc2UgYXQ6IFsxXToKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDEzLTA1L21zZzAyNzEw Lmh0bWwKClRoZSBmb2xsb3dpbmcgQUNLIGJ5IExhcnMgS3VydGggaXMgdG8gY29uZmlybSB0aGF0 IG9ubHkgcGVvcGxlIGJlaW5nCmVtcGxveWVlcyBvZiBDaXRyaXggY29udHJpYnV0ZWQgdG8gdGhl IGhlYWRlciBmaWxlcyBpbiB0aGUgc2VyaWVzIHBvc3RlZCBhdApbMV0gYW5kIHRoYXQgdGh1cyB0 aGUgY29weXJpZ2h0IG9mIHRoZSBmaWxlcyBpbiBxdWVzdGlvbiBpcyBmdWxseSBvd25lZCBieQpD aXRyaXguIFRoZSBBQ0sgYWxzbyBjb25maXJtcyB0aGF0IENpdHJpeCBpcyBoYXBweSBmb3IgdGhl IGhlYWRlciBmaWxlcyB0bwpiZSBwdWJsaXNoZWQgdW5kZXIgYSBCU0QgbGljZW5zZSBpbiB0aGlz IHNlcmllcyAod2hpY2ggaXMgYmFzZWQgb24gWzFdKS4KClNpZ25lZC1vZmYtYnk6IENocmlzdG9w aGVyIENsYXJrIDxjaHJpc3RvcGhlci5jbGFyazZAYmFlc3lzdGVtcy5jb20+CkFja2VkLWJ5OiBM YXJzIEt1cnRoIDxsYXJzLmt1cnRoQGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBSb3NzIFBoaWxp cHNvbiA8cm9zcy5waGlsaXBzb25Ab3JhY2xlLmNvbT4KVGVzdGVkLWJ5OiBDaHJpcyBQYXR0ZXJz b24gPHBhdHRlcnNvbmNAYWluZm9zZWMuY29tPgotLS0KdjYgIzA5IEphbjogaW50cm9kdWNlIGNv bXBhdCBBQkkKdjYgIzA0IEphbjogeGxhdC5sc3Q6IG1vdmUgYXJnbyBzdHJ1Y3QgZW50cmllcyB0 byBhbHBoYWJldGljYWwgcG9zaXRpb24KdjYgIzA0IFJvZ2VyOiB1c2UgbGlzdF9mb3JfZWFjaF9l bnRyeXtfc2FmZX0gZm9yIGxvb3BpbmcKdjUgIzA0IFJvZ2VyOiB0d2VhayBjb21tYW5kIGxpbmUg ZG9jOiByZW1vdmUgc3RhdGVtZW50IGFib3V0IHRvcCBsZXZlbCBib29sCnY1OiBhZGQgY29tcGF0 IHZhbGlkYXRpb24gbWFjcm9zIHRvIHByaW1hcnkgc291cmNlIGZpbGU6IGNvbW1vbi9hcmdvLmMK djU6IGRyb3BwZWQgZXh0ZXJuYWwgZmlsZSBmb3IgY29tcGF0IG1hY3JvczogY29tbW9uL2NvbXBh dC9hcmdvLmMKdjQ6IHJlbW92ZWQgRklYTUUgZm9yIHJlbW92aW5nIGFyZ29fZGVzdHJveSBmcm9t IGRvbWFpbl9raWxsCnY0IEphbjogYW1lbmQgdGhlIGNvbW1hbmQgbGluZSBkb2MgdGV4dCByZWZl cnJpbmcgdG8gYnVpbGQgY29uZmlndXJhdGlvbgp2NCA6IHVzZSBzdGFuZGFyZCBkYXRhIHN0cnVj dHVyZXMgYXMgcGVyIGNvbW1vbiBjb2RlCnY0IEphbjogcmVwbGFjZSBoYXNoX2luZGV4IHdpdGgg ZGpiMi1kZXJpdmVkIGhhc2ggYWxnb3JpdGhtCnY0IEFuZHJldzogc3dpdGNoIGFyZ28gY29tbWFu ZCBsaW5lIG9wdGlvbiB0byBsaXN0IGFyZ289PGJvb2w+CnY0ICMwNCBSb2dlcjogZHJvcCB1bm5l ZWRlZCBpbml0IG9mIHJpbmdfY291bnQgaW4gYXJnb19kb21haW5faW5pdAp2NCAjMDQgUm9nZXI6 IHJlcGxhY2UgaWYgKHJpbmdfaW5mby0+bWZucykgd2l0aCBBU1NFUlRzIGluIHJpbmdfdW5tYXAK djQgIzA0IFJvZ2VyOiByZXdyaXRlIHRoZSBsb2NraW5nIHZlcmlmaWNhdGlvbiBtYWNyb3MKdjQg IzA0IFJvZ2VyOiBtYWtlIEwxIGxvY2sgZGVzY3JpcHRpb24gY29tbWVudCBjbGVhcmVyIGFib3V0 IFIoTDEpIGFuZCBXKEwxKQp2NCBBbmRyZXc6IGZpeCBzcGxpdCBvZiBkcHJpbnRrIGluIHJpbmdf bWFwX2luZm8gYWNyb3NzIHY0IGNvbW1pdHMKdjMgIzA0IEFuZHJldzogdXNlIHh6YWxsb2MgZm9y IHN0cnVjdCBhcmdvX2RvbWFpbiBpbiBhcmdvX2luaXQKdjMgIzA0IEFuZHJldzogcmVmZXJlbmNl IENPTkZJR19BUkdPIGluIHRoZSBjb21tYW5kIGxpbmUgZG9jdW1lbnRhdGlvbgp2MyAjMDcgSmFu OiByZW5hbWUgcmluZ19maW5kX2luZm8gdG8gZmluZF9yaW5nX2luZm8KdjMgIzA0IEFuZHJldzog ZG9uJ3QgdHJ1bmNhdGUgYXJncyBkb19hcmdvX29wIHByaW50awp2MyAjMDcgSmFuOiBmaXggbnVt ZXJpYyBlbnRyaWVzIGluIHByaW50ayBmb3JtYXQgc3RyaW5ncwp2MyAjMTAgUm9nZXI6IG1vdmUg ZmluZCBmdW5jdGlvbnMgdG8gdG9wIG9mIGZpbGUgYW5kIGRyb3AgcHJvdG90eXBlcwp2MyAjMDQg SmFuOiBtZWxkIGNvbXBhdCBjaGVjayBmb3IgaHlwZXJjYWxsIGFyZyB0eXBlcwp2MyAjMDQgUm9n ZXIvSmFuOiBtYWtlIGxvY2sgbmFtZXMgY2xlYXJlciBhbmQgYXNzZXJ0IHRoZWlyIHN0YXRlCnYz ICMwNCBKYW46IHBvcnQgLT4gYXBvcnQgd2l0aCB0eXBlOyBkaXN0aW5ndWlzaCBhcmdvIHBvcnQg ZnJvbSBldnRjaG4KdjMgIzA0IEphbjogcmVvcmRlciBjYWxsIHRvIGFyZ29faW5pdF9kb21haW4g aW4gYXJnb19pbml0CnYzICMwNCBKYW46IHJpbmdfcmVtb3ZlX21mbnM6IHplcm8gY291bnQgYmVm b3JlIGZyZWVpbmcgYXJyYXlzCnYzICMwNCBKYXNvbi9Sb2dlcjogc29mdF9yZXNldDogY2FuIGFz c3VtZSByZWluaXQgaXMgb2sgaWYgZC0+YXJnbyBzZXQKdjMgIzA0IFJvZ2VyOiByZW1vdmUgdW51 c2VkIGFuZCBjb25mdXNpbmcgZC0+YXJnb19sb2NrCnYzICMwNCBSb2dlcjogYWRkIHNpbXBsZSBp bmxpbmVzIGluIHhlbi9hcmdvLmgsIGRyb3AgaWZkZWYgQ09ORklHX0FSR08KdjMgIzA0IFJvZ2Vy OiBzaW1wbGVyIHJldHVybiAtRU9QTk9UU1VQUCBpbiBkb19hcmdvX29wCnYzICMwNCBSb2dlcjog YWRkIGNvbnN0IHRvIGRvbWFpbiBhcmcgdG8gcmluZ19yZW1vdmVfaW5mbwp2MyAjMDQgUm9nZXI6 IHVzZSBYRlJFRQp2MyAjMDQgUm9nZXI6IG5ld2xpbmUgZml4IGluIHdpbGRjYXJkX3BlbmRpbmdf bGlzdF9yZW1vdmUKdjMgIzA0IFJvZ2VyOiBtZm5fbWFwcGluZzogdm9pZCogaW5zdGVhZCBvZiB1 aW50OF90Kgp2MyAjMDQgUm9nZXI6IGRyb3AgbnBhZ2VzIHN0cnVjdCBtZW1iZXIgaW4gYXJnb19y aW5nX2luZm87IHVzZSBsZW4KdjMgIzA0IFJvZ2VyL0phbjogZHJvcCBtYW55IGZpeGVkIHdpZHRo IHR5cGVzIGluIGludGVybmFsIHN0cnVjdHMKdjMgIzA0IEphc29uL0phbjogZHJvcCBwYWQgYW5k IGZpeGVkIHdpZHRoIHR5cGUgaW4gcGVuZGluZ19lbnQgc3RydWN0CnYzICMwNCBFcmljOiBtb3Zl ZCByaW5nX2ZpbmRfaW5mbyBmcm9tIHJlZ2lzdGVyIG9wIGludG8gdGhpcyBjb21taXQKdjMgbW92 ZWQgaGFzaF9pbmRleCBmdW5jdGlvbiwgbm9zcGVjIGluY2x1ZGUgZnJvbSByZWdpc3RlciBvcCB0 byB0aGlzIGNvbW1pdAp2MyBtb3ZlZCBYRU5fQVJHT19ET01JRF9BTlkgZGVmbiBmcm9tIHJlZ2lz dGVyIG9wIGludG8gdGhpcyBjb21taXQKdjMgYWRkZWQgI2luY2x1ZGUgPHhlbi9zY2hlZC5oPiB0 byA8eGVuL2FyZ28uaD4gZm9yIGRvbWFpbiBzdHJ1Y3QgZGVmbgp2MyBmZWVkYmFjayAjMDQgUm9n ZXI6IHJlb3JkZXIgI2luY2x1ZGVzIHRvIGFscGhhYmV0aWNhbCBvcmRlcgp2MyBBZGRlZCBSb3Nz J3MgUmV2aWV3ZWQtYnkuCnYyIHJld3JpdGUgbG9ja2luZyBleHBsYW5hdGlvbiBjb21tZW50CnYy IGhlYWRlciBjb3B5cmlnaHQgbGluZSBub3cgaW5jbHVkZXMgMjAxOQp2MiBzZWxmOiB1c2Ugcmlu Z19pbmZvIGJhY2twb2ludGVyIGluIHBlbmRpbmdfZW50IHRvIG1haW50YWluIG5wZW5kaW5nCnYy IHNlbGY6IHJlbmFtZSBhbGxfcmluZ3NfcmVtb3ZlX2luZm8gdG8gZG9tYWluX3JpbmdzX3JlbW92 ZV9hbGwKdjIgZmVlZGJhY2sgSmFuOiBkcm9wIGNvb2tpZSwgaW1wbGVtZW50IHRlYXJkb3duCnYy IHNlbGY6IGFkZCBucGVuZGluZyB0byB0cmFjayBudW1iZXIgb2YgcGVuZGluZyBlbnRyaWVzIHBl ciByaW5nCnYyIHNlbGY6IGFtZW5kIGNvbW1lbnQgb24gbG9ja2luZzsgZHJvcCBzZWN0aW9uIGNv bW1lbnRzCnYyIGNvb2tpZV9lcTogdGVzdCBsb3cgYml0cyBmaXJzdCBhbmQgdXNlIGxpa2VseSBv biBoaWdoIGJpdHMKdjIgc2VsZjogT1ZFUkhBVUwKdjIgc2VsZjogcy9hcmdvX3BlbmRpbmdfZW50 L3BlbmRpbmdfZW50L2cKdjIgc2VsZjogZHJvcCBwZW5kaW5nX3JlbW92ZV9lbnQsIGlubGluZSBh dCBzaW5nbGUgY2FsbCBzaXRlCnYxIGZlZWRiYWNrIFJvZ2VyLCBKYW46IGRyb3AgYXJnbyBwcmVm aXggb24gc3RhdGljIGZ1bmN0aW9ucwp2MiAjNCBMYXJzOiBhZGQgQWNrZWQtYnkgYW5kIGRldGFp bHMgdG8gY29tbWl0IG1lc3NhZ2UuCnYyIGZlZWRiYWNrICM5IEphbjogZG9jdW1lbnQgYXJnbyBi b290IG9wdCBpbiB4ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCnYyIGJ1Z2ZpeDogeHNtIHVzZSBp biBzb2Z0LXJlc2V0IHByaW9yIHRvIGludHJvZHVjdGlvbgp2MiBmZWVkYmFjayAjOSBKYW46IGRy b3AgJ21lc3NhZ2UnIGZyb20gZG9fYXJnb19tZXNzYWdlX29wCnYxICM1IGZlZWRiYWNrIFBhdWw6 IGluaXQvZGVzdHJveSB1bnNpZ25lZCwgYnJhY2tldHMgYW5kIHdoaXRlc3BhY2UgZml4ZXMKdjEg IzUgZmVlZGJhY2sgUGF1bDogVXNlIG1mbl9lcSBmb3IgY29tcGFyaW5nIG1mbnMuCnYxICM1IGZl ZWRiYWNrIFBhdWw6IGluaXQvZGVzdHJveSA6IHVzZSBjdXJyZAp2MSAjNiAoIzUpIGZlZWRiYWNr IEphbjogaW5pdC9kZXN0cm95OiBzL0VOT1NZUy9FT1BOT1RTVVBQLwp2MSAjNiBmZWVkYmFjayBQ YXVsOiBGb2xkZWQgcGF0Y2ggNiBpbnRvIHBhdGNoIDUuCnYxICM2IGZlZWRiYWNrIEphbjogZHJv cCBvcHRfYXJnb19lbmFibGVkIGluaXRpYWxpemVyCnYxICQ2IGZlZWRiYWNrIEphbjogcy9FTk9T WVMvRU9QTk9UU1VQUC9nIGFuZCBkcm9wIHVzZWxlc3MgZHByaW50awp2MS4gIzUgZmVlZGJhY2sg UGF1bDogY2hhbmdlIHRoZSBsaWNlbnNlIG9uIHB1YmxpYyBoZWFkZXIgdG8gQlNECi0gYWNrIGZy b20gTGFycyBhdCBDaXRyaXguCnYxLiBzZWxmLCBKYW46IGRyb3AgdW5uZWNlc3NhcnkgeGVuIGlu Y2x1ZGUgZnJvbSBzY2hlZC5oCnYxLiBzZWxmLCBKYW46IGRyb3AgaW5jbHVzaW9uIG9mIHB1Ymxp YyBhcmdvLmggaW4gcHJpdmF0ZSBvbmUKdjEuIHNlbGYsIEphbjogYWRkIGluY2x1ZGUgb2YgcHVi bGljIGFyZ28uaCB0byBhcmdvLmMKdjEuIHNlbGYsIEphbjogZHJvcCBmd2QgZGVjbCBvZiBhcmdv X2RvbWFpbiBpbiBwcml2IGhlYWRlcgp2MS4gUGF1bC9zZWxmL0phbjogYWRkIGRhdGEgc3RydWN0 dXJlcyB0byB4bGF0LmxzdCBhbmQgY29tcGF0L2FyZ28uaCB0byBNYWtlZmlsZQp2MS4gc2VsZjog cmVtb3ZlZCBhbGxvY2F0aW9uIG9mIGV2ZW50IGNoYW5uZWwgc2luY2Ugc3dpdGNoaW5nIHRvIFZJ UlEKdjEuIHNlbGY6IGRyb3AgdHlwZXMuaCBpbmNsdWRlIGZyb20gcHJpdmF0ZSBhcmdvLmgKdjE6 IHJlb3JkZXIgcHVibGljIGFyZ28gaW5jbHVkZSBwb3NpdGlvbgp2MTogIzEzIGZlZWRiYWNrIEph bjogcHVibGljIG5hbWVzcGFjZTogcHJlZml4IHdpdGggeGVuCnYxOiBzZWxmOiByZW5hbWUgcGVu ZGluZyBlbnQgImlkIiB0byAiZG9tYWluX2lkIgp2MTogc2VsZjogYWRkIGRvbWFpbl9jb29raWUg dG8gZW50IHN0cnVjdAp2MS4gIzE1IGZlZWRiYWNrIEphbjogbWFrZSBjbWQgdW5zaWduZWQKdjEu ICMxNSBmZWVkYmFjayBKYW46IG1ha2UgaSBsb29wIHZhcmlhYmxlIHVuc2lnbmVkCnYxOiBzZWxm OiBhZGp1c3QgZHByaW50a3MgaW4gaW5pdCwgZGVzdHJveQp2MTogIzE4IGZlZWRiYWNrIEphbjog bWVsZCBtYXggcmluZyBjb3VudCBsaW1pdAp2MTogc2VsZjogdXNlIHR5cGUgbm90IHN0cnVjdCBp biBwdWJsaWMgZGVmbiwgYWZmZWN0cyBjb21wYXQgZ2VuIGhlYWRlcgp2MTogZmVlZGJhY2sgIzE1 IEphbjogaGFuZGxlIHVwcGVyLWhhbHZlcyBvZiBoeXBlcmNhbGwgYXJncwp2MTogYWRkIGNvbW1l bnQgZXhwbGFpbmluZyB0aGUgJ21hZ2ljJyBmaWVsZAp2MTogc2VsZiArIEphbiBmZWVkYmFjazog aW1wbGVtZW50IHNvZnQgcmVzZXQKdjE6IGZlZWRiYWNrICMxMyBSb2dlcjogdXNlIEFTU0VSVF9V TlJFQUNIQUJMRQoKIGRvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYyB8ICAxMyArCiB4 ZW4vY29tbW9uL2FyZ28uYyAgICAgICAgICAgICAgICAgfCA2MzAgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KIHhlbi9jb21tb24vZG9tYWluLmMgICAgICAgICAgICAgICB8 ICAgOSArCiB4ZW4vaW5jbHVkZS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2lu Y2x1ZGUvcHVibGljL2FyZ28uaCAgICAgICAgIHwgIDY0ICsrKysKIHhlbi9pbmNsdWRlL3hlbi9h cmdvLmggICAgICAgICAgICB8ICA0NCArKysKIHhlbi9pbmNsdWRlL3hlbi9zY2hlZC5oICAgICAg ICAgICB8ICAgNSArCiB4ZW4vaW5jbHVkZS94bGF0LmxzdCAgICAgICAgICAgICAgfCAgIDIgKwog OCBmaWxlcyBjaGFuZ2VkLCA3NjYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCiBjcmVhdGUgbW9kZSAxMDA2 NDQgeGVuL2luY2x1ZGUveGVuL2FyZ28uaAoKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29t bWFuZC1saW5lLnBhbmRvYyBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYwppbmRl eCA2YTMzNzc1Li42MDVjNTQ0IDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGlu ZS5wYW5kb2MKKysrIGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9jCkBAIC0xODIs NiArMTgyLDE5IEBAIFBlcm1pdCBYZW4gdG8gdXNlICJBbHdheXMgUnVubmluZyBBUElDIFRpbWVy IiBzdXBwb3J0IG9uIGNvbXBhdGlibGUgaGFyZHdhcmUKIGluIGNvbWJpbmF0aW9uIHdpdGggY3B1 aWRsZS4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgZXhwZWN0ZWQgdG8gYmUgdXNlZnVsIGZvcgogZGV2 ZWxvcGVycyB3aXNoaW5nIFhlbiB0byBmYWxsIGJhY2sgdG8gb2xkZXIgdGltaW5nIG1ldGhvZHMg b24gbmV3ZXIgaGFyZHdhcmUuCiAKKyMjIyBhcmdvCisgICAgPSBMaXN0IG9mIFsgPGJvb2w+IF0K KworQ29udHJvbHMgZm9yIHRoZSBBcmdvIGh5cGVydmlzb3ItbWVkaWF0ZWQgaW50ZXJkb21haW4g Y29tbXVuaWNhdGlvbiBzZXJ2aWNlLgorCitUaGUgZnVuY3Rpb25hbGl0eSB0aGF0IHRoaXMgb3B0 aW9uIGNvbnRyb2xzIGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4gWGVuIGhhcyBiZWVuCitjb21waWxl ZCB3aXRoIHRoZSBidWlsZCBzZXR0aW5nIGZvciBBcmdvIGVuYWJsZWQgaW4gdGhlIGJ1aWxkIGNv bmZpZ3VyYXRpb24uCisKK0FyZ28gaXMgYSBpbnRlcmRvbWFpbiBjb21tdW5pY2F0aW9uIG1lY2hh bmlzbSwgd2hlcmUgWGVuIGFjdHMgYXMgdGhlIGNlbnRyYWwKK3BvaW50IG9mIGF1dGhvcml0eS4g IEd1ZXN0cyBtYXkgcmVnaXN0ZXIgbWVtb3J5IHJpbmdzIHRvIHJlY2lldmUgbWVzc2FnZXMsCitx dWVyeSB0aGUgc3RhdHVzIG9mIG90aGVyIGRvbWFpbnMsIGFuZCBzZW5kIG1lc3NhZ2VzIGJ5IGh5 cGVyY2FsbCwgYWxsIHN1YmplY3QKK3RvIGFwcHJvcHJpYXRlIGF1ZGl0aW5nIGJ5IFhlbi4gIEFy Z28gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKwogIyMjIGFzaWQgKHg4NikKID4gYD0gPGJvb2xl YW4+YAogCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2FyZ28uYyBiL3hlbi9jb21tb24vYXJnby5j CmluZGV4IGU5MWFkZTUuLjlmMmQyZTUgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vYXJnby5jCisr KyBiL3hlbi9jb21tb24vYXJnby5jCkBAIC0xNiw4ICsxNiwyNjEgQEAKICAqIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3 ICBVU0EKICAqLwogCisjaW5jbHVkZSA8eGVuL2FyZ28uaD4KKyNpbmNsdWRlIDx4ZW4vZG9tYWlu Lmg+CisjaW5jbHVkZSA8eGVuL2RvbWFpbl9wYWdlLmg+CiAjaW5jbHVkZSA8eGVuL2Vycm5vLmg+ CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CiAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgor I2luY2x1ZGUgPHhlbi9ub3NwZWMuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRl IDx4ZW4vdGltZS5oPgorCisjaW5jbHVkZSA8cHVibGljL2FyZ28uaD4KKworI2lmZGVmIENPTkZJ R19DT01QQVQKKyNpbmNsdWRlIDxjb21wYXQvYXJnby5oPgorQ0hFQ0tfYXJnb19hZGRyOworQ0hF Q0tfYXJnb19yaW5nOworI2VuZGlmCisKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdv X2FkZHJfdCk7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19yaW5nX3QpOworCitz dGF0aWMgYm9vbCBfX3JlYWRfbW9zdGx5IG9wdF9hcmdvOworCitzdGF0aWMgaW50IF9faW5pdCBw YXJzZV9hcmdvKGNvbnN0IGNoYXIgKnMpCit7CisgICAgY29uc3QgY2hhciAqc3M7CisgICAgaW50 IHZhbCwgcmMgPSAwOworCisgICAgZG8geworICAgICAgICBzcyA9IHN0cmNocihzLCAnLCcpOwor ICAgICAgICBpZiAoICFzcyApCisgICAgICAgICAgICBzcyA9IHN0cmNocihzLCAnXDAnKTsKKwor ICAgICAgICBpZiAoICh2YWwgPSBwYXJzZV9ib29sKHMsIHNzKSkgPj0gMCApCisgICAgICAgICAg ICBvcHRfYXJnbyA9IHZhbDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmMgPSAtRUlOVkFM OworCisgICAgICAgIHMgPSBzcyArIDE7CisgICAgfSB3aGlsZSAoICpzcyApOworCisgICAgcmV0 dXJuIHJjOworfQorY3VzdG9tX3BhcmFtKCJhcmdvIiwgcGFyc2VfYXJnbyk7CisKK3R5cGVkZWYg c3RydWN0IGFyZ29fcmluZ19pZAoreworICAgIHhlbl9hcmdvX3BvcnRfdCBhcG9ydDsKKyAgICBk b21pZF90IHBhcnRuZXJfaWQ7CisgICAgZG9taWRfdCBkb21haW5faWQ7Cit9IGFyZ29fcmluZ19p ZDsKKworLyogRGF0YSBhYm91dCBhIGRvbWFpbidzIG93biByaW5nIHRoYXQgaXQgaGFzIHJlZ2lz dGVyZWQgKi8KK3N0cnVjdCBhcmdvX3JpbmdfaW5mbworeworICAgIC8qIG5leHQgbm9kZSBpbiB0 aGUgaGFzaCwgcHJvdGVjdGVkIGJ5IHJpbmdzX0wyICovCisgICAgc3RydWN0IGxpc3RfaGVhZCBu b2RlOworICAgIC8qIHRoaXMgcmluZydzIGlkLCBwcm90ZWN0ZWQgYnkgcmluZ3NfTDIgKi8KKyAg ICBzdHJ1Y3QgYXJnb19yaW5nX2lkIGlkOworICAgIC8qIEwzLCB0aGUgcmluZ19pbmZvIGxvY2s6 IHByb3RlY3RzIHRoZSBtZW1iZXJzIG9mIHRoaXMgc3RydWN0IGJlbG93ICovCisgICAgc3Bpbmxv Y2tfdCBMM19sb2NrOworICAgIC8qIGxlbmd0aCBvZiB0aGUgcmluZywgcHJvdGVjdGVkIGJ5IEwz ICovCisgICAgdW5zaWduZWQgaW50IGxlbjsKKyAgICAvKiBudW1iZXIgb2YgcGFnZXMgdHJhbnNs YXRlZCBpbnRvIG1mbnMsIHByb3RlY3RlZCBieSBMMyAqLworICAgIHVuc2lnbmVkIGludCBubWZu czsKKyAgICAvKiBjYWNoZWQgdHggcG9pbnRlciBsb2NhdGlvbiwgcHJvdGVjdGVkIGJ5IEwzICov CisgICAgdW5zaWduZWQgaW50IHR4X3B0cjsKKyAgICAvKiBtYXBwZWQgcmluZyBwYWdlcyBwcm90 ZWN0ZWQgYnkgTDMgKi8KKyAgICB2b2lkICoqbWZuX21hcHBpbmc7CisgICAgLyogbGlzdCBvZiBt Zm5zIG9mIGd1ZXN0IHJpbmcsIHByb3RlY3RlZCBieSBMMyAqLworICAgIG1mbl90ICptZm5zOwor ICAgIC8qIGxpc3Qgb2Ygc3RydWN0IHBlbmRpbmdfZW50IGZvciB0aGlzIHJpbmcsIHByb3RlY3Rl ZCBieSBMMyAqLworICAgIHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZzsKKyAgICAvKiBudW1iZXIg b2YgcGVuZGluZyBlbnRyaWVzIHF1ZXVlZCBmb3IgdGhpcyByaW5nLCBwcm90ZWN0ZWQgYnkgTDMg Ki8KKyAgICB1bnNpZ25lZCBpbnQgbnBlbmRpbmc7Cit9OworCisvKiBEYXRhIGFib3V0IGEgc2lu Z2xlLXNlbmRlciByaW5nLCBoZWxkIGJ5IHRoZSBzZW5kZXIgKHBhcnRuZXIpIGRvbWFpbiAqLwor c3RydWN0IGFyZ29fc2VuZF9pbmZvCit7CisgICAgLyogbmV4dCBub2RlIGluIHRoZSBoYXNoLCBw cm90ZWN0ZWQgYnkgc2VuZF9MMiAqLworICAgIHN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKKyAgICAv KiB0aGlzIHJpbmcncyBpZCwgcHJvdGVjdGVkIGJ5IHNlbmRfTDIgKi8KKyAgICBzdHJ1Y3QgYXJn b19yaW5nX2lkIGlkOworfTsKKworLyogQSBzcGFjZS1hdmFpbGFibGUgbm90aWZpY2F0aW9uIHRo YXQgaXMgYXdhaXRpbmcgc3VmZmljaWVudCBzcGFjZSAqLworc3RydWN0IHBlbmRpbmdfZW50Cit7 CisgICAgLyogTGlzdCBub2RlIHdpdGhpbiBhcmdvX3JpbmdfaW5mbydzIHBlbmRpbmcgbGlzdCAq LworICAgIHN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKKyAgICAvKgorICAgICAqIExpc3Qgbm9kZSB3 aXRoaW4gYXJnb19kb21haW4ncyB3aWxkY2FyZF9wZW5kX2xpc3QuIE9ubHkgdXNlZCBpZiB0aGUK KyAgICAgKiByaW5nIGlzIG9uZSB3aXRoIGEgd2lsZGNhcmQgcGFydG5lciAoaWUuIHRoYXQgYW55 IGRvbWFpbiBtYXkgc2VuZCB0bykKKyAgICAgKiB0byBlbmFibGUgY2FuY2VsbGluZyBzaWduYWxz IG9uIHdpbGRjYXJkIHJpbmdzIG9uIGRvbWFpbiBkZXN0cm95LgorICAgICAqLworICAgIHN0cnVj dCBsaXN0X2hlYWQgd2lsZGNhcmRfbm9kZTsKKyAgICAvKgorICAgICAqIFBvaW50ZXIgdG8gdGhl IHJpbmdfaW5mbyB0aGF0IHRoaXMgZW50IHBlcnRhaW5zIHRvLiBVc2VkIHRvIGVuc3VyZSB0aGF0 CisgICAgICogcmluZ19pbmZvLT5ucGVuZGluZyBpcyBkZWNyZW1lbnRlZCB3aGVuIGVudHMgZm9y IHdpbGRjYXJkIHJpbmdzIGFyZQorICAgICAqIGNhbmNlbGxlZCBmb3IgZG9tYWluIGRlc3Ryb3ku CisgICAgICogQ2F1dGlvbjogTXVzdCBob2xkIHRoZSBjb3JyZWN0IGxvY2tzIGJlZm9yZSBhY2Nl c3NpbmcgcmluZ19pbmZvIHZpYSB0aGlzLgorICAgICAqLworICAgIHN0cnVjdCBhcmdvX3Jpbmdf aW5mbyAqcmluZ19pbmZvOworICAgIC8qIG1pbmltdW0gcmluZyBzcGFjZSBhdmFpbGFibGUgdGhh dCB0aGlzIHNpZ25hbCBpcyB3YWl0aW5nIHVwb24gKi8KKyAgICB1bnNpZ25lZCBpbnQgbGVuOwor ICAgIC8qIGRvbWFpbiB0byBiZSBub3RpZmllZCB3aGVuIHNwYWNlIGlzIGF2YWlsYWJsZSAqLwor ICAgIGRvbWlkX3QgZG9tYWluX2lkOworfTsKKworLyoKKyAqIFRoZSB2YWx1ZSBvZiB0aGUgYXJn byBlbGVtZW50IGluIGEgc3RydWN0IGRvbWFpbiBpcworICogcHJvdGVjdGVkIGJ5IEwxX2dsb2Jh bF9hcmdvX3J3bG9jaworICovCisjZGVmaW5lIEFSR09fSEFTSFRBQkxFX1NJWkUgMzIKK3N0cnVj dCBhcmdvX2RvbWFpbgoreworICAgIC8qIHJpbmdzX0wyICovCisgICAgcndsb2NrX3QgcmluZ3Nf TDJfcndsb2NrOworICAgIC8qCisgICAgICogSGFzaCB0YWJsZSBvZiBhcmdvX3JpbmdfaW5mbyBh Ym91dCByaW5ncyB0aGlzIGRvbWFpbiBoYXMgcmVnaXN0ZXJlZC4KKyAgICAgKiBQcm90ZWN0ZWQg YnkgcmluZ3NfTDIuCisgICAgICovCisgICAgc3RydWN0IGxpc3RfaGVhZCByaW5nX2hhc2hbQVJH T19IQVNIVEFCTEVfU0laRV07CisgICAgLyogQ291bnRlciBvZiByaW5ncyByZWdpc3RlcmVkIGJ5 IHRoaXMgZG9tYWluLiBQcm90ZWN0ZWQgYnkgcmluZ3NfTDIuICovCisgICAgdW5zaWduZWQgaW50 IHJpbmdfY291bnQ7CisKKyAgICAvKiBzZW5kX0wyICovCisgICAgc3BpbmxvY2tfdCBzZW5kX0wy X2xvY2s7CisgICAgLyoKKyAgICAgKiBIYXNoIHRhYmxlIG9mIGFyZ29fc2VuZF9pbmZvIGFib3V0 IHJpbmdzIG90aGVyIGRvbWFpbnMgaGF2ZSByZWdpc3RlcmVkCisgICAgICogZm9yIHRoaXMgZG9t YWluIHRvIHNlbmQgdG8uIFNpbmdsZSBwYXJ0bmVyLCBub24td2lsZGNhcmQgcmluZ3MuCisgICAg ICogUHJvdGVjdGVkIGJ5IHNlbmRfTDIuCisgICAgICovCisgICAgc3RydWN0IGxpc3RfaGVhZCBz ZW5kX2hhc2hbQVJHT19IQVNIVEFCTEVfU0laRV07CisKKyAgICAvKiB3aWxkY2FyZF9MMiAqLwor ICAgIHNwaW5sb2NrX3Qgd2lsZGNhcmRfTDJfbG9jazsKKyAgICAvKgorICAgICAqIExpc3Qgb2Yg cGVuZGluZyBzcGFjZS1hdmFpbGFibGUgc2lnbmFscyBmb3IgdGhpcyBkb21haW4gYWJvdXQgd2ls ZGNhcmQKKyAgICAgKiByaW5ncyByZWdpc3RlcmVkIGJ5IG90aGVyIGRvbWFpbnMuIFByb3RlY3Rl ZCBieSB3aWxkY2FyZF9MMi4KKyAgICAgKi8KKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdpbGRjYXJk X3BlbmRfbGlzdDsKK307CisKKy8qCisgKiBMb2NraW5nIGlzIG9yZ2FuaXplZCBhcyBmb2xsb3dz OgorICoKKyAqIFRlcm1pbm9sb2d5OiBSKDxsb2NrPikgbWVhbnMgdGFraW5nIGEgcmVhZCBsb2Nr IG9uIHRoZSBzcGVjaWZpZWQgbG9jazsKKyAqICAgICAgICAgICAgICBXKDxsb2NrPikgbWVhbnMg dGFraW5nIGEgd3JpdGUgbG9jayBvbiBpdC4KKyAqCisgKiA9PSBMMSA6IFRoZSBnbG9iYWwgcmVh ZC93cml0ZSBsb2NrOiBMMV9nbG9iYWxfYXJnb19yd2xvY2sKKyAqIFByb3RlY3RzIHRoZSBhcmdv IGVsZW1lbnRzIG9mIGFsbCBzdHJ1Y3QgZG9tYWluICpkIGluIHRoZSBzeXN0ZW0uCisgKgorICog UihMMSkgZG9lcyBub3QgcHJvdGVjdCBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mIGQtPmFyZ287IGl0 IHByb3RlY3RzIHRoZWlyCisgKiBhZGRyZXNzZXMuIFcoTDEpIHByb3RlY3RzIHRob3NlIGFuZCBt b3JlIHNpbmNlIGl0IGltcGxpZXMgVyBvbiBhbGwgdGhlIGxvd2VyCisgKiBsZXZlbCBsb2NrcyAt IHNlZSB0aGUgbm90ZXMgb24gdGhvc2UgbG9ja3MgYmVsb3cuCisgKgorICogVGhlIGRlc3RydWN0 aW9uIG9mIGFuIGFyZ28tZW5hYmxlZCBkb21haW4sIHdoaWNoIG11c3QgaGF2ZSBhIG5vbi1OVUxM IGQtPmFyZ28KKyAqIHBvaW50ZXIsIHdpbGwgbmVlZCB0byBmcmVlIHRoYXQgZC0+YXJnbyBwb2lu dGVyLCB3aGljaCByZXF1aXJlcyBXKEwxKS4KKyAqIFNpbmNlIGhvbGRpbmcgUihMMSkgd2lsbCBi bG9jayBhY3F1aXJpbmcgVyhMMSksIGl0IHdpbGwgZW5zdXJlIHRoYXQKKyAqIG5vIGRvbWFpbnMg cG9pbnRlcnMgdGhhdCBhcmdvIGlzIGludGVyZXN0ZWQgaW4gYmVjb21lIGludmFsaWQgd2hpbGUg ZWl0aGVyCisgKiBXKEwxKSBvciBSKEwxKSBhcmUgaGVsZC4KKyAqLworCitzdGF0aWMgREVGSU5F X1JXTE9DSyhMMV9nbG9iYWxfYXJnb19yd2xvY2spOyAvKiBMMSAqLworCisvKgorICogPT0gcmlu Z3NfTDIgOiBUaGUgcGVyLWRvbWFpbiByaW5nIGhhc2ggbG9jazogZC0+YXJnby0+cmluZ3NfTDJf cndsb2NrCisgKgorICogSG9sZGluZyBhIHJlYWQgbG9jayBvbiByaW5nc19MMiBwcm90ZWN0cyB0 aGUgcmluZyBoYXNoIHRhYmxlIGFuZAorICogdGhlIGVsZW1lbnRzIGluIHRoZSBoYXNoX3RhYmxl IGQtPmFyZ28tPnJpbmdfaGFzaCwgYW5kCisgKiB0aGUgbm9kZSBhbmQgaWQgZmllbGRzIGluIHN0 cnVjdCBhcmdvX3JpbmdfaW5mbyBpbiB0aGUKKyAqIGhhc2ggdGFibGUuCisgKiBIb2xkaW5nIGEg d3JpdGUgbG9jayBvbiByaW5nc19MMiBwcm90ZWN0cyBhbGwgb2YgdGhlIGVsZW1lbnRzIG9mIGFs bCB0aGUKKyAqIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyBiZWxvbmdpbmcgdG8gdGhpcyBkb21haW4u CisgKgorICogVG8gdGFrZSByaW5nc19MMiB5b3UgbXVzdCBhbHJlYWR5IGhhdmUgUihMMSkuIFco TDEpIGltcGxpZXMgVyhyaW5nc19MMikgYW5kCisgKiBMMy4KKyAqCisgKiA9PSBMMyA6IFRoZSBp bmRpdmlkdWFsIHJpbmdfaW5mbyBsb2NrOiByaW5nX2luZm8tPkwzX2xvY2sKKyAqCisgKiBQcm90 ZWN0cyBhbGwgdGhlIGZpZWxkcyB3aXRoaW4gdGhlIGFyZ29fcmluZ19pbmZvLCBhc2lkZSBmcm9t IHRoZSBvbmVzIHRoYXQKKyAqIHJpbmdzX0wyIGFscmVhZHkgcHJvdGVjdHM6IG5vZGUsIGlkLCBs b2NrLgorICoKKyAqIFRvIGFjcXVpcmUgTDMgeW91IG11c3QgYWxyZWFkeSBoYXZlIFIocmluZ3Nf TDIpLiBXKHJpbmdzX0wyKSBpbXBsaWVzIEwzLgorICoKKyAqID09IHNlbmRfTDIgOiBUaGUgcGVy LWRvbWFpbiBzaW5nbGUtc2VuZGVyIHBhcnRuZXIgcmluZ3MgbG9jazoKKyAqICAgICAgICAgICAg ICBkLT5hcmdvLT5zZW5kX0wyX2xvY2sKKyAqCisgKiBQcm90ZWN0cyB0aGUgcGVyLWRvbWFpbiBz ZW5kIGhhc2ggdGFibGUgOiBkLT5hcmdvLT5zZW5kX2hhc2gKKyAqIGFuZCB0aGUgZWxlbWVudHMg aW4gdGhlIGhhc2ggdGFibGUsIGFuZCB0aGUgbm9kZSBhbmQgaWQgZmllbGRzCisgKiBpbiBzdHJ1 Y3QgYXJnb19zZW5kX2luZm8gaW4gdGhlIGhhc2ggdGFibGUuCisgKgorICogVG8gdGFrZSBzZW5k X0wyLCB5b3UgbXVzdCBhbHJlYWR5IGhhdmUgUihMMSkuIFcoTDEpIGltcGxpZXMgc2VuZF9MMi4K KyAqIERvIG5vdCBhdHRlbXB0IHRvIGFjcXVpcmUgYSByaW5nc19MMiBvbiBhbnkgZG9tYWluIGFm dGVyIHRha2luZyBhbmQgd2hpbGUKKyAqIGhvbGRpbmcgYSBzZW5kX0wyIGxvY2sgLS0gYWNxdWly ZSB0aGUgcmluZ3NfTDIgKGlmIG9uZSBpcyBuZWVkZWQpIGJlZm9yZWhhbmQuCisgKgorICogPT0g d2lsZGNhcmRfTDIgOiBUaGUgcGVyLWRvbWFpbiB3aWxkY2FyZCBwZW5kaW5nIGxpc3QgbG9jazoK KyAqICAgICAgICAgICAgICAgICAgZC0+YXJnby0+d2lsZGNhcmRfTDJfbG9jaworICoKKyAqIFBy b3RlY3RzIHRoZSBwZXItZG9tYWluIGxpc3Qgb2Ygb3V0c3RhbmRpbmcgc2lnbmFscyBmb3Igc3Bh Y2UgYXZhaWxhYmlsaXR5CisgKiBvbiB3aWxkY2FyZCByaW5ncy4KKyAqCisgKiBUbyB0YWtlIHdp bGRjYXJkX0wyLCB5b3UgbXVzdCBhbHJlYWR5IGhhdmUgUihMMSkuIFcoTDEpIGltcGxpZXMgd2ls ZGNhcmRfTDIuCisgKiBObyBvdGhlciBsb2NrcyBhcmUgYWNxdWlyZWQgYWZ0ZXIgb2J0YWluaW5n IHdpbGRjYXJkX0wyLgorICovCisKKy8qCisgKiBMb2NrIHN0YXRlIHZhbGlkYXRpb25zIG1hY3Jv cworICoKKyAqIFRoZXNlIG1hY3JvcyBlbmNvZGUgdGhlIGxvZ2ljIHRvIHZlcmlmeSB0aGF0IHRo ZSBsb2NraW5nIGhhcyBhZGhlcmVkIHRvIHRoZQorICogbG9ja2luZyBkaXNjaXBsaW5lIGFib3Zl LgorICogZWcuIE9uIGVudHJ5IHRvIGxvZ2ljIHRoYXQgcmVxdWlyZXMgaG9sZGluZyBhdCBsZWFz dCBSKHJpbmdzX0wyKSwgdGhpczoKKyAqICAgICAgQVNTRVJUKExPQ0tJTkdfUmVhZF9yaW5nc19M MihkKSk7CisgKgorICogY2hlY2tzIHRoYXQgdGhlIGxvY2sgc3RhdGUgaXMgc3VmZmljaWVudCwg dmFsaWRhdGluZyB0aGF0IG9uZSBvZiB0aGUKKyAqIGZvbGxvd2luZyBtdXN0IGJlIHRydWUgd2hl biBleGVjdXRlZDogICAgICAgUihyaW5nc19MMikgJiYgUihMMSkKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9yOiAgVyhyaW5nc19MMikgJiYgUihMMSkKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yOiAgVyhMMSkKKyAqCisgKiBU aGUgTE9DS0lORyBtYWNyb3MgZGVmaW5lZCBiZWxvdyBoZXJlIGFyZSBmb3IgdXNlIGF0IHZlcmlm aWNhdGlvbiBwb2ludHMuCisgKi8KKyNkZWZpbmUgTE9DS0lOR19Xcml0ZV9MMSAocndfaXNfd3Jp dGVfbG9ja2VkKCZMMV9nbG9iYWxfYXJnb19yd2xvY2spKQorLyoKKyAqIFdoaWxlIExPQ0tJTkdf UmVhZF9MMSB3aWxsIHJldHVybiB0cnVlIGV2ZW4gaWYgdGhlIGxvY2sgaXMgd3JpdGUtbG9ja2Vk LAorICogdGhhdCdzIE9LIGJlY2F1c2UgZXZlcnl3aGVyZSB0aGF0IGEgUmVhZCBsb2NrIGlzIG5l ZWRlZCB3aXRoIHRoZXNlIG1hY3JvcywKKyAqIGhvbGRpbmcgYSBXcml0ZSBsb2NrIHRoZXJlIGlu c3RlYWQgaXMgT0sgdG9vOiB3ZSdyZSBjaGVja2luZyB0aGF0IF9hdCBsZWFzdF8KKyAqIHRoZSBz cGVjaWZpZWQgbGV2ZWwgb2YgbG9ja3MgYXJlIGhlbGQuCisgKi8KKyNkZWZpbmUgTE9DS0lOR19S ZWFkX0wxIChyd19pc19sb2NrZWQoJkwxX2dsb2JhbF9hcmdvX3J3bG9jaykpCisKKyNkZWZpbmUg TE9DS0lOR19Xcml0ZV9yaW5nc19MMihkKSBcCisgICAgKChMT0NLSU5HX1JlYWRfTDEgJiYgcndf aXNfd3JpdGVfbG9ja2VkKCYoZCktPmFyZ28tPnJpbmdzX0wyX3J3bG9jaykpIHx8IFwKKyAgICAg TE9DS0lOR19Xcml0ZV9MMSkKKy8qCisgKiBTa2lwIGNoZWNraW5nIExPQ0tJTkdfV3JpdGVfcmlu Z3NfTDIoZCkgd2l0aGluIHRoaXMgTE9DS0lOR19SZWFkX3JpbmdzX0wyCisgKiBkZWZpbml0aW9u IGJlY2F1c2UgdGhlIGZpcnN0IGNsYXVzZSB0aGF0IGlzIHRlc3RpbmcgUihMMSkgJiYgUihMMikg d2lsbCBhbHNvCisgKiByZXR1cm4gdHJ1ZSBpZiBSKEwxKSAmJiBXKEwyKSBpcyB0cnVlLCBiZWNh dXNlIG9mIHRoZSB3YXkgdGhhdCByd19pc19sb2NrZWQKKyAqIGJlaGF2ZXMuIFRoaXMgcmVzdWx0 cyBpbiBhIHNsaWdodGx5IHNob3J0ZXIgYW5kIGZhc3RlciBpbXBsZW1lbnRhdGlvbi4KKyAqLwor I2RlZmluZSBMT0NLSU5HX1JlYWRfcmluZ3NfTDIoZCkgXAorICAgICgoTE9DS0lOR19SZWFkX0wx ICYmIHJ3X2lzX2xvY2tlZCgmKGQpLT5hcmdvLT5yaW5nc19MMl9yd2xvY2spKSB8fCBcCisgICAg IExPQ0tJTkdfV3JpdGVfTDEpCisvKgorICogU2tpcCBjaGVja2luZyBMT0NLSU5HX1dyaXRlX0wx IHdpdGhpbiB0aGlzIExPQ0tJTkdfTDMgZGVmaW5pdGlvbiBiZWNhdXNlCisgKiBMT0NLSU5HX1dy aXRlX3JpbmdzX0wyKGQpIHdpbGwgcmV0dXJuIHRydWUgZm9yIHRoYXQgY29uZGl0aW9uLgorICov CisjZGVmaW5lIExPQ0tJTkdfTDMoZCwgcikgXAorICAgICgoTE9DS0lOR19SZWFkX0wxICYmIHJ3 X2lzX2xvY2tlZCgmKGQpLT5hcmdvLT5yaW5nc19MMl9yd2xvY2spIFwKKyAgICAgICYmIHNwaW5f aXNfbG9ja2VkKCYociktPkwzX2xvY2spKSB8fCBMT0NLSU5HX1dyaXRlX3JpbmdzX0wyKGQpKQor CisjZGVmaW5lIExPQ0tJTkdfc2VuZF9MMihkKSBcCisgICAgKChMT0NLSU5HX1JlYWRfTDEgJiYg c3Bpbl9pc19sb2NrZWQoJihkKS0+YXJnby0+c2VuZF9MMl9sb2NrKSkgfHwgXAorICAgICBMT0NL SU5HX1dyaXRlX0wxKQogCiAvKiBDaGFuZ2UgdGhpcyB0byAjZGVmaW5lIEFSR09fREVCVUcgaGVy ZSB0byBlbmFibGUgbW9yZSBkZWJ1ZyBtZXNzYWdlcyAqLwogI3VuZGVmIEFSR09fREVCVUcKQEAg LTI4LDEyICsyODEsMjc4IEBACiAjZGVmaW5lIGFyZ29fZHByaW50ayhmb3JtYXQsIC4uLiApICgo dm9pZCkwKQogI2VuZGlmCiAKKy8qCisgKiBUaGlzIGhhc2ggZnVuY3Rpb24gaXMgdXNlZCB0byBk aXN0cmlidXRlIHJpbmdzIHdpdGhpbiB0aGUgcGVyLWRvbWFpbgorICogaGFzaCB0YWJsZXMgKGQt PmFyZ28tPnJpbmdfaGFzaCBhbmQgZC0+YXJnb19zZW5kX2hhc2gpLiBUaGUgaGFzaCB0YWJsZQor ICogd2lsbCBwcm92aWRlIGEgc3RydWN0IGlmIGEgbWF0Y2ggaXMgZm91bmQgd2l0aCBhICdhcmdv X3JpbmdfaWQnIGtleToKKyAqIGllLiB0aGUga2V5IGlzIGEgKGRvbWFpbiBpZCwgYXJnbyBwb3J0 LCBwYXJ0bmVyIGRvbWFpbiBpZCkgdHVwbGUuCisgKiBUaGUgYWxnb3JpdGhtIGFwcHJveGltYXRl cyB0aGUgc3RyaW5nIGhhc2hpbmcgZnVuY3Rpb24gJ2RqYjInLgorICovCitzdGF0aWMgdW5zaWdu ZWQgaW50CitoYXNoX2luZGV4KGNvbnN0IHN0cnVjdCBhcmdvX3JpbmdfaWQgKmlkKQoreworICAg IHVuc2lnbmVkIGludCBoYXNoID0gNTM4MTsgLyogcHJpbWUgY29uc3RhbnQgZnJvbSBkamIyICov CisKKyAgICAvKiBGb3IgZWFjaCBpbnB1dDogaGFzaCA9IGhhc2ggKiAzMyArIDxuZXcgaW5wdXQg Y2hhcmFjdGVyIHZhbHVlPiAqLworICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgKyBoYXNoKSArICAo aWQtPmFwb3J0ICAgICAgICAgICAgJiAweGZmKTsKKyAgICBoYXNoID0gKChoYXNoIDw8IDUpICsg aGFzaCkgKyAoKGlkLT5hcG9ydCAgICAgID4+IDgpICYgMHhmZik7CisgICAgaGFzaCA9ICgoaGFz aCA8PCA1KSArIGhhc2gpICsgKChpZC0+YXBvcnQgICAgID4+IDE2KSAmIDB4ZmYpOworICAgIGhh c2ggPSAoKGhhc2ggPDwgNSkgKyBoYXNoKSArICgoaWQtPmFwb3J0ICAgICA+PiAyNCkgJiAweGZm KTsKKyAgICBoYXNoID0gKChoYXNoIDw8IDUpICsgaGFzaCkgKyAgKGlkLT5kb21haW5faWQgICAg ICAgICYgMHhmZik7CisgICAgaGFzaCA9ICgoaGFzaCA8PCA1KSArIGhhc2gpICsgKChpZC0+ZG9t YWluX2lkICA+PiA4KSAmIDB4ZmYpOworICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgKyBoYXNoKSAr ICAoaWQtPnBhcnRuZXJfaWQgICAgICAgJiAweGZmKTsKKyAgICBoYXNoID0gKChoYXNoIDw8IDUp ICsgaGFzaCkgKyAoKGlkLT5wYXJ0bmVyX2lkID4+IDgpICYgMHhmZik7CisKKyAgICAvKgorICAg ICAqIFNpbmNlIEFSR09fSEFTSFRBQkxFX1NJWkUgaXMgc21hbGwsIHVzZSBoaWdoZXItb3JkZXIg Yml0cyBvZiB0aGUKKyAgICAgKiBoYXNoIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIGxvd2VyLW9yZGVy IGJpdHMgYmVmb3JlIG1hc2tpbmcgb2ZmLgorICAgICAqLworICAgIHJldHVybiAoaGFzaCBeICho YXNoID4+IDE1KSkgJiAoQVJHT19IQVNIVEFCTEVfU0laRSAtIDEpOworfQorCitzdGF0aWMgc3Ry dWN0IGFyZ29fcmluZ19pbmZvICoKK2ZpbmRfcmluZ19pbmZvKGNvbnN0IHN0cnVjdCBkb21haW4g KmQsIGNvbnN0IHN0cnVjdCBhcmdvX3JpbmdfaWQgKmlkKQoreworICAgIHN0cnVjdCBhcmdvX3Jp bmdfaW5mbyAqcmluZ19pbmZvOworICAgIGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmJ1Y2tldDsK KworICAgIEFTU0VSVChMT0NLSU5HX1JlYWRfcmluZ3NfTDIoZCkpOworCisgICAgLyogTGlzdCBp cyBub3QgbW9kaWZpZWQgaGVyZS4gU2VhcmNoIGFuZCByZXR1cm4gdGhlIG1hdGNoIGlmIGZvdW5k LiAqLworICAgIGJ1Y2tldCA9ICZkLT5hcmdvLT5yaW5nX2hhc2hbaGFzaF9pbmRleChpZCldOwor CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShyaW5nX2luZm8sIGJ1Y2tldCwgbm9kZSkKKyAgICB7 CisgICAgICAgIGNvbnN0IHN0cnVjdCBhcmdvX3JpbmdfaWQgKmNtcGlkID0gJnJpbmdfaW5mby0+ aWQ7CisKKyAgICAgICAgaWYgKCBjbXBpZC0+YXBvcnQgPT0gaWQtPmFwb3J0ICYmCisgICAgICAg ICAgICAgY21waWQtPmRvbWFpbl9pZCA9PSBpZC0+ZG9tYWluX2lkICYmCisgICAgICAgICAgICAg Y21waWQtPnBhcnRuZXJfaWQgPT0gaWQtPnBhcnRuZXJfaWQgKQorICAgICAgICB7CisgICAgICAg ICAgICBhcmdvX2RwcmludGsoImZvdW5kIHJpbmdfaW5mbyBmb3IgcmluZygldToleCAldSlcbiIs CisgICAgICAgICAgICAgICAgICAgICAgICAgaWQtPmRvbWFpbl9pZCwgaWQtPmFwb3J0LCBpZC0+ cGFydG5lcl9pZCk7CisgICAgICAgICAgICByZXR1cm4gcmluZ19pbmZvOworICAgICAgICB9Cisg ICAgfQorICAgIGFyZ29fZHByaW50aygibm8gcmluZ19pbmZvIGZvciByaW5nKCV1OiV4ICV1KVxu IiwKKyAgICAgICAgICAgICAgICAgaWQtPmRvbWFpbl9pZCwgaWQtPmFwb3J0LCBpZC0+cGFydG5l cl9pZCk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK3JpbmdfdW5tYXAo Y29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8p Cit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBBU1NFUlQoTE9DS0lOR19MMyhkLCByaW5n X2luZm8pKTsKKworICAgIGlmICggIXJpbmdfaW5mby0+bWZuX21hcHBpbmcgKQorICAgICAgICBy ZXR1cm47CisKKyAgICBBU1NFUlQoIXJpbmdfaW5mby0+bm1mbnMgfHwgcmluZ19pbmZvLT5tZm5z KTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgcmluZ19pbmZvLT5ubWZuczsgaSsrICkKKyAgICB7 CisgICAgICAgIGlmICggIXJpbmdfaW5mby0+bWZuX21hcHBpbmdbaV0gKQorICAgICAgICAgICAg Y29udGludWU7CisKKyAgICAgICAgQVNTRVJUKCFtZm5fZXEocmluZ19pbmZvLT5tZm5zW2ldLCBJ TlZBTElEX01GTikpOworICAgICAgICBhcmdvX2RwcmludGsoWEVOTE9HX0VSUiAiYXJnbzogdW5t YXBwaW5nIHBhZ2UgJSJQUklfbWZuIiBmcm9tICVwXG4iLAorICAgICAgICAgICAgICAgICAgICAg bWZuX3gocmluZ19pbmZvLT5tZm5zW2ldKSwgcmluZ19pbmZvLT5tZm5fbWFwcGluZ1tpXSk7CisK KyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHJpbmdfaW5mby0+bWZuX21hcHBpbmdb aV0pOworICAgICAgICByaW5nX2luZm8tPm1mbl9tYXBwaW5nW2ldID0gTlVMTDsKKyAgICB9Cit9 CisKK3N0YXRpYyB2b2lkCit3aWxkY2FyZF9wZW5kaW5nX2xpc3RfcmVtb3ZlKGRvbWlkX3QgZG9t YWluX2lkLCBzdHJ1Y3QgcGVuZGluZ19lbnQgKmVudCkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpk ID0gZ2V0X2RvbWFpbl9ieV9pZChkb21haW5faWQpOworCisgICAgaWYgKCAhZCApCisgICAgICAg IHJldHVybjsKKworICAgIEFTU0VSVChMT0NLSU5HX1JlYWRfTDEpOworCisgICAgaWYgKCBkLT5h cmdvICkKKyAgICB7CisgICAgICAgIHNwaW5fbG9jaygmZC0+YXJnby0+d2lsZGNhcmRfTDJfbG9j ayk7CisgICAgICAgIGxpc3RfZGVsKCZlbnQtPndpbGRjYXJkX25vZGUpOworICAgICAgICBzcGlu X3VubG9jaygmZC0+YXJnby0+d2lsZGNhcmRfTDJfbG9jayk7CisgICAgfQorICAgIHB1dF9kb21h aW4oZCk7Cit9CisKK3N0YXRpYyB2b2lkCitwZW5kaW5nX3JlbW92ZV9hbGwoY29uc3Qgc3RydWN0 IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8pCit7CisgICAgc3Ry dWN0IHBlbmRpbmdfZW50ICplbnQsICpuZXh0OworCisgICAgQVNTRVJUKExPQ0tJTkdfTDMoZCwg cmluZ19pbmZvKSk7CisKKyAgICAvKiBEZWxldGUgYWxsIHBlbmRpbmcgbm90aWZpY2F0aW9ucyBm cm9tIHRoaXMgcmluZydzIGxpc3QuICovCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVu dCwgbmV4dCwgJnJpbmdfaW5mby0+cGVuZGluZywgbm9kZSkKKyAgICB7CisgICAgICAgIC8qIEZv ciB3aWxkY2FyZCByaW5ncywgcmVtb3ZlIGVhY2ggZnJvbSB0aGVpciB3aWxkY2FyZCBsaXN0IHRv by4gKi8KKyAgICAgICAgaWYgKCByaW5nX2luZm8tPmlkLnBhcnRuZXJfaWQgPT0gWEVOX0FSR09f RE9NSURfQU5ZICkKKyAgICAgICAgICAgIHdpbGRjYXJkX3BlbmRpbmdfbGlzdF9yZW1vdmUoZW50 LT5kb21haW5faWQsIGVudCk7CisgICAgICAgIGxpc3RfZGVsKCZlbnQtPm5vZGUpOworICAgICAg ICB4ZnJlZShlbnQpOworICAgIH0KKyAgICByaW5nX2luZm8tPm5wZW5kaW5nID0gMDsKK30KKwor c3RhdGljIHZvaWQKK3dpbGRjYXJkX3JpbmdzX3BlbmRpbmdfcmVtb3ZlKHN0cnVjdCBkb21haW4g KmQpCit7CisgICAgc3RydWN0IHBlbmRpbmdfZW50ICplbnQsICpuZXh0OworCisgICAgQVNTRVJU KExPQ0tJTkdfV3JpdGVfTDEpOworCisgICAgLyogRGVsZXRlIGFsbCBwZW5kaW5nIHNpZ25hbHMg dG8gdGhlIGRvbWFpbiBhYm91dCB3aWxkY2FyZCByaW5ncy4gKi8KKyAgICBsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUoZW50LCBuZXh0LCAmZC0+YXJnby0+d2lsZGNhcmRfcGVuZF9saXN0LCBub2Rl KQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhlIGVudC0+bm9kZSBkZWxldGVkIGhl cmUsIGFuZCB0aGUgbnBlbmRpbmcgdmFsdWUgZGVjcmVhc2VkLAorICAgICAgICAgKiBiZWxvbmcg dG8gdGhlIHJpbmdfaW5mbyBvZiBhbm90aGVyIGRvbWFpbiwgd2hpY2ggaXMgd2h5IHRoaXMKKyAg ICAgICAgICogZnVuY3Rpb24gcmVxdWlyZXMgaG9sZGluZyBXKEwxKToKKyAgICAgICAgICogaXQg aW1wbGllcyB0aGUgTDMgbG9jayB0aGF0IHByb3RlY3RzIHRoYXQgcmluZ19pbmZvIHN0cnVjdC4K KyAgICAgICAgICovCisgICAgICAgIGVudC0+cmluZ19pbmZvLT5ucGVuZGluZy0tOworICAgICAg ICBsaXN0X2RlbCgmZW50LT5ub2RlKTsKKyAgICAgICAgbGlzdF9kZWwoJmVudC0+d2lsZGNhcmRf bm9kZSk7CisgICAgICAgIHhmcmVlKGVudCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorcmlu Z19yZW1vdmVfbWZucyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2lu Zm8gKnJpbmdfaW5mbykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIEFTU0VSVChMT0NL SU5HX1dyaXRlX3JpbmdzX0wyKGQpKTsKKworICAgIGlmICggIXJpbmdfaW5mby0+bWZucyApCisg ICAgICAgIHJldHVybjsKKworICAgIGlmICggIXJpbmdfaW5mby0+bWZuX21hcHBpbmcgKQorICAg IHsKKyAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgICByaW5nX3VubWFwKGQsIHJpbmdfaW5mbyk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8 IHJpbmdfaW5mby0+bm1mbnM7IGkrKyApCisgICAgICAgIGlmICggIW1mbl9lcShyaW5nX2luZm8t Pm1mbnNbaV0sIElOVkFMSURfTUZOKSApCisgICAgICAgICAgICBwdXRfcGFnZV9hbmRfdHlwZSht Zm5fdG9fcGFnZShyaW5nX2luZm8tPm1mbnNbaV0pKTsKKworICAgIHJpbmdfaW5mby0+bm1mbnMg PSAwOworICAgIFhGUkVFKHJpbmdfaW5mby0+bWZucyk7CisgICAgWEZSRUUocmluZ19pbmZvLT5t Zm5fbWFwcGluZyk7Cit9CisKK3N0YXRpYyB2b2lkCityaW5nX3JlbW92ZV9pbmZvKGNvbnN0IHN0 cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQoreworICAg IEFTU0VSVChMT0NLSU5HX1dyaXRlX3JpbmdzX0wyKGQpKTsKKworICAgIHBlbmRpbmdfcmVtb3Zl X2FsbChkLCByaW5nX2luZm8pOworICAgIGxpc3RfZGVsKCZyaW5nX2luZm8tPm5vZGUpOworICAg IHJpbmdfcmVtb3ZlX21mbnMoZCwgcmluZ19pbmZvKTsKKyAgICB4ZnJlZShyaW5nX2luZm8pOwor fQorCitzdGF0aWMgdm9pZAorZG9tYWluX3JpbmdzX3JlbW92ZV9hbGwoc3RydWN0IGRvbWFpbiAq ZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIEFTU0VSVChMT0NLSU5HX1dyaXRlX3Jp bmdzX0wyKGQpKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJHT19IQVNIVEFCTEVfU0laRTsg KytpICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLCAq bmV4dDsKKyAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqYnVja2V0ID0gJmQtPmFyZ28tPnJpbmdf aGFzaFtpXTsKKworICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmluZ19pbmZvLCBu ZXh0LCBidWNrZXQsIG5vZGUpCisgICAgICAgICAgICByaW5nX3JlbW92ZV9pbmZvKGQsIHJpbmdf aW5mbyk7CisgICAgfQorICAgIGQtPmFyZ28tPnJpbmdfY291bnQgPSAwOworfQorCisvKgorICog VGVhciBkb3duIGFsbCByaW5ncyBvZiBvdGhlciBkb21haW5zIHdoZXJlIHNyY19kIGRvbWFpbiBp cyB0aGUgcGFydG5lci4KKyAqIChpZS4gaXQgaXMgdGhlIHNpbmdsZSBkb21haW4gdGhhdCBjYW4g c2VuZCB0byB0aG9zZSByaW5ncy4pCisgKiBUaGlzIHdpbGwgYWxzbyBjYW5jZWwgYW55IHBlbmRp bmcgbm90aWZpY2F0aW9ucyBhYm91dCB0aG9zZSByaW5ncy4KKyAqLworc3RhdGljIHZvaWQKK3Bh cnRuZXJfcmluZ3NfcmVtb3ZlKHN0cnVjdCBkb21haW4gKnNyY19kKQoreworICAgIHVuc2lnbmVk IGludCBpOworCisgICAgQVNTRVJUKExPQ0tJTkdfV3JpdGVfTDEpOworCisgICAgZm9yICggaSA9 IDA7IGkgPCBBUkdPX0hBU0hUQUJMRV9TSVpFOyArK2kgKQorICAgIHsKKyAgICAgICAgc3RydWN0 IGFyZ29fc2VuZF9pbmZvICpzZW5kX2luZm8sICpuZXh0OworICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpidWNrZXQgPSAmc3JjX2QtPmFyZ28tPnNlbmRfaGFzaFtpXTsKKworICAgICAgICAvKiBS ZW1vdmUgYWxsIGVudHMgZnJvbSB0aGUgc2VuZCBsaXN0LiBUYWtlIGVhY2ggb2ZmIHRoZWlyIHJp bmcgbGlzdC4gKi8KKyAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNlbmRfaW5mbywg bmV4dCwgYnVja2V0LCBub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3QgZG9tYWlu ICpkc3RfZCA9IGdldF9kb21haW5fYnlfaWQoc2VuZF9pbmZvLT5pZC5kb21haW5faWQpOworCisg ICAgICAgICAgICBpZiAoIGRzdF9kICYmIGRzdF9kLT5hcmdvICkKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbyA9CisgICAgICAg ICAgICAgICAgICAgIGZpbmRfcmluZ19pbmZvKGRzdF9kLCAmc2VuZF9pbmZvLT5pZCk7CisKKyAg ICAgICAgICAgICAgICBpZiAoIHJpbmdfaW5mbyApCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICByaW5nX3JlbW92ZV9pbmZvKGRzdF9kLCByaW5nX2luZm8pOworICAgICAg ICAgICAgICAgICAgICBkc3RfZC0+YXJnby0+cmluZ19jb3VudC0tOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlJF QUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg ICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICBpZiAoIGRzdF9kICkKKyAg ICAgICAgICAgICAgICBwdXRfZG9tYWluKGRzdF9kKTsKKworICAgICAgICAgICAgbGlzdF9kZWwo JnNlbmRfaW5mby0+bm9kZSk7CisgICAgICAgICAgICB4ZnJlZShzZW5kX2luZm8pOworICAgICAg ICB9CisgICAgfQorfQorCiBsb25nCiBkb19hcmdvX29wKHVuc2lnbmVkIGludCBjbWQsIFhFTl9H VUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnMSwKICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRM RV9QQVJBTSh2b2lkKSBhcmcyLCB1bnNpZ25lZCBsb25nIGFyZzMsCiAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgYXJnNCkKIHsKLSAgICByZXR1cm4gLUVOT1NZUzsKKyAgICBsb25nIHJjID0gLUVG QVVMVDsKKworICAgIGFyZ29fZHByaW50aygiLT5kb19hcmdvX29wKCV1LCVwLCVwLCVsdSwweCVs eClcbiIsIGNtZCwKKyAgICAgICAgICAgICAgICAgKHZvaWQgKilhcmcxLnAsICh2b2lkICopYXJn Mi5wLCBhcmczLCBhcmc0KTsKKworICAgIGlmICggdW5saWtlbHkoIW9wdF9hcmdvKSApCisgICAg ICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKworICAgIHN3aXRjaCAoY21kKQorICAgIHsKKyAgICBk ZWZhdWx0OgorICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAgICBicmVhazsKKyAgICB9 CisKKyAgICBhcmdvX2RwcmludGsoIjwtZG9fYXJnb19vcCgldSk9JWxkXG4iLCBjbWQsIHJjKTsK KworICAgIHJldHVybiByYzsKIH0KIAogI2lmZGVmIENPTkZJR19DT01QQVQKQEAgLTQyLDYgKzU2 MSwxMTMgQEAgY29tcGF0X2FyZ29fb3AodW5zaWduZWQgaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRM RV9QQVJBTSh2b2lkKSBhcmcxLAogICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJB TSh2b2lkKSBhcmcyLCB1bnNpZ25lZCBsb25nIGFyZzMsCiAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGFyZzQpCiB7Ci0gICAgcmV0dXJuIC1FTk9TWVM7CisgICAgbG9uZyByYyA9IC1FRkFV TFQ7CisKKyAgICBhcmdvX2RwcmludGsoIi0+Y29tcGF0X2FyZ29fb3AoJXUsJXAsJXAsJWx1LDB4 JWx4KVxuIiwgY21kLAorICAgICAgICAgICAgICAgICAodm9pZCAqKWFyZzEucCwgKHZvaWQgKilh cmcyLnAsIGFyZzMsIGFyZzQpOworCisgICAgaWYgKCB1bmxpa2VseSghb3B0X2FyZ28pICkKKyAg ICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworCisgICAgc3dpdGNoIChjbWQpCisgICAgeworICAg IGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOworICAg IH0KKworICAgIGFyZ29fZHByaW50aygiPC1jb21wYXRfYXJnb19vcCgldSk9JWxkXG4iLCBjbWQs IHJjKTsKKworICAgIHJldHVybiByYzsKKwogfQogI2VuZGlmCisKK3N0YXRpYyB2b2lkCithcmdv X2RvbWFpbl9pbml0KHN0cnVjdCBhcmdvX2RvbWFpbiAqYXJnbykKK3sKKyAgICB1bnNpZ25lZCBp bnQgaTsKKworICAgIHJ3bG9ja19pbml0KCZhcmdvLT5yaW5nc19MMl9yd2xvY2spOworICAgIHNw aW5fbG9ja19pbml0KCZhcmdvLT5zZW5kX0wyX2xvY2spOworICAgIHNwaW5fbG9ja19pbml0KCZh cmdvLT53aWxkY2FyZF9MMl9sb2NrKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJHT19IQVNI VEFCTEVfU0laRTsgKytpICkKKyAgICB7CisgICAgICAgIElOSVRfTElTVF9IRUFEKCZhcmdvLT5y aW5nX2hhc2hbaV0pOworICAgICAgICBJTklUX0xJU1RfSEVBRCgmYXJnby0+c2VuZF9oYXNoW2ld KTsKKyAgICB9CisgICAgSU5JVF9MSVNUX0hFQUQoJmFyZ28tPndpbGRjYXJkX3BlbmRfbGlzdCk7 Cit9CisKK2ludAorYXJnb19pbml0KHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgc3RydWN0IGFy Z29fZG9tYWluICphcmdvOworCisgICAgaWYgKCAhb3B0X2FyZ28gKQorICAgIHsKKyAgICAgICAg YXJnb19kcHJpbnRrKCJhcmdvIGRpc2FibGVkLCBkb21pZDogJXVcbiIsIGQtPmRvbWFpbl9pZCk7 CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGFyZ29fZHByaW50aygiaW5pdDogZG9t aWQ6ICV1XG4iLCBkLT5kb21haW5faWQpOworCisgICAgYXJnbyA9IHh6YWxsb2Moc3RydWN0IGFy Z29fZG9tYWluKTsKKyAgICBpZiAoICFhcmdvICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisK KyAgICBhcmdvX2RvbWFpbl9pbml0KGFyZ28pOworCisgICAgd3JpdGVfbG9jaygmTDFfZ2xvYmFs X2FyZ29fcndsb2NrKTsKKworICAgIGQtPmFyZ28gPSBhcmdvOworCisgICAgd3JpdGVfdW5sb2Nr KCZMMV9nbG9iYWxfYXJnb19yd2xvY2spOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQKK2Fy Z29fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIEJVR19PTighZC0+aXNfZHlpbmcp OworCisgICAgd3JpdGVfbG9jaygmTDFfZ2xvYmFsX2FyZ29fcndsb2NrKTsKKworICAgIGFyZ29f ZHByaW50aygiZGVzdHJveTogZG9taWQgJXUgZC0+YXJnbz0lcFxuIiwgZC0+ZG9tYWluX2lkLCBk LT5hcmdvKTsKKworICAgIGlmICggZC0+YXJnbyApCisgICAgeworICAgICAgICBkb21haW5fcmlu Z3NfcmVtb3ZlX2FsbChkKTsKKyAgICAgICAgcGFydG5lcl9yaW5nc19yZW1vdmUoZCk7CisgICAg ICAgIHdpbGRjYXJkX3JpbmdzX3BlbmRpbmdfcmVtb3ZlKGQpOworICAgICAgICBYRlJFRShkLT5h cmdvKTsKKyAgICB9CisKKyAgICB3cml0ZV91bmxvY2soJkwxX2dsb2JhbF9hcmdvX3J3bG9jayk7 Cit9CisKK3ZvaWQKK2FyZ29fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIHdy aXRlX2xvY2soJkwxX2dsb2JhbF9hcmdvX3J3bG9jayk7CisKKyAgICBhcmdvX2RwcmludGsoInNv ZnQgcmVzZXQgZD0ldSBkLT5hcmdvPSVwXG4iLCBkLT5kb21haW5faWQsIGQtPmFyZ28pOworCisg ICAgaWYgKCBkLT5hcmdvICkKKyAgICB7CisgICAgICAgIGRvbWFpbl9yaW5nc19yZW1vdmVfYWxs KGQpOworICAgICAgICBwYXJ0bmVyX3JpbmdzX3JlbW92ZShkKTsKKyAgICAgICAgd2lsZGNhcmRf cmluZ3NfcGVuZGluZ19yZW1vdmUoZCk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogU2luY2Ug b3B0X2FyZ28gY2Fubm90IGNoYW5nZSBhdCBydW50aW1lLCBpZiBkLT5hcmdvIGlzIHRydWUgdGhl bgorICAgICAgICAgKiBvcHRfYXJnbyBtdXN0IGJlIHRydWUsIGFuZCB3ZSBjYW4gYXNzdW1lIHRo YXQgaW5pdCBpcyBhbGxvd2VkIHRvCisgICAgICAgICAqIHByb2NlZWQgYWdhaW4gaGVyZS4KKyAg ICAgICAgICovCisgICAgICAgIGFyZ29fZG9tYWluX2luaXQoZC0+YXJnbyk7CisgICAgfQorCisg ICAgd3JpdGVfdW5sb2NrKCZMMV9nbG9iYWxfYXJnb19yd2xvY2spOworfQpkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi9kb21haW4uYyBiL3hlbi9jb21tb24vZG9tYWluLmMKaW5kZXggYzYyM2RhZS4u NzQ3MGNkOSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9kb21haW4uYworKysgYi94ZW4vY29tbW9u L2RvbWFpbi5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8eGVuL2dyYW50X3RhYmxlLmg+ CiAjaW5jbHVkZSA8eGVuL3hlbm9wcm9mLmg+CiAjaW5jbHVkZSA8eGVuL2lycS5oPgorI2luY2x1 ZGUgPHhlbi9hcmdvLmg+CiAjaW5jbHVkZSA8YXNtL2RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8YXNt L3AybS5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KQEAgLTI3Nyw2ICsyNzgsOCBAQCBz dGF0aWMgdm9pZCBfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKIAogICAgIHhmcmVl KGQtPnBidWYpOwogCisgICAgYXJnb19kZXN0cm95KGQpOworCiAgICAgcmFuZ2VzZXRfZG9tYWlu X2Rlc3Ryb3koZCk7CiAKICAgICBmcmVlX2NwdW1hc2tfdmFyKGQtPmRpcnR5X2NwdW1hc2spOwpA QCAtNDQ1LDYgKzQ0OCw5IEBAIHN0cnVjdCBkb21haW4gKmRvbWFpbl9jcmVhdGUoZG9taWRfdCBk b21pZCwKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgaW5pdF9zdGF0dXMgfD0gSU5J VF9nbnR0YWI7CiAKKyAgICAgICAgaWYgKCAoZXJyID0gYXJnb19pbml0KGQpKSAhPSAwICkKKyAg ICAgICAgICAgIGdvdG8gZmFpbDsKKwogICAgICAgICBlcnIgPSAtRU5PTUVNOwogCiAgICAgICAg IGQtPnBidWYgPSB4emFsbG9jX2FycmF5KGNoYXIsIERPTUFJTl9QQlVGX1NJWkUpOwpAQCAtNzE3 LDYgKzcyMyw3IEBAIGludCBkb21haW5fa2lsbChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBp ZiAoIGQtPmlzX2R5aW5nICE9IERPTURZSU5HX2FsaXZlICkKICAgICAgICAgICAgIHJldHVybiBk b21haW5fa2lsbChkKTsKICAgICAgICAgZC0+aXNfZHlpbmcgPSBET01EWUlOR19keWluZzsKKyAg ICAgICAgYXJnb19kZXN0cm95KGQpOwogICAgICAgICBldnRjaG5fZGVzdHJveShkKTsKICAgICAg ICAgZ250dGFiX3JlbGVhc2VfbWFwcGluZ3MoZCk7CiAgICAgICAgIHRtZW1fZGVzdHJveShkLT50 bWVtX2NsaWVudCk7CkBAIC0xMTc1LDYgKzExODIsOCBAQCBpbnQgZG9tYWluX3NvZnRfcmVzZXQo c3RydWN0IGRvbWFpbiAqZCkKIAogICAgIGdyYW50X3RhYmxlX3dhcm5fYWN0aXZlX2dyYW50cyhk KTsKIAorICAgIGFyZ29fc29mdF9yZXNldChkKTsKKwogICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2 ICkKICAgICB7CiAgICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKHJ1bnN0YXRlX2d1ZXN0KHYp LCBOVUxMKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL01ha2VmaWxlIGIveGVuL2luY2x1ZGUv TWFrZWZpbGUKaW5kZXggZjc4OTVlNC4uM2QxNDUzMiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv TWFrZWZpbGUKKysrIGIveGVuL2luY2x1ZGUvTWFrZWZpbGUKQEAgLTUsNiArNSw3IEBAIGlmbmVx ICgkKENPTkZJR19DT01QQVQpLCkKIGNvbXBhdC1hcmNoLSQoQ09ORklHX1g4NikgOj0geDg2XzMy CiAKIGhlYWRlcnMteSA6PSBcCisgICAgY29tcGF0L2FyZ28uaCBcCiAgICAgY29tcGF0L2NhbGxi YWNrLmggXAogICAgIGNvbXBhdC9lbGZub3RlLmggXAogICAgIGNvbXBhdC9ldmVudF9jaGFubmVs LmggXApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaCBiL3hlbi9pbmNsdWRl L3B1YmxpYy9hcmdvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMwYmI4 MgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKQEAgLTAsMCAr MSw2NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQXJnbyA6IEh5cGVydmlzb3ItTWVk aWF0ZWQgZGF0YSBlWGNoYW5nZQorICoKKyAqIERlcml2ZWQgZnJvbSB2NHYsIHRoZSB2ZXJzaW9u IDIgb2YgdjJ2LgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgQ2l0cml4IFN5c3RlbXMKKyAq IENvcHlyaWdodCAoYykgMjAxOC0yMDE5LCBCQUUgU3lzdGVtcworICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg aW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu IElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8K KworI2lmbmRlZiBfX1hFTl9QVUJMSUNfQVJHT19IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0FS R09fSF9fCisKKyNpbmNsdWRlICJ4ZW4uaCIKKworI2RlZmluZSBYRU5fQVJHT19ET01JRF9BTlkg ICAgICAgRE9NSURfSU5WQUxJRAorCisvKiBGaXhlZC13aWR0aCB0eXBlIGZvciAiYXJnbyBwb3J0 IiBudW1iZXIuIE5vdGhpbmcgdG8gZG8gd2l0aCBldnRjaG5zLiAqLwordHlwZWRlZiB1aW50MzJf dCB4ZW5fYXJnb19wb3J0X3Q7CisKK3R5cGVkZWYgc3RydWN0IHhlbl9hcmdvX2FkZHIKK3sKKyAg ICB4ZW5fYXJnb19wb3J0X3QgYXBvcnQ7CisgICAgZG9taWRfdCBkb21haW5faWQ7CisgICAgdWlu dDE2X3QgcGFkOworfSB4ZW5fYXJnb19hZGRyX3Q7CisKK3R5cGVkZWYgc3RydWN0IHhlbl9hcmdv X3JpbmcKK3sKKyAgICAvKiBHdWVzdHMgc2hvdWxkIHVzZSBhdG9taWMgb3BlcmF0aW9ucyB0byBh Y2Nlc3MgcnhfcHRyICovCisgICAgdWludDMyX3QgcnhfcHRyOworICAgIC8qIEd1ZXN0cyBzaG91 bGQgdXNlIGF0b21pYyBvcGVyYXRpb25zIHRvIGFjY2VzcyB0eF9wdHIgKi8KKyAgICB1aW50MzJf dCB0eF9wdHI7CisgICAgLyoKKyAgICAgKiBIZWFkZXIgc3BhY2UgcmVzZXJ2ZWQgZm9yIGxhdGVy IHVzZS4gQWxpZ24gdGhlIHN0YXJ0IG9mIHRoZSByaW5nIHRvIGEKKyAgICAgKiBtdWx0aXBsZSBv ZiB0aGUgbWVzc2FnZSBzbG90IHNpemUuCisgICAgICovCisgICAgdWludDhfdCByZXNlcnZlZFs1 Nl07CisjaWYgZGVmaW5lZChfX1NURENfVkVSU0lPTl9fKSAmJiBfX1NURENfVkVSU0lPTl9fID49 IDE5OTkwMUwKKyAgICB1aW50OF90IHJpbmdbXTsKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pCisg ICAgdWludDhfdCByaW5nWzBdOworI2VuZGlmCit9IHhlbl9hcmdvX3JpbmdfdDsKKworI2VuZGlm CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vYXJnby5oIGIveGVuL2luY2x1ZGUveGVuL2Fy Z28uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmE3ZTVjCi0tLSAvZGV2 L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL2FyZ28uaApAQCAtMCwwICsxLDQ0IEBACisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKiBBcmdvIDogSHlwZXJ2aXNvci1NZWRpYXRlZCBkYXRhIGVY Y2hhbmdlCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE4LCBCQUUgU3lzdGVtcworICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAg VVNBCisgKi8KKworI2lmbmRlZiBfX1hFTl9BUkdPX0hfXworI2RlZmluZSBfX1hFTl9BUkdPX0hf XworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisKKyNpZmRlZiBDT05GSUdfQVJHTworCitpbnQg YXJnb19pbml0KHN0cnVjdCBkb21haW4gKmQpOwordm9pZCBhcmdvX2Rlc3Ryb3koc3RydWN0IGRv bWFpbiAqZCk7Cit2b2lkIGFyZ29fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKTsKKworI2Vs c2UgLyogIUNPTkZJR19BUkdPICovCisKK3N0YXRpYyBpbmxpbmUgaW50IGFyZ29faW5pdChzdHJ1 Y3QgZG9tYWluICpkKQoreworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQg YXJnb19kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBhcmdvX3NvZnRfcmVzZXQoc3RydWN0IGRvbWFpbiAqZCkKK3sKK30KKworI2VuZGlmCisKKyNl bmRpZgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmggYi94ZW4vaW5jbHVkZS94 ZW4vc2NoZWQuaAppbmRleCA0OTU2YTc3Li42ZTY5YWZhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS94ZW4vc2NoZWQuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaApAQCAtNDkwLDYgKzQ5 MCwxMSBAQCBzdHJ1Y3QgZG9tYWluCiAgICAgICAgIHVuc2lnbmVkIGludCBndWVzdF9yZXF1ZXN0 X2VuYWJsZWQgICAgICAgOiAxOwogICAgICAgICB1bnNpZ25lZCBpbnQgZ3Vlc3RfcmVxdWVzdF9z eW5jICAgICAgICAgIDogMTsKICAgICB9IG1vbml0b3I7CisKKyNpZmRlZiBDT05GSUdfQVJHTwor ICAgIC8qIEFyZ28gaW50ZXJkb21haW4gY29tbXVuaWNhdGlvbiBzdXBwb3J0ICovCisgICAgc3Ry dWN0IGFyZ29fZG9tYWluICphcmdvOworI2VuZGlmCiB9OwogCiAvKiBQcm90ZWN0IHVwZGF0ZXMv cmVhZHMgKHJlc3AuKSBvZiBkb21haW5fbGlzdCBhbmQgZG9tYWluX2hhc2guICovCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS94bGF0LmxzdCBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CmluZGV4IDUy NzMzMjAuLjE2NjAxZDkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hsYXQubHN0CisrKyBiL3hl bi9pbmNsdWRlL3hsYXQubHN0CkBAIC0zMCw2ICszMCw4IEBACiA/CW1jX25vdGlmeWRvbWFpbgkJ CWFyY2gteDg2L3hlbi1tY2EuaAogIQltY19waHlzY3B1aW5mbwkJCWFyY2gteDg2L3hlbi1tY2Eu aAogPwlwYWdlX29mZmxpbmVfYWN0aW9uCQlhcmNoLXg4Ni94ZW4tbWNhLmgKKz8JYXJnb19hZGRy CQkJYXJnby5oCis/CWFyZ29fcmluZwkJCWFyZ28uaAogPwlldnRjaG5fYWxsb2NfdW5ib3VuZAkJ ZXZlbnRfY2hhbm5lbC5oCiA/CWV2dGNobl9iaW5kX2ludGVyZG9tYWluCQlldmVudF9jaGFubmVs LmgKID8JZXZ0Y2huX2JpbmRfaXBpCQkJZXZlbnRfY2hhbm5lbC5oCi0tIAoyLjcuNAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=