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.94.2) (envelope-from ) id 1s3obu-00Fs0a-FG for pgsql-hackers@arkaria.postgresql.org; Mon, 06 May 2024 03:01:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1s3obr-009rX4-T5 for pgsql-hackers@arkaria.postgresql.org; Mon, 06 May 2024 03:01:48 +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.94.2) (envelope-from ) id 1s3obr-009rWv-5x for pgsql-hackers@lists.postgresql.org; Mon, 06 May 2024 03:01:48 +0000 Received: from mail-ua1-x935.google.com ([2607:f8b0:4864:20::935]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1s3obn-001eUj-9r for pgsql-hackers@lists.postgresql.org; Mon, 06 May 2024 03:01:46 +0000 Received: by mail-ua1-x935.google.com with SMTP id a1e0cc1a2514c-7f7809ae952so102334241.0 for ; Sun, 05 May 2024 20:01:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714964501; x=1715569301; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=jBqPugeI0JE/mznacQtbPbi9PTRBI1BP9Vfx8TkEfmg=; b=Rw+ukR2J2KYGa5lLAMdUGV5/engV77qirnCuaeGzQNqibpQD31i9qeROi5u+GbFU9S 4POssoOqDAbj2O8ALVmDlQC8MNgaPi3jSyGvt+547918mU3sHPik64O3K0Jhf1D7WTPe uhoigHgu0JN473Ovzvm31rxDA5sxTvJUmhm3vvxrzA0SY4irsyAxUVNIa5FnjieDYjEh /os8GBE0wn4DPBxCEZd7EjxYM8ncbG4EnQEjjSKgPcWxldz/FAkJtYXJ7CNy++xx7tjH lmYL3a/Gqc366JsrPt5eboKHdetu3lS3ttosoYNzRPP8xK7jHq3iG45jd3CcY3YWiQhM f8Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714964501; x=1715569301; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=jBqPugeI0JE/mznacQtbPbi9PTRBI1BP9Vfx8TkEfmg=; b=Etc3hTL3pyRhagKW15W/Xjy29V4Ii2zWLwrsQQHqLhcozU0Fog4DsG5VaI83VMbkpE Mjup9Y7d0WVijPdCHJei6dhS3PMocdOvlFmSZkAzGVXDjXZDv1iCXU/qjU/zyhMs8rZF mfjWqQTuQ86ATYh95aleqVRXyjP150v4YivVG26oM5J8hWkCTLfpvIQPE6R+d8wBRKaS XPZuyj2Xor9MA5p207JDmpzs26dc0UNbig91GTmTb2sUmdzP/iuen8NN5/iJze6DMFrK 72raZT3MqgCydw9mHjKYV7EcQWDLUEiFhr2RcpNEbG6YI9G1UcBpJLgQ6I2JYhtgKnmq znbQ== X-Forwarded-Encrypted: i=1; AJvYcCVOIHM+x2OLILljyXRIJDPES5fJN+9N+C+foAJf5b8fUPFXfXbIpoK8gJdfBr7SICX1aj1A4FuNJ0eGmOqheLzB33UYzxf/e+jP455yXoYhmqld X-Gm-Message-State: AOJu0YxJ5L3TPBF4+VKKKXflSRcyd9y51SpKvty6PxZLCtagCxRasQyH EsKBygJWOJYo9rlqoKj2vSyeRKwwgQvtzn6ZGRL5HlJONoCIJGK09LXeKFw4PTt/7p84ysNY/as RpLFXWLLMbppzhCQ1UJEdSk/g6d8= X-Google-Smtp-Source: AGHT+IHvOCj8/YSdH+t1To/pzGK2z47NrId2GZ7Z/oxCgfPmY1esdOGDSbnzk7WcQmZcublLHOWiyhq3avNIPU+wU5o= X-Received: by 2002:a67:c498:0:b0:47c:18df:9f3d with SMTP id d24-20020a67c498000000b0047c18df9f3dmr10968173vsk.34.1714964501349; Sun, 05 May 2024 20:01:41 -0700 (PDT) MIME-Version: 1.0 References: <85dd3ad0-fa79-46e8-a08b-c426c76825f3@eisentraut.org> <49c07eac-18ec-4aff-929c-e81b87df1092@eisentraut.org> <1edb3b79-a4bc-43b1-80aa-2e090472fe32@eisentraut.org> <47550967-260b-4180-9791-b224859fe63e@illuminatedcomputing.com> <1b2ab118-82c1-4e79-a094-04dab382e2c4@illuminatedcomputing.com> <3775839b-3f0f-4c8a-ac03-a253222e6a4b@illuminatedcomputing.com> In-Reply-To: <3775839b-3f0f-4c8a-ac03-a253222e6a4b@illuminatedcomputing.com> From: jian he Date: Mon, 6 May 2024 11:01:30 +0800 Message-ID: Subject: Re: SQL:2011 application time To: Paul Jungwirth Cc: Robert Haas , Peter Eisentraut , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e7e6ff0617c049a5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e7e6ff0617c049a5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, May 1, 2024 at 12:39=E2=80=AFAM Paul Jungwirth wrote: > > On 4/30/24 09:24, Robert Haas wrote: > > Peter, could you have a look at > > http://postgr.es/m/47550967-260b-4180-9791-b224859fe63e@illuminatedcomp= uting.com > > and express an opinion about whether each of those proposals are (a) > > good or bad ideas and (b) whether they need to be fixed for the > > current release? > > Here are the same patches but rebased. I've added a fourth which is my pr= ogress on adding the CHECK > constraint. I don't really consider it finished though, because it has th= ese problems: > > - The CHECK constraint should be marked as an internal dependency of the = PK, so that you can't drop > it, and it gets dropped when you drop the PK. I don't see a good way to t= ie the two together though, > so I'd appreciate any advice there. They are separate AlterTableCmds, so = how do I get the > ObjectAddress of both constraints at the same time? I wanted to store the= PK's ObjectAddress on the > Constraint node, but since ObjectAddress isn't a Node it doesn't work. > hi. I hope I understand the problem correctly. my understanding is that we are trying to solve a corner case: create table t(a int4range, b int4range, primary key(a, b WITHOUT OVERLAPS)= ); insert into t values ('[1,2]','empty'), ('[1,2]','empty'); I think the entry point is ATAddCheckNNConstraint and index_create. in a chain of DDL commands, you cannot be sure which one (primary key constraint or check constraint) is being created first, you just want to make sure that after both constraints are created, then add a dependency between primary key and check constraint. so you need to validate at different functions (ATAddCheckNNConstraint, index_create) that these two constraints are indeed created, only after that we have a dependency linking these two constraints. I've attached a patch trying to solve this problem. the patch is not totally polished, but works as expected, and also has lots of comments. --000000000000e7e6ff0617c049a5 Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0001-add-a-special-check-constrint-for-PERIOD-primary-.patch" Content-Disposition: attachment; filename="v4-0001-add-a-special-check-constrint-for-PERIOD-primary-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lvudiema0 RnJvbSAyMDI4ZGUwMzg0YjgxYmI5YjJiZmY1M2ZkMzkxYjA4ZjU3YWJhMjQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgNiBNYXkgMjAyNCAxMDoxMjoyNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQg MS8xXSBhZGQgYSBzcGVjaWFsIGNoZWNrIGNvbnN0cmludCBmb3IgUEVSSU9EIHByaW1hcnkga2V5 CgpsYXN0IGNvbHVtbiBvZiBQRVJJT0QgcHJpbWFyeSBrZXkgY2Fubm90IGhhdmUgZW1wdHkgdmFs dWUsCm90aGVyd2lzZSBwcmltYXJ5IGtleSBtYXkgbG9zdCB1bmlxdWVuZXNzIHByb3BlcnR5LgoK Y29ybmVyIGNhc2UgZGVtbzoKY3JlYXRlIHRhYmxlIHQoYSBpbnQ0cmFuZ2UsIGIgaW50NHJhbmdl LCBwcmltYXJ5IGtleShhLCBiIFdJVEhPVVQgT1ZFUkxBUFMpKTsKaW5zZXJ0IGludG8gdCB2YWx1 ZXMgKCdbMSwyXScsJ2VtcHR5JyksICgnWzEsMl0nLCdlbXB0eScpOwoKdGhpcyBwYXRjaCBtYWtl cyBpdCBmYWlscyBieSBpbnRlcm5hbGx5IGFkZCBhIGNoZWNrIGNvbnN0cmFpbnQ6CiAgICBDSEVD SyAoTk9UIGlzZW1wdHkocGVyaW9kX2NvbHVtbikpCmFmdGVyIHRoYXQsIHRoZSB0YWJsZSBgdGAg d2lsbCBsb29rIGxpa2U6CgogQ29sdW1uIHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCBEZWZhdWx0Ci0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tCiBhICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8CiBi ICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8CkluZGV4ZXM6CiAgICAi dF9wa2V5IiBQUklNQVJZIEtFWSAoYSwgYiBXSVRIT1VUIE9WRVJMQVBTKQpDaGVjayBjb25zdHJh aW50czoKICAgICJiX25vdF9lbXB0eSIgQ0hFQ0sgKE5PVCBpc2VtcHR5KGIpKQoKdG8gZGlzdGlu Z3Vpc2ggdGhpcyBjb25zdHJhaW50IHdpdGggb3RoZXIgY2hlY2sgY29uc3RyYWludCwgd2UKbWFr ZSBpdCBjb25wZXJpb2QgYXMgdHJ1ZSBpbiBwZ19jb25zdHJhaW50IGNhdGFsb2cuCgp3ZSBhc2xv IGFkZCBhIGludGVybmFsIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgcHJpbWFyeSBrZXkgY29uc3Ry YWludAphbmQgdGhpcyBjaGVjayBjb25zdHJhaW50LgpzbyB5b3UgY2Fubm90IGRyb3AgdGhlIGNo ZWNrIGNvbnN0cmFpbnQgaXRzZWxmLAppZiB5b3UgZHJvcCB0aGUgcHJpbWFyeSBrZXkgY29uc3Ry YWludCwgdGhpcyBjaGVjayBjb25zdHJhaW50CndpbGwgYmUgZHJvcHBlZCBhdXRvbWF0aWNhbGx5 LgoKZ2VuZXJhbGx5IHdlIGFkZCBjaGVjayBjb25zdHJhaW50IHdpdGhpbiB0aGUgZnVuY3Rpb24g QVRBZGRDaGVja05OQ29uc3RyYWludCwKcHJpbWFyeSBrZXkgY29uc3RyYWludCB3aXRoaW4gdGhl IGZ1bmN0aW9uIGluZGV4X2NyZWF0ZS4KaW4gYSBjaGFpbiBvZiBEREwgY29tbWFuZCwgd2UgYXJl IG5vdCBzdXJlIHdoaWNoIG9uZSBpcyBiZQpmaXJzdCBjcmVhdGVkLCB0byBtYWtlIGl0IHNhZmUs IHdlIGRvIGNyb3NzIGNoZWNrIGF0IHRoZXNlIHR3bwpmdW5jdGlvbnMsIGFmdGVyIGJvdGggY2hl Y2sgY29uc3RyYWludCBhbmQgcHJpbWFyeSBrZXkgY29uc3RyYWludAphcmUgY3JlYXRlZCwgdGhl biB3ZSBhZGQgYSBpbnRlcm5hbCBkZXBlbmRlbmNpZXMgb24gaXQuCgpOLkIuIHdlIGFsc28gbmVl ZCB0byBoYXZlIHNwZWNpYWwgY2FyZSBmb3IgY2FzZQp3aGVyZSBjaGVjayBjb25zdHJhaW50IHdh cyByZWFkZGVkLCBlLmcuIEFMVEVSIFRZUEUuCmlmIEFMVEVSIFRZUEUgaXMgYWx0ZXJpbmcgdGhl IFBFUklPRCBjb2x1bW4gb2YgdGhlIHByaW1hcnkga2V5LAphbHRlciBjb2x1bW4gb2YgcHJpbWFy eSBrZXkgbWFrZXMgdGhlIGluZGV4IHJlY3JlYXRlLCBjaGVjayBjb25zdHJhaW50IHJlY3JlYXRl LApob3dldmVyLCBmb3JtZXIgaW50ZXJhbGx5IGFsc28gaW5jbHVkaW5nIGFkZCBhIGNoZWNrIGNv bnN0cmFpbnQuCnNvIHdlIG5lZWQgdG8gdGFrZSBjYXJlIG9mIG1lcmdpbmcgdHdvIGNoZWNrIGNv bnN0cmFpbnQuCgpOLkIuIHRoZSBjaGVjayBjb25zdHJhaW50IG5hbWUgaXMgaGFyZC13aXJlZCwg c28gaWYgeW91IGNyZWF0ZSB0aGUgY29uc3RyYWludAp3aXRoIHRoZSBzYW1lIG5hbWUsIFBFUklP RCBwcmltYXJ5IGtleSBjYW5ub3QgYmUgY3JlYXRlZC4KCk4uQi4gd2hhdCBhYm91dCBVTklRVUUg Y29uc3RyYWludD8KCk4uQi4gc2VlbXMgb2sgdG8gbm90IGNhcmUgYWJvdXQgRk9SRUlHTiBLRVkg cmVnYXJkaW5nIHRoaXMgY29ybmVyIGNhc2U/CgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tLzM3NzU4MzliLTNmMGYtNGM4YS1hYzAzLWEyNTMyMjJlNmE0YkBpbGx1bWluYXRlZGNvbXB1 dGluZy5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDMgLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAg IHwgICA1ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAgICAgICAgICAg fCAgMTAgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8 ICAyMiArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwg MTg4ICsrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAg ICAgICAgICB8ICA4OCArKysrKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oICAg ICAgICAgICAgICB8ICAgNCArCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBz Lm91dCAgICAgfCAyNTEgKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93 aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAxMjAgKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQs IDY2NCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvZ2lzdC5zZ21sIGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCBkY2Y5NDMzZi4u NjM4ZDkxMmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2dpc3Quc2dtbApAQCAtMTE4Niw5ICsxMTg2LDYgQEAgbXlfc29ydHN1cHBvcnQoUEdf RlVOQ1RJT05fQVJHUykKICAgICAgICBwcm92aWRlcyB0aGlzIGZ1bmN0aW9uIGFuZCBpdCByZXR1 cm5zIHJlc3VsdHMgZm9yCiAgICAgICAgPGxpdGVyYWw+UlRFcXVhbFN0cmF0ZWd5TnVtYmVyPC9s aXRlcmFsPiwgaXQgY2FuIGJlIHVzZWQgaW4gdGhlCiAgICAgICAgbm9uLTxsaXRlcmFsPldJVEhP VVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHBhcnQocykgb2YgYW4gaW5kZXggY29uc3RyYWludC4KLSAg ICAgICBJZiBpdCByZXR1cm5zIHJlc3VsdHMgZm9yIDxsaXRlcmFsPlJUT3ZlcmxhcFN0cmF0ZWd5 TnVtYmVyPC9saXRlcmFsPiwKLSAgICAgICB0aGUgb3BlcmF0b3IgY2xhc3MgY2FuIGJlIHVzZWQg aW4gdGhlIDxsaXRlcmFsPldJVEhPVVQKLSAgICAgICBPVkVSTEFQUzwvbGl0ZXJhbD4gcGFydCBv ZiBhbiBpbmRleCBjb25zdHJhaW50LgogICAgICAgPC9wYXJhPgogCiAgICAgICA8cGFyYT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4IDAyZjMxZDJkLi44MDIyZTBlMSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC05OTIsMTAgKzk5Miw3IEBAIFdJVEggKCBNT0RV TFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxh Y2VhYmxlPiwgUkVNCiAgICAgICA8bGl0ZXJhbD5VTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKTwvbGl0ZXJhbD4gYmVoYXZlcyBsaWtlCiAgICAgICA8bGl0ZXJhbD5FWENMVURF IFVTSU5HIEdJU1QgKGlkIFdJVEggPSwgdmFsaWRfYXQgV0lUSAogICAgICAgJmFtcDsmYW1wOyk8 L2xpdGVyYWw+LiAgVGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNvbHVt bgotICAgICAgbXVzdCBoYXZlIGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSB0eXBlLiAgKFRlY2huaWNh bGx5LCBhbnkgdHlwZSBpcyBhbGxvd2VkCi0gICAgICB3aG9zZSBkZWZhdWx0IEdpU1Qgb3BjbGFz cyBpbmNsdWRlcyBhbiBvdmVybGFwcyBvcGVyYXRvci4gIFNlZSB0aGUKLSAgICAgIDxsaXRlcmFs PnN0cmF0bnVtPC9saXRlcmFsPiBzdXBwb3J0IGZ1bmN0aW9uIHVuZGVyIDx4cmVmCi0gICAgICBs aW5rZW5kPSJnaXN0LWV4dGVuc2liaWxpdHkiLz4gZm9yIGRldGFpbHMuKSAgVGhlIG5vbi08bGl0 ZXJhbD5XSVRIT1VUCisgICAgICBtdXN0IGhhdmUgYSByYW5nZSBvciBtdWx0aXJhbmdlIHR5cGUu ICBUaGUgbm9uLTxsaXRlcmFsPldJVEhPVVQKICAgICAgIE9WRVJMQVBTPC9saXRlcmFsPiBjb2x1 bW5zIG9mIHRoZSBjb25zdHJhaW50IGNhbiBiZSBhbnkgdHlwZSB0aGF0IGNhbiBiZQogICAgICAg Y29tcGFyZWQgZm9yIGVxdWFsaXR5IGluIGEgR2lTVCBpbmRleC4gIEJ5IGRlZmF1bHQsIG9ubHkg cmFuZ2UgdHlwZXMgYXJlCiAgICAgICBzdXBwb3J0ZWQsIGJ1dCB5b3UgY2FuIHVzZSBvdGhlciB0 eXBlcyBieSBhZGRpbmcgdGhlIDx4cmVmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDEzNmNjNDJhLi4yMmU4 MThlMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgT2JqZWN0QWRk cmVzcyBBZGROZXdSZWxhdGlvblR5cGUoY29uc3QgY2hhciAqdHlwZU5hbWUsCiBzdGF0aWMgdm9p ZCBSZWxhdGlvblJlbW92ZUluaGVyaXRhbmNlKE9pZCByZWxpZCk7CiBzdGF0aWMgT2lkCVN0b3Jl UmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJ CQkJCQkgIGJvb2wgaXNfdmFsaWRhdGVkLCBib29sIGlzX2xvY2FsLCBpbnQgaW5oY291bnQsCi0J CQkJCQkgIGJvb2wgaXNfbm9faW5oZXJpdCwgYm9vbCBpc19pbnRlcm5hbCk7CisJCQkJCQkgIGJv b2wgaXNfbm9faW5oZXJpdCwgYm9vbCBpc19pbnRlcm5hbCwgYm9vbCB3aXRob3V0X292ZXJsYXBz KTsKIHN0YXRpYyB2b2lkIFN0b3JlQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLCBMaXN0ICpjb29r ZWRfY29uc3RyYWludHMsCiAJCQkJCQkJIGJvb2wgaXNfaW50ZXJuYWwpOwogc3RhdGljIGJvb2wg TWVyZ2VXaXRoRXhpc3RpbmdDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY2Nu YW1lLCBOb2RlICpleHByLApAQCAtMjA2NSw3ICsyMDY1LDcgQEAgU2V0QXR0ck1pc3NpbmcoT2lk IHJlbGlkLCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSkKIHN0YXRpYyBPaWQKIFN0b3JlUmVs Q2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkg IGJvb2wgaXNfdmFsaWRhdGVkLCBib29sIGlzX2xvY2FsLCBpbnQgaW5oY291bnQsCi0JCQkgIGJv b2wgaXNfbm9faW5oZXJpdCwgYm9vbCBpc19pbnRlcm5hbCkKKwkJCSAgYm9vbCBpc19ub19pbmhl cml0LCBib29sIGlzX2ludGVybmFsLCBib29sIHdpdGhvdXRfb3ZlcmxhcHMpCiB7CiAJY2hhcgkg ICAqY2NiaW47CiAJTGlzdAkgICAqdmFyTGlzdDsKQEAgLTIxNTUsNyArMjE1NSw3IEBAIFN0b3Jl UmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJ CQkJCQkJICBpc19sb2NhbCwgLyogY29uaXNsb2NhbCAqLwogCQkJCQkJCSAgaW5oY291bnQsIC8q IGNvbmluaGNvdW50ICovCiAJCQkJCQkJICBpc19ub19pbmhlcml0LAkvKiBjb25ub2luaGVyaXQg Ki8KLQkJCQkJCQkgIGZhbHNlLAkvKiBjb25wZXJpb2QgKi8KKwkJCQkJCQkgIHdpdGhvdXRfb3Zl cmxhcHMsCS8qIGNvbnBlcmlvZCAqLwogCQkJCQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRlcm5h bGx5IGNvbnN0cnVjdGVkPyAqLwogCiAJcGZyZWUoY2NiaW4pOwpAQCAtMjI1Miw3ICsyMjUyLDcg QEAgU3RvcmVDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIExpc3QgKmNvb2tlZF9jb25zdHJhaW50 cywgYm9vbCBpc19pbnRlcm5hbCkKIAkJCQkJU3RvcmVSZWxDaGVjayhyZWwsIGNvbi0+bmFtZSwg Y29uLT5leHByLAogCQkJCQkJCQkgICFjb24tPnNraXBfdmFsaWRhdGlvbiwgY29uLT5pc19sb2Nh bCwKIAkJCQkJCQkJICBjb24tPmluaGNvdW50LCBjb24tPmlzX25vX2luaGVyaXQsCi0JCQkJCQkJ CSAgaXNfaW50ZXJuYWwpOworCQkJCQkJCQkgIGlzX2ludGVybmFsLCBmYWxzZSk7CiAJCQkJbnVt Y2hlY2tzKys7CiAJCQkJYnJlYWs7CiAKQEAgLTI1MTgsNyArMjUxOCw3IEBAIEFkZFJlbGF0aW9u TmV3Q29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogCQkJICovCiAJCQljb25zdHJPaWQgPQogCQkJ CVN0b3JlUmVsQ2hlY2socmVsLCBjY25hbWUsIGV4cHIsIGNkZWYtPmluaXRpYWxseV92YWxpZCwg aXNfbG9jYWwsCi0JCQkJCQkJICBpc19sb2NhbCA/IDAgOiAxLCBjZGVmLT5pc19ub19pbmhlcml0 LCBpc19pbnRlcm5hbCk7CisJCQkJCQkJICBpc19sb2NhbCA/IDAgOiAxLCBjZGVmLT5pc19ub19p bmhlcml0LCBpc19pbnRlcm5hbCwgY2RlZi0+d2l0aG91dF9vdmVybGFwcyk7CiAKIAkJCW51bWNo ZWNrcysrOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNWE4NTY4YzUuLjJlYzc4Nzc3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleC5jCkBAIC0xMjI0LDYgKzEyMjQsMjggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkgKi8KIAlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCisJaWYgKGlz cHJpbWFyeSkKKwl7CisJCU9iamVjdEFkZHJlc3MgcGtfcGVyaW9kX2FkZHJlc3MgPSBJbnZhbGlk T2JqZWN0QWRkcmVzczsKKwkJT2JqZWN0QWRkcmVzcyBjaGVja19wZXJpb2RfYWRkcmVzcyA9IElu dmFsaWRPYmplY3RBZGRyZXNzOworCQlPaWQJY2hlY2tfY29ucGVyaW9kX29pZCA9IEludmFsaWRP aWQ7CisJCU9pZAlwa19jb25wZXJpb2Rfb2lkID0gSW52YWxpZE9pZDsKKworCQlpZiAodmFsaWRh dGVfcGVyaW9kX2NoZWNrX2NvbnN0cihoZWFwUmVsYXRpb24sICZjaGVja19jb25wZXJpb2Rfb2lk LCAmcGtfY29ucGVyaW9kX29pZCkpCisJCXsKKwkJCUFzc2VydChPaWRJc1ZhbGlkKGNoZWNrX2Nv bnBlcmlvZF9vaWQpKTsKKwkJCUFzc2VydChPaWRJc1ZhbGlkKHBrX2NvbnBlcmlvZF9vaWQpKTsK KwkJCU9iamVjdEFkZHJlc3NTZXQoY2hlY2tfcGVyaW9kX2FkZHJlc3MsIENvbnN0cmFpbnRSZWxh dGlvbklkLCBjaGVja19jb25wZXJpb2Rfb2lkKTsKKwkJCU9iamVjdEFkZHJlc3NTZXQocGtfcGVy aW9kX2FkZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBwa19jb25wZXJpb2Rfb2lkKTsKKwkJ CS8qCisJCQkqIFJlZ2lzdGVyIHRoaXMgc3BlY2lhbCBjaGVjayBjb25zdHJhaW50IGFzIGludGVy bmFsbHkgZGVwZW5kZW50IG9uIHRoZQorCQkJKiBwcmltYXJ5IGtleSBjb25zdHJhaW50LgorCQkJ KiBOb3RlIHRoYXQgd2UgYWxzbyBoYXZlIGRpcmVjdCAoKSBkZXBlbmRlbmN5IGZyb20gdGhlCisJ CQkqIHNwZWNpYWwgY2hlY2sgY29uc3RyYWludCB0byB0aGUgdGFibGUuCisJCQkqLworCQkJcmVj b3JkRGVwZW5kZW5jeU9uKCZjaGVja19wZXJpb2RfYWRkcmVzcywgJnBrX3BlcmlvZF9hZGRyZXNz LCBERVBFTkRFTkNZX0lOVEVSTkFMKTsKKwkJfQorCX0KIAkvKgogCSAqIEluIGJvb3RzdHJhcCBt b2RlLCB3ZSBoYXZlIHRvIGZpbGwgaW4gdGhlIGluZGV4IHN0cmF0ZWd5IHN0cnVjdHVyZSB3aXRo CiAJICogaW5mb3JtYXRpb24gZnJvbSB0aGUgY2F0YWxvZ3MuICBJZiB3ZSBhcmVuJ3QgYm9vdHN0 cmFwcGluZywgdGhlbiB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMzMwOTMzMmYu LjE0YmYwYjUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtOTcyNCw2ICs5NzI0LDEw NSBAQCBDaG9vc2VGb3JlaWduS2V5Q29uc3RyYWludE5hbWVBZGRpdGlvbihMaXN0ICpjb2xuYW1l cykKIAlyZXR1cm4gcHN0cmR1cChidWYpOwogfQogCisvKgorICogZm9yIFBFUklPRCBQUklNQVJZ IEtFWSwgd2UgbmVlZCBvdXIgbGFzdCBrZXkgY29sdW1uIGJlIGEgcmFuZ2UgZGF0YSB0eXBlCisg KiAgYWxzbyBjYW5ub3QgYmUgYXMgZW1wdHkgcmFuZ2UsIHNpbmNlIGVtcHR5IHJhbmdlIGl0c2Vs ZiBub3Qgb3ZlcmxhcHMsCisgKiAgc28gaXQgY2FuIGhhdmUgYSBkdXBsaWNhdGVkIGVudHJ5IGZv ciB0aGUgUEVSSU9EIHByaW1hcnkga2V5LgorICogIFRvIGRlYWwgd2l0aCBpdCwgd2UgYWRkIGEg Y2hlY2sgY29uc3RyYWludCB0byBlbmZvcmNlIHRoZSBsYXN0IFBFUklPRCBjb2x1bW4KKyAqICBj YW5ub3QgaGF2ZSBlbXB0eSByYW5nZSB2YWx1ZSwgd2UgYWxzbyBtYWtlIGFuIGludGVybmFsIGRl cGVuZGVuY3kKKyAqICBiZXR3ZWVuIHByaW1hcnkga2V5IGNvbnN0cmFpbnQgYW5kIGNoZWNrIGNv bnN0cmFpbnQuCisgKiAgV2l0aCB0aGlzIGRlcGVuZGVuY3ksIHRoZSBQRVJJT0QgcHJpbWFyeSBr ZXkgY29uc3RyYWludCBkcm9wcywKKyAqICB0aGlzIHNwZWNpYWwgY2hlY2sgY29uc3RyYWludCB3 aWxsIGRyb3AgYXV0b21hdGljYWxseSwgYnV0IHdlIGNhbm5vdCBkcm9wIGl0c2VsZi4KKyAqCisg KiAgd2UgYWxzbyBtYXJrIHRoaXMgc3BlY2lhbCBjaGVjayBjb25zdHJhaW50IGNvbnBlcmlvZCBh cyB0cnVlLgorICogIGluIGEgY2hhaW4gb2YgY29tbWFuZCwgd2UgYXJlIG5vdCBzdXJlIHByaW1h cnkga2V5IGNvbnN0cmFpbnQKKyAqICBjcmVhdGVkIGZpcnN0IG9yIGNoZWNrIGNvbnN0cmFpbnQs IHNvIHdlIGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRoaW4gaW5kZXhfY3JlYXRlCisgKiAgYW5kIEFU QWRkQ2hlY2tOTkNvbnN0cmFpbnQuCisgKgorICogIHJldHVybiB0cnVlIG1lYW5zIGJvdGggUEVS SU9EIFBSSU1BUlkgS0VZLCBhbmQgc3BlY2lhbCBjaGVjayBjb25zdHJhaW50IGFyZSBleGlzdGVk CisgKiAgaW4gb3VyIHBnX2NvbnN0cmFpbnQgY2F0YWxvZy4KKyovCitib29sCit2YWxpZGF0ZV9w ZXJpb2RfY2hlY2tfY29uc3RyKFJlbGF0aW9uIGhlYXByZWwsIE9pZCAqY2hlY2tfY29ucGVyaW9k X29pZCwgT2lkICpwa19jb25wZXJpb2Rfb2lkKQoreworCU9pZAkJCXBrX2NvbnN0cl9vaWQgPSBJ bnZhbGlkT2lkOworCU9pZAkJCWNoZWNrX2NvbnN0cl9vaWQgPSBJbnZhbGlkT2lkOworCVJlbGF0 aW9uCXBnX2NvbnN0cmFpbnQ7CisJSGVhcFR1cGxlCWNvblR1cDsKKwlTeXNTY2FuRGVzYyBzY2Fu OworCVNjYW5LZXlEYXRhIGtleTsKKwlBcnJheVR5cGUgICphcnI7CisJYm9vbAkJaXNOdWxsOwor CURhdHVtCQlhZGF0dW07CisJaW50CQkJbnVta2V5czsKKwlpbnQxNgkgICAqYXR0bnVtczsKKwlp bnQxNgkJcGtfcGVyaW9kX2F0dG51bSA9IC0xOworCWludDE2CQljaGVja19wZXJpb2RfYXR0bnVt ID0gLTE7CisKKwlwZ19jb25zdHJhaW50ID0gdGFibGVfb3BlbihDb25zdHJhaW50UmVsYXRpb25J ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgma2V5LAorCQkJCUFudW1fcGdfY29u c3RyYWludF9jb25yZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJ CQkJUmVsYXRpb25HZXRSZWxpZChoZWFwcmVsKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5z Y2FuKHBnX2NvbnN0cmFpbnQsIENvbnN0cmFpbnRSZWxpZFR5cGlkTmFtZUluZGV4SWQsCisJCQkJ CQkJdHJ1ZSwgTlVMTCwgMSwgJmtleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZChjb25U dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfY29uc3RyYWludCBj b24gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29uVHVwKTsKKwkJLyoKKwkJICog V2UncmUgbG9va2luZyBmb3IgYm90aCBDSEVDSyBjb25zdHJhaW50IGFuZCBwcmltYXJ5IGtleSBj b25zdHJhaW50CisJCSAqIHRoYXQgYXJlIG1hcmtlZCBhcyB2YWxpZGF0ZWQgYW5kIGNvbnBlcmlv ZCBpcyB0cnVlCisJCSovCisJCWlmIChjb24tPmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9QUklNQVJZ ICYmIGNvbi0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0NIRUNLKQorCQkJY29udGludWU7CisJCWlm ICghY29uLT5jb252YWxpZGF0ZWQpCisJCQljb250aW51ZTsKKwkJaWYgKCFjb24tPmNvbnBlcmlv ZCkKKwkJCWNvbnRpbnVlOworCisJCWFkYXR1bSA9IGhlYXBfZ2V0YXR0cihjb25UdXAsIEFudW1f cGdfY29uc3RyYWludF9jb25rZXksCisJCQkJCQkJUmVsYXRpb25HZXREZXNjcihwZ19jb25zdHJh aW50KSwgJmlzTnVsbCk7CisJCWlmIChpc051bGwpCisJCQllbG9nKEVSUk9SLCAibnVsbCBjb25r ZXkgZm9yIGNvbnN0cmFpbnQgJXUiLCBjb24tPm9pZCk7CisKKwkJYXJyID0gRGF0dW1HZXRBcnJh eVR5cGVQKGFkYXR1bSk7CisJCW51bWtleXMgPSBBUlJfRElNUyhhcnIpWzBdOworCQlpZiAoQVJS X05ESU0oYXJyKSAhPSAxIHx8CisJCQludW1rZXlzIDwgMCB8fAorCQkJQVJSX0hBU05VTEwoYXJy KSB8fAorCQkJQVJSX0VMRU1UWVBFKGFycikgIT0gSU5UMk9JRCkKKwkJCWVsb2coRVJST1IsICJj b25rZXkgaXMgbm90IGEgMS1EIHNtYWxsaW50IGFycmF5Iik7CisKKwkJYXR0bnVtcyA9IChpbnQx NiAqKSBBUlJfREFUQV9QVFIoYXJyKTsKKwkJaWYgKGNvbi0+Y29udHlwZSA9PSBDT05TVFJBSU5U X1BSSU1BUlkpCisJCXsKKwkJCXBrX3BlcmlvZF9hdHRudW0gPSBhdHRudW1zW251bWtleXMgLSAx XTsKKwkJCXBrX2NvbnN0cl9vaWQgPSBjb24tPm9pZDsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNo ZWNrX3BlcmlvZF9hdHRudW0gPSBhdHRudW1zW251bWtleXMgLSAxXTsKKwkJCWNoZWNrX2NvbnN0 cl9vaWQgPSBjb24tPm9pZDsKKwkJfQorCX0KKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRh YmxlX2Nsb3NlKHBnX2NvbnN0cmFpbnQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlpZiAoY2hlY2tf cGVyaW9kX2F0dG51bSAhPSAtMSAmJiBwa19wZXJpb2RfYXR0bnVtICE9IC0xKQorCXsKKwkJaWYg KGNoZWNrX3BlcmlvZF9hdHRudW0gIT0gcGtfcGVyaW9kX2F0dG51bSkKKwkJCWVsb2coRVJST1Is ICJQRVJJT0QgY2hlY2sgY29uc3RyYWludCBhc3NvY2lhdGVkIGF0dHJpYnV0ZSBudW1iZXIgc2hv dWxkIGJlIHNhbWUgYXMgUEVSSU9EIGNvbHVtbidzIik7CisKKwkJKmNoZWNrX2NvbnBlcmlvZF9v aWQgPSBjaGVja19jb25zdHJfb2lkOworCQkqcGtfY29ucGVyaW9kX29pZCA9IHBrX2NvbnN0cl9v aWQ7CisJCXJldHVybiB0cnVlOworCX0KKwllbHNlCisJCXJldHVybiBmYWxzZTsKK30KKwogLyoK ICAqIEFkZCBhIGNoZWNrIG9yIG5vdC1udWxsIGNvbnN0cmFpbnQgdG8gYSBzaW5nbGUgdGFibGUg YW5kIGl0cyBjaGlsZHJlbi4KICAqIFJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnN0cmFp bnQgYWRkZWQgdG8gdGhlIHBhcmVudCByZWxhdGlvbiwKQEAgLTk4MTYsNiArOTkxNSw5NSBAQCBB VEFkZENoZWNrTk5Db25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogCS8qIEFkdmFuY2UgY29tbWFuZCBjb3VudGVyIGluIGNhc2Ugc2Ft ZSB0YWJsZSBpcyB2aXNpdGVkIG11bHRpcGxlIHRpbWVzICovCiAJQ29tbWFuZENvdW50ZXJJbmNy ZW1lbnQoKTsKIAorCS8qCisJICogZGVhbCB3aXRoIEFMVEVSIFRZUEUgb3Igb3RoZXIgY29tbWFu ZCB3aGVyZSBpc19yZWFkZCBpcyB0cnVlLgorCSAqIHdoZW4gIGlzX3JlYWRkIChlZy4gQUxURVIg VFlQRSksIFBFUklPRCBwcmltYXJ5IGtleSB3aWxsIGJlIHJlY29uc3RydWN0ZWQsIGl0IGFsc28K KwkgKiBpbnN0cnVjdCB0byBhcHBlbmQgdGhlIGFkZCBub3RlbXB0eSBjaGVjayBzdWJjb21tYW5k LCBzZWUgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50LgorCSAqIGNoYW5nZSB0aGUgUEVSSU9EIGNv bHVtbiBhbHNvIHJlYWRkIHRoZSBjaGVjayBjb25zdHJhaW50LCBvYnZpb3VzbHkgdGhlIHJlYWRk ZWQgb25lCisJICogY29ucGVyaW9kIGF0dHJpYnV0ZSB3aWxsIHNldCB0byBmYWxzZS4KKwkgKiB0 aGVzZSB0d28gY2hlY2sgY29uc3RyYWludCB3aWxsIGJlIG1lcmdlZCBpbnRvIG9uZSwgc2VlIE1l cmdlV2l0aEV4aXN0aW5nQ29uc3RyYWludC4KKwkgKiBNZXJnZVdpdGhFeGlzdGluZ0NvbnN0cmFp bnQgZG9uJ3QgZGVhbCB3aXRoIGNvbnBlcmlvZCBpcyB0cnVlIENIRUNLIGNvbnN0cmFpbnQsIHNv CisJICogd2UgbmVlZCByZXNldCBpdCB0cnVlIG1hbnVhbGx5CisJKi8KKwlpZiAoY29uc3RyLT53 aXRob3V0X292ZXJsYXBzICYmIGlzX3JlYWRkICYmIGNvbnN0ci0+Y29udHlwZSA9PSBDT05TVFJf Q0hFQ0spCisJeworCQlSZWxhdGlvbglwZ19jb25zdHJhaW50OworCQlIZWFwVHVwbGUJY29uVHVw OworCQlTeXNTY2FuRGVzYyBzY2FuOworCQlTY2FuS2V5RGF0YSBza2V5WzNdOworCQlIZWFwVHVw bGUJY29weVR1cGxlOworCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29weV9jb247CisKKwkJcGdfY29u c3RyYWludCA9IHRhYmxlX29wZW4oQ29uc3RyYWludFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOworCQkvKgorCQkqIEZpbmQgYW5kIGNoZWNrIHRoZSB0YXJnZXQgY29uc3RyYWludAorCQkq LworCQlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQkJQW51bV9wZ19jb25zdHJhaW50X2NvbnJl bGlkLAorCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCU9iamVjdElk R2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSk7CisJCVNjYW5LZXlJbml0KCZza2V5WzFd LAorCQkJCQlBbnVtX3BnX2NvbnN0cmFpbnRfY29udHlwaWQsCisJCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwgRl9PSURFUSwKKwkJCQkJT2JqZWN0SWRHZXREYXR1bShJbnZhbGlkT2lkKSk7CisJ CVNjYW5LZXlJbml0KCZza2V5WzJdLAorCQkJCQlBbnVtX3BnX2NvbnN0cmFpbnRfY29ubmFtZSwK KwkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQkJQ1N0cmluZ0dldERh dHVtKGNvbnN0ci0+Y29ubmFtZSkpOworCisJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdf Y29uc3RyYWludCwgQ29uc3RyYWludFJlbGlkVHlwaWROYW1lSW5kZXhJZCwKKwkJCQkJCQkJCXRy dWUsIE5VTEwsIDEsIHNrZXkpOworCisJCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKGNvblR1cCA9 IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCQl7CisJCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29u ID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNUKGNvblR1cCk7CisKKwkJCWlmIChjb24t PmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9DSEVDSykKKwkJCQljb250aW51ZTsKKworCQkJaWYgKCFj b24tPmNvbnZhbGlkYXRlZCkKKwkJCQljb250aW51ZTsKKwkJCWlmIChjb24tPmNvbnBlcmlvZCkK KwkJCQlicmVhazsKKwkJCWNvcHlUdXBsZSA9IGhlYXBfY29weXR1cGxlKGNvblR1cCk7CisJCQlj b3B5X2NvbiA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb3B5VHVwbGUpOworCQkJ Y29weV9jb24tPmNvbnBlcmlvZCA9IHRydWU7CisKKwkJCS8qIFJlc2V0IGNvbnBlcmlvZCAqLwor CQkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NvbnN0cmFpbnQsICZjb3B5VHVwbGUtPnRfc2VsZiwg Y29weVR1cGxlKTsKKwkJCWhlYXBfZnJlZXR1cGxlKGNvcHlUdXBsZSk7CisKKwkJCUNvbW1hbmRD b3VudGVySW5jcmVtZW50KCk7CisJCX0KKwkJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJdGFi bGVfY2xvc2UocGdfY29uc3RyYWludCwgUm93RXhjbHVzaXZlTG9jayk7CisJfQorCisJLyogdmFs aWRhdGUgYW5kIHJlY29yZCB0aGUgaW50ZXJuYWwgZGVwZW5kZW5jeSBiZXR3ZWVuIFBFUklPRCBw cmltYXJ5IGtleSBhbmQgQ0hFQ0sgKi8KKwlpZiAoY29uc3RyLT53aXRob3V0X292ZXJsYXBzKQor CXsKKwkJT2JqZWN0QWRkcmVzcyBwa19wZXJpb2RfYWRkcmVzcyA9IEludmFsaWRPYmplY3RBZGRy ZXNzOworCQlPYmplY3RBZGRyZXNzIGNoZWNrX3BlcmlvZF9hZGRyZXNzID0gSW52YWxpZE9iamVj dEFkZHJlc3M7CisJCU9pZAljaGVja19jb25wZXJpb2Rfb2lkID0gSW52YWxpZE9pZDsKKwkJT2lk CXBrX2NvbnBlcmlvZF9vaWQgPSBJbnZhbGlkT2lkOworCisJCWlmICh2YWxpZGF0ZV9wZXJpb2Rf Y2hlY2tfY29uc3RyKHJlbCwgJmNoZWNrX2NvbnBlcmlvZF9vaWQsICZwa19jb25wZXJpb2Rfb2lk KSkKKwkJeworCQkJQXNzZXJ0KE9pZElzVmFsaWQoY2hlY2tfY29ucGVyaW9kX29pZCkpOworCQkJ QXNzZXJ0KE9pZElzVmFsaWQocGtfY29ucGVyaW9kX29pZCkpOworCisJCQlPYmplY3RBZGRyZXNz U2V0KHBrX3BlcmlvZF9hZGRyZXNzLENvbnN0cmFpbnRSZWxhdGlvbklkLCBwa19jb25wZXJpb2Rf b2lkKTsKKwkJCU9iamVjdEFkZHJlc3NTZXQoY2hlY2tfcGVyaW9kX2FkZHJlc3MsQ29uc3RyYWlu dFJlbGF0aW9uSWQsIGNoZWNrX2NvbnBlcmlvZF9vaWQpOworCQkJLyoKKwkJCSogUmVnaXN0ZXIg dGhpcyBzcGVjaWFsIGNoZWNrIGNvbnN0cmFpbnQgYXMgaW50ZXJuYWxseSBkZXBlbmRlbnQgb24g dGhlCisJCQkqIHByaW1hcnkga2V5IGNvbnN0cmFpbnQuCisJCQkqIE5vdGUgdGhhdCB3ZSBhbHNv IGhhdmUgZGlyZWN0IGRlcGVuZGVuY3kgZnJvbSB0aGUKKwkJCSogc3BlY2lhbCBjaGVjayBjb25z dHJhaW50IHRvIHRoZSB0YWJsZS4KKwkJCSovCisJCQlyZWNvcmREZXBlbmRlbmN5T24oJmNoZWNr X3BlcmlvZF9hZGRyZXNzLCAmcGtfcGVyaW9kX2FkZHJlc3MsIERFUEVOREVOQ1lfSU5URVJOQUwp OworCQl9CisJfQorCiAJLyoKIAkgKiBJZiB0aGUgY29uc3RyYWludCBnb3QgbWVyZ2VkIHdpdGgg YW4gZXhpc3RpbmcgY29uc3RyYWludCwgd2UncmUgZG9uZS4KIAkgKiBXZSBtdXN0bid0IHJlY3Vy c2UgdG8gY2hpbGQgdGFibGVzIGluIHRoaXMgY2FzZSwgYmVjYXVzZSB0aGV5J3ZlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCA5ZmI2ZmY4Ni4uZmY5OTYwNzIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfYW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfY29uc3RyYWludC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19v cGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgpAQCAtMjMw MSw2ICsyMzAyLDggQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50cyhDcmVhdGVTdG10Q29udGV4 dCAqY3h0KQogICoKICAqIEZvciBhIFBSSU1BUlkgS0VZIGNvbnN0cmFpbnQsIHdlIGFkZGl0aW9u YWxseSBmb3JjZSB0aGUgY29sdW1ucyB0byBiZQogICogbWFya2VkIGFzIG5vdC1udWxsLCB3aXRo b3V0IHByb2R1Y2luZyBhIG5vdC1udWxsIGNvbnN0cmFpbnQuCisgKiBJZiB0aGUgUFJJTUFSWSBL RVkgaGFzIFdJVEhPVVQgT1ZFUkxBUFMgd2UgYWxzbyBhZGQgYW4gaW50ZXJuYWwKKyAqIENIRUNL IGNvbnN0cmFpbnQgdG8gcHJldmVudCBlbXB0eSByYW5nZXMvbXVsdGlyYW5nZXMuCiAgKi8KIHN0 YXRpYyBJbmRleFN0bXQgKgogdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNv bnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCkBAIC0yNjgzLDYgKzI2ODYsNDcgQEAg dHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQpCiAJCQkJfQogCQkJfQogCisJCQkvKgorCQkJICogVGhlIFdJVEhPVVQg T1ZFUkxBUFMgcGFydCAoaWYgYW55KSBtdXN0IGJlCisJCQkgKiBhIHJhbmdlIG9yIG11bHRpcmFu Z2UgdHlwZS4KKwkJCSAqLworCQkJaWYgKGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMgJiYg bGMgPT0gbGlzdF9sYXN0X2NlbGwoY29uc3RyYWludC0+a2V5cykpCisJCQl7CisJCQkJT2lkIHR5 cGlkID0gSW52YWxpZE9pZDsKKworCQkJCWlmICghZm91bmQgJiYgY3h0LT5pc2FsdGVyKQorCQkJ CXsKKwkJCQkJLyoKKwkJCQkJICogTG9vayB1cCB0aGUgY29sdW1uIHR5cGUgb24gZXhpc3Rpbmcg dGFibGUuCisJCQkJCSAqIElmIHdlIGNhbid0IGZpbmQgaXQsIGxldCB0aGluZ3MgZmFpbCBpbiBE ZWZpbmVJbmRleC4KKwkJCQkJICovCisJCQkJCVJlbGF0aW9uIHJlbCA9IGN4dC0+cmVsOworCQkJ CQlmb3IgKGludCBpID0gMDsgaSA8IHJlbC0+cmRfYXR0LT5uYXR0czsgaSsrKQorCQkJCQl7CisJ CQkJCQljb25zdCBjaGFyICphdHRuYW1lOworCQkJCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9 IFR1cGxlRGVzY0F0dHIocmVsLT5yZF9hdHQsIGkpOworCisJCQkJCQlpZiAoYXR0ci0+YXR0aXNk cm9wcGVkKQorCQkJCQkJCWNvbnRpbnVlOworCisJCQkJCQlhdHRuYW1lID0gTmFtZVN0cihhdHRy LT5hdHRuYW1lKTsKKwkJCQkJCWlmIChzdHJjbXAoYXR0bmFtZSwga2V5KSA9PSAwKQorCQkJCQkJ eworCQkJCQkJCXR5cGlkID0gYXR0ci0+YXR0dHlwaWQ7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9 CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZQorCQkJCQl0eXBpZCA9IHR5cGVuYW1lVHlwZUlkKE5V TEwsIGNvbHVtbi0+dHlwZU5hbWUpOworCisJCQkJaWYgKCF0eXBlX2lzX3JhbmdlKHR5cGlkKSAm JiAhdHlwZV9pc19tdWx0aXJhbmdlKHR5cGlkKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCQkgZXJybXNnKCJj b2x1bW4gXCIlc1wiIGluIFdJVEhPVVQgT1ZFUkxBUFMgaXMgbm90IGEgcmFuZ2Ugb3IgbXVsdGly YW5nZSB0eXBlIiwga2V5KSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRl LCBjb25zdHJhaW50LT5sb2NhdGlvbikpKTsKKwkJCX0KKwogCQkJLyogT0ssIGFkZCBpdCB0byB0 aGUgaW5kZXggZGVmaW5pdGlvbiAqLwogCQkJaXBhcmFtID0gbWFrZU5vZGUoSW5kZXhFbGVtKTsK IAkJCWlwYXJhbS0+bmFtZSA9IHBzdHJkdXAoa2V5KTsKQEAgLTI3MTksOCArMjc2Myw1MCBAQCB0 cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCkKIAogCQkJLyogV0lUSE9VVCBPVkVSTEFQUyByZXF1aXJlcyBhIEdpU1Qg aW5kZXggKi8KIAkJCWluZGV4LT5hY2Nlc3NNZXRob2QgPSAiZ2lzdCI7CisKKwkJCWlmIChjb25z dHJhaW50LT5jb250eXBlID09IENPTlNUUl9QUklNQVJZKQorCQkJeworCQkJCS8qCisJCQkJICog SWYgdGhlIFBSSU1BUlkgS0VZIGhhcyBXSVRIT1VUIE9WRVJMQVBTLCB3ZSBtdXN0CisJCQkJICog cHJldmVudCBlbXB0aWVzIGFzIHdlbGwgYXMgTlVMTHMuIFNpbmNlCisJCQkJICogJ2VtcHR5JyAm JiAnZW1wdHknIGlzIGZhbHNlLCB5b3UgY291bGQgaW5zZXJ0IGEgdmFsdWUKKwkJCQkgKiBsaWtl ICg1LCAnZW1wdHknKSBtb3JlIHRoYW4gb25jZS4KKwkJCQkgKi8KKwkJCQljaGFyCQkJICAgKmtl eSA9IHN0clZhbChsbGFzdChjb25zdHJhaW50LT5rZXlzKSk7CisJCQkJQWx0ZXJUYWJsZUNtZAkg ICAqbm90ZW1wdHljbWQgPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQlDb25zdHJhaW50 CQkgICAqY2hlY2tjb24gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKKwkJCQlDb2x1bW5SZWYJCSAg ICpjb2w7CisJCQkJRnVuY0NhbGwJCSAgICpmdW5jOworCQkJCU5vZGUJCQkgICAqZXhwcjsKKwkJ CQljaGFyCQkJCSpjb25uYW1lOworCisJCQkJY29sID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKwkJ CQljb2wtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhrZXkpKTsKKwkJCQlmdW5jID0g bWFrZUZ1bmNDYWxsKFN5c3RlbUZ1bmNOYW1lKCJpc2VtcHR5IiksIGxpc3RfbWFrZTEoY29sKSwK KwkJCQkJCQkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMLCAtMSk7CisJCQkJZXhwciA9IChOb2RlICop IG1ha2VCb29sRXhwcihOT1RfRVhQUiwgbGlzdF9tYWtlMShmdW5jKSwgLTEpOworCQkJCWNvbm5h bWUgPSBwc3ByaW50ZigiJXNfbm90X2VtcHR5Iiwga2V5KTsKKworCQkJCWlmICghIGNoZWNrY29u LT5jb25uYW1lKQorCQkJCQljaGVja2Nvbi0+Y29ubmFtZSA9IGNvbm5hbWU7CisJCQkJY2hlY2tj b24tPmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7CisJCQkJY2hlY2tjb24tPnJhd19leHByID0gZXhw cjsKKwkJCQljaGVja2Nvbi0+Y29va2VkX2V4cHIgPSBOVUxMOworCQkJCWNoZWNrY29uLT5pc19u b19pbmhlcml0ID0gZmFsc2U7CisJCQkJY2hlY2tjb24tPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJ CQljaGVja2Nvbi0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJY2hlY2tjb24tPnNraXBfdmFs aWRhdGlvbiA9IGZhbHNlOworCQkJCWNoZWNrY29uLT5pbml0aWFsbHlfdmFsaWQgPSB0cnVlOwor CQkJCWNoZWNrY29uLT53aXRob3V0X292ZXJsYXBzID0gdHJ1ZTsKKwkJCQljaGVja2Nvbi0+bG9j YXRpb24gPSAtMTsKKworCQkJCW5vdGVtcHR5Y21kLT5zdWJ0eXBlID0gQVRfQWRkQ29uc3RyYWlu dDsKKwkJCQlub3RlbXB0eWNtZC0+ZGVmID0gKE5vZGUgKikgY2hlY2tjb247CisJCQkJbm90ZW1w dHljbWQtPm5hbWUgPSBwc3ByaW50ZigiJXNfbm90X2VtcHR5Iiwga2V5KTsKKworCQkJCW5vdG51 bGxjbWRzID0gbGNvbnMobm90ZW1wdHljbWQsIG5vdG51bGxjbWRzKTsKKwkJCX0KIAkJfQotCiAJ fQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKaW5kZXggODVjYmFkM2QuLjA4MWQyZmFj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaApAQCAtMjcsNiArMjcsMTAgQEAgc3RydWN0IEFs dGVyVGFibGVVdGlsaXR5Q29udGV4dDsJLyogYXZvaWQgaW5jbHVkaW5nIHRjb3AvdXRpbGl0eS5o IGhlcmUgKi8KIGV4dGVybiBPYmplY3RBZGRyZXNzIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQg KnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCQkJCQkJCQlPYmplY3RBZGRyZXNz ICp0eXBhZGRyZXNzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZyk7CiAKK2V4dGVybiBib29sIHZh bGlkYXRlX3BlcmlvZF9jaGVja19jb25zdHIoUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkJCQkJCQkg T2lkICpjaGVja19jb25wZXJpb2Rfb2lkLAorCQkJCQkJCQkJCSBPaWQgKnBrX2NvbnBlcmlvZF9v aWQpOworCiBleHRlcm4gVHVwbGVEZXNjIEJ1aWxkRGVzY0ZvclJlbGF0aW9uKGNvbnN0IExpc3Qg KmNvbHVtbnMpOwogCiBleHRlcm4gdm9pZCBSZW1vdmVSZWxhdGlvbnMoRHJvcFN0bXQgKmRyb3Ap OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKaW5k ZXggZjZmZThmMDkuLjBmOGI5ZGI0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv d2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTI3LDggKzI3LDkgQEAgQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZyAoCiAJdmFsaWRfYXQgVEVYVCwKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApOwotRVJST1I6ICBk YXRhIHR5cGUgdGV4dCBoYXMgbm8gZGVmYXVsdCBvcGVyYXRvciBjbGFzcyBmb3IgYWNjZXNzIG1l dGhvZCAiZ2lzdCIKLUhJTlQ6ICBZb3UgbXVzdCBzcGVjaWZ5IGFuIG9wZXJhdG9yIGNsYXNzIGZv ciB0aGUgaW5kZXggb3IgZGVmaW5lIGEgZGVmYXVsdCBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGRh dGEgdHlwZS4KK0VSUk9SOiAgY29sdW1uICJ2YWxpZF9hdCIgaW4gV0lUSE9VVCBPVkVSTEFQUyBp cyBub3QgYSByYW5nZSBvciBtdWx0aXJhbmdlIHR5cGUKK0xJTkUgNDogIENPTlNUUkFJTlQgdGVt cG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VLi4uCisgICAgICAg ICBeCiAtLSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgogQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZyAoCiAJLS0gU2luY2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9n aXN0IGhlcmUsCkBAIC00Niw2ICs0Nyw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAog IHZhbGlkX2F0IHwgZGF0ZXJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKIEluZGV4ZXM6 CiAgICAgInRlbXBvcmFsX3JuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInZhbGlkX2F0X25vdF9lbXB0eSIg Q0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0KSkKIAogU0VMRUNUIHBnX2dldF9jb25zdHJhaW50 ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5n X3BrJzsKICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgIApAQCAt NzYsNiArNzksOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCiAgdmFsaWRfYXQgfCBk YXRlcmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAogSW5kZXhlczoKICAgICAidGVtcG9y YWxfcm5nMl9wayIgUFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInZhbGlkX2F0X25vdF9lbXB0eSIgQ0hFQ0sg KE5PVCBpc2VtcHR5KHZhbGlkX2F0KSkKIAogU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7 CiAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAKQEAg LTExMyw3ICsxMTgsMjE1IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9tbHRybmcgKAogIHZhbGlk X2F0IHwgZGF0ZW11bHRpcmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAogSW5kZXhlczoK ICAgICAidGVtcG9yYWxfbWx0cm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidmFsaWRfYXRfbm90X2VtcHR5 IiBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKQogCistLWZvciBQRVJJT0QgcHJpbWFyeSBr ZXkgYW5kIGNoZWNrIGNvbnN0cmFpbnQgZGVwZW5kZW5jeS4KK2NyZWF0ZSBvciByZXBsYWNlIGZ1 bmN0aW9uIHZhbGlkYXRlX3BlcmlvZF9lbXB0eV9kZXBlbmRlbmN5KHJlZ2NsYXNzKQorcmV0dXJu cyB0YWJsZQorKAorZGVwZW5kZW50X2Nvbm5hbWUgbmFtZSxkZXBlbmRlbnRfY29uX3R5cGUgImNo YXIiLAorYm90aF9jb25fYXJlX3BlcmlvZCBib29sLHJlZmVyZW5jZWRfY29ubmFtZSBuYW1lLAor cmVmZXJlbmNlZF9jb25fdHlwZSAiY2hhciIsZGVwdHlwZSAiY2hhciIKKykKK2FzICQkCitiZWdp bgorCXJldHVybiBxdWVyeQorCQlzZWxlY3QKKwkJCXBjLmNvbm5hbWUgYXMgZGVwZW5kZW50X2Nv bm5hbWUsCisJCQlwYy5jb250eXBlIGFzIGRlcGVuZGVudF9jb25fdHlwZSwKKwkJCXBjLmNvbnBl cmlvZCA9IHBjMS5jb25wZXJpb2QgYXMgYm90aF9jb25fYXJlX3BlcmlvZCwKKwkJCXBjMS5jb25u YW1lIGFzIHJlZmVyZW5jZWRfY29ubmFtZSwKKwkJCXBjMS5jb250eXBlIGFzIHJlZmVyZW5jZWRf Y29uX3R5cGUsCisJCQlwZC5kZXB0eXBlCisJCWZyb20gCXBnX2RlcGVuZCBwZCBqb2luIHBnX2Nv bnN0cmFpbnQgcGMgb24gcGMub2lkID0gcGQub2JqaWQKKwkJam9pbglwZ19jb25zdHJhaW50IHBj MSBvbiBwYzEub2lkID0gcGQucmVmb2JqaWQKKwkJd2hlcmUJcGQucmVmY2xhc3NpZCA9IHBkLmNs YXNzaWQKKwkJYW5kIAlwZC5jbGFzc2lkID0gKHNlbGVjdCBvaWQKKwkJCWZyb20gcGdfY2xhc3MK KwkJCXdoZXJlIHJlbG5hbWUgPSAncGdfY29uc3RyYWludCcKKwkJCWFuZCByZWxuYW1lc3BhY2Ug PSAncGdfY2F0YWxvZyc6OnJlZ25hbWVzcGFjZSkKKwkJYW5kIHBjLmNvbnJlbGlkID0gcGMxLmNv bnJlbGlkCisJCWFuZCBwYy5jb25yZWxpZCA9ICQxCisJCTsKK2VuZDsgJCQgbGFuZ3VhZ2UgcGxw Z3NxbDsKKy0tcGsgd2l0aCBub3RfZW1wdHkgY2hlY2sgY29uc3RyYWludAorQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3QxIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IGRhdGVyYW5nZSk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF90MQorICBBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF90MV9waworICBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworc2VsZWN0ICogZnJvbSB2 YWxpZGF0ZV9wZXJpb2RfZW1wdHlfZGVwZW5kZW5jeSgndGVtcG9yYWxfdDEnOjpyZWdjbGFzcyk7 CisgZGVwZW5kZW50X2Nvbm5hbWUgIHwgZGVwZW5kZW50X2Nvbl90eXBlIHwgYm90aF9jb25fYXJl X3BlcmlvZCB8IHJlZmVyZW5jZWRfY29ubmFtZSB8IHJlZmVyZW5jZWRfY29uX3R5cGUgfCBkZXB0 eXBlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0KKyB2YWxpZF9hdF9ub3RfZW1wdHkgfCBjICAgICAgICAgICAgICAgICAgfCB0ICAg ICAgICAgICAgICAgICAgIHwgdGVtcG9yYWxfdDFfcGsgICAgIHwgcCAgICAgICAgICAgICAgICAg ICB8IGkKKygxIHJvdykKKworc2VsZWN0IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgZnJvbSBw Z19jb25zdHJhaW50Cit3aGVyZSBjb25yZWxpZCA9ICd0ZW1wb3JhbF90MSc6OnJlZ2NsYXNzCith bmQgY29udHlwZSA9ICdjJworYW5kIGNvbnBlcmlvZDsKKyAgICAgIHBnX2dldF9jb25zdHJhaW50 ZGVmICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ0hFQ0sgKChO T1QgaXNlbXB0eSh2YWxpZF9hdCkpKQorKDEgcm93KQorCistLXNob3VsZCBmYWlsLCBwcmltYXJ5 IGtleSBkZXBlbmQgb24gaXQKK2FsdGVyIHRhYmxlIHRlbXBvcmFsX3QxIGRyb3AgY29uc3RyYWlu dCB2YWxpZF9hdF9ub3RfZW1wdHk7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbnN0cmFpbnQgdmFs aWRfYXRfbm90X2VtcHR5IG9uIHRhYmxlIHRlbXBvcmFsX3QxIGJlY2F1c2UgY29uc3RyYWludCB0 ZW1wb3JhbF90MV9wayBvbiB0YWJsZSB0ZW1wb3JhbF90MSByZXF1aXJlcyBpdAorSElOVDogIFlv dSBjYW4gZHJvcCBjb25zdHJhaW50IHRlbXBvcmFsX3QxX3BrIG9uIHRhYmxlIHRlbXBvcmFsX3Qx IGluc3RlYWQuCistLW9rLCBhbHNvIHZhbGlkX2F0X25vdF9lbXB0eSBjaGVrIGNvbnN0cmFpbnQg d2lsbCBhbHNvIGJlIGRyb3BwZWQuCithbHRlciB0YWJsZSB0ZW1wb3JhbF90MSBkcm9wIGNvbnN0 cmFpbnQgdGVtcG9yYWxfdDFfcGs7CistLWV4cGVjdCB6ZXJvIHJvdworc2VsZWN0ICogZnJvbSB2 YWxpZGF0ZV9wZXJpb2RfZW1wdHlfZGVwZW5kZW5jeSgndGVtcG9yYWxfdDEnOjpyZWdjbGFzcyk7 CisgZGVwZW5kZW50X2Nvbm5hbWUgfCBkZXBlbmRlbnRfY29uX3R5cGUgfCBib3RoX2Nvbl9hcmVf cGVyaW9kIHwgcmVmZXJlbmNlZF9jb25uYW1lIHwgcmVmZXJlbmNlZF9jb25fdHlwZSB8IGRlcHR5 cGUgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX3QxOworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3QyIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IGRhdGVyYW5nZSk7CithbHRlciB0 YWJsZSB0ZW1wb3JhbF90MiBhZGQgY29uc3RyYWludCB2YWxpZF9hdF9ub3RfZW1wdHkgQ0hFQ0sg KE5PVCBpc2VtcHR5KHZhbGlkX2F0KSk7CistLSBmYWlsIGZvciBub3cKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX3QyCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfdDJfcGsKKwlQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRVJST1I6ICBjb25zdHJhaW50ICJ2YWxp ZF9hdF9ub3RfZW1wdHkiIGZvciByZWxhdGlvbiAidGVtcG9yYWxfdDIiIGFscmVhZHkgZXhpc3Rz CitEUk9QIFRBQkxFIHRlbXBvcmFsX3QyOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3QzICgKKwkJ aWQgaW50NHJhbmdlLAorCQl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJCUNPTlNUUkFJTlQgdGVtcG9y YWxfdDNfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykp OworLS1zaG91bGQgZmFpbC4KK2FsdGVyIHRhYmxlIHRlbXBvcmFsX3QzIGRyb3AgY29uc3RyYWlu dCB2YWxpZF9hdF9ub3RfZW1wdHk7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbnN0cmFpbnQgdmFs aWRfYXRfbm90X2VtcHR5IG9uIHRhYmxlIHRlbXBvcmFsX3QzIGJlY2F1c2UgY29uc3RyYWludCB0 ZW1wb3JhbF90M19ybmdfcGsgb24gdGFibGUgdGVtcG9yYWxfdDMgcmVxdWlyZXMgaXQKK0hJTlQ6 ICBZb3UgY2FuIGRyb3AgY29uc3RyYWludCB0ZW1wb3JhbF90M19ybmdfcGsgb24gdGFibGUgdGVt cG9yYWxfdDMgaW5zdGVhZC4KK2JlZ2luOworQUxURVIgVEFCTEUJdGVtcG9yYWxfdDMKKwlBTFRF UiBDT0xVTU4gdmFsaWRfYXQgVFlQRSBkYXRlcmFuZ2UgVVNJTkcgZGF0ZXJhbmdlKGxvd2VyKHZh bGlkX2F0KTo6ZGF0ZSwgdXBwZXIodmFsaWRfYXQpOjpkYXRlKTsKK05PVElDRTogIG1lcmdpbmcg Y29uc3RyYWludCAidmFsaWRfYXRfbm90X2VtcHR5IiB3aXRoIGluaGVyaXRlZCBkZWZpbml0aW9u CistLXNob3VsZCBiZSBmaW5lIHdpdGggZGF0YSB0eXBlIGNoYW5nZS4KK3NlbGVjdCAqIGZyb20g dmFsaWRhdGVfcGVyaW9kX2VtcHR5X2RlcGVuZGVuY3koJ3RlbXBvcmFsX3QzJzo6cmVnY2xhc3Mp OworIGRlcGVuZGVudF9jb25uYW1lICB8IGRlcGVuZGVudF9jb25fdHlwZSB8IGJvdGhfY29uX2Fy ZV9wZXJpb2QgfCByZWZlcmVuY2VkX2Nvbm5hbWUgfCByZWZlcmVuY2VkX2Nvbl90eXBlIHwgZGVw dHlwZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tCisgdmFsaWRfYXRfbm90X2VtcHR5IHwgYyAgICAgICAgICAgICAgICAgIHwgdCAg ICAgICAgICAgICAgICAgICB8IHRlbXBvcmFsX3QzX3JuZ19wayB8IHAgICAgICAgICAgICAgICAg ICAgfCBpCisoMSByb3cpCisKK2FsdGVyIHRhYmxlIHRlbXBvcmFsX3QzIGRyb3AgY29uc3RyYWlu dCB0ZW1wb3JhbF90M19ybmdfcGs7Cityb2xsYmFjazsKK2FsdGVyIHRhYmxlIHRlbXBvcmFsX3Qz IHJlbmFtZSB2YWxpZF9hdCB0byB2YWxpZF9hdDE7CitzZWxlY3QgKiBmcm9tIHZhbGlkYXRlX3Bl cmlvZF9lbXB0eV9kZXBlbmRlbmN5KCd0ZW1wb3JhbF90Myc6OnJlZ2NsYXNzKTsKKyBkZXBlbmRl bnRfY29ubmFtZSAgfCBkZXBlbmRlbnRfY29uX3R5cGUgfCBib3RoX2Nvbl9hcmVfcGVyaW9kIHwg cmVmZXJlbmNlZF9jb25uYW1lIHwgcmVmZXJlbmNlZF9jb25fdHlwZSB8IGRlcHR5cGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQor IHZhbGlkX2F0X25vdF9lbXB0eSB8IGMgICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAg ICAgICAgfCB0ZW1wb3JhbF90M19ybmdfcGsgfCBwICAgICAgICAgICAgICAgICAgIHwgaQorKDEg cm93KQorCitzZWxlY3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBmcm9tIHBnX2NvbnN0cmFp bnQKK3doZXJlIGNvbnJlbGlkID0gJ3RlbXBvcmFsX3QzJzo6cmVnY2xhc3MKK2FuZCBjb250eXBl ID0gJ2MnCithbmQgY29ucGVyaW9kOworICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENIRUNLICgoTk9UIGlzZW1w dHkodmFsaWRfYXQxKSkpCisoMSByb3cpCisKK2FsdGVyIHRhYmxlIHRlbXBvcmFsX3QzIGRyb3Ag Y29uc3RyYWludCB0ZW1wb3JhbF90M19ybmdfcGs7CitzZWxlY3QgKiBmcm9tIHZhbGlkYXRlX3Bl cmlvZF9lbXB0eV9kZXBlbmRlbmN5KCd0ZW1wb3JhbF90Myc6OnJlZ2NsYXNzKTsKKyBkZXBlbmRl bnRfY29ubmFtZSB8IGRlcGVuZGVudF9jb25fdHlwZSB8IGJvdGhfY29uX2FyZV9wZXJpb2QgfCBy ZWZlcmVuY2VkX2Nvbm5hbWUgfCByZWZlcmVuY2VkX2Nvbl90eXBlIHwgZGVwdHlwZSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKygw IHJvd3MpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfdDM7CistLSBBZGQgcmFuZ2UgY29sdW1uIGFu ZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Q0IChpZCBp bnQ0cmFuZ2UpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfdDQKKwlBREQgQ09MVU1OIHZhbGlkX2F0 IGRhdGVyYW5nZSwKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF90NF9waworCVBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitcZCB0ZW1wb3JhbF90NAorICAgICAg ICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3Q0IgorICBDb2x1bW4gIHwgICBUeXBlICAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdl IHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCB8IGRhdGVyYW5nZSB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF90NF9wayIgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorQ2hlY2sgY29uc3RyYWludHM6 CisgICAgInZhbGlkX2F0X25vdF9lbXB0eSIgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0KSkK Kworc2VsZWN0ICogZnJvbSB2YWxpZGF0ZV9wZXJpb2RfZW1wdHlfZGVwZW5kZW5jeSgndGVtcG9y YWxfdDQnOjpyZWdjbGFzcyk7CisgZGVwZW5kZW50X2Nvbm5hbWUgIHwgZGVwZW5kZW50X2Nvbl90 eXBlIHwgYm90aF9jb25fYXJlX3BlcmlvZCB8IHJlZmVyZW5jZWRfY29ubmFtZSB8IHJlZmVyZW5j ZWRfY29uX3R5cGUgfCBkZXB0eXBlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyB2YWxpZF9hdF9ub3RfZW1wdHkgfCBjICAgICAg ICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgICAgIHwgdGVtcG9yYWxfdDRfcGsgICAgIHwg cCAgICAgICAgICAgICAgICAgICB8IGkKKygxIHJvdykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF90 NDsKKy0tIHRlbXBvcmFsIHBhcnRpdGlvbiB0YWJsZSB3aXRoIGNoZWNrIGNvbnN0cmFpbnQKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9wICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJh bmdlLAorCW5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcCBGT1IgVkFM VUVTIElOICgnWzEsMiknLCAnWzIsMyknKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wMiBQQVJU SVRJT04gT0YgdGVtcG9yYWxfcCBGT1IgVkFMVUVTIElOICgnWzMsNCknLCAnWzQsNSknKTsKK1xk KyB0ZW1wb3JhbF9wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRh YmxlICJwdWJsaWMudGVtcG9yYWxfcCIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGlkICAgICAg IHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgZXh0ZW5kZWQg fCAgICAgICAgICAgICAgfCAKKyB2YWxpZF9hdCB8IGRhdGVyYW5nZSB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgbmFtZSAgICAg fCB0ZXh0ICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBleHRlbmRlZCB8 ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogTElTVCAoaWQpCitJbmRleGVzOgorICAg ICJ0ZW1wb3JhbF9wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInZhbGlkX2F0X25vdF9lbXB0eSIgQ0hFQ0sgKE5P VCBpc2VtcHR5KHZhbGlkX2F0KSkKK1BhcnRpdGlvbnM6IHRlbXBvcmFsX3AxIEZPUiBWQUxVRVMg SU4gKCdbMSwyKScsICdbMiwzKScpLAorICAgICAgICAgICAgdGVtcG9yYWxfcDIgRk9SIFZBTFVF UyBJTiAoJ1szLDQpJywgJ1s0LDUpJykKKworXGQgdGVtcG9yYWxfcDEKKyAgICAgICAgICAgICAg VGFibGUgInB1YmxpYy50ZW1wb3JhbF9wMSIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENvbGxh dGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICB8IGludDRyYW5nZSB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCBkYXRlcmFuZ2UgfCAgICAgICAgICAgfCBu b3QgbnVsbCB8IAorIG5hbWUgICAgIHwgdGV4dCAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAKK1BhcnRpdGlvbiBvZjogdGVtcG9yYWxfcCBGT1IgVkFMVUVTIElOICgnWzEsMiknLCAnWzIs MyknKQorSW5kZXhlczoKKyAgICAidGVtcG9yYWxfcDFfcGtleSIgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInZhbGlk X2F0X25vdF9lbXB0eSIgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0KSkKKworYWx0ZXIgdGFi bGUgdGVtcG9yYWxfcDEgZHJvcCBjb25zdHJhaW50IHZhbGlkX2F0X25vdF9lbXB0eTsKK0VSUk9S OiAgY2Fubm90IGRyb3AgaW5oZXJpdGVkIGNvbnN0cmFpbnQgInZhbGlkX2F0X25vdF9lbXB0eSIg b2YgcmVsYXRpb24gInRlbXBvcmFsX3AxIgorXGQgdGVtcG9yYWxfcDIKKyAgICAgICAgICAgICAg VGFibGUgInB1YmxpYy50ZW1wb3JhbF9wMiIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENvbGxh dGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICB8IGludDRyYW5nZSB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCBkYXRlcmFuZ2UgfCAgICAgICAgICAgfCBu b3QgbnVsbCB8IAorIG5hbWUgICAgIHwgdGV4dCAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAKK1BhcnRpdGlvbiBvZjogdGVtcG9yYWxfcCBGT1IgVkFMVUVTIElOICgnWzMsNCknLCAnWzQs NSknKQorSW5kZXhlczoKKyAgICAidGVtcG9yYWxfcDJfcGtleSIgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInZhbGlk X2F0X25vdF9lbXB0eSIgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0KSkKKworYWx0ZXIgdGFi bGUgdGVtcG9yYWxfcDIgZHJvcCBjb25zdHJhaW50IHZhbGlkX2F0X25vdF9lbXB0eTsKK0VSUk9S OiAgY2Fubm90IGRyb3AgaW5oZXJpdGVkIGNvbnN0cmFpbnQgInZhbGlkX2F0X25vdF9lbXB0eSIg b2YgcmVsYXRpb24gInRlbXBvcmFsX3AyIgorYWx0ZXIgdGFibGUgdGVtcG9yYWxfcCBkcm9wIGNv bnN0cmFpbnQgdGVtcG9yYWxfcGs7CitcZCsgdGVtcG9yYWxfcAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicHVibGljLnRlbXBvcmFsX3AiCisgIENvbHVt biAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdl ICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyBpZCAgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgdmFsaWRfYXQgfCBk YXRlcmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBleHRlbmRlZCB8ICAg ICAgICAgICAgICB8IAorIG5hbWUgICAgIHwgdGV4dCAgICAgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6 IExJU1QgKGlkKQorUGFydGl0aW9uczogdGVtcG9yYWxfcDEgRk9SIFZBTFVFUyBJTiAoJ1sxLDIp JywgJ1syLDMpJyksCisgICAgICAgICAgICB0ZW1wb3JhbF9wMiBGT1IgVkFMVUVTIElOICgnWzMs NCknLCAnWzQsNSknKQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX3A7CitEUk9QIEZVTkNUSU9OIHZh bGlkYXRlX3BlcmlvZF9lbXB0eV9kZXBlbmRlbmN5OwogLS0gUEsgd2l0aCB0d28gY29sdW1ucyBw bHVzIGEgbXVsdGlyYW5nZToKIC0tIFdlIGRvbid0IGRyb3AgdGhpcyB0YWJsZSBiZWNhdXNlIHRl c3RzIGJlbG93IGFsc28gbmVlZCBtdWx0aXBsZSBzY2FsYXIgY29sdW1ucy4KIENSRUFURSBUQUJM RSB0ZW1wb3JhbF9tbHRybmcyICgKQEAgLTEzMSw2ICszNDQsOCBAQCBDUkVBVEUgVEFCTEUgdGVt cG9yYWxfbWx0cm5nMiAoCiAgdmFsaWRfYXQgfCBkYXRlbXVsdGlyYW5nZSB8ICAgICAgICAgICB8 IG5vdCBudWxsIHwgCiBJbmRleGVzOgogICAgICJ0ZW1wb3JhbF9tbHRybmcyX3BrIiBQUklNQVJZ IEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitDaGVjayBjb25zdHJh aW50czoKKyAgICAidmFsaWRfYXRfbm90X2VtcHR5IiBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRf YXQpKQogCiBTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFp bnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9tbHRybmcyX3BrJzsKICAgICAgICAgICAgICAg IHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgIApAQCAtMTY0LDggKzM3OSw5IEBA IENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKIAl2YWxpZF9hdCBURVhULAogCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQogKTsKLUVSUk9SOiAgZGF0YSB0eXBlIHRleHQgaGFzIG5vIGRlZmF1bHQgb3BlcmF0b3IgY2xh c3MgZm9yIGFjY2VzcyBtZXRob2QgImdpc3QiCi1ISU5UOiAgWW91IG11c3Qgc3BlY2lmeSBhbiBv cGVyYXRvciBjbGFzcyBmb3IgdGhlIGluZGV4IG9yIGRlZmluZSBhIGRlZmF1bHQgb3BlcmF0b3Ig Y2xhc3MgZm9yIHRoZSBkYXRhIHR5cGUuCitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGluIFdJ VEhPVVQgT1ZFUkxBUFMgaXMgbm90IGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSB0eXBlCitMSU5FIDQ6 ICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVi4uLgorICAgICAgICAgXgogLS0gVU5JUVVFIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFu Z2U6CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCiAJaWQgaW50NHJhbmdlLApAQCAtMzcy LDYgKzU4OCw3IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAogQUxURVIgVEFCTEUgdGVtcG9y YWwzIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBEUk9QIE5PVCBOVUxMOwogRVJST1I6ICBjb2x1bW4g InZhbGlkX2F0IiBpcyBpbiBhIHByaW1hcnkga2V5CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxU RVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpyYW5nZShsb3dlcih2 YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitOT1RJQ0U6ICBtZXJnaW5nIGNvbnN0cmFpbnQg InZhbGlkX2F0X25vdF9lbXB0eSIgd2l0aCBpbmhlcml0ZWQgZGVmaW5pdGlvbgogQUxURVIgVEFC TEUgdGVtcG9yYWwzIFJFTkFNRSBDT0xVTU4gdmFsaWRfYXQgVE8gdmFsaWRfdGhydTsKIEFMVEVS IFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF90aHJ1OwogRFJPUCBUQUJMRSB0ZW1w b3JhbDM7CkBAIC02MjYsNiArODQzLDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcy cm5nICgKICBwYXJlbnRfaWQyIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK IEluZGV4ZXM6CiAgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIiBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidmFs aWRfYXRfbm90X2VtcHR5IiBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKQogRm9yZWlnbi1r ZXkgY29uc3RyYWludHM6CiAgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrIiBGT1JFSUdOIEtF WSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZzIoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCkKIApAQCAtNjY1LDYgKzg4NCw4 IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCiAgcGFyZW50X2lkMiB8IGludDRy YW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCiBJbmRleGVzOgogICAgICJ0ZW1wb3JhbF9m azJfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInZhbGlkX2F0X25vdF9lbXB0eSIgQ0hFQ0sgKE5P VCBpc2VtcHR5KHZhbGlkX2F0KSkKIEZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzOgogICAgICJ0ZW1w b3JhbF9mazJfcm5nMnJuZ19mayIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIs IFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyKGlkMSwgaWQyLCBQRVJJ T0QgdmFsaWRfYXQpCiAKQEAgLTY3Miw2ICs4OTMsNyBAQCBGb3JlaWduLWtleSBjb25zdHJhaW50 czoKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maywKIAlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3Jhbmdl IFVTSU5HIHRzcmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworTk9USUNF OiAgbWVyZ2luZyBjb25zdHJhaW50ICJ2YWxpZF9hdF9ub3RfZW1wdHkiIHdpdGggaW5oZXJpdGVk IGRlZmluaXRpb24KIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCiAJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQpAQCAtNjgwLDYgKzkwMiw3IEBAIEVSUk9SOiAgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgY2Fubm90IGJlIGltcGxlbWVudGVkCiBE RVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNv bXBhdGlibGUgdHlwZXM6IHRzcmFuZ2UgYW5kIGRhdGVyYW5nZS4KIEFMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKIAlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSBkYXRlcmFuZ2UgVVNJ TkcgZGF0ZXJhbmdlKGxvd2VyKHZhbGlkX2F0KTo6ZGF0ZSwgdXBwZXIodmFsaWRfYXQpOjpkYXRl KTsKK05PVElDRTogIG1lcmdpbmcgY29uc3RyYWludCAidmFsaWRfYXRfbm90X2VtcHR5IiB3aXRo IGluaGVyaXRlZCBkZWZpbml0aW9uCiAtLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVu Y2VkIHRhYmxlOgogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKQEAgLTEwOTYsNiArMTMxOSw4IEBAIENSRUFURSBU QUJMRSB0ZW1wb3JhbF9mazJfbWx0cm5nMm1sdHJuZyAoCiAgcGFyZW50X2lkMiB8IGludDRyYW5n ZSAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKIEluZGV4ZXM6CiAgICAgInRlbXBvcmFs X2ZrMl9tbHRybmcybWx0cm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidmFsaWRfYXRfbm90X2VtcHR5IiBD SEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKQogRm9yZWlnbi1rZXkgY29uc3RyYWludHM6CiAg ICAgInRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nX2ZrIiBGT1JFSUdOIEtFWSAocGFyZW50X2lk MSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJu ZzIoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCkKIApAQCAtMTEzNSw2ICsxMzYwLDggQEAgQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmsyX21sdHJuZzJtbHRybmcKICBwYXJlbnRfaWQyIHwgaW50NHJh bmdlICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAogSW5kZXhlczoKICAgICAidGVtcG9y YWxfZmsyX21sdHJuZzJtbHRybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ2YWxpZF9hdF9ub3RfZW1wdHki IENIRUNLIChOT1QgaXNlbXB0eSh2YWxpZF9hdCkpCiBGb3JlaWduLWtleSBjb25zdHJhaW50czoK ICAgICAidGVtcG9yYWxfZmsyX21sdHJuZzJtbHRybmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRf aWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0 cm5nMihpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQogCkBAIC0xMzY0LDE1ICsxNTkxLDEwIEBA IENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ib3ggKAogICB2YWxpZF9hdCBib3gsCiAgIENPTlNUUkFJ TlQgdGVtcG9yYWxfYm94X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKICk7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGluIFdJVEhPVVQgT1ZFUkxBUFMg aXMgbm90IGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSB0eXBlCitMSU5FIDQ6ICAgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ib3hfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRITy4uLgorICAgICAg ICAgIF4KIFxkIHRlbXBvcmFsX2JveAotICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBv cmFsX2JveCIKLSAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg RGVmYXVsdCAKLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0KLSBpZCAgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwg Ci0gdmFsaWRfYXQgfCBib3ggICAgICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAotSW5kZXhl czoKLSAgICAidGVtcG9yYWxfYm94X3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCi0KIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ib3gyYm94ICgKICAgaWQg aW50NHJhbmdlLAogICB2YWxpZF9hdCBib3gsCkBAIC0xMzgxLDggKzE2MDMsOSBAQCBDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfYm94MmJveCAoCiAgIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfYm94 MmJveF9mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAgICAgUkVG RVJFTkNFUyB0ZW1wb3JhbF9ib3ggKGlkLCBQRVJJT0QgdmFsaWRfYXQpCiApOwotRVJST1I6ICBp bnZhbGlkIHR5cGUgZm9yIFBFUklPRCBwYXJ0IG9mIGZvcmVpZ24ga2V5Ci1ERVRBSUw6ICBPbmx5 IHJhbmdlIGFuZCBtdWx0aXJhbmdlIGFyZSBzdXBwb3J0ZWQuCitFUlJPUjogIGNvbHVtbiAidmFs aWRfYXQiIGluIFdJVEhPVVQgT1ZFUkxBUFMgaXMgbm90IGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSB0 eXBlCitMSU5FIDU6ICAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ib3gyYm94X3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYS4uLgorICAgICAgICAgIF4KIC0tCiAtLSBGSyBiZXR3ZWVuIHBhcnRp dGlvbmVkIHRhYmxlcwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhv dXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwKaW5kZXggZGEyYjdmMTkuLjA1Y2I1YTE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbApAQCAtNzcsNiArNzcsMTI2IEBAIENSRUFURSBUQUJMRSB0ZW1wb3Jh bF9tbHRybmcgKAogKTsKIFxkIHRlbXBvcmFsX21sdHJuZwogCistLWZvciBQRVJJT0QgcHJpbWFy eSBrZXkgYW5kIGNoZWNrIGNvbnN0cmFpbnQgZGVwZW5kZW5jeS4KK2NyZWF0ZSBvciByZXBsYWNl IGZ1bmN0aW9uIHZhbGlkYXRlX3BlcmlvZF9lbXB0eV9kZXBlbmRlbmN5KHJlZ2NsYXNzKQorcmV0 dXJucyB0YWJsZQorKAorZGVwZW5kZW50X2Nvbm5hbWUgbmFtZSxkZXBlbmRlbnRfY29uX3R5cGUg ImNoYXIiLAorYm90aF9jb25fYXJlX3BlcmlvZCBib29sLHJlZmVyZW5jZWRfY29ubmFtZSBuYW1l LAorcmVmZXJlbmNlZF9jb25fdHlwZSAiY2hhciIsZGVwdHlwZSAiY2hhciIKKykKK2FzICQkCiti ZWdpbgorCXJldHVybiBxdWVyeQorCQlzZWxlY3QKKwkJCXBjLmNvbm5hbWUgYXMgZGVwZW5kZW50 X2Nvbm5hbWUsCisJCQlwYy5jb250eXBlIGFzIGRlcGVuZGVudF9jb25fdHlwZSwKKwkJCXBjLmNv bnBlcmlvZCA9IHBjMS5jb25wZXJpb2QgYXMgYm90aF9jb25fYXJlX3BlcmlvZCwKKwkJCXBjMS5j b25uYW1lIGFzIHJlZmVyZW5jZWRfY29ubmFtZSwKKwkJCXBjMS5jb250eXBlIGFzIHJlZmVyZW5j ZWRfY29uX3R5cGUsCisJCQlwZC5kZXB0eXBlCisJCWZyb20gCXBnX2RlcGVuZCBwZCBqb2luIHBn X2NvbnN0cmFpbnQgcGMgb24gcGMub2lkID0gcGQub2JqaWQKKwkJam9pbglwZ19jb25zdHJhaW50 IHBjMSBvbiBwYzEub2lkID0gcGQucmVmb2JqaWQKKwkJd2hlcmUJcGQucmVmY2xhc3NpZCA9IHBk LmNsYXNzaWQKKwkJYW5kIAlwZC5jbGFzc2lkID0gKHNlbGVjdCBvaWQKKwkJCWZyb20gcGdfY2xh c3MKKwkJCXdoZXJlIHJlbG5hbWUgPSAncGdfY29uc3RyYWludCcKKwkJCWFuZCByZWxuYW1lc3Bh Y2UgPSAncGdfY2F0YWxvZyc6OnJlZ25hbWVzcGFjZSkKKwkJYW5kIHBjLmNvbnJlbGlkID0gcGMx LmNvbnJlbGlkCisJCWFuZCBwYy5jb25yZWxpZCA9ICQxCisJCTsKK2VuZDsgJCQgbGFuZ3VhZ2Ug cGxwZ3NxbDsKKworLS1wayB3aXRoIG5vdF9lbXB0eSBjaGVjayBjb25zdHJhaW50CitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfdDEgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQgZGF0ZXJhbmdlKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX3QxCisgIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3QxX3BrCisg IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitzZWxlY3QgKiBm cm9tIHZhbGlkYXRlX3BlcmlvZF9lbXB0eV9kZXBlbmRlbmN5KCd0ZW1wb3JhbF90MSc6OnJlZ2Ns YXNzKTsKK3NlbGVjdCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIGZyb20gcGdfY29uc3RyYWlu dAord2hlcmUgY29ucmVsaWQgPSAndGVtcG9yYWxfdDEnOjpyZWdjbGFzcworYW5kIGNvbnR5cGUg PSAnYycKK2FuZCBjb25wZXJpb2Q7CisKKy0tc2hvdWxkIGZhaWwsIHByaW1hcnkga2V5IGRlcGVu ZCBvbiBpdAorYWx0ZXIgdGFibGUgdGVtcG9yYWxfdDEgZHJvcCBjb25zdHJhaW50IHZhbGlkX2F0 X25vdF9lbXB0eTsKKworLS1vaywgYWxzbyB2YWxpZF9hdF9ub3RfZW1wdHkgY2hlayBjb25zdHJh aW50IHdpbGwgYWxzbyBiZSBkcm9wcGVkLgorYWx0ZXIgdGFibGUgdGVtcG9yYWxfdDEgZHJvcCBj b25zdHJhaW50IHRlbXBvcmFsX3QxX3BrOworCistLWV4cGVjdCB6ZXJvIHJvdworc2VsZWN0ICog ZnJvbSB2YWxpZGF0ZV9wZXJpb2RfZW1wdHlfZGVwZW5kZW5jeSgndGVtcG9yYWxfdDEnOjpyZWdj bGFzcyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3QxOworCisKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF90MiAoaWQgaW50NHJhbmdlLCB2YWxpZF9hdCBkYXRlcmFuZ2UpOworYWx0ZXIgdGFibGUgdGVt cG9yYWxfdDIgYWRkIGNvbnN0cmFpbnQgdmFsaWRfYXRfbm90X2VtcHR5IENIRUNLIChOT1QgaXNl bXB0eSh2YWxpZF9hdCkpOworLS0gZmFpbCBmb3Igbm93CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF90 MgorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3QyX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfdDI7CisKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF90MyAoCisJCWlkIGludDRyYW5nZSwKKwkJdmFsaWRfYXQgZGF0ZXJh bmdlLAorCQlDT05TVFJBSU5UIHRlbXBvcmFsX3QzX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpKTsKKy0tc2hvdWxkIGZhaWwuCithbHRlciB0YWJsZSB0 ZW1wb3JhbF90MyBkcm9wIGNvbnN0cmFpbnQgdmFsaWRfYXRfbm90X2VtcHR5OworCitiZWdpbjsK K0FMVEVSIFRBQkxFCXRlbXBvcmFsX3QzCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgZGF0 ZXJhbmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVwcGVyKHZhbGlk X2F0KTo6ZGF0ZSk7CistLXNob3VsZCBiZSBmaW5lIHdpdGggZGF0YSB0eXBlIGNoYW5nZS4KK3Nl bGVjdCAqIGZyb20gdmFsaWRhdGVfcGVyaW9kX2VtcHR5X2RlcGVuZGVuY3koJ3RlbXBvcmFsX3Qz Jzo6cmVnY2xhc3MpOworYWx0ZXIgdGFibGUgdGVtcG9yYWxfdDMgZHJvcCBjb25zdHJhaW50IHRl bXBvcmFsX3QzX3JuZ19wazsKK3JvbGxiYWNrOworCithbHRlciB0YWJsZSB0ZW1wb3JhbF90MyBy ZW5hbWUgdmFsaWRfYXQgdG8gdmFsaWRfYXQxOworc2VsZWN0ICogZnJvbSB2YWxpZGF0ZV9wZXJp b2RfZW1wdHlfZGVwZW5kZW5jeSgndGVtcG9yYWxfdDMnOjpyZWdjbGFzcyk7CisKK3NlbGVjdCBw Z19nZXRfY29uc3RyYWludGRlZihvaWQpIGZyb20gcGdfY29uc3RyYWludAord2hlcmUgY29ucmVs aWQgPSAndGVtcG9yYWxfdDMnOjpyZWdjbGFzcworYW5kIGNvbnR5cGUgPSAnYycKK2FuZCBjb25w ZXJpb2Q7CisKK2FsdGVyIHRhYmxlIHRlbXBvcmFsX3QzIGRyb3AgY29uc3RyYWludCB0ZW1wb3Jh bF90M19ybmdfcGs7CitzZWxlY3QgKiBmcm9tIHZhbGlkYXRlX3BlcmlvZF9lbXB0eV9kZXBlbmRl bmN5KCd0ZW1wb3JhbF90Myc6OnJlZ2NsYXNzKTsKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF90MzsK KworCistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGltZQorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3Q0IChpZCBpbnQ0cmFuZ2UpOworQUxURVIgVEFCTEUgdGVtcG9y YWxfdDQKKwlBREQgQ09MVU1OIHZhbGlkX2F0IGRhdGVyYW5nZSwKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF90NF9waworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ Uyk7CitcZCB0ZW1wb3JhbF90NAorCitzZWxlY3QgKiBmcm9tIHZhbGlkYXRlX3BlcmlvZF9lbXB0 eV9kZXBlbmRlbmN5KCd0ZW1wb3JhbF90NCc6OnJlZ2NsYXNzKTsKK0RST1AgVEFCTEUgdGVtcG9y YWxfdDQ7CisKKworLS0gdGVtcG9yYWwgcGFydGl0aW9uIHRhYmxlIHdpdGggY2hlY2sgY29uc3Ry YWludAorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3AgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9h dCBkYXRlcmFuZ2UsCisJbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElT VCAoaWQpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3AxIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9w IEZPUiBWQUxVRVMgSU4gKCdbMSwyKScsICdbMiwzKScpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3AyIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wIEZPUiBWQUxVRVMgSU4gKCdbMyw0KScsICdbNCw1 KScpOworXGQrIHRlbXBvcmFsX3AKK1xkIHRlbXBvcmFsX3AxCithbHRlciB0YWJsZSB0ZW1wb3Jh bF9wMSBkcm9wIGNvbnN0cmFpbnQgdmFsaWRfYXRfbm90X2VtcHR5OworXGQgdGVtcG9yYWxfcDIK K2FsdGVyIHRhYmxlIHRlbXBvcmFsX3AyIGRyb3AgY29uc3RyYWludCB2YWxpZF9hdF9ub3RfZW1w dHk7CithbHRlciB0YWJsZSB0ZW1wb3JhbF9wIGRyb3AgY29uc3RyYWludCB0ZW1wb3JhbF9wazsK K1xkKyB0ZW1wb3JhbF9wCitEUk9QIFRBQkxFIHRlbXBvcmFsX3A7CisKK0RST1AgRlVOQ1RJT04g dmFsaWRhdGVfcGVyaW9kX2VtcHR5X2RlcGVuZGVuY3k7CiAtLSBQSyB3aXRoIHR3byBjb2x1bW5z IHBsdXMgYSBtdWx0aXJhbmdlOgogLS0gV2UgZG9uJ3QgZHJvcCB0aGlzIHRhYmxlIGJlY2F1c2Ug dGVzdHMgYmVsb3cgYWxzbyBuZWVkIG11bHRpcGxlIHNjYWxhciBjb2x1bW5zLgogQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX21sdHJuZzIgKAotLSAKMi4zNC4xCgo= --000000000000e7e6ff0617c049a5--