Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1onMFu-0007oB-GN for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Oct 2022 15:54:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1onMFq-0004hK-BW for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Oct 2022 15:54:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1onMFp-0004fJ-6m for pgsql-hackers@lists.postgresql.org; Tue, 25 Oct 2022 15:54:14 +0000 Received: from mail-qv1-xf34.google.com ([2607:f8b0:4864:20::f34]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1onMFj-0006L5-E1 for pgsql-hackers@lists.postgresql.org; Tue, 25 Oct 2022 15:54:10 +0000 Received: by mail-qv1-xf34.google.com with SMTP id i12so8929223qvs.2 for ; Tue, 25 Oct 2022 08:54:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crunchydata.com; s=google; h=user-agent:mime-version:date:organization:references:in-reply-to:cc :to:reply-to:from:subject:message-id:from:to:cc:subject:date :message-id:reply-to; bh=M7RzqyafFzgttfWXXeCJ3h+VTq/K6YG7ljOWFiuMLio=; b=KgogtmHqKyaaGbsWxG2xamY3mZCL8hzA5lXVP49MhiBlTnk2XQENrFNsPjRlPxqC5C zJ9JK+XFibU7fTQo3Y3wXclDqmTxJggoWvCLUm03YJYHiXb8tAonUwCSojgMUgvJaft/ xq05bwB91qA28p33nQVpH4V36PXjTZvt62QxFN3CNSi2z6kdVspKI6knyYop6a5m5aKw zG+ytzLJ7vwSq8/Cm+SsHqrhV8vmd3Tkbuc6WGj6Byk31zFkW6RWczyRgZgRylCzN72d 2KEX6vkrr48oGcPCcZwkkk6FhN+FFamtoHTQ5P3XAs8D5V3ifm3QAx9efRaYjENYDm1R e1Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=user-agent:mime-version:date:organization:references:in-reply-to:cc :to:reply-to:from:subject:message-id:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M7RzqyafFzgttfWXXeCJ3h+VTq/K6YG7ljOWFiuMLio=; b=ocM0uoBPLrBP18CTmRJkcpgd4Aim3Ju5JNiajV9OZeSgVGTwZbdfx7TvvKlAaOTN+k +/u7yKMPSQ9jbDGQLoQIuxoX/ZSW+ICtJRDK4Yae8MkP542/e4xvfku3be+Ectj79BGi BrWUOSZ5jxhYyuhVvYetEW152wE4CrzxAkMaeOfAabZ876FZzDYzz49AMxI6a7QrOxw9 6yBWH0f2MpuvFXunwk23r42mvp5w/32u4UATQzpcoXR61rkrTKNOX6DqzjzsxLt2qaxx PhCMxn1QsiK/gIgl6MseewJsNyR2YS+ltwVXG2k90y/guUieZpKVL24TvBB4mZvOoi7A bCjA== X-Gm-Message-State: ACrzQf1eUbRHAgXYFVJGuLGj37h82GHHqEu4N0rw9YFLso6Vm1zbJo9k b05wQTwl++BbDAe57ip95dP5BQ== X-Google-Smtp-Source: AMsMyM5N2IursfbLdlIsYNemlP1WPiGDHKz/YLeVr9MDhxsdpVsrS8yVyYGJBXwpk+qLvtD6bckwgw== X-Received: by 2002:a05:6214:5181:b0:473:1a26:99f6 with SMTP id kl1-20020a056214518100b004731a2699f6mr33248714qvb.47.1666713245393; Tue, 25 Oct 2022 08:54:05 -0700 (PDT) Received: from raker.lan (cpe-24-163-67-44.nc.res.rr.com. [24.163.67.44]) by smtp.gmail.com with ESMTPSA id he19-20020a05622a601300b0039cc7ebf46bsm1748836qtb.93.2022.10.25.08.54.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Oct 2022 08:54:04 -0700 (PDT) Message-ID: Subject: Re: Add the ability to limit the amount of memory that can be allocated to backends. From: Reid Thompson Reply-To: reid.thompson@crunchydata.com To: Arne Roland , "pgsql-hackers@lists.postgresql.org" Cc: reid.thompson@crunchydata.com, Justin Pryzby , Ibrar Ahmed In-Reply-To: References: ,<9e7969b9f6cbd2494705c7a5a21e7de0171727bb.camel@crunchydata.com> Organization: Crunchy Data Content-Type: multipart/mixed; boundary="=-ImHHnatVmTb//z81GZY2" Date: Tue, 25 Oct 2022 11:49:03 -0400 MIME-Version: 1.0 User-Agent: Evolution 3.45.1 Compiled: 2022-06-07 10:22:05 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-ImHHnatVmTb//z81GZY2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Arne, On Mon, 2022-10-24 at 15:27 +0000, Arne Roland wrote: > Hello Reid, >=20 > could you rebase the patch again? It doesn't apply=C2=A0currently > (http://cfbot.cputube.org/patch_40_3867.log). Thanks! rebased patches attached. > You mention, that you want to prevent the compiler from getting > cute.I don't think this comments are exactly helpful in the current > state. I think probably fine to just omit them. I attempted to follow previous convention when adding code and these comments have been consistently applied throughout backend_status.c where a volatile pointer is being used. > I don't understand the purpose of the result variable in > exceeds_max_total_bkend_mem. What purpose does it serve? >=20 > I really like the simplicity of the suggestion here to prevent oom. If max_total_backend_memory is configured, exceeds_max_total_bkend_mem() will return true if an allocation request will push total backend memory allocated over the configured value. exceeds_max_total_bkend_mem() is implemented in the various allocators along the lines of ...snip... /* Do not exceed maximum allowed memory allocation */ if (exceeds_max_total_bkend_mem('new request size')) = =20 return NULL; = =20 ...snip... Do not allocate the memory requested, return NULL instead. PG already had code in place to handle NULL returns from allocation requests. The allocation code in aset.c, slab.c, generation.c, dsm_impl.c utilizes exceeds_max_total_bkend_mem() max_total_backend_memory (integer) Specifies a limit to the amount of memory (MB) that may be allocated to backends in total (i.e. this is not a per user or per backend limit). If unset, or set to 0 it is disabled. A backend request that would push the total over the limit will be denied with an out of memory error causing that backend's current query/transaction to fail. Due to the dynamic nature of memory allocations, this limit is not exact. If within 1.5MB of the limit and two backends request 1MB each at the same time both may be allocated, and exceed the limit. Further requests will not be allocated until dropping below the limit. Keep this in mind when setting this value. This limit does not affect auxiliary backend processes Auxiliary process . Backend memory allocations (backend_mem_allocated) are displayed in the pg_stat_activity view. > I intent to play around with a lot of backends, once I get a rebased > patch.=20 >=20 > Regards > Arne --=-ImHHnatVmTb//z81GZY2 Content-Disposition: attachment; filename*0=0001-Add-tracking-of-backend-memory-allocated-to-pg_stat_.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-Add-tracking-of-backend-memory-allocated-to-pg_stat_.patch"; charset="UTF-8" RnJvbSBhYjY1NGE0OGVjN2JmYmMzYmMzNzdjNTc1N2EwNGYxNzU2ZTcyZTc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSZWlkIFRob21wc29uIDxqcmVpZHRob21wc29uQG5jLnJyLmNv bT4KRGF0ZTogVGh1LCAxMSBBdWcgMjAyMiAxMjowMToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MS8yXSBBZGQgdHJhY2tpbmcgb2YgYmFja2VuZCBtZW1vcnkgYWxsb2NhdGVkIHRvCiBwZ19zdGF0 X2FjdGl2aXR5CgpUaGlzIG5ldyBmaWVsZCBkaXNwbGF5cyB0aGUgY3VycmVudCBieXRlcyBvZiBt ZW1vcnkgYWxsb2NhdGVkIHRvIHRoZQpiYWNrZW5kIHByb2Nlc3MuIEl0IGlzIHVwZGF0ZWQgYXMg bWVtb3J5IGZvciB0aGUgcHJvY2VzcyBpcwptYWxsb2MnZC9mcmVlJ2QuIE1lbW9yeSBhbGxvY2F0 ZWQgdG8gaXRlbXMgb24gdGhlIGZyZWVsaXN0IGlzIGluY2x1ZGVkIGluCnRoZSBkaXNwbGF5ZWQg dmFsdWUuICBEeW5hbWljIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGluY2x1ZGVkCm9u bHkgaW4gdGhlIHZhbHVlIGRpc3BsYXllZCBmb3IgdGhlIGJhY2tlbmQgdGhhdCBjcmVhdGVkIHRo ZW0sIHRoZXkgYXJlCm5vdCBpbmNsdWRlZCBpbiB0aGUgdmFsdWUgZm9yIGJhY2tlbmRzIHRoYXQg YXJlIGF0dGFjaGVkIHRvIHRoZW0gdG8KYXZvaWQgZG91YmxlIGNvdW50aW5nLiBPbiBvY2Nhc2lv biwgb3JwaGFuZWQgbWVtb3J5IHNlZ21lbnRzIG1heSBiZQpjbGVhbmVkIHVwIG9uIHBvc3RtYXN0 ZXIgc3RhcnR1cC4gVGhpcyBtYXkgcmVzdWx0IGluIGRlY3JlYXNpbmcgdGhlIHN1bQp3aXRob3V0 IGEgcHJpb3IgaW5jcmVtZW50LiBXZSBsaW1pdCB0aGUgZmxvb3Igb2YgYmFja2VuZF9tZW1fYWxs b2NhdGVkCnRvIHplcm8uIFVwZGF0ZWQgcGdfc3RhdF9hY3Rpdml0eSBkb2N1bWVudGF0aW9uIGZv ciB0aGUgbmV3IGNvbHVtbi4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAg ICAgICAgICAgIHwgIDEyICsrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jICAgICAg ICAgIHwgIDgwICsrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFj a2VuZF9zdGF0dXMuYyB8IDEwNSArKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9hc2V0LmMgICAgICAgICAgICAgICB8ICAxOCArKysrCiBzcmMvYmFja2VuZC91dGlscy9t bWdyL2dlbmVyYXRpb24uYyAgICAgICAgIHwgIDE1ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9zbGFiLmMgICAgICAgICAgICAgICB8ICAyMSArKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS91dGlscy9iYWNrZW5k X3N0YXR1cy5oICAgICAgICAgIHwgICA3ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dCAgICAgICAgIHwgICA5ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAyNjkgaW5zZXJ0aW9u cygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmlu Zy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCBlNWQ2MjJkNTE0Li40 OTgzYmJjODE0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTk0Nyw2ICs5NDcsMTggQEAgcG9zdGdy ZXMgICAyNzA5MyAgMC4wICAwLjAgIDMwMDk2ICAyNzUyID8gICAgICAgIFNzICAgMTE6MzQgICAw OjAwIHBvc3RncmVzOiBzZXIKICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgPC9yb3c+CiAKKyAg ICA8cm93PgorICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0cnVjdGZpZWxkPmJhY2tlbmRfbWVtX2Fs bG9jYXRlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgPC9wYXJhPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBieXRlIGNvdW50IG9mIG1lbW9yeSBhbGxvY2F0ZWQgdG8g dGhpcyBiYWNrZW5kLiBEeW5hbWljIHNoYXJlZCBtZW1vcnkKKyAgICAgIGFsbG9jYXRpb25zIGFy ZSBpbmNsdWRlZCBvbmx5IGluIHRoZSB2YWx1ZSBkaXNwbGF5ZWQgZm9yIHRoZSBiYWNrZW5kIHRo YXQKKyAgICAgIGNyZWF0ZWQgdGhlbSwgdGhleSBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSB2YWx1 ZSBmb3IgYmFja2VuZHMgdGhhdCBhcmUKKyAgICAgIGF0dGFjaGVkIHRvIHRoZW0gdG8gYXZvaWQg ZG91YmxlIGNvdW50aW5nLgorICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICA8L3Jvdz4KKwogICAg ICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+cXVlcnk8L3N0cnVj dGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CmluZGV4IDJkODEwNGIwOTAuLmNiZjgwNDYyNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKQEAgLTg2NSw2ICs4NjUsNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2FjdGl2aXR5 IEFTCiAgICAgICAgICAgICBTLmJhY2tlbmRfeGlkLAogICAgICAgICAgICAgcy5iYWNrZW5kX3ht aW4sCiAgICAgICAgICAgICBTLnF1ZXJ5X2lkLAorICAgICAgICAgICAgUy5iYWNrZW5kX21lbV9h bGxvY2F0ZWQsCiAgICAgICAgICAgICBTLnF1ZXJ5LAogICAgICAgICAgICAgUy5iYWNrZW5kX3R5 cGUKICAgICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEwpIEFTIFMKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9kc21faW1wbC5jCmluZGV4IGUxYjkwYzVkZTQuLjMzNTZiYjY1YjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvZHNtX2ltcGwuYwpAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtX2ltcGwuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNs dWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC0yMzIs NiArMjMzLDEzIEBAIGRzbV9pbXBsX3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUs IFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJCW5hbWUpKSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJ CX0KKwkJLyoKKwkJICogRGV0YWNoIGFuZCBkZXN0cm95IHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5 IGRlY3JlYXNlIHRoZSBtZW1vcnkKKwkJICogc2hvd24gYWxsb2NhdGVkIGluIHBnX3N0YXRfYWN0 aXZpdHkgd2hlbiB0aGUgY3JlYXRvciBkZXN0cm95cyB0aGUKKwkJICogYWxsb2NhdGlvbi4KKwkJ ICovCisJCWlmIChvcCA9PSBEU01fT1BfREVTVFJPWSkKKwkJCXBnc3RhdF9yZXBvcnRfYmFja2Vu ZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKCptYXBwZWRfc2l6ZSk7CiAJCSptYXBwZWRfYWRkcmVz cyA9IE5VTEw7CiAJCSptYXBwZWRfc2l6ZSA9IDA7CiAJCWlmIChvcCA9PSBEU01fT1BfREVTVFJP WSAmJiBzaG1fdW5saW5rKG5hbWUpICE9IDApCkBAIC0zMzIsNiArMzQwLDM2IEBAIGRzbV9pbXBs X3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAog CQkJCQkJbmFtZSkpKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KKworCS8qCisJICogQXR0YWNoIGFu ZCBjcmVhdGUgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgdXBkYXRlIGJhY2tlbmQgbWVtb3J5CisJ ICogYWxsb2NhdGVkIGluIHBnX3N0YXRfYWN0aXZpdHkgZm9yIHRoZSBjcmVhdG9yIHByb2Nlc3Mu CisJICovCisJaWYgKG9wID09IERTTV9PUF9DUkVBVEUpCisJeworCQkvKgorCQkgKiBQb3NpeCBj cmVhdGlvbiBjYWxscyBkc21faW1wbF9wb3NpeF9yZXNpemUgaW1wbHlpbmcgdGhhdCByZXNpemlu ZworCQkgKiBvY2N1cnMgb3IgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuIEFzIGltcGxlbWVu dGVkCisJCSAqIGRzbV9pbXBsX3Bvc2l4X3Jlc2l6ZSB1dGlsaXplcyBmYWxsb2NhdGUgb3IgdHJ1 bmNhdGUsIHBhc3NpbmcgdGhlCisJCSAqIHdob2xlIG5ldyBzaXplIGFzIGlucHV0LCBncm93aW5n IHRoZSBhbGxvY2F0aW9uIGFzIG5lZWRlZCAob25seQorCQkgKiB0cnVuY2F0ZSBzdXBwb3J0cyBz aHJpbmtpbmcpLiBXZSB1cGRhdGUgYnkgcmVwbGFjaW5nIHRoZSBvbGQKKwkJICogYWxsb2NhdGlv biB3aXRoIHRoZSBuZXcuCisJCSAqLworI2lmIGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUp ICYmIGRlZmluZWQoX19saW51eF9fKQorCQkvKgorCQkgKiBwb3NpeF9mYWxsb2NhdGUgZG9lcyBu b3Qgc2hyaW5rIGFsbG9jYXRpb25zLCBhZGp1c3Qgb25seSBvbgorCQkgKiBhbGxvY2F0aW9uIGlu Y3JlYXNlLgorCQkgKi8KKwkJaWYgKHJlcXVlc3Rfc2l6ZSA+ICptYXBwZWRfc2l6ZSkKKwkJewor CQkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKm1hcHBlZF9z aXplKTsKKwkJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2luY3JlYXNlKHJl cXVlc3Rfc2l6ZSk7CisJCX0KKyNlbHNlCisJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxs b2NhdGVkX2RlY3JlYXNlKCptYXBwZWRfc2l6ZSk7CisJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9t ZW1fYWxsb2NhdGVkX2luY3JlYXNlKHJlcXVlc3Rfc2l6ZSk7CisjZW5kaWYKKwl9CiAJKm1hcHBl ZF9hZGRyZXNzID0gYWRkcmVzczsKIAkqbWFwcGVkX3NpemUgPSByZXF1ZXN0X3NpemU7CiAJY2xv c2UoZmQpOwpAQCAtNTM3LDYgKzU3NSwxNCBAQCBkc21faW1wbF9zeXN2KGRzbV9vcCBvcCwgZHNt X2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJCW5hbWUpKSk7CiAJCQly ZXR1cm4gZmFsc2U7CiAJCX0KKworCQkvKgorCQkgKiBEZXRhY2ggYW5kIGRlc3Ryb3kgcGFzcyB0 aHJvdWdoIGhlcmUsIG9ubHkgZGVjcmVhc2UgdGhlIG1lbW9yeQorCQkgKiBzaG93biBhbGxvY2F0 ZWQgaW4gcGdfc3RhdF9hY3Rpdml0eSB3aGVuIHRoZSBjcmVhdG9yIGRlc3Ryb3lzIHRoZQorCQkg KiBhbGxvY2F0aW9uLgorCQkgKi8KKwkJaWYgKG9wID09IERTTV9PUF9ERVNUUk9ZKQorCQkJcGdz dGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKm1hcHBlZF9zaXplKTsK IAkJKm1hcHBlZF9hZGRyZXNzID0gTlVMTDsKIAkJKm1hcHBlZF9zaXplID0gMDsKIAkJaWYgKG9w ID09IERTTV9PUF9ERVNUUk9ZICYmIHNobWN0bChpZGVudCwgSVBDX1JNSUQsIE5VTEwpIDwgMCkK QEAgLTU4NCw2ICs2MzAsMTMgQEAgZHNtX2ltcGxfc3lzdihkc21fb3Agb3AsIGRzbV9oYW5kbGUg aGFuZGxlLCBTaXplIHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCW5hbWUpKSk7CiAJCXJldHVybiBmYWxz ZTsKIAl9CisKKwkvKgorCSAqIEF0dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBoZXJlLCBv bmx5IHVwZGF0ZSBiYWNrZW5kIG1lbW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ19zdGF0X2FjdGl2 aXR5IGZvciB0aGUgY3JlYXRvciBwcm9jZXNzLgorCSAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JF QVRFKQorCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShyZXF1 ZXN0X3NpemUpOwogCSptYXBwZWRfYWRkcmVzcyA9IGFkZHJlc3M7CiAJKm1hcHBlZF9zaXplID0g cmVxdWVzdF9zaXplOwogCkBAIC02NTIsNiArNzA1LDEzIEBAIGRzbV9pbXBsX3dpbmRvd3MoZHNt X29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJCQlyZXR1cm4g ZmFsc2U7CiAJCX0KIAorCQkvKgorCQkgKiBEZXRhY2ggYW5kIGRlc3Ryb3kgcGFzcyB0aHJvdWdo IGhlcmUsIG9ubHkgZGVjcmVhc2UgdGhlIG1lbW9yeQorCQkgKiBzaG93biBhbGxvY2F0ZWQgaW4g cGdfc3RhdF9hY3Rpdml0eSB3aGVuIHRoZSBjcmVhdG9yIGRlc3Ryb3lzIHRoZQorCQkgKiBhbGxv Y2F0aW9uLgorCQkgKi8KKwkJaWYgKG9wID09IERTTV9PUF9ERVNUUk9ZKQorCQkJcGdzdGF0X3Jl cG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKm1hcHBlZF9zaXplKTsKIAkJKmlt cGxfcHJpdmF0ZSA9IE5VTEw7CiAJCSptYXBwZWRfYWRkcmVzcyA9IE5VTEw7CiAJCSptYXBwZWRf c2l6ZSA9IDA7CkBAIC03NjgsNiArODI4LDEyIEBAIGRzbV9pbXBsX3dpbmRvd3MoZHNtX29wIG9w LCBkc21faGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJCXJldHVybiBmYWxzZTsK IAl9CiAKKwkvKgorCSAqIEF0dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5 IHVwZGF0ZSBiYWNrZW5kIG1lbW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ19zdGF0X2FjdGl2aXR5 IGZvciB0aGUgY3JlYXRvciBwcm9jZXNzLgorCSAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JFQVRF KQorCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShpbmZvLlJl Z2lvblNpemUpOwogCSptYXBwZWRfYWRkcmVzcyA9IGFkZHJlc3M7CiAJKm1hcHBlZF9zaXplID0g aW5mby5SZWdpb25TaXplOwogCSppbXBsX3ByaXZhdGUgPSBobWFwOwpAQCAtODEyLDYgKzg3OCwx MyBAQCBkc21faW1wbF9tbWFwKGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVx dWVzdF9zaXplLAogCQkJCQkJCW5hbWUpKSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KKworCQkv KgorCQkgKiBEZXRhY2ggYW5kIGRlc3Ryb3kgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgZGVjcmVh c2UgdGhlIG1lbW9yeQorCQkgKiBzaG93biBhbGxvY2F0ZWQgaW4gcGdfc3RhdF9hY3Rpdml0eSB3 aGVuIHRoZSBjcmVhdG9yIGRlc3Ryb3lzIHRoZQorCQkgKiBhbGxvY2F0aW9uLgorCQkgKi8KKwkJ cGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKm1hcHBlZF9zaXpl KTsKIAkJKm1hcHBlZF9hZGRyZXNzID0gTlVMTDsKIAkJKm1hcHBlZF9zaXplID0gMDsKIAkJaWYg KG9wID09IERTTV9PUF9ERVNUUk9ZICYmIHVubGluayhuYW1lKSAhPSAwKQpAQCAtOTMzLDYgKzEw MDYsMTMgQEAgZHNtX2ltcGxfbW1hcChkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxlLCBTaXpl IHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCW5hbWUpKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CisKKwkv KgorCSAqIEF0dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5IHVwZGF0ZSBi YWNrZW5kIG1lbW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ19zdGF0X2FjdGl2aXR5IGZvciB0aGUg Y3JlYXRvciBwcm9jZXNzLgorCSAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JFQVRFKQorCQlwZ3N0 YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShyZXF1ZXN0X3NpemUpOwog CSptYXBwZWRfYWRkcmVzcyA9IGFkZHJlc3M7CiAJKm1hcHBlZF9zaXplID0gcmVxdWVzdF9zaXpl OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1 cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwppbmRleCAx MTQ2YTZjMzNjLi41YzMzODI0ZWI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9iYWNrZW5kX3N0YXR1cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2Jh Y2tlbmRfc3RhdHVzLmMKQEAgLTQ5LDYgKzQ5LDggQEAgaW50CQkJcGdzdGF0X3RyYWNrX2FjdGl2 aXR5X3F1ZXJ5X3NpemUgPSAxMDI0OwogLyogZXhwb3NlZCBzbyB0aGF0IGJhY2tlbmRfcHJvZ3Jl c3MuYyBjYW4gYWNjZXNzIGl0ICovCiBQZ0JhY2tlbmRTdGF0dXMgKk15QkVFbnRyeSA9IE5VTEw7 CiAKKy8qIE1lbW9yeSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5kIHByaW9yIHRvIHBnc3RhdHMg aW5pdGlhbGl6YXRpb24gKi8KK3VpbnQ2NAkJYmFja2VuZF9tZW1fYWxsb2NhdGVkID0gMDsKIAog c3RhdGljIFBnQmFja2VuZFN0YXR1cyAqQmFja2VuZFN0YXR1c0FycmF5ID0gTlVMTDsKIHN0YXRp YyBjaGFyICpCYWNrZW5kQXBwbmFtZUJ1ZmZlciA9IE5VTEw7CkBAIC00MDAsNiArNDAyLDEzIEBA IHBnc3RhdF9iZXN0YXJ0KHZvaWQpCiAJbGJlZW50cnkuc3RfcHJvZ3Jlc3NfY29tbWFuZF90YXJn ZXQgPSBJbnZhbGlkT2lkOwogCWxiZWVudHJ5LnN0X3F1ZXJ5X2lkID0gVUlOVDY0Q09OU1QoMCk7 CiAKKwkvKgorCSAqIE1vdmUgc3VtIG9mIG1lbW9yeSBhbGxvY2F0ZWQgcHJpb3IgdG8gcGdzdGF0 cyBpbml0aWFsaXphdGlvbiB0byBwZ3N0YXRzCisJICogYW5kIHplcm8gdGhlIGxvY2FsIHZhcmlh YmxlLgorCSAqLworCWxiZWVudHJ5LmJhY2tlbmRfbWVtX2FsbG9jYXRlZCA9IGJhY2tlbmRfbWVt X2FsbG9jYXRlZDsKKwliYWNrZW5kX21lbV9hbGxvY2F0ZWQgPSAwOworCiAJLyoKIAkgKiB3ZSBk b24ndCB6ZXJvIHN0X3Byb2dyZXNzX3BhcmFtIGhlcmUgdG8gc2F2ZSBjeWNsZXM7IG5vYm9keSBz aG91bGQKIAkgKiBleGFtaW5lIGl0IHVudGlsIHN0X3Byb2dyZXNzX2NvbW1hbmQgaGFzIGJlZW4g c2V0IHRvIHNvbWV0aGluZyBvdGhlcgpAQCAtMTE5MSwzICsxMjAwLDk5IEBAIHBnc3RhdF9jbGlw X2FjdGl2aXR5KGNvbnN0IGNoYXIgKnJhd19hY3Rpdml0eSkKIAogCXJldHVybiBhY3Rpdml0eTsK IH0KKworLyogLS0tLS0tLS0KKyAqIHBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVk X2luY3JlYXNlKCkgLQorICoKKyAqIENhbGxlZCB0byByZXBvcnQgaW5jcmVhc2UgaW4gbWVtb3J5 IGFsbG9jYXRlZCBmb3IgdGhpcyBiYWNrZW5kCisgKiAtLS0tLS0tLQorICovCit2b2lkCitwZ3N0 YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZSh1aW50NjQgYWxsb2NhdGlv bikKK3sKKwl2b2xhdGlsZSBQZ0JhY2tlbmRTdGF0dXMgKmJlZW50cnkgPSBNeUJFRW50cnk7CisK KwlpZiAoIWJlZW50cnkgfHwgIXBnc3RhdF90cmFja19hY3Rpdml0aWVzKQorCXsKKwkJLyoKKwkJ ICogQWNjb3VudCBmb3IgbWVtb3J5IGJlZm9yZSBwZ3N0YXRzIGlzIGluaXRpYWxpemVkLiBUaGlz IHdpbGwgYmUKKwkJICogbWlncmF0ZWQgdG8gcGdzdGF0cyBvbiBpbml0aWFsaXphdGlvbi4KKwkJ ICovCisJCWJhY2tlbmRfbWVtX2FsbG9jYXRlZCArPSBhbGxvY2F0aW9uOworCisJCXJldHVybjsK Kwl9CisKKwkvKgorCSAqIFVwZGF0ZSBteSBzdGF0dXMgZW50cnksIGZvbGxvd2luZyB0aGUgcHJv dG9jb2wgb2YgYnVtcGluZworCSAqIHN0X2NoYW5nZWNvdW50IGJlZm9yZSBhbmQgYWZ0ZXIuICBX ZSB1c2UgYSB2b2xhdGlsZSBwb2ludGVyIGhlcmUgdG8KKwkgKiBlbnN1cmUgdGhlIGNvbXBpbGVy IGRvZXNuJ3QgdHJ5IHRvIGdldCBjdXRlLgorCSAqLworCVBHU1RBVF9CRUdJTl9XUklURV9BQ1RJ VklUWShiZWVudHJ5KTsKKwliZWVudHJ5LT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQgKz0gYWxsb2Nh dGlvbjsKKwlQR1NUQVRfRU5EX1dSSVRFX0FDVElWSVRZKGJlZW50cnkpOworfQorCisvKiAtLS0t LS0tLQorICogcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKSAt CisgKgorICogQ2FsbGVkIHRvIHJlcG9ydCBkZWNyZWFzZSBpbiBtZW1vcnkgYWxsb2NhdGVkIGZv ciB0aGlzIGJhY2tlbmQKKyAqIC0tLS0tLS0tCisgKi8KK3ZvaWQKK3Bnc3RhdF9yZXBvcnRfYmFj a2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKHVpbnQ2NCBkZWFsbG9jYXRpb24pCit7CisJdm9s YXRpbGUgUGdCYWNrZW5kU3RhdHVzICpiZWVudHJ5ID0gTXlCRUVudHJ5OworCisJLyoKKwkgKiBD YXNlcyBtYXkgb2NjdXIgd2hlcmUgc2hhcmVkIG1lbW9yeSBmcm9tIGEgcHJldmlvdXMgcG9zdG1h c3RlcgorCSAqIGludm9jYXRpb24gc3RpbGwgZXhpc3QuIFRoZXNlIGFyZSBjbGVhbmVkIHVwIGF0 IHN0YXJ0dXAgYnkKKwkgKiBkc21fY2xlYW51cF91c2luZ19jb250cm9sX3NlZ21lbnQuIExpbWl0 IGRlY3JlYXNpbmcgbWVtb3J5IGFsbG9jYXRlZCB0bworCSAqIHplcm8gaW4gY2FzZSBubyBjb3Jy ZXNwb25kaW5nIHByaW9yIGluY3JlYXNlIGV4aXN0cyBvciBkZWNyZWFzZSBoYXMKKwkgKiBhbHJl YWR5IGJlZW4gYWNjb3VudGVkIGZvci4KKwkgKi8KKworCWlmICghYmVlbnRyeSB8fCAhcGdzdGF0 X3RyYWNrX2FjdGl2aXRpZXMpCisJeworCQkvKgorCQkgKiBBY2NvdW50IGZvciBtZW1vcnkgYmVm b3JlIHBnc3RhdHMgaXMgaW5pdGlhbGl6ZWQuIFRoaXMgd2lsbCBiZQorCQkgKiBtaWdyYXRlZCB0 byBwZ3N0YXRzIG9uIGluaXRpYWxpemF0aW9uLiBEbyBub3QgYWxsb3cKKwkJICogYmFja2VuZF9t ZW1fYWxsb2NhdGVkIHRvIGdvIGJlbG93IHplcm8uIElmIHBnc3RhdHMgaGFzIG5vdCBiZWVuCisJ CSAqIGluaXRpYWxpemVkLCB3ZSBhcmUgaW4gc3RhcnR1cCBhbmQgd2Ugc2V0IGJhY2tlbmRfbWVt X2FsbG9jYXRlZCB0bworCQkgKiB6ZXJvIGluIGNhc2VzIHdoZXJlIGl0IHdvdWxkIGdvIG5lZ2F0 aXZlIGFuZCBza2lwIGdlbmVyYXRpbmcgYW4KKwkJICogZXJlcG9ydC4KKwkJICovCisJCWlmIChk ZWFsbG9jYXRpb24gPiBiYWNrZW5kX21lbV9hbGxvY2F0ZWQpCisJCQliYWNrZW5kX21lbV9hbGxv Y2F0ZWQgPSAwOworCQllbHNlCisJCQliYWNrZW5kX21lbV9hbGxvY2F0ZWQgLT0gZGVhbGxvY2F0 aW9uOworCisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIERvIG5vdCBhbGxvdyBiYWNrZW5kX21l bV9hbGxvY2F0ZWQgdG8gZ28gYmVsb3cgemVyby4gZXJlcG9ydCBpZiB3ZQorCSAqIHdvdWxkIGhh dmUuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgYSBsb2NrIGFyb3VuZCB0aGUgcmVhZCBoZXJlIGFzIGl0 J3MKKwkgKiBiZWluZyByZWZlcmVuY2VkIGZyb20gdGhlIHNhbWUgYmFja2VuZCB3aGljaCBtZWFu cyB0aGF0IHRoZXJlIHNob3VsZG4ndAorCSAqIGJlIGNvbmN1cnJlbnQgd3JpdGVzLiBXZSB3YW50 IHRvIGdlbmVyYXRlIGFuIGVyZXBvcnQgaW4gdGhlc2UgY2FzZXMuCisJICovCisJaWYgKGRlYWxs b2NhdGlvbiA+IGJlZW50cnktPmJhY2tlbmRfbWVtX2FsbG9jYXRlZCkKKwl7CisJCWVyZXBvcnQo TE9HLCBlcnJtc2coImRlY3JlYXNlIHJlZHVjZXMgcmVwb3J0ZWQgYmFja2VuZCBtZW1vcnkgYWxs b2NhdGVkIGJlbG93IHplcm87IHNldHRpbmcgcmVwb3J0ZWQgdG8gMCIpKTsKKworCQkvKgorCQkg KiBPdmVyd3JpdGUgZGVhbGxvY2F0aW9uIHdpdGggY3VycmVudCBiYWNrZW5kX21lbV9hbGxvY2F0 ZWQgc28gd2UgZW5kCisJCSAqIHVwIGF0IHplcm8uCisJCSAqLworCQlkZWFsbG9jYXRpb24gPSBi ZWVudHJ5LT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQ7CisJfQorCisJLyoKKwkgKiBVcGRhdGUgbXkg c3RhdHVzIGVudHJ5LCBmb2xsb3dpbmcgdGhlIHByb3RvY29sIG9mIGJ1bXBpbmcKKwkgKiBzdF9j aGFuZ2Vjb3VudCBiZWZvcmUgYW5kIGFmdGVyLiAgV2UgdXNlIGEgdm9sYXRpbGUgcG9pbnRlciBo ZXJlIHRvCisJICogZW5zdXJlIHRoZSBjb21waWxlciBkb2Vzbid0IHRyeSB0byBnZXQgY3V0ZS4K KwkgKi8KKwlQR1NUQVRfQkVHSU5fV1JJVEVfQUNUSVZJVFkoYmVlbnRyeSk7CisJYmVlbnRyeS0+ YmFja2VuZF9tZW1fYWxsb2NhdGVkIC09IGRlYWxsb2NhdGlvbjsKKwlQR1NUQVRfRU5EX1dSSVRF X0FDVElWSVRZKGJlZW50cnkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRl eCA5NmJmZmMwZjJhLi42OTJlZDFkZjE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3Mu YwpAQCAtNTUzLDcgKzU1Myw3IEBAIHBnX3N0YXRfZ2V0X3Byb2dyZXNzX2luZm8oUEdfRlVOQ1RJ T05fQVJHUykKIERhdHVtCiBwZ19zdGF0X2dldF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdTKQog ewotI2RlZmluZSBQR19TVEFUX0dFVF9BQ1RJVklUWV9DT0xTCTMwCisjZGVmaW5lIFBHX1NUQVRf R0VUX0FDVElWSVRZX0NPTFMJMzEKIAlpbnQJCQludW1fYmFja2VuZHMgPSBwZ3N0YXRfZmV0Y2hf c3RhdF9udW1iYWNrZW5kcygpOwogCWludAkJCWN1cnJfYmFja2VuZDsKIAlpbnQJCQlwaWQgPSBQ R19BUkdJU05VTEwoMCkgPyAtMSA6IFBHX0dFVEFSR19JTlQzMigwKTsKQEAgLTYwOSw2ICs2MDks OCBAQCBwZ19zdGF0X2dldF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdTKQogCQllbHNlCiAJCQlu dWxsc1sxNl0gPSB0cnVlOwogCisJCXZhbHVlc1szMF0gPSBVSW50NjRHZXREYXR1bShiZWVudHJ5 LT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQpOworCiAJCS8qIFZhbHVlcyBvbmx5IGF2YWlsYWJsZSB0 byByb2xlIG1lbWJlciBvciBwZ19yZWFkX2FsbF9zdGF0cyAqLwogCQlpZiAoSEFTX1BHU1RBVF9Q RVJNSVNTSU9OUyhiZWVudHJ5LT5zdF91c2VyaWQpKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL2FzZXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCmlu ZGV4IGRiNDAyZTNhNDEuLmY2ZDEzMzNmM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvYXNldC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCkBAIC00Nyw2 ICs0Nyw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgInBvcnQvcGdfYml0 dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0 aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlsc19tZW1vcnljaHVuay5oIgpAQCAtNTIxLDYgKzUyMiw3IEBAIEFsbG9jU2V0 Q29udGV4dENyZWF0ZUludGVybmFsKE1lbW9yeUNvbnRleHQgcGFyZW50LAogCQkJCQkJbmFtZSk7 CiAKIAkoKE1lbW9yeUNvbnRleHQpIHNldCktPm1lbV9hbGxvY2F0ZWQgPSBmaXJzdEJsb2NrU2l6 ZTsKKwlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShmaXJzdEJs b2NrU2l6ZSk7CiAKIAlyZXR1cm4gKE1lbW9yeUNvbnRleHQpIHNldDsKIH0KQEAgLTU0Myw2ICs1 NDUsNyBAQCBBbGxvY1NldFJlc2V0KE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAlBbGxvY1NldAlz ZXQgPSAoQWxsb2NTZXQpIGNvbnRleHQ7CiAJQWxsb2NCbG9jawlibG9jazsKIAlTaXplCQlrZWVw ZXJzaXplIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKwl1aW50NjQJCWRlYWxsb2NhdGlvbiA9 IDA7CiAKIAlBc3NlcnRBcmcoQWxsb2NTZXRJc1ZhbGlkKHNldCkpOwogCkBAIC01ODUsNiArNTg4 LDcgQEAgQWxsb2NTZXRSZXNldChNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAJCXsKIAkJCS8qIE5v cm1hbCBjYXNlLCByZWxlYXNlIHRoZSBibG9jayAqLwogCQkJY29udGV4dC0+bWVtX2FsbG9jYXRl ZCAtPSBibG9jay0+ZW5kcHRyIC0gKChjaGFyICopIGJsb2NrKTsKKwkJCWRlYWxsb2NhdGlvbiAr PSBibG9jay0+ZW5kcHRyIC0gKChjaGFyICopIGJsb2NrKTsKIAogI2lmZGVmIENMT0JCRVJfRlJF RURfTUVNT1JZCiAJCQl3aXBlX21lbShibG9jaywgYmxvY2stPmZyZWVwdHIgLSAoKGNoYXIgKikg YmxvY2spKTsKQEAgLTU5NSw2ICs1OTksNyBAQCBBbGxvY1NldFJlc2V0KE1lbW9yeUNvbnRleHQg Y29udGV4dCkKIAl9CiAKIAlBc3NlcnQoY29udGV4dC0+bWVtX2FsbG9jYXRlZCA9PSBrZWVwZXJz aXplKTsKKwlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFzZShkZWFs bG9jYXRpb24pOwogCiAJLyogUmVzZXQgYmxvY2sgc2l6ZSBhbGxvY2F0aW9uIHNlcXVlbmNlLCB0 b28gKi8KIAlzZXQtPm5leHRCbG9ja1NpemUgPSBzZXQtPmluaXRCbG9ja1NpemU7CkBAIC02MTMs NiArNjE4LDcgQEAgQWxsb2NTZXREZWxldGUoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCUFsbG9j U2V0CXNldCA9IChBbGxvY1NldCkgY29udGV4dDsKIAlBbGxvY0Jsb2NrCWJsb2NrID0gc2V0LT5i bG9ja3M7CiAJU2l6ZQkJa2VlcGVyc2l6ZSBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisJdWlu dDY0CQlkZWFsbG9jYXRpb24gPSAwOwogCiAJQXNzZXJ0QXJnKEFsbG9jU2V0SXNWYWxpZChzZXQp KTsKIApAQCAtNjUxLDExICs2NTcsMTMgQEAgQWxsb2NTZXREZWxldGUoTWVtb3J5Q29udGV4dCBj b250ZXh0KQogCiAJCQkJZnJlZWxpc3QtPmZpcnN0X2ZyZWUgPSAoQWxsb2NTZXRDb250ZXh0ICop IG9sZHNldC0+aGVhZGVyLm5leHRjaGlsZDsKIAkJCQlmcmVlbGlzdC0+bnVtX2ZyZWUtLTsKKwkJ CQlkZWFsbG9jYXRpb24gKz0gb2xkc2V0LT5oZWFkZXIubWVtX2FsbG9jYXRlZDsKIAogCQkJCS8q IEFsbCB0aGF0IHJlbWFpbnMgaXMgdG8gZnJlZSB0aGUgaGVhZGVyL2luaXRpYWwgYmxvY2sgKi8K IAkJCQlmcmVlKG9sZHNldCk7CiAJCQl9CiAJCQlBc3NlcnQoZnJlZWxpc3QtPm51bV9mcmVlID09 IDApOworCQkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoZGVh bGxvY2F0aW9uKTsKIAkJfQogCiAJCS8qIE5vdyBhZGQgdGhlIGp1c3QtZGVsZXRlZCBjb250ZXh0 IHRvIHRoZSBmcmVlbGlzdC4gKi8KQEAgLTY3Miw3ICs2ODAsMTAgQEAgQWxsb2NTZXREZWxldGUo TWVtb3J5Q29udGV4dCBjb250ZXh0KQogCQlBbGxvY0Jsb2NrCW5leHQgPSBibG9jay0+bmV4dDsK IAogCQlpZiAoYmxvY2sgIT0gc2V0LT5rZWVwZXIpCisJCXsKIAkJCWNvbnRleHQtPm1lbV9hbGxv Y2F0ZWQgLT0gYmxvY2stPmVuZHB0ciAtICgoY2hhciAqKSBibG9jayk7CisJCQlkZWFsbG9jYXRp b24gKz0gYmxvY2stPmVuZHB0ciAtICgoY2hhciAqKSBibG9jayk7CisJCX0KIAogI2lmZGVmIENM T0JCRVJfRlJFRURfTUVNT1JZCiAJCXdpcGVfbWVtKGJsb2NrLCBibG9jay0+ZnJlZXB0ciAtICgo Y2hhciAqKSBibG9jaykpOwpAQCAtNjg1LDYgKzY5Niw4IEBAIEFsbG9jU2V0RGVsZXRlKE1lbW9y eUNvbnRleHQgY29udGV4dCkKIAl9CiAKIAlBc3NlcnQoY29udGV4dC0+bWVtX2FsbG9jYXRlZCA9 PSBrZWVwZXJzaXplKTsKKwlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNy ZWFzZShkZWFsbG9jYXRpb24gKworCQkJCQkJCQkJCQkJIGNvbnRleHQtPm1lbV9hbGxvY2F0ZWQp OwogCiAJLyogRmluYWxseSwgZnJlZSB0aGUgY29udGV4dCBoZWFkZXIsIGluY2x1ZGluZyB0aGUg a2VlcGVyIGJsb2NrICovCiAJZnJlZShzZXQpOwpAQCAtNzM0LDYgKzc0Nyw3IEBAIEFsbG9jU2V0 QWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJCQlyZXR1cm4gTlVMTDsK IAogCQljb250ZXh0LT5tZW1fYWxsb2NhdGVkICs9IGJsa3NpemU7CisJCXBnc3RhdF9yZXBvcnRf YmFja2VuZF9tZW1fYWxsb2NhdGVkX2luY3JlYXNlKGJsa3NpemUpOwogCiAJCWJsb2NrLT5hc2V0 ID0gc2V0OwogCQlibG9jay0+ZnJlZXB0ciA9IGJsb2NrLT5lbmRwdHIgPSAoKGNoYXIgKikgYmxv Y2spICsgYmxrc2l6ZTsKQEAgLTk0NCw2ICs5NTgsNyBAQCBBbGxvY1NldEFsbG9jKE1lbW9yeUNv bnRleHQgY29udGV4dCwgU2l6ZSBzaXplKQogCQkJcmV0dXJuIE5VTEw7CiAKIAkJY29udGV4dC0+ bWVtX2FsbG9jYXRlZCArPSBibGtzaXplOworCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2Fs bG9jYXRlZF9pbmNyZWFzZShibGtzaXplKTsKIAogCQlibG9jay0+YXNldCA9IHNldDsKIAkJYmxv Y2stPmZyZWVwdHIgPSAoKGNoYXIgKikgYmxvY2spICsgQUxMT0NfQkxPQ0tIRFJTWjsKQEAgLTEw NDMsNiArMTA1OCw3IEBAIEFsbG9jU2V0RnJlZSh2b2lkICpwb2ludGVyKQogCQkJYmxvY2stPm5l eHQtPnByZXYgPSBibG9jay0+cHJldjsKIAogCQlzZXQtPmhlYWRlci5tZW1fYWxsb2NhdGVkIC09 IGJsb2NrLT5lbmRwdHIgLSAoKGNoYXIgKikgYmxvY2spOworCQlwZ3N0YXRfcmVwb3J0X2JhY2tl bmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFzZShibG9jay0+ZW5kcHRyIC0gKChjaGFyICopIGJsb2Nr KSk7CiAKICNpZmRlZiBDTE9CQkVSX0ZSRUVEX01FTU9SWQogCQl3aXBlX21lbShibG9jaywgYmxv Y2stPmZyZWVwdHIgLSAoKGNoYXIgKikgYmxvY2spKTsKQEAgLTExNzMsNyArMTE4OSw5IEBAIEFs bG9jU2V0UmVhbGxvYyh2b2lkICpwb2ludGVyLCBTaXplIHNpemUpCiAKIAkJLyogdXBkYXRlZCBz ZXBhcmF0ZWx5LCBub3QgdG8gdW5kZXJmbG93IHdoZW4gKG9sZGJsa3NpemUgPiBibGtzaXplKSAq LwogCQlzZXQtPmhlYWRlci5tZW1fYWxsb2NhdGVkIC09IG9sZGJsa3NpemU7CisJCXBnc3RhdF9y ZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKG9sZGJsa3NpemUpOwogCQlzZXQt PmhlYWRlci5tZW1fYWxsb2NhdGVkICs9IGJsa3NpemU7CisJCXBnc3RhdF9yZXBvcnRfYmFja2Vu ZF9tZW1fYWxsb2NhdGVkX2luY3JlYXNlKGJsa3NpemUpOwogCiAJCWJsb2NrLT5mcmVlcHRyID0g YmxvY2stPmVuZHB0ciA9ICgoY2hhciAqKSBibG9jaykgKyBibGtzaXplOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvZ2VuZXJhdGlvbi5jCmluZGV4IDRjYjc1ZjQ5M2YuLjdiYjkxNzVmNmQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJs aWIvaWxpc3QuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgogI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHNfbWVtb3J5Y2h1 bmsuaCIKQEAgLTI2Nyw2ICsyNjgsNyBAQCBHZW5lcmF0aW9uQ29udGV4dENyZWF0ZShNZW1vcnlD b250ZXh0IHBhcmVudCwKIAkJCQkJCW5hbWUpOwogCiAJKChNZW1vcnlDb250ZXh0KSBzZXQpLT5t ZW1fYWxsb2NhdGVkID0gZmlyc3RCbG9ja1NpemU7CisJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21l bV9hbGxvY2F0ZWRfaW5jcmVhc2UoZmlyc3RCbG9ja1NpemUpOwogCiAJcmV0dXJuIChNZW1vcnlD b250ZXh0KSBzZXQ7CiB9CkBAIC0yODMsNiArMjg1LDcgQEAgR2VuZXJhdGlvblJlc2V0KE1lbW9y eUNvbnRleHQgY29udGV4dCkKIHsKIAlHZW5lcmF0aW9uQ29udGV4dCAqc2V0ID0gKEdlbmVyYXRp b25Db250ZXh0ICopIGNvbnRleHQ7CiAJZGxpc3RfbXV0YWJsZV9pdGVyIG1pdGVyOworCXVpbnQ2 NAlkZWFsbG9jYXRpb24gPSAwOwogCiAJQXNzZXJ0QXJnKEdlbmVyYXRpb25Jc1ZhbGlkKHNldCkp OwogCkBAIC0zMDUsOSArMzA4LDE0IEBAIEdlbmVyYXRpb25SZXNldChNZW1vcnlDb250ZXh0IGNv bnRleHQpCiAJCWlmIChibG9jayA9PSBzZXQtPmtlZXBlcikKIAkJCUdlbmVyYXRpb25CbG9ja01h cmtFbXB0eShibG9jayk7CiAJCWVsc2UKKwkJeworCQkJZGVhbGxvY2F0aW9uICs9IGJsb2NrLT5i bGtzaXplOwogCQkJR2VuZXJhdGlvbkJsb2NrRnJlZShzZXQsIGJsb2NrKTsKKwkJfQogCX0KIAor CXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKGRlYWxsb2NhdGlv bik7CisKIAkvKiBzZXQgaXQgc28gbmV3IGFsbG9jYXRpb25zIHRvIG1ha2UgdXNlIG9mIHRoZSBr ZWVwZXIgYmxvY2sgKi8KIAlzZXQtPmJsb2NrID0gc2V0LT5rZWVwZXI7CiAKQEAgLTMyOCw2ICsz MzYsOSBAQCBHZW5lcmF0aW9uRGVsZXRlKE1lbW9yeUNvbnRleHQgY29udGV4dCkKIHsKIAkvKiBS ZXNldCB0byByZWxlYXNlIGFsbCByZWxlYXNhYmxlIEdlbmVyYXRpb25CbG9ja3MgKi8KIAlHZW5l cmF0aW9uUmVzZXQoY29udGV4dCk7CisKKwlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9j YXRlZF9kZWNyZWFzZShjb250ZXh0LT5tZW1fYWxsb2NhdGVkKTsKKwogCS8qIEFuZCBmcmVlIHRo ZSBjb250ZXh0IGhlYWRlciBhbmQga2VlcGVyIGJsb2NrICovCiAJZnJlZShjb250ZXh0KTsKIH0K QEAgLTM3NCw2ICszODUsNyBAQCBHZW5lcmF0aW9uQWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0 LCBTaXplIHNpemUpCiAJCQlyZXR1cm4gTlVMTDsKIAogCQljb250ZXh0LT5tZW1fYWxsb2NhdGVk ICs9IGJsa3NpemU7CisJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2luY3Jl YXNlKGJsa3NpemUpOwogCiAJCS8qIGJsb2NrIHdpdGggYSBzaW5nbGUgKHVzZWQpIGNodW5rICov CiAJCWJsb2NrLT5jb250ZXh0ID0gc2V0OwpAQCAtNDc3LDYgKzQ4OSw3IEBAIEdlbmVyYXRpb25B bGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSkKIAkJCQlyZXR1cm4gTlVMTDsK IAogCQkJY29udGV4dC0+bWVtX2FsbG9jYXRlZCArPSBibGtzaXplOworCQkJcGdzdGF0X3JlcG9y dF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfaW5jcmVhc2UoYmxrc2l6ZSk7CiAKIAkJCS8qIGluaXRp YWxpemUgdGhlIG5ldyBibG9jayAqLwogCQkJR2VuZXJhdGlvbkJsb2NrSW5pdChzZXQsIGJsb2Nr LCBibGtzaXplKTsKQEAgLTcyNiw2ICs3MzksOCBAQCBHZW5lcmF0aW9uRnJlZSh2b2lkICpwb2lu dGVyKQogCWRsaXN0X2RlbGV0ZSgmYmxvY2stPm5vZGUpOwogCiAJc2V0LT5oZWFkZXIubWVtX2Fs bG9jYXRlZCAtPSBibG9jay0+Ymxrc2l6ZTsKKwlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2Fs bG9jYXRlZF9kZWNyZWFzZShibG9jay0+Ymxrc2l6ZSk7CisKIAlmcmVlKGJsb2NrKTsKIH0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMgYi9zcmMvYmFja2VuZC91 dGlscy9tbWdyL3NsYWIuYwppbmRleCAxYTBiMjhmOWVhLi5lZmRjMjczNmMxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t bWdyL3NsYWIuYwpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNp bmNsdWRlICJsaWIvaWxpc3QuaCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgog I2luY2x1ZGUgInV0aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy9tZW11dGlsc19tZW1vcnljaHVuay5oIgpAQCAtMjM4LDYgKzIzOSwx MiBAQCBTbGFiQ29udGV4dENyZWF0ZShNZW1vcnlDb250ZXh0IHBhcmVudCwKIAkJCQkJCXBhcmVu dCwKIAkJCQkJCW5hbWUpOwogCisJLyoKKwkgKiBJZiBTbGFiQ29udGV4dENyZWF0ZSBpcyB1cGRh dGVkIHRvIGFkZCBoZWFkZXJTaXplIHRvCisJICogY29udGV4dC0+bWVtX2FsbG9jYXRlZCwgdGhl biB1cGRhdGUgaGVyZSBhbmQgU2xhYkRlbGV0ZSBhcHByb3ByaWF0ZWx5CisJICovCisJcGdzdGF0 X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfaW5jcmVhc2UoaGVhZGVyU2l6ZSk7CisKIAly ZXR1cm4gKE1lbW9yeUNvbnRleHQpIHNsYWI7CiB9CiAKQEAgLTI1Myw2ICsyNjAsNyBAQCBTbGFi UmVzZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogewogCVNsYWJDb250ZXh0ICpzbGFiID0gKFNs YWJDb250ZXh0ICopIGNvbnRleHQ7CiAJaW50CQkJaTsKKwl1aW50NjQJCWRlYWxsb2NhdGlvbiA9 IDA7CiAKIAlBc3NlcnRBcmcoU2xhYklzVmFsaWQoc2xhYikpOwogCkBAIC0yNzgsOSArMjg2LDEx IEBAIFNsYWJSZXNldChNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAJCQlmcmVlKGJsb2NrKTsKIAkJ CXNsYWItPm5ibG9ja3MtLTsKIAkJCWNvbnRleHQtPm1lbV9hbGxvY2F0ZWQgLT0gc2xhYi0+Ymxv Y2tTaXplOworCQkJZGVhbGxvY2F0aW9uICs9IHNsYWItPmJsb2NrU2l6ZTsKIAkJfQogCX0KIAor CXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKGRlYWxsb2NhdGlv bik7CiAJc2xhYi0+bWluRnJlZUNodW5rcyA9IDA7CiAKIAlBc3NlcnQoc2xhYi0+bmJsb2NrcyA9 PSAwKTsKQEAgLTI5NCw4ICszMDQsMTcgQEAgU2xhYlJlc2V0KE1lbW9yeUNvbnRleHQgY29udGV4 dCkKIHZvaWQKIFNsYWJEZWxldGUoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogeworCS8qCisJICog VW50aWwgaGVhZGVyIGFsbG9jYXRpb24gaXMgaW5jbHVkZWQgaW4gY29udGV4dC0+bWVtX2FsbG9j YXRlZCwgY2FzdCB0bworCSAqIHNsYWIgYW5kIGRlY3JlbWVudCB0aGUgaGVhZGVyU2l6ZQorCSAq LworCVNsYWJDb250ZXh0ICpzbGFiID0gY2FzdE5vZGUoU2xhYkNvbnRleHQsIGNvbnRleHQpOwor CiAJLyogUmVzZXQgdG8gcmVsZWFzZSBhbGwgdGhlIFNsYWJCbG9ja3MgKi8KIAlTbGFiUmVzZXQo Y29udGV4dCk7CisKKwlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFz ZShzbGFiLT5oZWFkZXJTaXplKTsKKwogCS8qIEFuZCBmcmVlIHRoZSBjb250ZXh0IGhlYWRlciAq LwogCWZyZWUoY29udGV4dCk7CiB9CkBAIC0zNjQsNiArMzgzLDcgQEAgU2xhYkFsbG9jKE1lbW9y eUNvbnRleHQgY29udGV4dCwgU2l6ZSBzaXplKQogCQlzbGFiLT5taW5GcmVlQ2h1bmtzID0gc2xh Yi0+Y2h1bmtzUGVyQmxvY2s7CiAJCXNsYWItPm5ibG9ja3MgKz0gMTsKIAkJY29udGV4dC0+bWVt X2FsbG9jYXRlZCArPSBzbGFiLT5ibG9ja1NpemU7CisJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9t ZW1fYWxsb2NhdGVkX2luY3JlYXNlKHNsYWItPmJsb2NrU2l6ZSk7CiAJfQogCiAJLyogZ3JhYiB0 aGUgYmxvY2sgZnJvbSB0aGUgZnJlZWxpc3QgKGV2ZW4gdGhlIG5ldyBibG9jayBpcyB0aGVyZSkg Ki8KQEAgLTUzNyw2ICs1NTcsNyBAQCBTbGFiRnJlZSh2b2lkICpwb2ludGVyKQogCQlmcmVlKGJs b2NrKTsKIAkJc2xhYi0+bmJsb2Nrcy0tOwogCQlzbGFiLT5oZWFkZXIubWVtX2FsbG9jYXRlZCAt PSBzbGFiLT5ibG9ja1NpemU7CisJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVk X2RlY3JlYXNlKHNsYWItPmJsb2NrU2l6ZSk7CiAJfQogCWVsc2UKIAkJZGxpc3RfcHVzaF9oZWFk KCZzbGFiLT5mcmVlbGlzdFtibG9jay0+bmZyZWVdLCAmYmxvY2stPm5vZGUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKaW5kZXggNjJhNWI4ZTY1NS4uNzM3YTdjNTAzNCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC01MzQ3LDkgKzUzNDcsOSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dl dF9hY3Rpdml0eScsIHByb3Jvd3MgPT4gJzEwMCcsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJv cmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAg IHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdpbnQ0JywKLSAgcHJvYWxs YXJndHlwZXMgPT4gJ3tpbnQ0LG9pZCxpbnQ0LG9pZCx0ZXh0LHRleHQsdGV4dCx0ZXh0LHRleHQs dGltZXN0YW1wdHosdGltZXN0YW1wdHosdGltZXN0YW1wdHosdGltZXN0YW1wdHosaW5ldCx0ZXh0 LGludDQseGlkLHhpZCx0ZXh0LGJvb2wsdGV4dCx0ZXh0LGludDQsdGV4dCxudW1lcmljLHRleHQs Ym9vbCx0ZXh0LGJvb2wsaW50NCxpbnQ4fScsCi0gIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sb30nLAot ICBwcm9hcmduYW1lcyA9PiAne3BpZCxkYXRpZCxwaWQsdXNlc3lzaWQsYXBwbGljYXRpb25fbmFt ZSxzdGF0ZSxxdWVyeSx3YWl0X2V2ZW50X3R5cGUsd2FpdF9ldmVudCx4YWN0X3N0YXJ0LHF1ZXJ5 X3N0YXJ0LGJhY2tlbmRfc3RhcnQsc3RhdGVfY2hhbmdlLGNsaWVudF9hZGRyLGNsaWVudF9ob3N0 bmFtZSxjbGllbnRfcG9ydCxiYWNrZW5kX3hpZCxiYWNrZW5kX3htaW4sYmFja2VuZF90eXBlLHNz bCxzc2x2ZXJzaW9uLHNzbGNpcGhlcixzc2xiaXRzLHNzbF9jbGllbnRfZG4sc3NsX2NsaWVudF9z ZXJpYWwsc3NsX2lzc3Vlcl9kbixnc3NfYXV0aCxnc3NfcHJpbmMsZ3NzX2VuYyxsZWFkZXJfcGlk LHF1ZXJ5X2lkfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7aW50NCxvaWQsaW50NCxvaWQsdGV4 dCx0ZXh0LHRleHQsdGV4dCx0ZXh0LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6 LHRpbWVzdGFtcHR6LGluZXQsdGV4dCxpbnQ0LHhpZCx4aWQsdGV4dCxib29sLHRleHQsdGV4dCxp bnQ0LHRleHQsbnVtZXJpYyx0ZXh0LGJvb2wsdGV4dCxib29sLGludDQsaW50OCxpbnQ4fScsCisg IHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7cGlkLGRhdGlk LHBpZCx1c2VzeXNpZCxhcHBsaWNhdGlvbl9uYW1lLHN0YXRlLHF1ZXJ5LHdhaXRfZXZlbnRfdHlw ZSx3YWl0X2V2ZW50LHhhY3Rfc3RhcnQscXVlcnlfc3RhcnQsYmFja2VuZF9zdGFydCxzdGF0ZV9j aGFuZ2UsY2xpZW50X2FkZHIsY2xpZW50X2hvc3RuYW1lLGNsaWVudF9wb3J0LGJhY2tlbmRfeGlk LGJhY2tlbmRfeG1pbixiYWNrZW5kX3R5cGUsc3NsLHNzbHZlcnNpb24sc3NsY2lwaGVyLHNzbGJp dHMsc3NsX2NsaWVudF9kbixzc2xfY2xpZW50X3NlcmlhbCxzc2xfaXNzdWVyX2RuLGdzc19hdXRo LGdzc19wcmluYyxnc3NfZW5jLGxlYWRlcl9waWQscXVlcnlfaWQsYmFja2VuZF9tZW1fYWxsb2Nh dGVkfScsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfYWN0aXZpdHknIH0sCiB7IG9pZCA9PiAn MzMxOCcsCiAgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBpbmZvcm1hdGlvbiBhYm91dCBwcm9ncmVz cyBvZiBiYWNrZW5kcyBydW5uaW5nIG1haW50ZW5hbmNlIGNvbW1hbmQnLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2Jh Y2tlbmRfc3RhdHVzLmgKaW5kZXggYjU4MmI0NmU5Zi4uZDU5YTFkNTBmNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9iYWNrZW5kX3N0YXR1cy5oCkBAIC0xNjksNiArMTY5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdC YWNrZW5kU3RhdHVzCiAKIAkvKiBxdWVyeSBpZGVudGlmaWVyLCBvcHRpb25hbGx5IGNvbXB1dGVk IHVzaW5nIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rICovCiAJdWludDY0CQlzdF9xdWVyeV9pZDsK KworCS8qIEN1cnJlbnQgbWVtb3J5IGFsbG9jYXRlZCB0byB0aGlzIGJhY2tlbmQgKi8KKwl1aW50 NjQJCWJhY2tlbmRfbWVtX2FsbG9jYXRlZDsKIH0gUGdCYWNrZW5kU3RhdHVzOwogCiAKQEAgLTMx Myw3ICszMTYsOSBAQCBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dldF9iYWNrZW5kX2N1cnJl bnRfYWN0aXZpdHkoaW50IHBpZCwgYm9vbCBjaGVja1VzZXIpOwogZXh0ZXJuIGNvbnN0IGNoYXIg KnBnc3RhdF9nZXRfY3Jhc2hlZF9iYWNrZW5kX2FjdGl2aXR5KGludCBwaWQsIGNoYXIgKmJ1ZmZl ciwKIAkJCQkJCQkJCQkJCQkgICBpbnQgYnVmbGVuKTsKIGV4dGVybiB1aW50NjQgcGdzdGF0X2dl dF9teV9xdWVyeV9pZCh2b2lkKTsKLQorZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9iYWNrZW5k X21lbV9hbGxvY2F0ZWRfaW5jcmVhc2UodWludDY0IGFsbG9jYXRpb24pOworZXh0ZXJuIHZvaWQg cGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UodWludDY0IGRlYWxs b2NhdGlvbik7CitleHRlcm4gdWludDY0IHBnc3RhdF9nZXRfYWxsX2JhY2tlbmRfbWVtb3J5X2Fs bG9jYXRlZCh2b2lkKTsKIAogLyogLS0tLS0tLS0tLQogICogU3VwcG9ydCBmdW5jdGlvbnMgZm9y IHRoZSBTUUwtY2FsbGFibGUgZnVuY3Rpb25zIHRvCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CmluZGV4IGJmY2Q4YWM5YTAuLjM2OTQ3YzYzNmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cnVsZXMub3V0CkBAIC0xNzUyLDkgKzE3NTIsMTAgQEAgcGdfc3RhdF9hY3Rpdml0eXwgU0VMRUNU IHMuZGF0aWQsCiAgICAgcy5iYWNrZW5kX3hpZCwKICAgICBzLmJhY2tlbmRfeG1pbiwKICAgICBz LnF1ZXJ5X2lkLAorICAgIHMuYmFja2VuZF9tZW1fYWxsb2NhdGVkLAogICAgIHMucXVlcnksCiAg ICAgcy5iYWNrZW5kX3R5cGUKLSAgIEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjpp bnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwg cXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3Rh cnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0 bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlw ZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNz bF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3Nf ZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0 eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1l LCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwg cXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNs aWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJh Y2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGll bnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3By aW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwgYmFja2VuZF9tZW1fYWxsb2NhdGVk KQogICAgICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgZCBPTiAoKHMuZGF0aWQgPSBkLm9pZCkpKQog ICAgICBMRUZUIEpPSU4gcGdfYXV0aGlkIHUgT04gKChzLnVzZXN5c2lkID0gdS5vaWQpKSk7CiBw Z19zdGF0X2FsbF9pbmRleGVzfCBTRUxFQ1QgYy5vaWQgQVMgcmVsaWQsCkBAIC0xODY5LDcgKzE4 NzAsNyBAQCBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHMucGlkLAogICAgIHMuZ3NzX2F1dGggQVMg Z3NzX2F1dGhlbnRpY2F0ZWQsCiAgICAgcy5nc3NfcHJpbmMgQVMgcHJpbmNpcGFsLAogICAgIHMu Z3NzX2VuYyBBUyBlbmNyeXB0ZWQKLSAgIEZST00gcGdfc3RhdF9nZXRfYWN0aXZpdHkoTlVMTDo6 aW50ZWdlcikgcyhkYXRpZCwgcGlkLCB1c2VzeXNpZCwgYXBwbGljYXRpb25fbmFtZSwgc3RhdGUs IHF1ZXJ5LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0 YXJ0LCBiYWNrZW5kX3N0YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRyLCBjbGllbnRfaG9z dG5hbWUsIGNsaWVudF9wb3J0LCBiYWNrZW5kX3hpZCwgYmFja2VuZF94bWluLCBiYWNrZW5kX3R5 cGUsIHNzbCwgc3NsdmVyc2lvbiwgc3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xfY2xpZW50X2RuLCBz c2xfY2xpZW50X3NlcmlhbCwgc3NsX2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdzc19wcmluYywgZ3Nz X2VuYywgbGVhZGVyX3BpZCwgcXVlcnlfaWQpCisgICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5 KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUs IHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBx dWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xp ZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFj a2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVu dF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJp bmMsIGdzc19lbmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lkLCBiYWNrZW5kX21lbV9hbGxvY2F0ZWQp CiAgIFdIRVJFIChzLmNsaWVudF9wb3J0IElTIE5PVCBOVUxMKTsKIHBnX3N0YXRfcHJvZ3Jlc3Nf YW5hbHl6ZXwgU0VMRUNUIHMucGlkLAogICAgIHMuZGF0aWQsCkBAIC0yMDUwLDcgKzIwNTEsNyBA QCBwZ19zdGF0X3JlcGxpY2F0aW9ufCBTRUxFQ1Qgcy5waWQsCiAgICAgdy5zeW5jX3ByaW9yaXR5 LAogICAgIHcuc3luY19zdGF0ZSwKICAgICB3LnJlcGx5X3RpbWUKLSAgIEZST00gKChwZ19zdGF0 X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBs aWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwg eGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xp ZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNr ZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJp dHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3Nf YXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZST00g KChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5 c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2Fp dF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2No YW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRf eGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBo ZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVy X2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwg YmFja2VuZF9tZW1fYWxsb2NhdGVkKQogICAgICBKT0lOIHBnX3N0YXRfZ2V0X3dhbF9zZW5kZXJz KCkgdyhwaWQsIHN0YXRlLCBzZW50X2xzbiwgd3JpdGVfbHNuLCBmbHVzaF9sc24sIHJlcGxheV9s c24sIHdyaXRlX2xhZywgZmx1c2hfbGFnLCByZXBsYXlfbGFnLCBzeW5jX3ByaW9yaXR5LCBzeW5j X3N0YXRlLCByZXBseV90aW1lKSBPTiAoKHMucGlkID0gdy5waWQpKSkKICAgICAgTEVGVCBKT0lO IHBnX2F1dGhpZCB1IE9OICgocy51c2VzeXNpZCA9IHUub2lkKSkpOwogcGdfc3RhdF9yZXBsaWNh dGlvbl9zbG90c3wgU0VMRUNUIHMuc2xvdF9uYW1lLApAQCAtMjA4NCw3ICsyMDg1LDcgQEAgcGdf c3RhdF9zc2x8IFNFTEVDVCBzLnBpZCwKICAgICBzLnNzbF9jbGllbnRfZG4gQVMgY2xpZW50X2Ru LAogICAgIHMuc3NsX2NsaWVudF9zZXJpYWwgQVMgY2xpZW50X3NlcmlhbCwKICAgICBzLnNzbF9p c3N1ZXJfZG4gQVMgaXNzdWVyX2RuCi0gICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6 OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRl LCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9z dGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hv c3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90 eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwg c3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdz c19lbmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lkKQorICAgRlJPTSBwZ19zdGF0X2dldF9hY3Rpdml0 eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1l LCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwg cXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNs aWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJh Y2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGll bnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3By aW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwgYmFja2VuZF9tZW1fYWxsb2NhdGVk KQogICBXSEVSRSAocy5jbGllbnRfcG9ydCBJUyBOT1QgTlVMTCk7CiBwZ19zdGF0X3N1YnNjcmlw dGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1lLAotLSAKMi4yNS4x Cgo= --=-ImHHnatVmTb//z81GZY2 Content-Disposition: attachment; filename*0=0002-Add-the-ability-to-limit-the-amount-of-memory-that-c.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0002-Add-the-ability-to-limit-the-amount-of-memory-that-c.patch"; charset="UTF-8" RnJvbSA3YzY3MzVhMzRkMjJmZGUxYTUxMDNiZDk2MmQwYTQ1ZjEzMjJlODdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSZWlkIFRob21wc29uIDxqcmVpZHRob21wc29uQG5jLnJyLmNv bT4KRGF0ZTogU2F0LCA0IEp1biAyMDIyIDIyOjIzOjU5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAy LzJdIEFkZCB0aGUgYWJpbGl0eSB0byBsaW1pdCB0aGUgYW1vdW50IG9mIG1lbW9yeSB0aGF0IGNh biBiZQogYWxsb2NhdGVkIHRvIGJhY2tlbmRzLgoKVGhpcyBidWlsZHMgb24gdGhlIHdvcmsgdGhh dCBhZGRzIGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRlZCB0byBwZ19zdGF0X2FjdGl2aXR5LgoKQWRk IEdVQyB2YXJpYWJsZSBtYXhfdG90YWxfYmFja2VuZF9tZW1vcnkuCgpTcGVjaWZpZXMgYSBsaW1p dCB0byB0aGUgYW1vdW50IG9mIG1lbW9yeSAoaW4gTUIpIHRoYXQgbWF5IGJlIGFsbG9jYXRlZCB0 bwpiYWNrZW5kcyBpbiB0b3RhbCAoaS5lLiB0aGlzIGlzIG5vdCBhIHBlciB1c2VyIG9yIHBlciBi YWNrZW5kIGxpbWl0KS4gSWYgdW5zZXQsCm9yIHNldCB0byAwIGl0IGlzIGRpc2FibGVkLiBJdCBp cyBpbnRlbmRlZCBhcyBhIHJlc291cmNlIHRvIGhlbHAgYXZvaWQgdGhlIE9PTQpraWxsZXIgb24g TElOVVggYW5kIG1hbmFnZSByZXNvdXJjZXMgaW4gZ2VuZXJhbC4gQSBiYWNrZW5kIHJlcXVlc3Qg dGhhdCB3b3VsZApwdXNoIHRoZSB0b3RhbCBvdmVyIHRoZSBsaW1pdCB3aWxsIGJlIGRlbmllZCB3 aXRoIGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgY2F1c2luZwp0aGF0IGJhY2tlbmQncyBjdXJyZW50 IHF1ZXJ5L3RyYW5zYWN0aW9uIHRvIGZhaWwuIER1ZSB0byB0aGUgZHluYW1pYyBuYXR1cmUgb2YK bWVtb3J5IGFsbG9jYXRpb25zLCB0aGlzIGxpbWl0IGlzIG5vdCBleGFjdC4gSWYgd2l0aGluIDEu NU1CIG9mIHRoZSBsaW1pdCBhbmQKdHdvIGJhY2tlbmRzIHJlcXVlc3QgMU1CIGVhY2ggYXQgdGhl IHNhbWUgdGltZSBib3RoIG1heSBiZSBhbGxvY2F0ZWQsIGFuZCBleGNlZWQKdGhlIGxpbWl0LiBG dXJ0aGVyIHJlcXVlc3RzIHdpbGwgbm90IGJlIGFsbG9jYXRlZCB1bnRpbCBkcm9wcGluZyBiZWxv dyB0aGUKbGltaXQuIEtlZXAgdGhpcyBpbiBtaW5kIHdoZW4gc2V0dGluZyB0aGlzIHZhbHVlLiBU aGlzIGxpbWl0IGRvZXMgbm90IGFmZmVjdAphdXhpbGlhcnkgYmFja2VuZCBwcm9jZXNzZXMuIEJh Y2tlbmQgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBkaXNwbGF5ZWQgaW4gdGhlCnBnX3N0YXRfYWN0 aXZpdHkgdmlldy4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAg ICAgICAgfCAgMjYgKysrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwuYyAgICAg ICAgICAgIHwgIDEyICsrCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1 cy5jICAgfCAxMTEgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYyAgICAgICAgICAgfCAgMTEgKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQu YyAgICAgICAgICAgICAgICAgfCAgMTcgKysrCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL2dlbmVy YXRpb24uYyAgICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5j ICAgICAgICAgICAgICAgICB8ICAgOCArKwogc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0 dXMuaCAgICAgICAgICAgIHwgICAyICsKIDkgZmlsZXMgY2hhbmdlZCwgMTk5IGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s IGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDU1OWViODk4YTkuLjRkMjI0OTFhN2Ug MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwKQEAgLTIwNzksNiArMjA3OSwzMiBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwog ICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3Rl bnRyeSBpZD0iZ3VjLW1heC10b3RhbC1iYWNrZW5kLW1lbW9yeSIgeHJlZmxhYmVsPSJtYXhfdG90 YWxfYmFja2VuZF9tZW1vcnkiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+bWF4X3RvdGFsX2JhY2tl bmRfbWVtb3J5PC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0 ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1heF90b3RhbF9iYWNrZW5kX21lbW9yeTwv dmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4 dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgU3BlY2lmaWVzIGEgbGltaXQgdG8gdGhlIGFtb3VudCBvZiBtZW1vcnkgKE1CKSB0aGF0 IG1heSBiZSBhbGxvY2F0ZWQgdG8KKyAgICAgICAgYmFja2VuZHMgaW4gdG90YWwgKGkuZS4gdGhp cyBpcyBub3QgYSBwZXIgdXNlciBvciBwZXIgYmFja2VuZCBsaW1pdCkuCisgICAgICAgIElmIHVu c2V0LCBvciBzZXQgdG8gMCBpdCBpcyBkaXNhYmxlZC4gIEEgYmFja2VuZCByZXF1ZXN0IHRoYXQg d291bGQKKyAgICAgICAgcHVzaCB0aGUgdG90YWwgb3ZlciB0aGUgbGltaXQgd2lsbCBiZSBkZW5p ZWQgd2l0aCBhbiBvdXQgb2YgbWVtb3J5CisgICAgICAgIGVycm9yIGNhdXNpbmcgdGhhdCBiYWNr ZW5kJ3MgY3VycmVudCBxdWVyeS90cmFuc2FjdGlvbiB0byBmYWlsLiBEdWUgdG8KKyAgICAgICAg dGhlIGR5bmFtaWMgbmF0dXJlIG9mIG1lbW9yeSBhbGxvY2F0aW9ucywgdGhpcyBsaW1pdCBpcyBu b3QgZXhhY3QuIElmCisgICAgICAgIHdpdGhpbiAxLjVNQiBvZiB0aGUgbGltaXQgYW5kIHR3byBi YWNrZW5kcyByZXF1ZXN0IDFNQiBlYWNoIGF0IHRoZSBzYW1lCisgICAgICAgIHRpbWUgYm90aCBt YXkgYmUgYWxsb2NhdGVkLCBhbmQgZXhjZWVkIHRoZSBsaW1pdC4gRnVydGhlciByZXF1ZXN0cyB3 aWxsCisgICAgICAgIG5vdCBiZSBhbGxvY2F0ZWQgdW50aWwgZHJvcHBpbmcgYmVsb3cgdGhlIGxp bWl0LiBLZWVwIHRoaXMgaW4gbWluZCB3aGVuCisgICAgICAgIHNldHRpbmcgdGhpcyB2YWx1ZS4g VGhpcyBsaW1pdCBkb2VzIG5vdCBhZmZlY3QgYXV4aWxpYXJ5IGJhY2tlbmQKKyAgICAgICAgcHJv Y2Vzc2VzIDx4cmVmIGxpbmtlbmQ9Imdsb3NzYXJ5LWF1eGlsaWFyeS1wcm9jIi8+IC4gQmFja2Vu ZCBtZW1vcnkKKyAgICAgICAgYWxsb2NhdGlvbnMgKDx2YXJuYW1lPmJhY2tlbmRfbWVtX2FsbG9j YXRlZDwvdmFybmFtZT4pIGFyZSBkaXNwbGF5ZWQgaW4KKyAgICAgICAgdGhlIDxsaW5rIGxpbmtl bmQ9Im1vbml0b3JpbmctcGctc3RhdC1hY3Rpdml0eS12aWV3Ij48c3RydWN0bmFtZT5wZ19zdGF0 X2FjdGl2aXR5PC9zdHJ1Y3RuYW1lPjwvbGluaz4KKyAgICAgICAgdmlldy4KKyAgICAgICA8L3Bh cmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3Zh cmlhYmxlbGlzdD4KICAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvZHNtX2ltcGwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMK aW5kZXggMzM1NmJiNjViNS4uY2MwNjEwNTZhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvZHNtX2ltcGwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1w bC5jCkBAIC0yNTMsNiArMjUzLDEwIEBAIGRzbV9pbXBsX3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hh bmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKKwkv KiBEbyBub3QgZXhjZWVkIG1heGltdW0gYWxsb3dlZCBtZW1vcnkgYWxsb2NhdGlvbiAqLworCWlm IChvcCA9PSBEU01fT1BfQ1JFQVRFICYmIGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShyZXF1 ZXN0X3NpemUpKQorCQlyZXR1cm4gZmFsc2U7CisKIAkvKgogCSAqIENyZWF0ZSBuZXcgc2VnbWVu dCBvciBvcGVuIGFuIGV4aXN0aW5nIG9uZSBmb3IgYXR0YWNoLgogCSAqCkBAIC01MjQsNiArNTI4 LDEwIEBAIGRzbV9pbXBsX3N5c3YoZHNtX29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwgU2l6ZSBy ZXF1ZXN0X3NpemUsCiAJCWludAkJCWZsYWdzID0gSVBDUHJvdGVjdGlvbjsKIAkJc2l6ZV90CQlz ZWdzaXplOwogCisJCS8qIERvIG5vdCBleGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxv Y2F0aW9uICovCisJCWlmIChvcCA9PSBEU01fT1BfQ1JFQVRFICYmIGV4Y2VlZHNfbWF4X3RvdGFs X2JrZW5kX21lbShyZXF1ZXN0X3NpemUpKQorCQkJcmV0dXJuIGZhbHNlOworCiAJCS8qCiAJCSAq IEFsbG9jYXRlIHRoZSBtZW1vcnkgQkVGT1JFIGFjcXVpcmluZyB0aGUgcmVzb3VyY2UsIHNvIHRo YXQgd2UgZG9uJ3QKIAkJICogbGVhayB0aGUgcmVzb3VyY2UgaWYgbWVtb3J5IGFsbG9jYXRpb24g ZmFpbHMuCkBAIC03MTgsNiArNzI2LDEwIEBAIGRzbV9pbXBsX3dpbmRvd3MoZHNtX29wIG9wLCBk c21faGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJCXJldHVybiB0cnVlOwogCX0K IAorCS8qIERvIG5vdCBleGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICov CisJaWYgKG9wID09IERTTV9PUF9DUkVBVEUgJiYgZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVt KHJlcXVlc3Rfc2l6ZSkpCisJCXJldHVybiBmYWxzZTsKKwogCS8qIENyZWF0ZSBuZXcgc2VnbWVu dCBvciBvcGVuIGFuIGV4aXN0aW5nIG9uZSBmb3IgYXR0YWNoLiAqLwogCWlmIChvcCA9PSBEU01f T1BfQ1JFQVRFKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2Jh Y2tlbmRfc3RhdHVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1 cy5jCmluZGV4IDVjMzM4MjRlYjguLjg3MmZlNjYxODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwpAQCAtNDUsNiArNDUsOSBAQAogYm9vbAkJcGdzdGF0 X3RyYWNrX2FjdGl2aXRpZXMgPSBmYWxzZTsKIGludAkJCXBnc3RhdF90cmFja19hY3Rpdml0eV9x dWVyeV9zaXplID0gMTAyNDsKIAorLyogTWF4IGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRpb24gYWxs b3dlZCAoTUIpLiAwID0gZGlzYWJsZWQgKi8KK2ludAkJCW1heF90b3RhbF9ia2VuZF9tZW0gPSAw OworCiAKIC8qIGV4cG9zZWQgc28gdGhhdCBiYWNrZW5kX3Byb2dyZXNzLmMgY2FuIGFjY2VzcyBp dCAqLwogUGdCYWNrZW5kU3RhdHVzICpNeUJFRW50cnkgPSBOVUxMOwpAQCAtMTI3OCw3ICsxMjgx LDcgQEAgcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UodWludDY0 IGRlYWxsb2NhdGlvbikKIAkgKi8KIAlpZiAoZGVhbGxvY2F0aW9uID4gYmVlbnRyeS0+YmFja2Vu ZF9tZW1fYWxsb2NhdGVkKQogCXsKLQkJZXJlcG9ydChMT0csIGVycm1zZygiZGVjcmVhc2UgcmVk dWNlcyByZXBvcnRlZCBiYWNrZW5kIG1lbW9yeSBhbGxvY2F0ZWQgYmVsb3cgemVybzsgc2V0dGlu ZyByZXBvcnRlZCB0byAwIikpOworCQllcmVwb3J0KExPRywgZXJybXNnKCJkZWFsbG9jYXRpb24g d291bGQgZGVjcmVhc2UgYmFja2VuZCBtZW1vcnkgYmVsb3cgemVybzsgc2V0dGluZyByZXBvcnRl ZCB0byAwIikpOwogCiAJCS8qCiAJCSAqIE92ZXJ3cml0ZSBkZWFsbG9jYXRpb24gd2l0aCBjdXJy ZW50IGJhY2tlbmRfbWVtX2FsbG9jYXRlZCBzbyB3ZSBlbmQKQEAgLTEyOTYsMyArMTI5OSwxMDkg QEAgcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UodWludDY0IGRl YWxsb2NhdGlvbikKIAliZWVudHJ5LT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQgLT0gZGVhbGxvY2F0 aW9uOwogCVBHU1RBVF9FTkRfV1JJVEVfQUNUSVZJVFkoYmVlbnRyeSk7CiB9CisKKy8qIC0tLS0t LS0tLS0KKyAqIHBnc3RhdF9nZXRfYWxsX2JhY2tlbmRfbWVtb3J5X2FsbG9jYXRlZCgpIC0KKyAq CisgKglSZXR1cm4gYSB1aW50NjQgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHNoYXJlZCBtZW1v cnkgYWxsb2NhdGVkIHRvIGFsbAorICoJYmFja2VuZHMuICBUaGlzIGxvb2tzIGRpcmVjdGx5IGF0 IHRoZSBCYWNrZW5kU3RhdHVzQXJyYXksIGFuZCBzbyB3aWxsCisgKglwcm92aWRlIGN1cnJlbnQg aW5mb3JtYXRpb24gcmVnYXJkbGVzcyBvZiB0aGUgYWdlIG9mIG91ciB0cmFuc2FjdGlvbidzCisg KglzbmFwc2hvdCBvZiB0aGUgc3RhdHVzIGFycmF5LgorICoJSW4gdGhlIGZ1dHVyZSB3ZSB3aWxs IGxpa2VseSB1dGlsaXplIGFkZGl0aW9uYWwgdmFsdWVzIC0gcGVyaGFwcyBsaW1pdAorICoJYmFj a2VuZCBhbGxvY2F0aW9uIGJ5IHVzZXIvcm9sZSwgZXRjLgorICogLS0tLS0tLS0tLQorICovCit1 aW50NjQKK3Bnc3RhdF9nZXRfYWxsX2JhY2tlbmRfbWVtb3J5X2FsbG9jYXRlZCh2b2lkKQorewor CVBnQmFja2VuZFN0YXR1cyAqYmVlbnRyeTsKKwlpbnQJCQlpOworCXVpbnQ2NAkJYWxsX2JhY2tl bmRfbWVtb3J5X2FsbG9jYXRlZCA9IDA7CisKKwliZWVudHJ5ID0gQmFja2VuZFN0YXR1c0FycmF5 OworCisJLyoKKwkgKiBXZSBwcm9iYWJseSBzaG91bGRuJ3QgZ2V0IGhlcmUgYmVmb3JlIHNoYXJl ZCBtZW1vcnkgaGFzIGJlZW4gc2V0IHVwLAorCSAqIGJ1dCBiZSBzYWZlLgorCSAqLworCWlmIChi ZWVudHJ5ID09IE5VTEwgfHwgQmFja2VuZEFjdGl2aXR5QnVmZmVyID09IE5VTEwpCisJCXJldHVy biAwOworCisJLyoKKwkgKiBXZSBpbmNsdWRlIEFVWCBwcm9jcyBpbiBhbGwgYmFja2VuZCBtZW1v cnkgY2FsY3VsYXRpb24KKwkgKi8KKwlmb3IgKGkgPSAxOyBpIDw9IE51bUJhY2tlbmRTdGF0U2xv dHM7IGkrKykKKwl7CisJCS8qCisJCSAqIFdlIHVzZSBhIHZvbGF0aWxlIHBvaW50ZXIgaGVyZSB0 byBlbnN1cmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgdHJ5CisJCSAqIHRvIGdldCBjdXRlLgorCQkg Ki8KKwkJdm9sYXRpbGUgUGdCYWNrZW5kU3RhdHVzICp2YmVlbnRyeSA9IGJlZW50cnk7CisJCWJv b2wJCWZvdW5kOworCQl1aW50NjQJCWJhY2tlbmRfbWVtX2FsbG9jYXRlZCA9IDA7CisKKwkJZm9y ICg7OykKKwkJeworCQkJaW50CQkJYmVmb3JlX2NoYW5nZWNvdW50OworCQkJaW50CQkJYWZ0ZXJf Y2hhbmdlY291bnQ7CisKKwkJCXBnc3RhdF9iZWdpbl9yZWFkX2FjdGl2aXR5KHZiZWVudHJ5LCBi ZWZvcmVfY2hhbmdlY291bnQpOworCisJCQkvKgorCQkJICogSWdub3JlIGludmFsaWQgZW50cmll cywgd2hpY2ggbWF5IGNvbnRhaW4gaW52YWxpZCBkYXRhLgorCQkJICogU2VlIHBnc3RhdF9iZXNo dXRkb3duX2hvb2soKQorCQkJICovCisJCQlpZiAodmJlZW50cnktPnN0X3Byb2NwaWQgPiAwKQor CQkJCWJhY2tlbmRfbWVtX2FsbG9jYXRlZCA9IHZiZWVudHJ5LT5iYWNrZW5kX21lbV9hbGxvY2F0 ZWQ7CisKKwkJCXBnc3RhdF9lbmRfcmVhZF9hY3Rpdml0eSh2YmVlbnRyeSwgYWZ0ZXJfY2hhbmdl Y291bnQpOworCisJCQlpZiAoKGZvdW5kID0gcGdzdGF0X3JlYWRfYWN0aXZpdHlfY29tcGxldGUo YmVmb3JlX2NoYW5nZWNvdW50LAorCQkJCQkJCQkJCQkJCSAgIGFmdGVyX2NoYW5nZWNvdW50KSkp CisJCQkJYnJlYWs7CisKKwkJCS8qIE1ha2Ugc3VyZSB3ZSBjYW4gYnJlYWsgb3V0IG9mIGxvb3Ag aWYgc3R1Y2suLi4gKi8KKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCX0KKworCQlpZiAo Zm91bmQpCisJCQlhbGxfYmFja2VuZF9tZW1vcnlfYWxsb2NhdGVkICs9IGJhY2tlbmRfbWVtX2Fs bG9jYXRlZDsKKworCQliZWVudHJ5Kys7CisJfQorCisJcmV0dXJuIGFsbF9iYWNrZW5kX21lbW9y eV9hbGxvY2F0ZWQ7Cit9CisKKy8qCisgKiBEZXRlcm1pbmUgaWYgYWxsb2NhdGlvbiByZXF1ZXN0 IHdpbGwgZXhjZWVkIG1heCBiYWNrZW5kIG1lbW9yeSBhbGxvd2VkLgorICogRG8gbm90IGFwcGx5 IHRvIGF1eGlsaWFyeSBwcm9jZXNzZXMuCisgKi8KK2Jvb2wKK2V4Y2VlZHNfbWF4X3RvdGFsX2Jr ZW5kX21lbSh1aW50NjQgYWxsb2NhdGlvbl9yZXF1ZXN0KQoreworCWJvb2wJCXJlc3VsdCA9IGZh bHNlOworCisJLyogRXhjbHVkZSBhdXhpbGlhcnkgcHJvY2Vzc2VzIGZyb20gdGhlIGNoZWNrICov CisJaWYgKE15QXV4UHJvY1R5cGUgIT0gTm90QW5BdXhQcm9jZXNzKQorCQlyZXR1cm4gcmVzdWx0 OworCisJLyogQ29udmVydCBtYXhfdG90YWxfYmtlbmRfbWVtIHRvIGJ5dGVzIGZvciBjb21wYXJp c29uICovCisJaWYgKG1heF90b3RhbF9ia2VuZF9tZW0gJiYKKwkJcGdzdGF0X2dldF9hbGxfYmFj a2VuZF9tZW1vcnlfYWxsb2NhdGVkKCkgKworCQlhbGxvY2F0aW9uX3JlcXVlc3QgPiAodWludDY0 KSBtYXhfdG90YWxfYmtlbmRfbWVtICogMTAyNCAqIDEwMjQpCisJeworCQkvKgorCQkgKiBFeHBs aWNpdGx5IGlkZW50aWZ5IHRoZSBPT00gYmVpbmcgYSByZXN1bHQgb2YgdGhpcyBjb25maWd1cmF0 aW9uCisJCSAqIHBhcmFtZXRlciB2cyBhIHN5c3RlbSBmYWlsdXJlIHRvIGFsbG9jYXRlIE9PTS4K KwkJICovCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQllcnJtc2coImFsbG9jYXRpb24gd291bGQg ZXhjZWVkIG1heF90b3RhbF9iYWNrZW5kX21lbW9yeSBsaW1pdCAoJWxsdSA+ICVsbHUpIiwKKwkJ CQkJICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgcGdzdGF0X2dldF9hbGxfYmFja2VuZF9tZW1vcnlf YWxsb2NhdGVkKCkgKworCQkJCQkgICBhbGxvY2F0aW9uX3JlcXVlc3QsICh1bnNpZ25lZCBsb25n IGxvbmcpIG1heF90b3RhbF9ia2VuZF9tZW0gKiAxMDI0ICogMTAyNCkpOworCisJCXJlc3VsdCA9 IHRydWU7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKaW5kZXggMDVhYjA4NzkzNC4uNzQ1Y2MyY2E5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMKQEAgLTM0MDUsNiArMzQwNSwxNyBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25m aWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsibWF4 X3RvdGFsX2JhY2tlbmRfbWVtb3J5IiwgUEdDX1NVX0JBQ0tFTkQsIFJFU09VUkNFU19NRU0sCisJ CQlnZXR0ZXh0X25vb3AoIlJlc3RyaWN0IHRvdGFsIGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRpb25z IHRvIHRoaXMgbWF4LiIpLAorCQkJZ2V0dGV4dF9ub29wKCIwIHR1cm5zIHRoaXMgZmVhdHVyZSBv ZmYuIiksCisJCQlHVUNfVU5JVF9NQgorCQl9LAorCQkmbWF4X3RvdGFsX2JrZW5kX21lbSwKKwkJ MCwgMCwgSU5UX01BWCwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlz dCBtYXJrZXIgKi8KIAl7CiAJCXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgMCwgMCwg MCwgTlVMTCwgTlVMTCwgTlVMTApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlCmluZGV4IDg2OGQyMWMzNTEuLjFjZTBkZWU2ZDAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTE1NSw2ICsxNTUsOSBA QAogCQkJCQkjICAgbW1hcAogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtaW5f ZHluYW1pY19zaGFyZWRfbWVtb3J5ID0gME1CCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQor I21heF90b3RhbF9iYWNrZW5kX21lbW9yeSA9IDBNQgkJIyBSZXN0cmljdCB0b3RhbCBiYWNrZW5k IG1lbW9yeSBhbGxvY2F0aW9ucworCQkJCQkJCQkJIyB0byB0aGlzIG1heCAoaW4gTUIpLiAwIHR1 cm5zIHRoaXMgZmVhdHVyZQorCQkJCQkJCQkJIyBvZmYuCiAKICMgLSBEaXNrIC0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMgYi9zcmMvYmFja2VuZC91dGlscy9t bWdyL2FzZXQuYwppbmRleCBmNmQxMzMzZjNkLi41YzY1OWRjMGZjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9tbWdyL2FzZXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL2Fz ZXQuYwpAQCAtNDQwLDYgKzQ0MCwxMCBAQCBBbGxvY1NldENvbnRleHRDcmVhdGVJbnRlcm5hbChN ZW1vcnlDb250ZXh0IHBhcmVudCwKIAllbHNlCiAJCWZpcnN0QmxvY2tTaXplID0gTWF4KGZpcnN0 QmxvY2tTaXplLCBpbml0QmxvY2tTaXplKTsKIAorCS8qIERvIG5vdCBleGNlZWQgbWF4aW11bSBh bGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJaWYgKGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5k X21lbShmaXJzdEJsb2NrU2l6ZSkpCisJCXJldHVybiBOVUxMOworCiAJLyoKIAkgKiBBbGxvY2F0 ZSB0aGUgaW5pdGlhbCBibG9jay4gIFVubGlrZSBvdGhlciBhc2V0LmMgYmxvY2tzLCBpdCBzdGFy dHMgd2l0aAogCSAqIHRoZSBjb250ZXh0IGhlYWRlciBhbmQgaXRzIGJsb2NrIGhlYWRlciBmb2xs b3dzIHRoYXQuCkBAIC03NDIsNiArNzQ2LDExIEBAIEFsbG9jU2V0QWxsb2MoTWVtb3J5Q29udGV4 dCBjb250ZXh0LCBTaXplIHNpemUpCiAjZW5kaWYKIAogCQlibGtzaXplID0gY2h1bmtfc2l6ZSAr IEFMTE9DX0JMT0NLSERSU1ogKyBBTExPQ19DSFVOS0hEUlNaOworCisJCS8qIERvIG5vdCBleGNl ZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJCWlmIChleGNlZWRzX21h eF90b3RhbF9ia2VuZF9tZW0oYmxrc2l6ZSkpCisJCQlyZXR1cm4gTlVMTDsKKwogCQlibG9jayA9 IChBbGxvY0Jsb2NrKSBtYWxsb2MoYmxrc2l6ZSk7CiAJCWlmIChibG9jayA9PSBOVUxMKQogCQkJ cmV0dXJuIE5VTEw7CkBAIC05MzksNiArOTQ4LDEwIEBAIEFsbG9jU2V0QWxsb2MoTWVtb3J5Q29u dGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJCXdoaWxlIChibGtzaXplIDwgcmVxdWlyZWRfc2l6 ZSkKIAkJCWJsa3NpemUgPDw9IDE7CiAKKwkJLyogRG8gbm90IGV4Y2VlZCBtYXhpbXVtIGFsbG93 ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJaWYgKGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21l bShibGtzaXplKSkKKwkJCXJldHVybiBOVUxMOworCiAJCS8qIFRyeSB0byBhbGxvY2F0ZSBpdCAq LwogCQlibG9jayA9IChBbGxvY0Jsb2NrKSBtYWxsb2MoYmxrc2l6ZSk7CiAKQEAgLTExNzksNiAr MTE5MiwxMCBAQCBBbGxvY1NldFJlYWxsb2Modm9pZCAqcG9pbnRlciwgU2l6ZSBzaXplKQogCQli bGtzaXplID0gY2hrc2l6ZSArIEFMTE9DX0JMT0NLSERSU1ogKyBBTExPQ19DSFVOS0hEUlNaOwog CQlvbGRibGtzaXplID0gYmxvY2stPmVuZHB0ciAtICgoY2hhciAqKSBibG9jayk7CiAKKwkJLyog RG8gbm90IGV4Y2VlZCBtYXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJaWYg KGJsa3NpemUgPiBvbGRibGtzaXplICYmIGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShibGtz aXplIC0gb2xkYmxrc2l6ZSkpCisJCQlyZXR1cm4gTlVMTDsKKwogCQlibG9jayA9IChBbGxvY0Js b2NrKSByZWFsbG9jKGJsb2NrLCBibGtzaXplKTsKIAkJaWYgKGJsb2NrID09IE5VTEwpCiAJCXsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKaW5kZXggN2JiOTE3NWY2ZC4uZWYyZTExYWVm YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKQEAgLTIwMSw2ICsyMDEsOSBAQCBH ZW5lcmF0aW9uQ29udGV4dENyZWF0ZShNZW1vcnlDb250ZXh0IHBhcmVudCwKIAllbHNlCiAJCWFs bG9jU2l6ZSA9IE1heChhbGxvY1NpemUsIGluaXRCbG9ja1NpemUpOwogCisJaWYgKGV4Y2VlZHNf bWF4X3RvdGFsX2JrZW5kX21lbShhbGxvY1NpemUpKQorCQlyZXR1cm4gTlVMTDsKKwogCS8qCiAJ ICogQWxsb2NhdGUgdGhlIGluaXRpYWwgYmxvY2suICBVbmxpa2Ugb3RoZXIgZ2VuZXJhdGlvbi5j IGJsb2NrcywgaXQKIAkgKiBzdGFydHMgd2l0aCB0aGUgY29udGV4dCBoZWFkZXIgYW5kIGl0cyBi bG9jayBoZWFkZXIgZm9sbG93cyB0aGF0LgpAQCAtMjg1LDcgKzI4OCw3IEBAIEdlbmVyYXRpb25S ZXNldChNZW1vcnlDb250ZXh0IGNvbnRleHQpCiB7CiAJR2VuZXJhdGlvbkNvbnRleHQgKnNldCA9 IChHZW5lcmF0aW9uQ29udGV4dCAqKSBjb250ZXh0OwogCWRsaXN0X211dGFibGVfaXRlciBtaXRl cjsKLQl1aW50NjQJZGVhbGxvY2F0aW9uID0gMDsKKwl1aW50NjQJCWRlYWxsb2NhdGlvbiA9IDA7 CiAKIAlBc3NlcnRBcmcoR2VuZXJhdGlvbklzVmFsaWQoc2V0KSk7CiAKQEAgLTM4MCw2ICszODMs OSBAQCBHZW5lcmF0aW9uQWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJ ewogCQlTaXplCQlibGtzaXplID0gcmVxdWlyZWRfc2l6ZSArIEdlbmVyYXRpb25fQkxPQ0tIRFJT WjsKIAorCQlpZiAoZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKGJsa3NpemUpKQorCQkJcmV0 dXJuIE5VTEw7CisKIAkJYmxvY2sgPSAoR2VuZXJhdGlvbkJsb2NrICopIG1hbGxvYyhibGtzaXpl KTsKIAkJaWYgKGJsb2NrID09IE5VTEwpCiAJCQlyZXR1cm4gTlVMTDsKQEAgLTQ4Myw2ICs0ODks OSBAQCBHZW5lcmF0aW9uQWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJ CQlpZiAoYmxrc2l6ZSA8IHJlcXVpcmVkX3NpemUpCiAJCQkJYmxrc2l6ZSA9IHBnX25leHRwb3dl cjJfc2l6ZV90KHJlcXVpcmVkX3NpemUpOwogCisJCQlpZiAoZXhjZWVkc19tYXhfdG90YWxfYmtl bmRfbWVtKGJsa3NpemUpKQorCQkJCXJldHVybiBOVUxMOworCiAJCQlibG9jayA9IChHZW5lcmF0 aW9uQmxvY2sgKikgbWFsbG9jKGJsa3NpemUpOwogCiAJCQlpZiAoYmxvY2sgPT0gTlVMTCkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9zbGFiLmMKaW5kZXggZWZkYzI3MzZjMS4uNmVjNTEyZGVmZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9zbGFiLmMKQEAgLTE5Nyw2ICsxOTcsMTAgQEAgU2xhYkNvbnRleHRDcmVhdGUoTWVtb3J5Q29u dGV4dCBwYXJlbnQsCiAJaGVhZGVyU2l6ZSArPSBjaHVua3NQZXJCbG9jayAqIHNpemVvZihib29s KTsKICNlbmRpZgogCisJLyogRG8gbm90IGV4Y2VlZCBtYXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFs bG9jYXRpb24gKi8KKwlpZiAoZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKGhlYWRlclNpemUp KQorCQlyZXR1cm4gTlVMTDsKKwogCXNsYWIgPSAoU2xhYkNvbnRleHQgKikgbWFsbG9jKGhlYWRl clNpemUpOwogCWlmIChzbGFiID09IE5VTEwpCiAJewpAQCAtMzUxLDYgKzM1NSwxMCBAQCBTbGFi QWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJICovCiAJaWYgKHNsYWIt Pm1pbkZyZWVDaHVua3MgPT0gMCkKIAl7CisJCS8qIERvIG5vdCBleGNlZWQgbWF4aW11bSBhbGxv d2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJCWlmIChleGNlZWRzX21heF90b3RhbF9ia2VuZF9t ZW0oc2xhYi0+YmxvY2tTaXplKSkKKwkJCXJldHVybiBOVUxMOworCiAJCWJsb2NrID0gKFNsYWJC bG9jayAqKSBtYWxsb2Moc2xhYi0+YmxvY2tTaXplKTsKIAogCQlpZiAoYmxvY2sgPT0gTlVMTCkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmggYi9zcmMvaW5j bHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCmluZGV4IGQ1OWExZDUwZjYuLjA0MDNhMjRlZWYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaApAQCAtMjc4LDYgKzI3OCw3IEBAIHR5cGVk ZWYgc3RydWN0IExvY2FsUGdCYWNrZW5kU3RhdHVzCiAgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBi b29sIHBnc3RhdF90cmFja19hY3Rpdml0aWVzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBwZ3N0 YXRfdHJhY2tfYWN0aXZpdHlfcXVlcnlfc2l6ZTsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4 X3RvdGFsX2JrZW5kX21lbTsKIAogCiAvKiAtLS0tLS0tLS0tCkBAIC0zMjksNiArMzMwLDcgQEAg ZXh0ZXJuIGludAlwZ3N0YXRfZmV0Y2hfc3RhdF9udW1iYWNrZW5kcyh2b2lkKTsKIGV4dGVybiBQ Z0JhY2tlbmRTdGF0dXMgKnBnc3RhdF9mZXRjaF9zdGF0X2JlZW50cnkoQmFja2VuZElkIGJlaWQp OwogZXh0ZXJuIExvY2FsUGdCYWNrZW5kU3RhdHVzICpwZ3N0YXRfZmV0Y2hfc3RhdF9sb2NhbF9i ZWVudHJ5KGludCBiZWlkKTsKIGV4dGVybiBjaGFyICpwZ3N0YXRfY2xpcF9hY3Rpdml0eShjb25z dCBjaGFyICpyYXdfYWN0aXZpdHkpOworZXh0ZXJuIGJvb2wgZXhjZWVkc19tYXhfdG90YWxfYmtl bmRfbWVtKHVpbnQ2NCBhbGxvY2F0aW9uX3JlcXVlc3QpOwogCiAKICNlbmRpZgkJCQkJCQkvKiBC QUNLRU5EX1NUQVRVU19IICovCi0tIAoyLjI1LjEKCg== --=-ImHHnatVmTb//z81GZY2--