Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vjAVE-009AOH-36 for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jan 2026 06:18:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vjAVC-00GJLU-3D for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jan 2026 06:18:39 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vjAVC-00GJLM-0Z for pgsql-hackers@lists.postgresql.org; Fri, 23 Jan 2026 06:18:39 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vjAV6-001tEA-2J for pgsql-hackers@lists.postgresql.org; Fri, 23 Jan 2026 06:18:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1769149109; bh=Xh6eOyzhcXsg1LuCQt/xMUxxi/Keg395HXofUzuyq9Y=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Message-ID:From; b=BSMIKWryxuEenGjr5MgKOj3Z/PEzbHRRMa8R3TUVP2hCmEZnxDmSoLxlnEriqspKH WAYaXZDQxo66R7zP3dMW1NMFEJADFmLYrZUcf3t/d2SThhE0SaIveHMN5uEw0waQk7 1qLHaWYEyZIB4xn2aqLS2+aOYTGujHgv8Jj6yQOnSw2+arYQqfrIKz3oSWAOsdxuc1 8X1pe4uHFzuVM24ynNKp11TtIDCBoBtQBgX08MrOEPg2Kv7SvhLueAUyKN1fhQ72Mc HaZbj/dElx10Y7ChmsTDHlk8ajMyFQ+6R9rTWcnL0tTdyUstQtVcqe4mauPhOZur+z z6uOxVVdqkEVw== Received: from mail.l.postgrespro.ru (webmail-master-mstn.l.postgrespro.ru [192.168.2.26]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.pyhalov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 5F76960945; Fri, 23 Jan 2026 09:18:29 +0300 (MSK) MIME-Version: 1.0 Date: Fri, 23 Jan 2026 09:18:29 +0300 From: Alexander Pyhalov To: Tomas Vondra Cc: PostgreSQL Hackers Subject: Re: Limit memory usage by postgres_fdw batches In-Reply-To: References: <2368cfef0e1c07d8e65767e477fed953@postgrespro.ru> <80f78762-e4d7-4d57-89eb-a99202ab1491@vondra.me> Message-ID: X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_eca7497322bb0c7d85c45e026234955a" X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2026/01/23 04:10:00 #28143872 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_eca7497322bb0c7d85c45e026234955a Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Alexander Pyhalov писал(а) 2026-01-13 13:44: > For now I start thinking we need some form of FETCH, which stops > fetching data based on batch size... Hi. To limit memory consumption, we actually have to retreive less data. And we can do it only on the side of the foreign server. I've rewritten the third patch. We introduce a new parameter - cursor_fetch_limit, which is set by postgres_fdw. When it is set, fetching limited count of records from the cursor is also limited by memory consumed by the records. Of course, record size is some estimation (for example, we don't know what out function will do). This works as expected - in my tests with tables of large records, backends, executing selects, were always restricted by about 2 GB of RAM overall (without patch memory consumption easily grows up to 8 GB). However, now when we got less tuples from executor, than expected, we should recheck, if these are all tuples we can get. I've introduced es_eof EState field to signal that there's no more tuples. Don't know if it's the best way. -- Best regards, Alexander Pyhalov, Postgres Professional --=_eca7497322bb0c7d85c45e026234955a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0001-Limit-batch_size-for-foreign-insert-with-work_mem.patch Content-Disposition: attachment; filename=v4-0001-Limit-batch_size-for-foreign-insert-with-work_mem.patch; size=2755 RnJvbSA5ZWNhNGM2Mjc3YzYzZjRmOGYyOGFmY2VkMDdlZTEzYzY1YmZiMzZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUdWUsIDE2IERlYyAyMDI1IDE4OjQ2OjI3ICswMzAwClN1YmplY3Q6IFtQ QVRDSCAxLzNdIExpbWl0IGJhdGNoX3NpemUgZm9yIGZvcmVpZ24gaW5zZXJ0IHdpdGggd29ya19t ZW0KCk9wdGlvbiBiYXRjaF9zaXplIGNhbiBiZSBzZXQgb24gZm9yZWlnbiBzZXJ2ZXIgbGV2ZWwu IEl0IGNhbiBiZSB2ZXJ5IG9wdGltaXN0aWMKZXZlbiBmb3Igb25lIHRhYmxlIHdpdGggZGlmZmVy ZW50IHR1cGxlIGxlbmd0aHMuIFRvIHByZXZlbnQgbGFyZ2UgbWVtb3J5IHVzYWdlCmxpbWl0IGVm ZmVjdGl2ZSBiYXRjaCBzaXplIHdpdGggd29ya19tZW0uCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMgfCAxNSArKysrKysrKysrKystLS0KIHNyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgIHwgIDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMKaW5kZXggN2Q3NDExYTcwNTYuLjk0OTVkOWIwNGJiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtOTQzLDEyICs5NDMsMTggQEAgRXhlY0luc2VydChNb2Rp ZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9CYXRjaFNp emUgPiAxKQogCQl7CiAJCQlib29sCQlmbHVzaGVkID0gZmFsc2U7CisJCQlTaXplCQl0dXBsZV9s ZW47CisKKwkJCS8qIENvbXB1dGUgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHR1cGxlICovCisJCQlz bG90X2dldGFsbGF0dHJzKHNsb3QpOworCQkJdHVwbGVfbGVuID0gaGVhcF9jb21wdXRlX2RhdGFf c2l6ZShzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLCBzbG90LT50dHNfdmFsdWVzLCBzbG90LT50 dHNfaXNudWxsKTsKIAogCQkJLyoKLQkJCSAqIFdoZW4gd2UndmUgcmVhY2hlZCB0aGUgZGVzaXJl ZCBiYXRjaCBzaXplLCBwZXJmb3JtIHRoZQotCQkJICogaW5zZXJ0aW9uLgorCQkJICogV2hlbiB3 ZSd2ZSByZWFjaGVkIHRoZSBkZXNpcmVkIGJhdGNoIHNpemUgb3IgZXhjZWVkZWQgd29ya19tZW0s CisJCQkgKiBwZXJmb3JtIHRoZSBpbnNlcnRpb24uCiAJCQkgKi8KLQkJCWlmIChyZXN1bHRSZWxJ bmZvLT5yaV9OdW1TbG90cyA9PSByZXN1bHRSZWxJbmZvLT5yaV9CYXRjaFNpemUpCisJCQlpZiAo cmVzdWx0UmVsSW5mby0+cmlfTnVtU2xvdHMgPT0gcmVzdWx0UmVsSW5mby0+cmlfQmF0Y2hTaXpl IHx8CisJCQkJKCh0dXBsZV9sZW4gKyByZXN1bHRSZWxJbmZvLT5yaV9CYXRjaE1lbW9yeVVzZWQg PiB3b3JrX21lbSAqIDEwMjQpICYmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1TbG90cyA+IDApKSkK IAkJCXsKIAkJCQlFeGVjQmF0Y2hJbnNlcnQobXRzdGF0ZSwgcmVzdWx0UmVsSW5mbywKIAkJCQkJ CQkJcmVzdWx0UmVsSW5mby0+cmlfU2xvdHMsCkBAIC0xMDE5LDYgKzEwMjUsOCBAQCBFeGVjSW5z ZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJICAgcmVzdWx0UmVsSW5m bykpOwogCiAJCQlyZXN1bHRSZWxJbmZvLT5yaV9OdW1TbG90cysrOworCQkJLyogQmF0Y2ggc2l6 ZSBjYW4gZ3JvdyB1cCB0byB0dXBsZSBsZW5ndGggZXZlbiBpZiBpdCBleGNlZWRzIHdvcmtfbWVt LiAqLworCQkJcmVzdWx0UmVsSW5mby0+cmlfQmF0Y2hNZW1vcnlVc2VkICs9IHR1cGxlX2xlbjsK IAogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZENvbnRleHQpOwogCkBAIC0xNDE4LDYgKzE0 MjYsNyBAQCBFeGVjQmF0Y2hJbnNlcnQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJRXhl Y0NsZWFyVHVwbGUocGxhblNsb3RzW2ldKTsKIAl9CiAJcmVzdWx0UmVsSW5mby0+cmlfTnVtU2xv dHMgPSAwOworCXJlc3VsdFJlbEluZm8tPnJpX0JhdGNoTWVtb3J5VXNlZCA9IDA7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGY4MDUzZDllNTcyLi4zM2QzZWIwNjg5MSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKQEAgLTU0NCw2ICs1NDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRS ZWxJbmZvCiAJaW50CQkJcmlfTnVtU2xvdHM7CS8qIG51bWJlciBvZiBzbG90cyBpbiB0aGUgYXJy YXkgKi8KIAlpbnQJCQlyaV9OdW1TbG90c0luaXRpYWxpemVkOyAvKiBudW1iZXIgb2YgaW5pdGlh bGl6ZWQgc2xvdHMgKi8KIAlpbnQJCQlyaV9CYXRjaFNpemU7CS8qIG1heCBzbG90cyBpbnNlcnRl ZCBpbiBhIHNpbmdsZSBiYXRjaCAqLworCWludAkJCXJpX0JhdGNoTWVtb3J5VXNlZDsJLyogbWVt b3J5IHVzZWQgYnkgYmF0Y2ggKi8KIAlUdXBsZVRhYmxlU2xvdCAqKnJpX1Nsb3RzOwkvKiBpbnB1 dCB0dXBsZXMgZm9yIGJhdGNoIGluc2VydCAqLwogCVR1cGxlVGFibGVTbG90ICoqcmlfUGxhblNs b3RzOwogCi0tIAoyLjQzLjAKCg== --=_eca7497322bb0c7d85c45e026234955a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0002-Fall-back-to-foreign-insert-when-tuple-is-too-big.patch Content-Disposition: attachment; filename=v4-0002-Fall-back-to-foreign-insert-when-tuple-is-too-big.patch; size=10402 RnJvbSBiNGFmYWQwMzQzMWYzNzZjNTYyMzgyNjZmNDAxZTA2MWM0ZDMxZGI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUdWUsIDMwIERlYyAyMDI1IDEwOjM1OjIyICswMzAwClN1YmplY3Q6IFtQ QVRDSCAyLzNdIEZhbGwgYmFjayB0byBmb3JlaWduIGluc2VydCB3aGVuIHR1cGxlIGlzIHRvbyBi aWcKCldoZW4gdHVwbGUgaXMgbW9yZSB0aGVuIHdvcmtfbWVtLCB3ZSBkb24ndCBmb3JtIGJhdGNo LApidXQgZmFsbCB0aHJvdWdoIHRvIHVzdWFsIGZvcmVpZ24gaW5zZXJ0LiBUaGlzIG1lYW5zCnRo YXQgZXhlY3V0b3IgY2FuIGZvcm0gYmF0Y2gsIGluc2VydCBpdCBhbmQgZmluaXNoIHdpdGgKYSB1 c3VhbCBpbnNlcnQsIHNvIHRoZXJlIHdpbGwgYmUgbm8gcGVuZGluZyBiYXRjaCBpbnNlcnRzCnRv IHByb2Nlc3MuIFRvIGF2b2lkIG1hbmlwdWxhdGlvbiB3aXRoIHBvc3NpYmx5IGxvbmcgbGlzdHMs CndlIGRvbid0IGNsZWFyIGVzX2luc2VydF9wZW5kaW5nX3Jlc3VsdF9yZWxhdGlvbnMgYW5kCmVz X2luc2VydF9wZW5kaW5nX21vZGlmeXRhYmxlcyBsaXN0cywgYnV0IGNoZWNrIGluCkV4ZWNQZW5k aW5nSW5zZXJ0cygpIGlmIHRoZXJlIGFyZSBhbnkgcGVuZGluZyB0dXBsZXMuCi0tLQogLi4uL3Bv c3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgIDExICsrCiBjb250cmli L3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCAgICAgfCAgIDkgKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDEzOCArKysrKysrKysrLS0t LS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAg MSArCiA0IGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4 IDYwNjY1MTBjN2MwLi5jYjMwNDRjNzY5YSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9l eHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC03NjQwLDYgKzc2NDAsMTcgQEAgc2VsZWN0IGNv dW50KCopIGZyb20gdGFiX2JhdGNoX3NoYXJkZWQ7CiAgICAgNDUKICgxIHJvdykKIAorZGVsZXRl IGZyb20gdGFiX2JhdGNoX3NoYXJkZWQ7CistLSB0ZXN0IGJhdGNoIGluc2VydCB3aXRoIGxhcmdl IHR1cGxlcyBhbmQgc3dpdGNoaW5nIGZyb20gYmF0Y2ggdG8gdXN1YWwgaW5zZXJ0CitzZXQgd29y a19tZW0gdG8gNjQ7CitpbnNlcnQgaW50byB0YWJfYmF0Y2hfc2hhcmRlZCBzZWxlY3QgMywgY2Fz ZSB3aGVuIGklNCA9IDAgdGhlbiBscGFkKCdhJyw2NSoxMDI0LCdhJykgZWxzZSAndGVzdCd8fCBp IGVuZCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIGk7CitzZWxlY3QgY291bnQoKikgZnJv bSB0YWJfYmF0Y2hfc2hhcmRlZDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDEwMAorKDEgcm93KQor CityZXNldCB3b3JrX21lbTsKIGRyb3AgdGFibGUgdGFiX2JhdGNoX2xvY2FsOwogZHJvcCB0YWJs ZSB0YWJfYmF0Y2hfc2hhcmRlZDsKIGRyb3AgdGFibGUgdGFiX2JhdGNoX3NoYXJkZWRfcDFfcmVt b3RlOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5z cWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCA0Zjdh YjJlZDBhYy4uYTA4NGFmYzhkZTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Nx bC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jl c19mZHcuc3FsCkBAIC0xOTQ0LDEwICsxOTQ0LDE5IEBAIGNyZWF0ZSBmb3JlaWduIHRhYmxlIHRh Yl9iYXRjaF9zaGFyZGVkX3AxIHBhcnRpdGlvbiBvZiB0YWJfYmF0Y2hfc2hhcmRlZAogICBzZXJ2 ZXIgbG9vcGJhY2sgb3B0aW9ucyAodGFibGVfbmFtZSAndGFiX2JhdGNoX3NoYXJkZWRfcDFfcmVt b3RlJyk7CiBpbnNlcnQgaW50byB0YWJfYmF0Y2hfc2hhcmRlZCBzZWxlY3QgKiBmcm9tIHRhYl9i YXRjaF9sb2NhbDsKIHNlbGVjdCBjb3VudCgqKSBmcm9tIHRhYl9iYXRjaF9zaGFyZGVkOworZGVs ZXRlIGZyb20gdGFiX2JhdGNoX3NoYXJkZWQ7CistLSB0ZXN0IGJhdGNoIGluc2VydCB3aXRoIGxh cmdlIHR1cGxlcyBhbmQgc3dpdGNoaW5nIGZyb20gYmF0Y2ggdG8gdXN1YWwgaW5zZXJ0CitzZXQg d29ya19tZW0gdG8gNjQ7CitpbnNlcnQgaW50byB0YWJfYmF0Y2hfc2hhcmRlZCBzZWxlY3QgMywg Y2FzZSB3aGVuIGklNCA9IDAgdGhlbiBscGFkKCdhJyw2NSoxMDI0LCdhJykgZWxzZSAndGVzdCd8 fCBpIGVuZCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIGk7CitzZWxlY3QgY291bnQoKikg ZnJvbSB0YWJfYmF0Y2hfc2hhcmRlZDsKK3Jlc2V0IHdvcmtfbWVtOworCiBkcm9wIHRhYmxlIHRh Yl9iYXRjaF9sb2NhbDsKIGRyb3AgdGFibGUgdGFiX2JhdGNoX3NoYXJkZWQ7CiBkcm9wIHRhYmxl IHRhYl9iYXRjaF9zaGFyZGVkX3AxX3JlbW90ZTsKIAorCisKIGFsdGVyIHNlcnZlciBsb29wYmFj ayBvcHRpb25zIChkcm9wIGJhdGNoX3NpemUpOwogCiAtLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDk0OTVkOWIwNGJiLi5iYTNkMTM1ZDZhNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTk0Miw3ICs5NDIsNiBA QCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJICovCiAJCWlmIChy ZXN1bHRSZWxJbmZvLT5yaV9CYXRjaFNpemUgPiAxKQogCQl7Ci0JCQlib29sCQlmbHVzaGVkID0g ZmFsc2U7CiAJCQlTaXplCQl0dXBsZV9sZW47CiAKIAkJCS8qIENvbXB1dGUgbGVuZ3RoIG9mIHRo ZSBjdXJyZW50IHR1cGxlICovCkBAIC05NjEsNzYgKzk2MCw4MiBAQCBFeGVjSW5zZXJ0KE1vZGlm eVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJcmVzdWx0UmVsSW5mby0+cmlfUGxhblNs b3RzLAogCQkJCQkJCQlyZXN1bHRSZWxJbmZvLT5yaV9OdW1TbG90cywKIAkJCQkJCQkJZXN0YXRl LCBjYW5TZXRUYWcpOwotCQkJCWZsdXNoZWQgPSB0cnVlOwogCQkJfQogCi0JCQlvbGRDb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQotCQkJaWYg KHJlc3VsdFJlbEluZm8tPnJpX1Nsb3RzID09IE5VTEwpCisJCQlpZiAodHVwbGVfbGVuIDwgd29y a19tZW0gKiAxMDI0KQogCQkJewotCQkJCXJlc3VsdFJlbEluZm8tPnJpX1Nsb3RzID0gcGFsbG9j X2FycmF5KFR1cGxlVGFibGVTbG90ICosIHJlc3VsdFJlbEluZm8tPnJpX0JhdGNoU2l6ZSk7Ci0J CQkJcmVzdWx0UmVsSW5mby0+cmlfUGxhblNsb3RzID0gcGFsbG9jX2FycmF5KFR1cGxlVGFibGVT bG90ICosIHJlc3VsdFJlbEluZm8tPnJpX0JhdGNoU2l6ZSk7Ci0JCQl9CisJCQkJb2xkQ29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKLQkJCS8q Ci0JCQkgKiBJbml0aWFsaXplIHRoZSBiYXRjaCBzbG90cy4gV2UgZG9uJ3Qga25vdyBob3cgbWFu eSBzbG90cyB3aWxsCi0JCQkgKiBiZSBuZWVkZWQsIHNvIHdlIGluaXRpYWxpemUgdGhlbSBhcyB0 aGUgYmF0Y2ggZ3Jvd3MsIGFuZCB3ZQotCQkJICoga2VlcCB0aGVtIGFjcm9zcyBiYXRjaGVzLiBU byBtaXRpZ2F0ZSBhbiBpbmVmZmljaWVuY3kgaW4gaG93Ci0JCQkgKiByZXNvdXJjZSBvd25lciBo YW5kbGVzIG9iamVjdHMgd2l0aCBtYW55IHJlZmVyZW5jZXMgKGFzIHdpdGgKLQkJCSAqIG1hbnkg c2xvdHMgYWxsIHJlZmVyZW5jaW5nIHRoZSBzYW1lIHR1cGxlIGRlc2NyaXB0b3IpIHdlIGNvcHkK LQkJCSAqIHRoZSBhcHByb3ByaWF0ZSB0dXBsZSBkZXNjcmlwdG9yIGZvciBlYWNoIHNsb3QuCi0J CQkgKi8KLQkJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1TbG90cyA+PSByZXN1bHRSZWxJbmZv LT5yaV9OdW1TbG90c0luaXRpYWxpemVkKQotCQkJewotCQkJCVR1cGxlRGVzYwl0ZGVzYyA9IENy ZWF0ZVR1cGxlRGVzY0NvcHkoc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvcik7Ci0JCQkJVHVwbGVE ZXNjCXBsYW5fdGRlc2MgPQotCQkJCQlDcmVhdGVUdXBsZURlc2NDb3B5KHBsYW5TbG90LT50dHNf dHVwbGVEZXNjcmlwdG9yKTsKKwkJCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfU2xvdHMgPT0gTlVM TCkKKwkJCQl7CisJCQkJCXJlc3VsdFJlbEluZm8tPnJpX1Nsb3RzID0gcGFsbG9jX2FycmF5KFR1 cGxlVGFibGVTbG90ICosIHJlc3VsdFJlbEluZm8tPnJpX0JhdGNoU2l6ZSk7CisJCQkJCXJlc3Vs dFJlbEluZm8tPnJpX1BsYW5TbG90cyA9IHBhbGxvY19hcnJheShUdXBsZVRhYmxlU2xvdCAqLCBy ZXN1bHRSZWxJbmZvLT5yaV9CYXRjaFNpemUpOworCQkJCX0KIAotCQkJCXJlc3VsdFJlbEluZm8t PnJpX1Nsb3RzW3Jlc3VsdFJlbEluZm8tPnJpX051bVNsb3RzXSA9Ci0JCQkJCU1ha2VTaW5nbGVU dXBsZVRhYmxlU2xvdCh0ZGVzYywgc2xvdC0+dHRzX29wcyk7CisJCQkJLyoKKwkJCQkgKiBJbml0 aWFsaXplIHRoZSBiYXRjaCBzbG90cy4gV2UgZG9uJ3Qga25vdyBob3cgbWFueSBzbG90cworCQkJ CSAqIHdpbGwgYmUgbmVlZGVkLCBzbyB3ZSBpbml0aWFsaXplIHRoZW0gYXMgdGhlIGJhdGNoIGdy b3dzLAorCQkJCSAqIGFuZCB3ZSBrZWVwIHRoZW0gYWNyb3NzIGJhdGNoZXMuIFRvIG1pdGlnYXRl IGFuCisJCQkJICogaW5lZmZpY2llbmN5IGluIGhvdyByZXNvdXJjZSBvd25lciBoYW5kbGVzIG9i amVjdHMgd2l0aAorCQkJCSAqIG1hbnkgcmVmZXJlbmNlcyAoYXMgd2l0aCBtYW55IHNsb3RzIGFs bCByZWZlcmVuY2luZyB0aGUKKwkJCQkgKiBzYW1lIHR1cGxlIGRlc2NyaXB0b3IpIHdlIGNvcHkg dGhlIGFwcHJvcHJpYXRlIHR1cGxlCisJCQkJICogZGVzY3JpcHRvciBmb3IgZWFjaCBzbG90Lgor CQkJCSAqLworCQkJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1TbG90cyA+PSByZXN1bHRSZWxJ bmZvLT5yaV9OdW1TbG90c0luaXRpYWxpemVkKQorCQkJCXsKKwkJCQkJVHVwbGVEZXNjCXRkZXNj ID0gQ3JlYXRlVHVwbGVEZXNjQ29weShzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yKTsKKwkJCQkJ VHVwbGVEZXNjCXBsYW5fdGRlc2MgPQorCQkJCQkJQ3JlYXRlVHVwbGVEZXNjQ29weShwbGFuU2xv dC0+dHRzX3R1cGxlRGVzY3JpcHRvcik7CiAKLQkJCQlyZXN1bHRSZWxJbmZvLT5yaV9QbGFuU2xv dHNbcmVzdWx0UmVsSW5mby0+cmlfTnVtU2xvdHNdID0KLQkJCQkJTWFrZVNpbmdsZVR1cGxlVGFi bGVTbG90KHBsYW5fdGRlc2MsIHBsYW5TbG90LT50dHNfb3BzKTsKKwkJCQkJcmVzdWx0UmVsSW5m by0+cmlfU2xvdHNbcmVzdWx0UmVsSW5mby0+cmlfTnVtU2xvdHNdID0KKwkJCQkJCU1ha2VTaW5n bGVUdXBsZVRhYmxlU2xvdCh0ZGVzYywgc2xvdC0+dHRzX29wcyk7CiAKLQkJCQkvKiByZW1lbWJl ciBob3cgbWFueSBiYXRjaCBzbG90cyB3ZSBpbml0aWFsaXplZCAqLwotCQkJCXJlc3VsdFJlbElu Zm8tPnJpX051bVNsb3RzSW5pdGlhbGl6ZWQrKzsKLQkJCX0KKwkJCQkJcmVzdWx0UmVsSW5mby0+ cmlfUGxhblNsb3RzW3Jlc3VsdFJlbEluZm8tPnJpX051bVNsb3RzXSA9CisJCQkJCQlNYWtlU2lu Z2xlVHVwbGVUYWJsZVNsb3QocGxhbl90ZGVzYywgcGxhblNsb3QtPnR0c19vcHMpOwogCi0JCQlF eGVjQ29weVNsb3QocmVzdWx0UmVsSW5mby0+cmlfU2xvdHNbcmVzdWx0UmVsSW5mby0+cmlfTnVt U2xvdHNdLAotCQkJCQkJIHNsb3QpOworCQkJCQkvKiByZW1lbWJlciBob3cgbWFueSBiYXRjaCBz bG90cyB3ZSBpbml0aWFsaXplZCAqLworCQkJCQlyZXN1bHRSZWxJbmZvLT5yaV9OdW1TbG90c0lu aXRpYWxpemVkKys7CisJCQkJfQogCi0JCQlFeGVjQ29weVNsb3QocmVzdWx0UmVsSW5mby0+cmlf UGxhblNsb3RzW3Jlc3VsdFJlbEluZm8tPnJpX051bVNsb3RzXSwKLQkJCQkJCSBwbGFuU2xvdCk7 CisJCQkJRXhlY0NvcHlTbG90KHJlc3VsdFJlbEluZm8tPnJpX1Nsb3RzW3Jlc3VsdFJlbEluZm8t PnJpX051bVNsb3RzXSwKKwkJCQkJCQkgc2xvdCk7CiAKLQkJCS8qCi0JCQkgKiBJZiB0aGVzZSBh cmUgdGhlIGZpcnN0IHR1cGxlcyBzdG9yZWQgaW4gdGhlIGJ1ZmZlcnMsIGFkZCB0aGUKLQkJCSAq IHRhcmdldCByZWwgYW5kIHRoZSBtdHN0YXRlIHRvIHRoZQotCQkJICogZXNfaW5zZXJ0X3BlbmRp bmdfcmVzdWx0X3JlbGF0aW9ucyBhbmQKLQkJCSAqIGVzX2luc2VydF9wZW5kaW5nX21vZGlmeXRh YmxlcyBsaXN0cyByZXNwZWN0aXZlbHksIGV4Y2VwdCBpbgotCQkJICogdGhlIGNhc2Ugd2hlcmUg Zmx1c2hpbmcgd2FzIGRvbmUgYWJvdmUsIGluIHdoaWNoIGNhc2UgdGhleQotCQkJICogd291bGQg YWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGxpc3RzLCBzbyBubyBuZWVkIHRvIGRvCi0J CQkgKiB0aGlzLgotCQkJICovCi0JCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtU2xvdHMgPT0g MCAmJiAhZmx1c2hlZCkKLQkJCXsKLQkJCQlBc3NlcnQoIWxpc3RfbWVtYmVyX3B0cihlc3RhdGUt PmVzX2luc2VydF9wZW5kaW5nX3Jlc3VsdF9yZWxhdGlvbnMsCi0JCQkJCQkJCQkJcmVzdWx0UmVs SW5mbykpOwotCQkJCWVzdGF0ZS0+ZXNfaW5zZXJ0X3BlbmRpbmdfcmVzdWx0X3JlbGF0aW9ucyA9 Ci0JCQkJCWxhcHBlbmQoZXN0YXRlLT5lc19pbnNlcnRfcGVuZGluZ19yZXN1bHRfcmVsYXRpb25z LAotCQkJCQkJCXJlc3VsdFJlbEluZm8pOwotCQkJCWVzdGF0ZS0+ZXNfaW5zZXJ0X3BlbmRpbmdf bW9kaWZ5dGFibGVzID0KLQkJCQkJbGFwcGVuZChlc3RhdGUtPmVzX2luc2VydF9wZW5kaW5nX21v ZGlmeXRhYmxlcywgbXRzdGF0ZSk7Ci0JCQl9Ci0JCQlBc3NlcnQobGlzdF9tZW1iZXJfcHRyKGVz dGF0ZS0+ZXNfaW5zZXJ0X3BlbmRpbmdfcmVzdWx0X3JlbGF0aW9ucywKLQkJCQkJCQkJICAgcmVz dWx0UmVsSW5mbykpOworCQkJCUV4ZWNDb3B5U2xvdChyZXN1bHRSZWxJbmZvLT5yaV9QbGFuU2xv dHNbcmVzdWx0UmVsSW5mby0+cmlfTnVtU2xvdHNdLAorCQkJCQkJCSBwbGFuU2xvdCk7CiAKLQkJ CXJlc3VsdFJlbEluZm8tPnJpX051bVNsb3RzKys7Ci0JCQkvKiBCYXRjaCBzaXplIGNhbiBncm93 IHVwIHRvIHR1cGxlIGxlbmd0aCBldmVuIGlmIGl0IGV4Y2VlZHMgd29ya19tZW0uICovCi0JCQly ZXN1bHRSZWxJbmZvLT5yaV9CYXRjaE1lbW9yeVVzZWQgKz0gdHVwbGVfbGVuOworCQkJCS8qCisJ CQkJICogSWYgdGhlc2UgYXJlIHRoZSBmaXJzdCB0dXBsZXMgc3RvcmVkIGluIHRoZSBidWZmZXJz LCBhZGQKKwkJCQkgKiB0aGUgdGFyZ2V0IHJlbCBhbmQgdGhlIG10c3RhdGUgdG8gdGhlCisJCQkJ ICogZXNfaW5zZXJ0X3BlbmRpbmdfcmVzdWx0X3JlbGF0aW9ucyBhbmQKKwkJCQkgKiBlc19pbnNl cnRfcGVuZGluZ19tb2RpZnl0YWJsZXMgbGlzdHMgcmVzcGVjdGl2ZWx5LCBleGNlcHQKKwkJCQkg KiBpbiB0aGUgY2FzZSB3aGVyZSBmbHVzaGluZyB3YXMgZG9uZSBhYm92ZSwgaW4gd2hpY2ggY2Fz ZQorCQkJCSAqIHRoZXkgd291bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGxpc3Rz LCBzbyBubyBuZWVkCisJCQkJICogdG8gZG8gdGhpcy4KKwkJCQkgKi8KKwkJCQlpZiAocmVzdWx0 UmVsSW5mby0+cmlfTnVtU2xvdHMgPT0gMCAmJiAhcmVzdWx0UmVsSW5mby0+cmlfRXhlY3V0b3JQ ZW5kaW5nU3RhdGVNb2RpZmllZCkKKwkJCQl7CisJCQkJCUFzc2VydCghbGlzdF9tZW1iZXJfcHRy KGVzdGF0ZS0+ZXNfaW5zZXJ0X3BlbmRpbmdfcmVzdWx0X3JlbGF0aW9ucywKKwkJCQkJCQkJCQkJ cmVzdWx0UmVsSW5mbykpOworCQkJCQllc3RhdGUtPmVzX2luc2VydF9wZW5kaW5nX3Jlc3VsdF9y ZWxhdGlvbnMgPQorCQkJCQkJbGFwcGVuZChlc3RhdGUtPmVzX2luc2VydF9wZW5kaW5nX3Jlc3Vs dF9yZWxhdGlvbnMsCisJCQkJCQkJCXJlc3VsdFJlbEluZm8pOworCQkJCQllc3RhdGUtPmVzX2lu c2VydF9wZW5kaW5nX21vZGlmeXRhYmxlcyA9CisJCQkJCQlsYXBwZW5kKGVzdGF0ZS0+ZXNfaW5z ZXJ0X3BlbmRpbmdfbW9kaWZ5dGFibGVzLCBtdHN0YXRlKTsKKwkJCQkJcmVzdWx0UmVsSW5mby0+ cmlfRXhlY3V0b3JQZW5kaW5nU3RhdGVNb2RpZmllZCA9IHRydWU7CisJCQkJfQorCQkJCUFzc2Vy dChsaXN0X21lbWJlcl9wdHIoZXN0YXRlLT5lc19pbnNlcnRfcGVuZGluZ19yZXN1bHRfcmVsYXRp b25zLAorCQkJCQkJCQkJICAgcmVzdWx0UmVsSW5mbykpOwogCi0JCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkQ29udGV4dCk7CisJCQkJcmVzdWx0UmVsSW5mby0+cmlfTnVtU2xvdHMrKzsKKwkJ CQlyZXN1bHRSZWxJbmZvLT5yaV9CYXRjaE1lbW9yeVVzZWQgKz0gdHVwbGVfbGVuOworCQkJCS8q IFdlJ3ZlIGZsdXNoZWQgYmF0Y2ggaWYgaXQgaXMgdG9vIGJpZy4gKi8KKwkJCQlBc3NlcnQocmVz dWx0UmVsSW5mby0+cmlfQmF0Y2hNZW1vcnlVc2VkIDwgd29ya19tZW0gKiAxMDI0KTsKIAotCQkJ cmV0dXJuIE5VTEw7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZENvbnRleHQpOworCisJ CQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQkvKiBlbHNlIGRvIHVzdWFsIGZvcmVpZ24gaW5zZXJ0 ICovCiAJCX0KIAogCQkvKgpAQCAtMTQ0NSwxMSArMTQ1MCwxOCBAQCBFeGVjUGVuZGluZ0luc2Vy dHMoRVN0YXRlICplc3RhdGUpCiAJCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUgPSAoTW9kaWZ5 VGFibGVTdGF0ZSAqKSBsZmlyc3QobDIpOwogCiAJCUFzc2VydChtdHN0YXRlKTsKLQkJRXhlY0Jh dGNoSW5zZXJ0KG10c3RhdGUsIHJlc3VsdFJlbEluZm8sCi0JCQkJCQlyZXN1bHRSZWxJbmZvLT5y aV9TbG90cywKLQkJCQkJCXJlc3VsdFJlbEluZm8tPnJpX1BsYW5TbG90cywKLQkJCQkJCXJlc3Vs dFJlbEluZm8tPnJpX051bVNsb3RzLAotCQkJCQkJZXN0YXRlLCBtdHN0YXRlLT5jYW5TZXRUYWcp OworCisJCS8qCisJCSAqIEJhdGNoIGluc2VydCBjb3VsZCBzd2l0Y2ggdG8gbm9uLWJhdGNoZWQg aW5zZXJ0LCBpbiB0aGlzIGNhc2Ugd2UKKwkJICogY291bGQgaGF2ZSBubyBmaWxsZWQgc2xvdHMu CisJCSAqLworCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtU2xvdHMgPiAwKQorCQkJRXhlY0Jh dGNoSW5zZXJ0KG10c3RhdGUsIHJlc3VsdFJlbEluZm8sCisJCQkJCQkJcmVzdWx0UmVsSW5mby0+ cmlfU2xvdHMsCisJCQkJCQkJcmVzdWx0UmVsSW5mby0+cmlfUGxhblNsb3RzLAorCQkJCQkJCXJl c3VsdFJlbEluZm8tPnJpX051bVNsb3RzLAorCQkJCQkJCWVzdGF0ZSwgbXRzdGF0ZS0+Y2FuU2V0 VGFnKTsKKwkJcmVzdWx0UmVsSW5mby0+cmlfRXhlY3V0b3JQZW5kaW5nU3RhdGVNb2RpZmllZCA9 IGZhbHNlOwogCX0KIAogCWxpc3RfZnJlZShlc3RhdGUtPmVzX2luc2VydF9wZW5kaW5nX3Jlc3Vs dF9yZWxhdGlvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAzM2QzZWIwNjg5MS4uMzIyMGY5 YjI1NzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC01NDUsNiArNTQ1LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUmVzdWx0UmVsSW5mbwogCWludAkJCXJpX051bVNsb3RzSW5pdGlhbGl6ZWQ7IC8qIG51 bWJlciBvZiBpbml0aWFsaXplZCBzbG90cyAqLwogCWludAkJCXJpX0JhdGNoU2l6ZTsJLyogbWF4 IHNsb3RzIGluc2VydGVkIGluIGEgc2luZ2xlIGJhdGNoICovCiAJaW50CQkJcmlfQmF0Y2hNZW1v cnlVc2VkOwkvKiBtZW1vcnkgdXNlZCBieSBiYXRjaCAqLworCWJvb2wJCQlyaV9FeGVjdXRvclBl bmRpbmdTdGF0ZU1vZGlmaWVkOyAvKiB0cnVlIGlmIG1lbWJlciBvZiBlc3RhdGUtPmVzX2luc2Vy dF9wZW5kaW5nX3Jlc3VsdF9yZWxhdGlvbnMgKi8KIAlUdXBsZVRhYmxlU2xvdCAqKnJpX1Nsb3Rz OwkvKiBpbnB1dCB0dXBsZXMgZm9yIGJhdGNoIGluc2VydCAqLwogCVR1cGxlVGFibGVTbG90ICoq cmlfUGxhblNsb3RzOwogCi0tIAoyLjQzLjAKCg== --=_eca7497322bb0c7d85c45e026234955a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0003-Introduce-cursor_fetch_limit-parameter-and-use-it-in.patch Content-Disposition: attachment; filename*0*=UTF-8''v4-0003-Introduce-cursor_fetch_limit-parameter-and-use; filename*1*=-it-in.patch; size=27579 RnJvbSAyZTA3MTBkZDRkYjg5ZmJiMWYwMmQzZTczMTY1NDI1ZGVlNzY4MzBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUaHUsIDE1IEphbiAyMDI2IDA5OjIwOjUxICswMzAwClN1YmplY3Q6IFtQ QVRDSCAzLzNdIEludHJvZHVjZSBjdXJzb3JfZmV0Y2hfbGltaXQgcGFyYW1ldGVyIGFuZCB1c2Ug aXQgaW4KIHBvc3RncmVzX2ZkdwoKVGhpcyBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGluIGJ5dGVz IGFuZCBsaW1pdHMgdGhlIG51bWJlciBvZiByZWNvcmRzLAp3aGljaCBpcyByZXRyaWV2ZWQgYnkg RkVUQ0ggc3RhdGVtZW50LCBiYXNlZCBvbiB0aGVpciBzaXplLiBGRVRDSCBBTEwKaXMgbm90IGxp bWl0ZWQuCgpXaGVuIGN1cnNvcl9mZXRjaF9saW1pdCA+PSAwIGFuZCByZWNvcmRzIGNvdW50IGlz IHBhc3NlZCB0bwpFeGVjdXRvclJ1bigpLCB3ZSBjYW4ndCBsb25nZXIgcmVseSBvbiBmYWN0IHRo YXQgd2hlbiBleGVjdXRvcgpyZXR1cm5lZCBsZXNzIHJlY29yZHMgdGhhbiBleHBlY3RlZCwgdGhl cmUncyBubyBtb3JlIHJlY29yZHMgdG8gZmV0Y2gsCnNvIHdlIGludHJvZHVjZSBhZGRpdGlvbmFs IEVTdGF0ZSBmaWVsZCB3aGljaCBhZnRlciBFeGVjdXRvclJ1bigpCmNhbGwgc2F5cyBpZiB0aGVy ZSBhcmUgbW9yZSByZWNvcmRzLgotLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24u YyAgICAgICAgICAgICB8ICAxMyArKysKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zk dy5jICAgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVw bGUuYyAgICAgICAgIHwgIDU0ICsrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYyAgICAgICAgICAgICAgIHwgIDM3ICsrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMg ICAgICAgICAgICAgICAgICAgICB8ICA1NCArKysrKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9k ZXRhaWxzLmggICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaCAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BvcnRh bHMub3V0ICAgICAgICAgfCAxMDUgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wb3J0YWxzLnNxbCAgICAgICAgICAgICAgfCAgMjggKysrKysKIDE0IGZpbGVzIGNoYW5n ZWQsIDMwNCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMKaW5kZXggNDg3YTFhMjMxNzAuLmQ2YzZjMjZiMzkzIDEwMDY0NAotLS0gYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv Y29ubmVjdGlvbi5jCkBAIC04MDIsNiArODAyLDE5IEBAIGNvbmZpZ3VyZV9yZW1vdGVfc2Vzc2lv bihQR2Nvbm4gKmNvbm4pCiAJCWRvX3NxbF9jb21tYW5kKGNvbm4sICJTRVQgZXh0cmFfZmxvYXRf ZGlnaXRzID0gMyIpOwogCWVsc2UKIAkJZG9fc3FsX2NvbW1hbmQoY29ubiwgIlNFVCBleHRyYV9m bG9hdF9kaWdpdHMgPSAyIik7CisJLyoKKwkgKiBMaW1pdCBmZXRjaCBzaXplIHdpdGggd29ya19t ZW0gdG8gYXZvaWQgdW5jb250cm9sbGVkIG1lbW9yeQorCSAqIGNvbnN1bXB0aW9uLgorCSAqLwor CWlmIChyZW1vdGV2ZXJzaW9uID49IDE5MDAwMCkKKwl7CisJCWNoYXIgc3FsWzY0XTsKKwkJaW50 IGZldGNoX2xpbWl0OworCisJCWZldGNoX2xpbWl0ID0gKHdvcmtfbWVtICogMTAyNCA+IE1heEFs bG9jU2l6ZSkgPyBNYXhBbGxvY1NpemUgOiB3b3JrX21lbSAqIDEwMjQ7CisJCXNucHJpbnRmKHNx bCwgc2l6ZW9mKHNxbCksICJTRVQgY3Vyc29yX2ZldGNoX2xpbWl0ID0gJWQiLCBmZXRjaF9saW1p dCk7CisJCWRvX3NxbF9jb21tYW5kKGNvbm4sIHNxbCk7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVz X2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCAzNTcyNjg5ZTMzYi4uYWJmYmQwZTYwYWMgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0zODY1LDggKzM4NjUsMTEgQEAgZmV0Y2hf bW9yZV9kYXRhKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpCiAJaWYgKGZzc3RhdGUtPmZldGNoX2N0 XzIgPCAyKQogCQlmc3N0YXRlLT5mZXRjaF9jdF8yKys7CiAKLQkvKiBNdXN0IGJlIEVPRiBpZiB3 ZSBkaWRuJ3QgZ2V0IGFzIG1hbnkgdHVwbGVzIGFzIHdlIGFza2VkIGZvci4gKi8KLQlmc3N0YXRl LT5lb2ZfcmVhY2hlZCA9IChudW1yb3dzIDwgZnNzdGF0ZS0+ZmV0Y2hfc2l6ZSk7CisJLyoKKwkg KiBNdXN0IGJlIEVPRiBpZiB3ZSBnb3QgMCByb3dzLiBXZSBjYW4gZ2V0IGxlc3Mgcm93cyB0aGFu IHdlIGFza2VkIGZvcgorCSAqIGV2ZW4gaWYgdGhlcmUncyBtb3JlIGRhdGEgaWYgYmF0Y2ggb2Yg ImZldGNoX3NpemUiIGV4Y2VlZHMgd29ya19tZW0uCisJICovCisJZnNzdGF0ZS0+ZW9mX3JlYWNo ZWQgPSAobnVtcm93cyA9PSAwKTsKIAogCVBRY2xlYXIocmVzKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vaGVhcHR1cGxlLmMKaW5kZXggMTFiZWMyMGU4MmUuLjczMDhkMmZmNGYwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMKQEAgLTU3LDYgKzU3LDcgQEAKIAogI2luY2x1 ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvZGV0b2FzdC5oIgogI2luY2x1ZGUg ImFjY2Vzcy9oZWFwdG9hc3QuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgogI2luY2x1 ZGUgImFjY2Vzcy90dXBkZXNjX2RldGFpbHMuaCIKQEAgLTI2Niw2ICsyNjcsNTkgQEAgaGVhcF9j b21wdXRlX2RhdGFfc2l6ZShUdXBsZURlc2MgdHVwbGVEZXNjLAogCXJldHVybiBkYXRhX2xlbmd0 aDsKIH0KIAorLyoKKyAqIEVzdGltYXRlIHR1cGxlIHNpemUgd2hlbiBpdCdzIHRyYW5zZmVycmVk IHRvIHRoZSB3aXJlLiBVbmxpa2UKKyAqIGhlYXBfY29tcHV0ZV9kYXRhX3NpemUoKSBpdCBhc3N1 bWVzIHRoYXQgYWxsIHRvYXN0cyB3aWxsIGJlCisgKiBkZXRvYXN0ZWQgKGJ1dCBkb2Vzbid0IG1h a2UgYXNzdW1wdGlvbnMgYWJvdXQgZnVydGhlcgorICogcHJvY2Vzc2luZykuCisgKi8KK1NpemUK K2VzdGltYXRlX3R1cGxlX3NpemUoVHVwbGVEZXNjIHR1cGxlRGVzYywKKwkJCQkJICAgY29uc3Qg RGF0dW0gKnZhbHVlcywKKwkJCQkJICAgY29uc3QgYm9vbCAqaXNudWxsKQoreworCVNpemUJCWRh dGFfbGVuZ3RoID0gMDsKKwlpbnQJCQlpOworCWludAkJCW51bWJlck9mQXR0cmlidXRlcyA9IHR1 cGxlRGVzYy0+bmF0dHM7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZBdHRyaWJ1dGVzOyBp KyspCisJeworCQlEYXR1bQkJdmFsOworCQlDb21wYWN0QXR0cmlidXRlICphdHRpOworCQlib29s CQlpc192YXJsZW5hOworCQlib29sCQlpc192YXJ3aWR0aDsKKworCQlpZiAoaXNudWxsW2ldKQor CQkJY29udGludWU7CisKKwkJdmFsID0gdmFsdWVzW2ldOworCQlhdHRpID0gVHVwbGVEZXNjQ29t cGFjdEF0dHIodHVwbGVEZXNjLCBpKTsKKworCQlpc192YXJsZW5hID0gKCFhdHRpLT5hdHRieXZh bCAmJiBhdHRpLT5hdHRsZW4gPT0gLTEpOworCQlpc192YXJ3aWR0aCA9ICghYXR0aS0+YXR0Ynl2 YWwgJiYgYXR0aS0+YXR0bGVuID09IC0yKTsKKworCQlpZiAoaXNfdmFybGVuYSkKKwkJeworCQkJ ZGF0YV9sZW5ndGggPSBhdHRfbm9taW5hbF9hbGlnbmJ5KGRhdGFfbGVuZ3RoLCBhdHRpLT5hdHRh bGlnbmJ5KTsKKwkJCWRhdGFfbGVuZ3RoICs9IHRvYXN0X3Jhd19kYXR1bV9zaXplKHZhbCk7CisJ CX0KKwkJZWxzZSBpZiAoaXNfdmFyd2lkdGgpCisJCXsKKwkJCWRhdGFfbGVuZ3RoID0gYXR0X25v bWluYWxfYWxpZ25ieShkYXRhX2xlbmd0aCwgYXR0aS0+YXR0YWxpZ25ieSk7CisJCQlkYXRhX2xl bmd0aCArPSBzdHJsZW4oRGF0dW1HZXRDU3RyaW5nKHZhbCkpICsgMTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCWRhdGFfbGVuZ3RoID0gYXR0X2RhdHVtX2FsaWduYnkoZGF0YV9sZW5ndGgsIGF0dGkt PmF0dGFsaWduYnksCisJCQkJCQkJCQkJCWF0dGktPmF0dGxlbiwgdmFsKTsKKwkJCWRhdGFfbGVu Z3RoID0gYXR0X2FkZGxlbmd0aF9kYXR1bShkYXRhX2xlbmd0aCwgYXR0aS0+YXR0bGVuLAorCQkJ CQkJCQkJCQkgIHZhbCk7CisJCX0KKwl9CisKKwlyZXR1cm4gZGF0YV9sZW5ndGg7Cit9CisKIC8q CiAgKiBQZXItYXR0cmlidXRlIGhlbHBlciBmb3IgaGVhcF9maWxsX3R1cGxlIGFuZCBvdGhlciBy b3V0aW5lcyBidWlsZGluZyB0dXBsZXMuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXgg YmZkM2ViYzYwMWUuLjdiMGZlZjU3YTY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTY0 LDYgKzY0LDkgQEAKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIAorLyogbWF4IGJhdGNo IGZvciBmZXRjaGluZyBmcm9tIGN1cnNvciAqLworaW50IGN1cnNvcl9mZXRjaF9saW1pdCA9IC0x OworCiAvKiBIb29rcyBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBFeGVjdXRvclN0YXJ0 L1J1bi9GaW5pc2gvRW5kICovCiBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBFeGVjdXRvclN0YXJ0 X2hvb2sgPSBOVUxMOwogRXhlY3V0b3JSdW5faG9va190eXBlIEV4ZWN1dG9yUnVuX2hvb2sgPSBO VUxMOwpAQCAtMzQzLDYgKzM0Niw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLAogCSAqIHN0YXJ0dXAgdHVwbGUgcmVjZWl2ZXIsIGlmIHdlIHdpbGwgYmUgZW1p dHRpbmcgdHVwbGVzCiAJICovCiAJZXN0YXRlLT5lc19wcm9jZXNzZWQgPSAwOworCWVzdGF0ZS0+ ZXNfZW9mID0gZmFsc2U7CiAKIAlzZW5kVHVwbGVzID0gKG9wZXJhdGlvbiA9PSBDTURfU0VMRUNU IHx8CiAJCQkJICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5oYXNSZXR1cm5pbmcpOwpAQCAtMTY2 OSwxMSArMTY3MywxMyBAQCBFeGVjdXRlUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAlib29s CQl1c2VfcGFyYWxsZWxfbW9kZTsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKIAl1aW50NjQJCWN1 cnJlbnRfdHVwbGVfY291bnQ7CisJU2l6ZQkJY3VycmVudF9iYXRjaF9zaXplOwogCiAJLyoKIAkg KiBpbml0aWFsaXplIGxvY2FsIHZhcmlhYmxlcwogCSAqLwogCWN1cnJlbnRfdHVwbGVfY291bnQg PSAwOworCWN1cnJlbnRfYmF0Y2hfc2l6ZSA9IDA7CiAKIAkvKgogCSAqIFNldCB0aGUgZGlyZWN0 aW9uLgpAQCAtMTcxNSw3ICsxNzIxLDEwIEBAIEV4ZWN1dGVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLAogCQkgKiBwcm9jZXNzIHNvIHdlIGp1c3QgZW5kIHRoZSBsb29wLi4uCiAJCSAqLwogCQlp ZiAoVHVwSXNOdWxsKHNsb3QpKQorCQl7CisJCQllc3RhdGUtPmVzX2VvZiA9IHRydWU7CiAJCQli cmVhazsKKwkJfQogCiAJCS8qCiAJCSAqIElmIHdlIGhhdmUgYSBqdW5rIGZpbHRlciwgdGhlbiBw cm9qZWN0IGEgbmV3IHR1cGxlIHdpdGggdGhlIGp1bmsKQEAgLTE3NDAsNyArMTc0OSwxMCBAQCBF eGVjdXRlUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCSAqIGVuZCB0aGUgbG9vcC4KIAkJ CSAqLwogCQkJaWYgKCFkZXN0LT5yZWNlaXZlU2xvdChzbG90LCBkZXN0KSkKKwkJCXsKKwkJCQll c3RhdGUtPmVzX2VvZiA9IHRydWU7CiAJCQkJYnJlYWs7CisJCQl9CiAJCX0KIAogCQkvKgpAQCAt MTc1Nyw4ICsxNzY5LDI5IEBAIEV4ZWN1dGVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQkg KiBtZWFucyBubyBsaW1pdC4KIAkJICovCiAJCWN1cnJlbnRfdHVwbGVfY291bnQrKzsKLQkJaWYg KG51bWJlclR1cGxlcyAmJiBudW1iZXJUdXBsZXMgPT0gY3VycmVudF90dXBsZV9jb3VudCkKLQkJ CWJyZWFrOworCQlpZiAobnVtYmVyVHVwbGVzKQorCQl7CisJCQlpZiAobnVtYmVyVHVwbGVzID09 IGN1cnJlbnRfdHVwbGVfY291bnQpCisJCQkJYnJlYWs7CisKKwkJCS8qCisJCQkgKiBJZiBiYXRj aCBsaW1pdCBpbiBieXRlcyBpcyBzcGVjaWZpZWQsIGNvdW50IGN1cnJlbnQgYmF0Y2ggc2l6ZQor CQkJICogYW5kIGV4aXQgaWYgbGltaXQgaXMgcmVhY2hlZAorCQkJICovCisJCQlpZiAoY3Vyc29y X2ZldGNoX2xpbWl0ID49IDApCisJCQl7CisJCQkJU2l6ZSB0dXBsZV9sZW47CisKKwkJCQkvKiBD b21wdXRlIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0dXBsZSAqLworCQkJCXNsb3RfZ2V0YWxsYXR0 cnMoc2xvdCk7CisJCQkJdHVwbGVfbGVuID0gZXN0aW1hdGVfdHVwbGVfc2l6ZShzbG90LT50dHNf dHVwbGVEZXNjcmlwdG9yLCBzbG90LT50dHNfdmFsdWVzLCBzbG90LT50dHNfaXNudWxsKTsKKwkJ CQljdXJyZW50X2JhdGNoX3NpemUgKz0gdHVwbGVfbGVuOworCisJCQkJaWYgKGN1cnJlbnRfYmF0 Y2hfc2l6ZSA+IGN1cnNvcl9mZXRjaF9saW1pdCkKKwkJCQkJYnJlYWs7CisJCQl9CisJCX0KKwog CX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGE3OTU1ZTQ3NmY5Li43Zjgy MDM4ODg3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE0Myw2ICsxNDMsNyBAQCBD cmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAKIAllc3RhdGUtPmVzX3Byb2Nlc3NlZCA9IDA7CiAJ ZXN0YXRlLT5lc190b3RhbF9wcm9jZXNzZWQgPSAwOworCWVzdGF0ZS0+ZXNfZW9mID0gZmFsc2U7 CiAKIAllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSAwOwogCWVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCA9 IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYwppbmRleCBkOGZjNzVkMGJiOS4uNzg5MDhhZTJhOGIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJh Y2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAg LTQ0LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFu LAogCQkJCQkJIFF1ZXJ5Q29tcGxldGlvbiAqcWMpOwogc3RhdGljIHZvaWQgRmlsbFBvcnRhbFN0 b3JlKFBvcnRhbCBwb3J0YWwsIGJvb2wgaXNUb3BMZXZlbCk7CiBzdGF0aWMgdWludDY0IFJ1bkZy b21TdG9yZShQb3J0YWwgcG9ydGFsLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNv dW50LAotCQkJCQkJICAgRGVzdFJlY2VpdmVyICpkZXN0KTsKKwkJCQkJCSAgIERlc3RSZWNlaXZl ciAqZGVzdCwgYm9vbCAqZW9mKTsKIHN0YXRpYyB1aW50NjQgUG9ydGFsUnVuU2VsZWN0KFBvcnRh bCBwb3J0YWwsIGJvb2wgZm9yd2FyZCwgbG9uZyBjb3VudCwKIAkJCQkJCQkgIERlc3RSZWNlaXZl ciAqZGVzdCk7CiBzdGF0aWMgdm9pZCBQb3J0YWxSdW5VdGlsaXR5KFBvcnRhbCBwb3J0YWwsIFBs YW5uZWRTdG10ICpwc3RtdCwKQEAgLTg2NCw2ICs4NjUsNyBAQCBQb3J0YWxSdW5TZWxlY3QoUG9y dGFsIHBvcnRhbCwKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7CiAJU2NhbkRpcmVjdGlvbiBkaXJl Y3Rpb247CiAJdWludDY0CQlucHJvY2Vzc2VkOworCWJvb2wJCWVvZjsKIAogCS8qCiAJICogTkI6 IHF1ZXJ5RGVzYyB3aWxsIGJlIE5VTEwgaWYgd2UgYXJlIGZldGNoaW5nIGZyb20gYSBoZWxkIGN1 cnNvciBvciBhCkBAIC05MDksMjAgKzkxMSwyMyBAQCBQb3J0YWxSdW5TZWxlY3QoUG9ydGFsIHBv cnRhbCwKIAkJCWNvdW50ID0gMDsKIAogCQlpZiAocG9ydGFsLT5ob2xkU3RvcmUpCi0JCQlucHJv Y2Vzc2VkID0gUnVuRnJvbVN0b3JlKHBvcnRhbCwgZGlyZWN0aW9uLCAodWludDY0KSBjb3VudCwg ZGVzdCk7CisJCXsKKwkJCW5wcm9jZXNzZWQgPSBSdW5Gcm9tU3RvcmUocG9ydGFsLCBkaXJlY3Rp b24sICh1aW50NjQpIGNvdW50LCBkZXN0LCAmZW9mKTsKKwkJfQogCQllbHNlCiAJCXsKIAkJCVB1 c2hBY3RpdmVTbmFwc2hvdChxdWVyeURlc2MtPnNuYXBzaG90KTsKIAkJCUV4ZWN1dG9yUnVuKHF1 ZXJ5RGVzYywgZGlyZWN0aW9uLCAodWludDY0KSBjb3VudCk7CiAJCQlucHJvY2Vzc2VkID0gcXVl cnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZDsKIAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJ CQllb2YgPSBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfZW9mOwogCQl9CiAKIAkJaWYgKCFTY2FuRGly ZWN0aW9uSXNOb01vdmVtZW50KGRpcmVjdGlvbikpCiAJCXsKIAkJCWlmIChucHJvY2Vzc2VkID4g MCkKIAkJCQlwb3J0YWwtPmF0U3RhcnQgPSBmYWxzZTsJLyogT0sgdG8gZ28gYmFja3dhcmQgbm93 ICovCi0JCQlpZiAoY291bnQgPT0gMCB8fCBucHJvY2Vzc2VkIDwgKHVpbnQ2NCkgY291bnQpCisJ CQlpZiAoY291bnQgPT0gMCB8fCBlb2YpCiAJCQkJcG9ydGFsLT5hdEVuZCA9IHRydWU7CS8qIHdl IHJldHJpZXZlZCAnZW0gYWxsICovCiAJCQlwb3J0YWwtPnBvcnRhbFBvcyArPSBucHJvY2Vzc2Vk OwogCQl9CkBAIC05NDgsMTMgKzk1MywxNiBAQCBQb3J0YWxSdW5TZWxlY3QoUG9ydGFsIHBvcnRh bCwKIAkJCWNvdW50ID0gMDsKIAogCQlpZiAocG9ydGFsLT5ob2xkU3RvcmUpCi0JCQlucHJvY2Vz c2VkID0gUnVuRnJvbVN0b3JlKHBvcnRhbCwgZGlyZWN0aW9uLCAodWludDY0KSBjb3VudCwgZGVz dCk7CisJCXsKKwkJCW5wcm9jZXNzZWQgPSBSdW5Gcm9tU3RvcmUocG9ydGFsLCBkaXJlY3Rpb24s ICh1aW50NjQpIGNvdW50LCBkZXN0LCAmZW9mKTsKKwkJfQogCQllbHNlCiAJCXsKIAkJCVB1c2hB Y3RpdmVTbmFwc2hvdChxdWVyeURlc2MtPnNuYXBzaG90KTsKIAkJCUV4ZWN1dG9yUnVuKHF1ZXJ5 RGVzYywgZGlyZWN0aW9uLCAodWludDY0KSBjb3VudCk7CiAJCQlucHJvY2Vzc2VkID0gcXVlcnlE ZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZDsKIAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQll b2YgPSBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfZW9mOwogCQl9CiAKIAkJaWYgKCFTY2FuRGlyZWN0 aW9uSXNOb01vdmVtZW50KGRpcmVjdGlvbikpCkBAIC05NjQsNyArOTcyLDcgQEAgUG9ydGFsUnVu U2VsZWN0KFBvcnRhbCBwb3J0YWwsCiAJCQkJcG9ydGFsLT5hdEVuZCA9IGZhbHNlOwkvKiBPSyB0 byBnbyBmb3J3YXJkIG5vdyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9zKys7CS8qIGFkanVzdCBm b3IgZW5kcG9pbnQgY2FzZSAqLwogCQkJfQotCQkJaWYgKGNvdW50ID09IDAgfHwgbnByb2Nlc3Nl ZCA8ICh1aW50NjQpIGNvdW50KQorCQkJaWYgKGNvdW50ID09IDAgfHwgZW9mKQogCQkJewogCQkJ CXBvcnRhbC0+YXRTdGFydCA9IHRydWU7IC8qIHdlIHJldHJpZXZlZCAnZW0gYWxsICovCiAJCQkJ cG9ydGFsLT5wb3J0YWxQb3MgPSAwOwpAQCAtMTA0OSwxNSArMTA1NywxOCBAQCBGaWxsUG9ydGFs U3RvcmUoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcExldmVsKQogICovCiBzdGF0aWMgdWludDY0 CiBSdW5Gcm9tU3RvcmUoUG9ydGFsIHBvcnRhbCwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVp bnQ2NCBjb3VudCwKLQkJCSBEZXN0UmVjZWl2ZXIgKmRlc3QpCisJCQkgRGVzdFJlY2VpdmVyICpk ZXN0LCBib29sICplb2YpCiB7CiAJdWludDY0CQljdXJyZW50X3R1cGxlX2NvdW50ID0gMDsKKwlT aXplCQljdXJyZW50X2JhdGNoX3NpemUgPSAwOwogCVR1cGxlVGFibGVTbG90ICpzbG90OwogCiAJ c2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChwb3J0YWwtPnR1cERlc2MsICZUVFNPcHNN aW5pbWFsVHVwbGUpOwogCiAJZGVzdC0+clN0YXJ0dXAoZGVzdCwgQ01EX1NFTEVDVCwgcG9ydGFs LT50dXBEZXNjKTsKIAorCSplb2YgPSBmYWxzZTsKKwogCWlmIChTY2FuRGlyZWN0aW9uSXNOb01v dmVtZW50KGRpcmVjdGlvbikpCiAJewogCQkvKiBkbyBub3RoaW5nIGV4Y2VwdCBzdGFydC9zdG9w IHRoZSBkZXN0aW5hdGlvbiAqLwpAQCAtMTA3OSw3ICsxMDkwLDEwIEBAIFJ1bkZyb21TdG9yZShQ b3J0YWwgcG9ydGFsLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50LAogCQkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCQlpZiAoIW9rKQorCQkJewor CQkJCSplb2YgPSB0cnVlOwogCQkJCWJyZWFrOworCQkJfQogCiAJCQkvKgogCQkJICogSWYgd2Ug YXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlIHR1cGxlLCB3ZSBhc3N1bWUgdGhlIGRlc3RpbmF0aW9u CkBAIC0xMDg3LDcgKzExMDEsMjQgQEAgUnVuRnJvbVN0b3JlKFBvcnRhbCBwb3J0YWwsIFNjYW5E aXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQsCiAJCQkgKiBlbmQgdGhlIGxvb3AuCiAJ CQkgKi8KIAkJCWlmICghZGVzdC0+cmVjZWl2ZVNsb3Qoc2xvdCwgZGVzdCkpCisJCQl7CisJCQkJ KmVvZiA9IHRydWU7CiAJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJZiBiYXRjaCBs aW1pdCBpbiBieXRlcyBpcyBzcGVjaWZpZWQsIGNvdW50IGN1cnJlbnQgYmF0Y2gKKwkJCSAqIHNp emUuCisJCQkgKi8KKwkJCWlmIChjdXJzb3JfZmV0Y2hfbGltaXQgPj0gMCAmJiBjb3VudCkKKwkJ CXsKKwkJCQlTaXplCQl0dXBsZV9sZW47CisKKwkJCQkvKiBDb21wdXRlIGxlbmd0aCBvZiB0aGUg Y3VycmVudCB0dXBsZS4gKi8KKwkJCQlzbG90X2dldGFsbGF0dHJzKHNsb3QpOworCQkJCXR1cGxl X2xlbiA9IGVzdGltYXRlX3R1cGxlX3NpemUoc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgc2xv dC0+dHRzX3ZhbHVlcywgc2xvdC0+dHRzX2lzbnVsbCk7CisJCQkJY3VycmVudF9iYXRjaF9zaXpl ICs9IHR1cGxlX2xlbjsKKwkJCX0KIAogCQkJRXhlY0NsZWFyVHVwbGUoc2xvdCk7CiAKQEAgLTEw OTcsOCArMTEyOCwxNSBAQCBSdW5Gcm9tU3RvcmUoUG9ydGFsIHBvcnRhbCwgU2NhbkRpcmVjdGlv biBkaXJlY3Rpb24sIHVpbnQ2NCBjb3VudCwKIAkJCSAqIG1lYW5zIG5vIGxpbWl0LgogCQkJICov CiAJCQljdXJyZW50X3R1cGxlX2NvdW50Kys7Ci0JCQlpZiAoY291bnQgJiYgY291bnQgPT0gY3Vy cmVudF90dXBsZV9jb3VudCkKLQkJCQlicmVhazsKKwkJCWlmIChjb3VudCkKKwkJCXsKKwkJCQlp ZiAoY291bnQgPT0gY3VycmVudF90dXBsZV9jb3VudCkKKwkJCQkJYnJlYWs7CisKKwkJCQkvKiBF eGl0IGlmIGJhdGNoIGxpbWl0IGlzIHJlYWNoZWQgKi8KKwkJCQlpZiAoY3VycmVudF9iYXRjaF9z aXplID4gY3Vyc29yX2ZldGNoX2xpbWl0KQorCQkJCQlicmVhazsKKwkJCX0KIAkJfQogCX0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRleCA3YzYwYjEyNTU2 NC4uZTdiYzE3YThmMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Bh cmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMu ZGF0CkBAIC01MjIsNiArNTIyLDE1IEBACiAgIGFzc2lnbl9ob29rID0+ICdhc3NpZ25fY3JlYXRl cm9sZV9zZWxmX2dyYW50JywKIH0sCiAKK3sgbmFtZSA9PiAnY3Vyc29yX2ZldGNoX2xpbWl0Jywg dHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9PiAnUkVTT1VS Q0VTX01FTScsCisgIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIG1heGltdW0gc2l6ZSBpbiBieXRl cyBmb3IgZmV0Y2hpbmcgZnJvbSBjdXJzb3InLAorICBmbGFncyA9PiAnR1VDX1VOSVRfQllURScs CisgIHZhcmlhYmxlID0+ICdjdXJzb3JfZmV0Y2hfbGltaXQnLAorICBib290X3ZhbCA9PiAnLTEn LAorICBtaW4gPT4gJy0xJywKKyAgbWF4ID0+ICdNYXhBbGxvY1NpemUnLAorfSwKKwogeyBuYW1l ID0+ICdjdXJzb3JfdHVwbGVfZnJhY3Rpb24nLCB0eXBlID0+ICdyZWFsJywgY29udGV4dCA9PiAn UEdDX1VTRVJTRVQnLCBncm91cCA9PiAnUVVFUllfVFVOSU5HX09USEVSJywKICAgc2hvcnRfZGVz YyA9PiAnU2V0cyB0aGUgcGxhbm5lclwncyBlc3RpbWF0ZSBvZiB0aGUgZnJhY3Rpb24gb2YgYSBj dXJzb3JcJ3Mgcm93cyB0aGF0IHdpbGwgYmUgcmV0cmlldmVkLicsCiAgIGZsYWdzID0+ICdHVUNf RVhQTEFJTicsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDczZmY2YWQwYTMy Li5iZjQwZDQwNzQ5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTUwLDYg KzUwLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJjb21tb24v ZmlsZV91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9zY3JhbS1jb21tb24uaCIKKyNpbmNsdWRl ICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImppdC9qaXQuaCIKICNpbmNsdWRlICJs aWJwcS9hdXRoLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBkYzllMjI1NWY4YS4uMTY5ZTk2 ZTIwZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1w bGUKQEAgLTQ2OCw2ICs0NjgsNyBAQAogI2RlZmF1bHRfc3RhdGlzdGljc190YXJnZXQgPSAxMDAg ICAgICAgICMgcmFuZ2UgMS0xMDAwMAogI2NvbnN0cmFpbnRfZXhjbHVzaW9uID0gcGFydGl0aW9u ICAgICAgICMgb24sIG9mZiwgb3IgcGFydGl0aW9uCiAjY3Vyc29yX3R1cGxlX2ZyYWN0aW9uID0g MC4xICAgICAgICAgICAgIyByYW5nZSAwLjAtMS4wCisjY3Vyc29yX2ZldGNoX2xpbWl0ID0gLTEg ICAgICAgICAgICAgICAgIyBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgZm9yIGZldGNoaW5nIGZyb20g Y3Vyc29yCiAjZnJvbV9jb2xsYXBzZV9saW1pdCA9IDgKICNqaXQgPSBvbiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGFsbG93IEpJVCBjb21waWxhdGlvbgogI2pvaW5fY29sbGFwc2Vf bGltaXQgPSA4ICAgICAgICAgICAgICAgICMgMSBkaXNhYmxlcyBjb2xsYXBzaW5nIG9mIGV4cGxp Y2l0CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgKaW5kZXggZDQwNjgyNWZmMjIuLmNiMjRlMTU5 NTA5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oCkBAIC04MDgsNiArODA4LDkgQEAgSGVh cFR1cGxlQ2xlYXJIZWFwT25seShjb25zdCBIZWFwVHVwbGVEYXRhICp0dXBsZSkKIC8qIHByb3Rv dHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBjb21tb24vaGVhcHR1cGxlLmMgKi8KIGV4dGVybiBTaXpl IGhlYXBfY29tcHV0ZV9kYXRhX3NpemUoVHVwbGVEZXNjIHR1cGxlRGVzYywKIAkJCQkJCQkJICAg Y29uc3QgRGF0dW0gKnZhbHVlcywgY29uc3QgYm9vbCAqaXNudWxsKTsKK2V4dGVybiBTaXplIGVz dGltYXRlX3R1cGxlX3NpemUoVHVwbGVEZXNjIHR1cGxlRGVzYywKKwkJCQkJICAgY29uc3QgRGF0 dW0gKnZhbHVlcywgY29uc3QgYm9vbCAqaXNudWxsKTsKKwogZXh0ZXJuIHZvaWQgaGVhcF9maWxs X3R1cGxlKFR1cGxlRGVzYyB0dXBsZURlc2MsCiAJCQkJCQkJY29uc3QgRGF0dW0gKnZhbHVlcywg Y29uc3QgYm9vbCAqaXNudWxsLAogCQkJCQkJCWNoYXIgKmRhdGEsIFNpemUgZGF0YV9zaXplLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNTkyOWFhYmMzNTMuLjgwZmNiOGY2ZjEwIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTk2LDYgKzk2LDggQEAgdHlwZWRlZiBib29sICgqRXhl Y3V0b3JDaGVja1Blcm1zX2hvb2tfdHlwZSkgKExpc3QgKnJhbmdlVGFibGUsCiAJCQkJCQkJCQkJ CSAgYm9vbCBlcmVwb3J0X29uX3Zpb2xhdGlvbik7CiBleHRlcm4gUEdETExJTVBPUlQgRXhlY3V0 b3JDaGVja1Blcm1zX2hvb2tfdHlwZSBFeGVjdXRvckNoZWNrUGVybXNfaG9vazsKIAorLyogR1VD IHZhcmlhYmxlcyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjdXJzb3JfZmV0Y2hfbGltaXQ7 CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNBbWkuYwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAppbmRleCAzMjIwZjliMjU3NC4uZWNkMGVkZDM5MGMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCkBAIC03MTksNiArNzE5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJ CSAqIEV4ZWN1dG9yUnVuKCkgY2FsbC4gKi8KIAl1aW50NjQJCWVzX3RvdGFsX3Byb2Nlc3NlZDsg LyogdG90YWwgIyBvZiB0dXBsZXMgYWdncmVnYXRlZCBhY3Jvc3MgYWxsCiAJCQkJCQkJCQkgKiBF eGVjdXRvclJ1bigpIGNhbGxzLiAqLworCWJvb2wJCWVzX2VvZjsJLyogdHJ1ZSBpZiBubyBtb3Jl IGRhdGEgdG8gcHJvY2VzcyAqLwogCiAJaW50CQkJZXNfdG9wX2VmbGFnczsJLyogZWZsYWdzIHBh c3NlZCB0byBFeGVjdXRvclN0YXJ0ICovCiAJaW50CQkJZXNfaW5zdHJ1bWVudDsJLyogT1Igb2Yg SW5zdHJ1bWVudE9wdGlvbiBmbGFncyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wb3J0YWxzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcG9ydGFscy5v dXQKaW5kZXggMzFmNzdhYmM0NDYuLjJhMWQ3NzNiMzc0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BvcnRhbHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcG9ydGFscy5vdXQKQEAgLTE1NjEsMyArMTU2MSwxMDggQEAgZmV0Y2ggYWxsIGluIGhlbGRf cG9ydGFsOwogKDEgcm93KQogCiByZXNldCBkZWZhdWx0X3RvYXN0X2NvbXByZXNzaW9uOworLS0g Q2hlY2sgbWVtb3J5IGxpbWl0IGZvciBmZXRjaGluZyBmcm9tIGN1cnNvcgorc2V0IGN1cnNvcl9m ZXRjaF9saW1pdCA9ICc1MTJCJzsKK0JFR0lOOworREVDTEFSRSBmb28xIFNDUk9MTCBDVVJTT1Ig Rk9SIFNFTEVDVCAqIEZST00gdGVuazEgT1JERVIgQlkgdW5pcXVlMjsKK0RFQ0xBUkUgZm9vMiBT Q1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgKiBGUk9NIHRlbmsyOworREVDTEFSRSBmb28zIFNDUk9M TCBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gdGVuazEgT1JERVIgQlkgdW5pcXVlMjsKK0RFQ0xB UkUgZm9vNCBTQ1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgKiBGUk9NIHRlbmsyOworRkVUQ0ggMSBp biBmb28xOworIHVuaXF1ZTEgfCB1bmlxdWUyIHwgdHdvIHwgZm91ciB8IHRlbiB8IHR3ZW50eSB8 IGh1bmRyZWQgfCB0aG91c2FuZCB8IHR3b3Rob3VzYW5kIHwgZml2ZXRob3VzIHwgdGVudGhvdXMg fCBvZGQgfCBldmVuIHwgc3RyaW5ndTEgfCBzdHJpbmd1MiB8IHN0cmluZzQgCistLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgICA4ODAwIHwgICAgICAgMCB8ICAgMCB8ICAg IDAgfCAgIDAgfCAgICAgIDAgfCAgICAgICAwIHwgICAgICA4MDAgfCAgICAgICAgIDgwMCB8ICAg ICAgMzgwMCB8ICAgICA4ODAwIHwgICAwIHwgICAgMSB8IE1BQUFBQSAgIHwgQUFBQUFBICAgfCBB QUFBeHgKKygxIHJvdykKKworRkVUQ0ggMiBpbiBmb28yOworIHVuaXF1ZTEgfCB1bmlxdWUyIHwg dHdvIHwgZm91ciB8IHRlbiB8IHR3ZW50eSB8IGh1bmRyZWQgfCB0aG91c2FuZCB8IHR3b3Rob3Vz YW5kIHwgZml2ZXRob3VzIHwgdGVudGhvdXMgfCBvZGQgfCBldmVuIHwgc3RyaW5ndTEgfCBzdHJp bmd1MiB8IHN0cmluZzQgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSst LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAg ICA4ODAwIHwgICAgICAgMCB8ICAgMCB8ICAgIDAgfCAgIDAgfCAgICAgIDAgfCAgICAgICAwIHwg ICAgICA4MDAgfCAgICAgICAgIDgwMCB8ICAgICAgMzgwMCB8ICAgICA4ODAwIHwgICAwIHwgICAg MSB8IE1BQUFBQSAgIHwgQUFBQUFBICAgfCBBQUFBeHgKKyAgICAxODkxIHwgICAgICAgMSB8ICAg MSB8ICAgIDMgfCAgIDEgfCAgICAgMTEgfCAgICAgIDkxIHwgICAgICA4OTEgfCAgICAgICAgMTg5 MSB8ICAgICAgMTg5MSB8ICAgICAxODkxIHwgMTgyIHwgIDE4MyB8IFRVQUFBQSAgIHwgQkFBQUFB ICAgfCBISEhIeHgKKygyIHJvd3MpCisKK0ZFVENIIDMgaW4gZm9vMzsKKyB1bmlxdWUxIHwgdW5p cXVlMiB8IHR3byB8IGZvdXIgfCB0ZW4gfCB0d2VudHkgfCBodW5kcmVkIHwgdGhvdXNhbmQgfCB0 d290aG91c2FuZCB8IGZpdmV0aG91cyB8IHRlbnRob3VzIHwgb2RkIHwgZXZlbiB8IHN0cmluZ3Ux IHwgc3RyaW5ndTIgfCBzdHJpbmc0IAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLSstLS0tLS0r LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCisgICAgODgwMCB8ICAgICAgIDAgfCAgIDAgfCAgICAwIHwgICAwIHwgICAgICAwIHwgICAg ICAgMCB8ICAgICAgODAwIHwgICAgICAgICA4MDAgfCAgICAgIDM4MDAgfCAgICAgODgwMCB8ICAg MCB8ICAgIDEgfCBNQUFBQUEgICB8IEFBQUFBQSAgIHwgQUFBQXh4CisgICAgMTg5MSB8ICAgICAg IDEgfCAgIDEgfCAgICAzIHwgICAxIHwgICAgIDExIHwgICAgICA5MSB8ICAgICAgODkxIHwgICAg ICAgIDE4OTEgfCAgICAgIDE4OTEgfCAgICAgMTg5MSB8IDE4MiB8ICAxODMgfCBUVUFBQUEgICB8 IEJBQUFBQSAgIHwgSEhISHh4CisgICAgMzQyMCB8ICAgICAgIDIgfCAgIDAgfCAgICAwIHwgICAw IHwgICAgICAwIHwgICAgICAyMCB8ICAgICAgNDIwIHwgICAgICAgIDE0MjAgfCAgICAgIDM0MjAg fCAgICAgMzQyMCB8ICA0MCB8ICAgNDEgfCBPQkFBQUEgICB8IENBQUFBQSAgIHwgT09PT3h4Ciso MyByb3dzKQorCistLSBXZWxsLCB3ZSd2ZSByZWFjaGVkIHRoZSBsaW1pdAorRkVUQ0ggNCBpbiBm b280OworIHVuaXF1ZTEgfCB1bmlxdWUyIHwgdHdvIHwgZm91ciB8IHRlbiB8IHR3ZW50eSB8IGh1 bmRyZWQgfCB0aG91c2FuZCB8IHR3b3Rob3VzYW5kIHwgZml2ZXRob3VzIHwgdGVudGhvdXMgfCBv ZGQgfCBldmVuIHwgc3RyaW5ndTEgfCBzdHJpbmd1MiB8IHN0cmluZzQgCistLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgICA4ODAwIHwgICAgICAgMCB8ICAgMCB8ICAgIDAg fCAgIDAgfCAgICAgIDAgfCAgICAgICAwIHwgICAgICA4MDAgfCAgICAgICAgIDgwMCB8ICAgICAg MzgwMCB8ICAgICA4ODAwIHwgICAwIHwgICAgMSB8IE1BQUFBQSAgIHwgQUFBQUFBICAgfCBBQUFB eHgKKyAgICAxODkxIHwgICAgICAgMSB8ICAgMSB8ICAgIDMgfCAgIDEgfCAgICAgMTEgfCAgICAg IDkxIHwgICAgICA4OTEgfCAgICAgICAgMTg5MSB8ICAgICAgMTg5MSB8ICAgICAxODkxIHwgMTgy IHwgIDE4MyB8IFRVQUFBQSAgIHwgQkFBQUFBICAgfCBISEhIeHgKKyAgICAzNDIwIHwgICAgICAg MiB8ICAgMCB8ICAgIDAgfCAgIDAgfCAgICAgIDAgfCAgICAgIDIwIHwgICAgICA0MjAgfCAgICAg ICAgMTQyMCB8ICAgICAgMzQyMCB8ICAgICAzNDIwIHwgIDQwIHwgICA0MSB8IE9CQUFBQSAgIHwg Q0FBQUFBICAgfCBPT09PeHgKKygzIHJvd3MpCisKKy0tIEZldGNoIHRoZSBuZXh0IGJhdGNoCitG RVRDSCA0IGluIGZvbzQ7CisgdW5pcXVlMSB8IHVuaXF1ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwg dHdlbnR5IHwgaHVuZHJlZCB8IHRob3VzYW5kIHwgdHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0 ZW50aG91cyB8IG9kZCB8IGV2ZW4gfCBzdHJpbmd1MSB8IHN0cmluZ3UyIHwgc3RyaW5nNCAKKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorICAgIDk4NTAgfCAgICAgICAzIHwg ICAwIHwgICAgMiB8ICAgMCB8ICAgICAxMCB8ICAgICAgNTAgfCAgICAgIDg1MCB8ICAgICAgICAx ODUwIHwgICAgICA0ODUwIHwgICAgIDk4NTAgfCAxMDAgfCAgMTAxIHwgV09BQUFBICAgfCBEQUFB QUEgICB8IFZWVlZ4eAorICAgIDcxNjQgfCAgICAgICA0IHwgICAwIHwgICAgMCB8ICAgNCB8ICAg ICAgNCB8ICAgICAgNjQgfCAgICAgIDE2NCB8ICAgICAgICAxMTY0IHwgICAgICAyMTY0IHwgICAg IDcxNjQgfCAxMjggfCAgMTI5IHwgT1BBQUFBICAgfCBFQUFBQUEgICB8IEFBQUF4eAorICAgIDgw MDkgfCAgICAgICA1IHwgICAxIHwgICAgMSB8ICAgOSB8ICAgICAgOSB8ICAgICAgIDkgfCAgICAg ICAgOSB8ICAgICAgICAgICA5IHwgICAgICAzMDA5IHwgICAgIDgwMDkgfCAgMTggfCAgIDE5IHwg QldBQUFBICAgfCBGQUFBQUEgICB8IEhISEh4eAorKDMgcm93cykKKworRkVUQ0ggYmFja3dhcmQg NCBpbiBmb280OworIHVuaXF1ZTEgfCB1bmlxdWUyIHwgdHdvIHwgZm91ciB8IHRlbiB8IHR3ZW50 eSB8IGh1bmRyZWQgfCB0aG91c2FuZCB8IHR3b3Rob3VzYW5kIHwgZml2ZXRob3VzIHwgdGVudGhv dXMgfCBvZGQgfCBldmVuIHwgc3RyaW5ndTEgfCBzdHJpbmd1MiB8IHN0cmluZzQgCistLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgICA3MTY0IHwgICAgICAgNCB8ICAgMCB8 ICAgIDAgfCAgIDQgfCAgICAgIDQgfCAgICAgIDY0IHwgICAgICAxNjQgfCAgICAgICAgMTE2NCB8 ICAgICAgMjE2NCB8ICAgICA3MTY0IHwgMTI4IHwgIDEyOSB8IE9QQUFBQSAgIHwgRUFBQUFBICAg fCBBQUFBeHgKKyAgICA5ODUwIHwgICAgICAgMyB8ICAgMCB8ICAgIDIgfCAgIDAgfCAgICAgMTAg fCAgICAgIDUwIHwgICAgICA4NTAgfCAgICAgICAgMTg1MCB8ICAgICAgNDg1MCB8ICAgICA5ODUw IHwgMTAwIHwgIDEwMSB8IFdPQUFBQSAgIHwgREFBQUFBICAgfCBWVlZWeHgKKyAgICAzNDIwIHwg ICAgICAgMiB8ICAgMCB8ICAgIDAgfCAgIDAgfCAgICAgIDAgfCAgICAgIDIwIHwgICAgICA0MjAg fCAgICAgICAgMTQyMCB8ICAgICAgMzQyMCB8ICAgICAzNDIwIHwgIDQwIHwgICA0MSB8IE9CQUFB QSAgIHwgQ0FBQUFBICAgfCBPT09PeHgKKygzIHJvd3MpCisKKy0tIENoZWNrIGN1cnNvciB3aXRo IGhvbGQKK0RFQ0xBUkUgZm9vNSBDVVJTT1IgV0lUSCBIT0xEIEZPUiBTRUxFQ1QgKiBGUk9NIHRl bmsyIExJTUlUIDMwOworY29tbWl0OworRkVUQ0ggNSBGUk9NIGZvbzU7CisgdW5pcXVlMSB8IHVu aXF1ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRob3VzYW5kIHwg dHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2ZW4gfCBzdHJpbmd1 MSB8IHN0cmluZ3UyIHwgc3RyaW5nNCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0rLS0tLS0t Ky0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorICAgIDg4MDAgfCAgICAgICAwIHwgICAwIHwgICAgMCB8ICAgMCB8ICAgICAgMCB8ICAg ICAgIDAgfCAgICAgIDgwMCB8ICAgICAgICAgODAwIHwgICAgICAzODAwIHwgICAgIDg4MDAgfCAg IDAgfCAgICAxIHwgTUFBQUFBICAgfCBBQUFBQUEgICB8IEFBQUF4eAorICAgIDE4OTEgfCAgICAg ICAxIHwgICAxIHwgICAgMyB8ICAgMSB8ICAgICAxMSB8ICAgICAgOTEgfCAgICAgIDg5MSB8ICAg ICAgICAxODkxIHwgICAgICAxODkxIHwgICAgIDE4OTEgfCAxODIgfCAgMTgzIHwgVFVBQUFBICAg fCBCQUFBQUEgICB8IEhISEh4eAorICAgIDM0MjAgfCAgICAgICAyIHwgICAwIHwgICAgMCB8ICAg MCB8ICAgICAgMCB8ICAgICAgMjAgfCAgICAgIDQyMCB8ICAgICAgICAxNDIwIHwgICAgICAzNDIw IHwgICAgIDM0MjAgfCAgNDAgfCAgIDQxIHwgT0JBQUFBICAgfCBDQUFBQUEgICB8IE9PT094eAor KDMgcm93cykKKworRkVUQ0ggNSBGUk9NIGZvbzU7CisgdW5pcXVlMSB8IHVuaXF1ZTIgfCB0d28g fCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRob3VzYW5kIHwgdHdvdGhvdXNhbmQg fCBmaXZldGhvdXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2ZW4gfCBzdHJpbmd1MSB8IHN0cmluZ3Uy IHwgc3RyaW5nNCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorICAgIDk4 NTAgfCAgICAgICAzIHwgICAwIHwgICAgMiB8ICAgMCB8ICAgICAxMCB8ICAgICAgNTAgfCAgICAg IDg1MCB8ICAgICAgICAxODUwIHwgICAgICA0ODUwIHwgICAgIDk4NTAgfCAxMDAgfCAgMTAxIHwg V09BQUFBICAgfCBEQUFBQUEgICB8IFZWVlZ4eAorICAgIDcxNjQgfCAgICAgICA0IHwgICAwIHwg ICAgMCB8ICAgNCB8ICAgICAgNCB8ICAgICAgNjQgfCAgICAgIDE2NCB8ICAgICAgICAxMTY0IHwg ICAgICAyMTY0IHwgICAgIDcxNjQgfCAxMjggfCAgMTI5IHwgT1BBQUFBICAgfCBFQUFBQUEgICB8 IEFBQUF4eAorICAgIDgwMDkgfCAgICAgICA1IHwgICAxIHwgICAgMSB8ICAgOSB8ICAgICAgOSB8 ICAgICAgIDkgfCAgICAgICAgOSB8ICAgICAgICAgICA5IHwgICAgICAzMDA5IHwgICAgIDgwMDkg fCAgMTggfCAgIDE5IHwgQldBQUFBICAgfCBGQUFBQUEgICB8IEhISEh4eAorKDMgcm93cykKKwor LS0gRkVUQ0ggQUxMIGlzIG5vdCBsaW1pdGVkIGJ5IGN1cnNvcl9mZXRjaF9saW1pdAorRkVUQ0gg QUxMIEZST00gZm9vNTsKKyB1bmlxdWUxIHwgdW5pcXVlMiB8IHR3byB8IGZvdXIgfCB0ZW4gfCB0 d2VudHkgfCBodW5kcmVkIHwgdGhvdXNhbmQgfCB0d290aG91c2FuZCB8IGZpdmV0aG91cyB8IHRl bnRob3VzIHwgb2RkIHwgZXZlbiB8IHN0cmluZ3UxIHwgc3RyaW5ndTIgfCBzdHJpbmc0IAorLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgICAgNTA1NyB8ICAgICAgIDYgfCAg IDEgfCAgICAxIHwgICA3IHwgICAgIDE3IHwgICAgICA1NyB8ICAgICAgIDU3IHwgICAgICAgIDEw NTcgfCAgICAgICAgNTcgfCAgICAgNTA1NyB8IDExNCB8ICAxMTUgfCBOTUFBQUEgICB8IEdBQUFB QSAgIHwgT09PT3h4CisgICAgNjcwMSB8ICAgICAgIDcgfCAgIDEgfCAgICAxIHwgICAxIHwgICAg ICAxIHwgICAgICAgMSB8ICAgICAgNzAxIHwgICAgICAgICA3MDEgfCAgICAgIDE3MDEgfCAgICAg NjcwMSB8ICAgMiB8ICAgIDMgfCBUWEFBQUEgICB8IEhBQUFBQSAgIHwgVlZWVnh4CisgICAgNDMy MSB8ICAgICAgIDggfCAgIDEgfCAgICAxIHwgICAxIHwgICAgICAxIHwgICAgICAyMSB8ICAgICAg MzIxIHwgICAgICAgICAzMjEgfCAgICAgIDQzMjEgfCAgICAgNDMyMSB8ICA0MiB8ICAgNDMgfCBG S0FBQUEgICB8IElBQUFBQSAgIHwgQUFBQXh4CisgICAgMzA0MyB8ICAgICAgIDkgfCAgIDEgfCAg ICAzIHwgICAzIHwgICAgICAzIHwgICAgICA0MyB8ICAgICAgIDQzIHwgICAgICAgIDEwNDMgfCAg ICAgIDMwNDMgfCAgICAgMzA0MyB8ICA4NiB8ICAgODcgfCBCTkFBQUEgICB8IEpBQUFBQSAgIHwg SEhISHh4CisgICAgMTMxNCB8ICAgICAgMTAgfCAgIDAgfCAgICAyIHwgICA0IHwgICAgIDE0IHwg ICAgICAxNCB8ICAgICAgMzE0IHwgICAgICAgIDEzMTQgfCAgICAgIDEzMTQgfCAgICAgMTMxNCB8 ICAyOCB8ICAgMjkgfCBPWUFBQUEgICB8IEtBQUFBQSAgIHwgT09PT3h4CisgICAgMTUwNCB8ICAg ICAgMTEgfCAgIDAgfCAgICAwIHwgICA0IHwgICAgICA0IHwgICAgICAgNCB8ICAgICAgNTA0IHwg ICAgICAgIDE1MDQgfCAgICAgIDE1MDQgfCAgICAgMTUwNCB8ICAgOCB8ICAgIDkgfCBXRkFBQUEg ICB8IExBQUFBQSAgIHwgVlZWVnh4CisgICAgNTIyMiB8ICAgICAgMTIgfCAgIDAgfCAgICAyIHwg ICAyIHwgICAgICAyIHwgICAgICAyMiB8ICAgICAgMjIyIHwgICAgICAgIDEyMjIgfCAgICAgICAy MjIgfCAgICAgNTIyMiB8ICA0NCB8ICAgNDUgfCBXU0FBQUEgICB8IE1BQUFBQSAgIHwgQUFBQXh4 CisgICAgNjI0MyB8ICAgICAgMTMgfCAgIDEgfCAgICAzIHwgICAzIHwgICAgICAzIHwgICAgICA0 MyB8ICAgICAgMjQzIHwgICAgICAgICAyNDMgfCAgICAgIDEyNDMgfCAgICAgNjI0MyB8ICA4NiB8 ICAgODcgfCBER0FBQUEgICB8IE5BQUFBQSAgIHwgSEhISHh4CisgICAgNTQ3MSB8ICAgICAgMTQg fCAgIDEgfCAgICAzIHwgICAxIHwgICAgIDExIHwgICAgICA3MSB8ICAgICAgNDcxIHwgICAgICAg IDE0NzEgfCAgICAgICA0NzEgfCAgICAgNTQ3MSB8IDE0MiB8ICAxNDMgfCBMQ0FBQUEgICB8IE9B QUFBQSAgIHwgT09PT3h4CisgICAgNTAwNiB8ICAgICAgMTUgfCAgIDAgfCAgICAyIHwgICA2IHwg ICAgICA2IHwgICAgICAgNiB8ICAgICAgICA2IHwgICAgICAgIDEwMDYgfCAgICAgICAgIDYgfCAg ICAgNTAwNiB8ICAxMiB8ICAgMTMgfCBPS0FBQUEgICB8IFBBQUFBQSAgIHwgVlZWVnh4CisgICAg NTM4NyB8ICAgICAgMTYgfCAgIDEgfCAgICAzIHwgICA3IHwgICAgICA3IHwgICAgICA4NyB8ICAg ICAgMzg3IHwgICAgICAgIDEzODcgfCAgICAgICAzODcgfCAgICAgNTM4NyB8IDE3NCB8ICAxNzUg fCBGWkFBQUEgICB8IFFBQUFBQSAgIHwgQUFBQXh4CisgICAgNTc4NSB8ICAgICAgMTcgfCAgIDEg fCAgICAxIHwgICA1IHwgICAgICA1IHwgICAgICA4NSB8ICAgICAgNzg1IHwgICAgICAgIDE3ODUg fCAgICAgICA3ODUgfCAgICAgNTc4NSB8IDE3MCB8ICAxNzEgfCBOT0FBQUEgICB8IFJBQUFBQSAg IHwgSEhISHh4CisgICAgNjYyMSB8ICAgICAgMTggfCAgIDEgfCAgICAxIHwgICAxIHwgICAgICAx IHwgICAgICAyMSB8ICAgICAgNjIxIHwgICAgICAgICA2MjEgfCAgICAgIDE2MjEgfCAgICAgNjYy MSB8ICA0MiB8ICAgNDMgfCBSVUFBQUEgICB8IFNBQUFBQSAgIHwgT09PT3h4CisgICAgNjk2OSB8 ICAgICAgMTkgfCAgIDEgfCAgICAxIHwgICA5IHwgICAgICA5IHwgICAgICA2OSB8ICAgICAgOTY5 IHwgICAgICAgICA5NjkgfCAgICAgIDE5NjkgfCAgICAgNjk2OSB8IDEzOCB8ICAxMzkgfCBCSUFB QUEgICB8IFRBQUFBQSAgIHwgVlZWVnh4CisgICAgOTQ2MCB8ICAgICAgMjAgfCAgIDAgfCAgICAw IHwgICAwIHwgICAgICAwIHwgICAgICA2MCB8ICAgICAgNDYwIHwgICAgICAgIDE0NjAgfCAgICAg IDQ0NjAgfCAgICAgOTQ2MCB8IDEyMCB8ICAxMjEgfCBXWkFBQUEgICB8IFVBQUFBQSAgIHwgQUFB QXh4CisgICAgICA1OSB8ICAgICAgMjEgfCAgIDEgfCAgICAzIHwgICA5IHwgICAgIDE5IHwgICAg ICA1OSB8ICAgICAgIDU5IHwgICAgICAgICAgNTkgfCAgICAgICAgNTkgfCAgICAgICA1OSB8IDEx OCB8ICAxMTkgfCBIQ0FBQUEgICB8IFZBQUFBQSAgIHwgSEhISHh4CisgICAgODAyMCB8ICAgICAg MjIgfCAgIDAgfCAgICAwIHwgICAwIHwgICAgICAwIHwgICAgICAyMCB8ICAgICAgIDIwIHwgICAg ICAgICAgMjAgfCAgICAgIDMwMjAgfCAgICAgODAyMCB8ICA0MCB8ICAgNDEgfCBNV0FBQUEgICB8 IFdBQUFBQSAgIHwgT09PT3h4CisgICAgNzY5NSB8ICAgICAgMjMgfCAgIDEgfCAgICAzIHwgICA1 IHwgICAgIDE1IHwgICAgICA5NSB8ICAgICAgNjk1IHwgICAgICAgIDE2OTUgfCAgICAgIDI2OTUg fCAgICAgNzY5NSB8IDE5MCB8ICAxOTEgfCBaSkFBQUEgICB8IFhBQUFBQSAgIHwgVlZWVnh4Cisg ICAgMzQ0MiB8ICAgICAgMjQgfCAgIDAgfCAgICAyIHwgICAyIHwgICAgICAyIHwgICAgICA0MiB8 ICAgICAgNDQyIHwgICAgICAgIDE0NDIgfCAgICAgIDM0NDIgfCAgICAgMzQ0MiB8ICA4NCB8ICAg ODUgfCBLQ0FBQUEgICB8IFlBQUFBQSAgIHwgQUFBQXh4CisgICAgNTExOSB8ICAgICAgMjUgfCAg IDEgfCAgICAzIHwgICA5IHwgICAgIDE5IHwgICAgICAxOSB8ICAgICAgMTE5IHwgICAgICAgIDEx MTkgfCAgICAgICAxMTkgfCAgICAgNTExOSB8ICAzOCB8ICAgMzkgfCBYT0FBQUEgICB8IFpBQUFB QSAgIHwgSEhISHh4CisgICAgIDY0NiB8ICAgICAgMjYgfCAgIDAgfCAgICAyIHwgICA2IHwgICAg ICA2IHwgICAgICA0NiB8ICAgICAgNjQ2IHwgICAgICAgICA2NDYgfCAgICAgICA2NDYgfCAgICAg IDY0NiB8ICA5MiB8ICAgOTMgfCBXWUFBQUEgICB8IEFCQUFBQSAgIHwgT09PT3h4CisgICAgOTYw NSB8ICAgICAgMjcgfCAgIDEgfCAgICAxIHwgICA1IHwgICAgICA1IHwgICAgICAgNSB8ICAgICAg NjA1IHwgICAgICAgIDE2MDUgfCAgICAgIDQ2MDUgfCAgICAgOTYwNSB8ICAxMCB8ICAgMTEgfCBM RkFBQUEgICB8IEJCQUFBQSAgIHwgVlZWVnh4CisgICAgIDI2MyB8ICAgICAgMjggfCAgIDEgfCAg ICAzIHwgICAzIHwgICAgICAzIHwgICAgICA2MyB8ICAgICAgMjYzIHwgICAgICAgICAyNjMgfCAg ICAgICAyNjMgfCAgICAgIDI2MyB8IDEyNiB8ICAxMjcgfCBES0FBQUEgICB8IENCQUFBQSAgIHwg QUFBQXh4CisgICAgMzI2OSB8ICAgICAgMjkgfCAgIDEgfCAgICAxIHwgICA5IHwgICAgICA5IHwg ICAgICA2OSB8ICAgICAgMjY5IHwgICAgICAgIDEyNjkgfCAgICAgIDMyNjkgfCAgICAgMzI2OSB8 IDEzOCB8ICAxMzkgfCBUVkFBQUEgICB8IERCQUFBQSAgIHwgSEhISHh4CisoMjQgcm93cykKKwor Q0xPU0UgZm9vNTsKK3Jlc2V0IGN1cnNvcl9mZXRjaF9saW1pdDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BvcnRhbHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcG9ydGFs cy5zcWwKaW5kZXggZmM0Y2NjYjk2YzAuLjE3YzM4OWI3MDcwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wb3J0YWxzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wb3J0 YWxzLnNxbApAQCAtNjA1LDMgKzYwNSwzMSBAQCBkcm9wIHRhYmxlIHRvYXN0ZWRfZGF0YTsKIGZl dGNoIGFsbCBpbiBoZWxkX3BvcnRhbDsKIAogcmVzZXQgZGVmYXVsdF90b2FzdF9jb21wcmVzc2lv bjsKKworLS0gQ2hlY2sgbWVtb3J5IGxpbWl0IGZvciBmZXRjaGluZyBmcm9tIGN1cnNvcgorc2V0 IGN1cnNvcl9mZXRjaF9saW1pdCA9ICc1MTJCJzsKKworQkVHSU47CitERUNMQVJFIGZvbzEgU0NS T0xMIENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSB0ZW5rMSBPUkRFUiBCWSB1bmlxdWUyOworREVD TEFSRSBmb28yIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gdGVuazI7CitERUNMQVJF IGZvbzMgU0NST0xMIENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSB0ZW5rMSBPUkRFUiBCWSB1bmlx dWUyOworREVDTEFSRSBmb280IFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gdGVuazI7 CisKK0ZFVENIIDEgaW4gZm9vMTsKK0ZFVENIIDIgaW4gZm9vMjsKK0ZFVENIIDMgaW4gZm9vMzsK Ky0tIFdlbGwsIHdlJ3ZlIHJlYWNoZWQgdGhlIGxpbWl0CitGRVRDSCA0IGluIGZvbzQ7CistLSBG ZXRjaCB0aGUgbmV4dCBiYXRjaAorRkVUQ0ggNCBpbiBmb280OworRkVUQ0ggYmFja3dhcmQgNCBp biBmb280OworCistLSBDaGVjayBjdXJzb3Igd2l0aCBob2xkCitERUNMQVJFIGZvbzUgQ1VSU09S IFdJVEggSE9MRCBGT1IgU0VMRUNUICogRlJPTSB0ZW5rMiBMSU1JVCAzMDsKK2NvbW1pdDsKK0ZF VENIIDUgRlJPTSBmb281OworRkVUQ0ggNSBGUk9NIGZvbzU7CistLSBGRVRDSCBBTEwgaXMgbm90 IGxpbWl0ZWQgYnkgY3Vyc29yX2ZldGNoX2xpbWl0CitGRVRDSCBBTEwgRlJPTSBmb281OworQ0xP U0UgZm9vNTsKK3Jlc2V0IGN1cnNvcl9mZXRjaF9saW1pdDsKLS0gCjIuNDMuMAoK --=_eca7497322bb0c7d85c45e026234955a--