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 1rrtCi-003MPw-UJ for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Apr 2024 05:30:33 +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 1rrtCh-00FGsJ-6t for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Apr 2024 05:30:31 +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 1rrtCg-00FGsB-CI for pgsql-hackers@lists.postgresql.org; Wed, 03 Apr 2024 05:30:30 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rrtCZ-000IwV-H0 for pgsql-hackers@lists.postgresql.org; Wed, 03 Apr 2024 05:30:28 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1e0f3052145so56156655ad.2 for ; Tue, 02 Apr 2024 22:30:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1712122222; x=1712727022; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=zWsxgNO3rOYj/gbHOW6J4aNLpi6yRfXf80gLwe8w8AU=; b=kgVr+XGNb/4l0Vsul9C6G/lz44J92y9eJgkMZOUUFXJ//qyatv+XTFx0uzg/nFeJde exbTsrdAK6iRnI9uAOlclQGyyLl6GxVuHj9NPnwt3XY308SVX5in7olUlBKq3fEvKLiP HIpwjvoiCidhQ6809gyO7GtxesFe9pTqxdmYDABD+S3nF8e2i8Am4nskUltqEqHLfh6M ngRo7830fcgwP7lyQhhYdd/4mhrLp2+tUGGLl9EcAUg+iNa4qWpCvxC984aizcGB/a7U m8YP6/Mdk2OYIMnm6TnXoCOBszSG+hd9K+WpRzDWETIoRDhWY/IMSUJc11uAt7MLu8Mp ppiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712122222; x=1712727022; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=zWsxgNO3rOYj/gbHOW6J4aNLpi6yRfXf80gLwe8w8AU=; b=XYFhhiYp3Flo45ZH6i1BtERhQw5OvgR8ILGtcwS+stTSahW9Sol/zhimcGlgiNytju NelG4qBDnAWZ9at0/wXgXP3/oqiAmyA93jedslYRe6lnQTIm4XcFAwgiXIDqvFaIsghW nYKAjrgV2EqDggo5nY47zoVfFCP5OZuEm5VejiKAY+YOk7qyjPpaDJvQrwagawNMkPQ+ XVhhrDMovFeO/eHYB0OPpkC/7q21X50WrBDm/1mWF3DLRCv0sfSBjthMqEyZP8r+7neL 6YrPz8EUF/tH/n7LgQ2ynmWNHPuZEb4qfsqUHnB7MVnAnJlSgpsvG2ztOOj03ihrmmaB 21kA== X-Gm-Message-State: AOJu0YzK1tm2zt2a3VrGQO4qvbzDRv0bE6BxuJHNVy3vzo3uG4wYY7Lp hbndl4yS9qJj97hRWvOoqmd+6ze2mWREq5y8LDYT0jJGVqFY1a6JwqlUgxPzM+w= X-Google-Smtp-Source: AGHT+IGunPjsWjb0Zge0isI7nqR2zHHuzCJPzpu5bJyjkBl10YYuhD1N0hqxGrb1S/evYYCIaeLP5g== X-Received: by 2002:a17:903:40c5:b0:1e0:a1f4:95f with SMTP id t5-20020a17090340c500b001e0a1f4095fmr2047072pld.14.1712122222085; Tue, 02 Apr 2024 22:30:22 -0700 (PDT) Received: from [192.168.2.139] ([50.39.255.79]) by smtp.googlemail.com with ESMTPSA id d5-20020a170903230500b001dd4d0082c8sm2828304plh.216.2024.04.02.22.30.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 02 Apr 2024 22:30:21 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------T23Cm3FyGPw2tFb4x0WA0pT5" Message-ID: <47550967-260b-4180-9791-b224859fe63e@illuminatedcomputing.com> Date: Tue, 2 Apr 2024 22:30:20 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time To: Peter Eisentraut , jian he Cc: PostgreSQL Hackers References: <0d977c63-f4a6-43ba-aad0-35c06c55df11@eisentraut.org> <85dd3ad0-fa79-46e8-a08b-c426c76825f3@eisentraut.org> <49c07eac-18ec-4aff-929c-e81b87df1092@eisentraut.org> <1edb3b79-a4bc-43b1-80aa-2e090472fe32@eisentraut.org> Content-Language: en-US From: Paul Jungwirth In-Reply-To: <1edb3b79-a4bc-43b1-80aa-2e090472fe32@eisentraut.org> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------T23Cm3FyGPw2tFb4x0WA0pT5 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/24/24 00:38, Peter Eisentraut wrote:> I have committed the patches > v33-0001-Add-temporal-FOREIGN-KEYs.patch and v33-0002-Support-multiranges-in-temporal-FKs.patch > (together). Hi Hackers, I found some problems with temporal primary keys and the idea of uniqueness, especially around the indisunique column. Here are some small fixes and a proposal for a larger fix, which I think we need but I'd like some feedback on. The first patch fixes problems with ON CONFLICT DO NOTHING/UPDATE. DO NOTHING fails because it doesn't expect a non-btree unique index. It's fine to make it accept a temporal PRIMARY KEY/UNIQUE index though (i.e. an index with both indisunique and indisexclusion). This is no different than an exclusion constraint. So I skip BuildSpeculativeIndexInfo for WITHOUT OVERLAPS indexes. (Incidentally, AFAICT ii_UniqueOps is never used, only ii_UniqueProcs. Right?) We should still forbid temporally-unique indexes for ON CONFLICT DO UPDATE, since there may be more than one row that conflicts. Ideally we would find and update all the conflicting rows, but we don't now, and we don't want to update just one: postgres=# create table t (id int4range, valid_at daterange, name text, constraint tpk primary key (id, valid_at without overlaps)); CREATE TABLE postgres=# insert into t values ('[1,2)', '[2000-01-01,2001-01-01)', 'a'), ('[1,2)', '[2001-01-01,2002-01-01)', 'b'); INSERT 0 2 postgres=# insert into t values ('[1,2)', '[2000-01-01,2002-01-01)', 'c') on conflict (id, valid_at) do update set name = excluded.name; INSERT 0 1 postgres=# select * from t; id | valid_at | name -------+-------------------------+------ [1,2) | [2001-01-01,2002-01-01) | b [1,2) | [2000-01-01,2001-01-01) | c (2 rows) So I also added code to prevent that. This is just preserving the old behavior for exclusion constraints, which was bypassed because of indisunique. All this is in the first patch. That got me thinking about indisunique and where else it could cause problems. Perhaps there are other places that assume only b-trees are unique. I couldn't find anywhere that just gives an error like ON CONFLICT, but I can imagine more subtle problems. A temporal PRIMARY KEY or UNIQUE constraint is unique in at least three ways: It is *metaphorically* unique: the conceit is that the scalar part is unique at every moment in time. You may have id 5 in your table more than once, as long as the records' application times don't overlap. And it is *officially* unique: the standard calls these constraints unique. I think it is correct for us to report them as unique in pg_index. But is it *literally* unique? Well two identical keys, e.g. (5, '[Jan24,Mar24)') and (5, '[Jan24,Mar24)'), do have overlapping ranges, so the second is excluded. Normally a temporal unique index is *more* restrictive than a standard one, since it forbids other values too (e.g. (5, '[Jan24,Feb24)')). But sadly there is one exception: the ranges in these keys do not overlap: (5, 'empty'), (5, 'empty'). With ranges/multiranges, `'empty' && x` is false for all x. You can add that key as many times as you like, despite a PK/UQ constraint: postgres=# insert into t values ('[1,2)', 'empty', 'foo'), ('[1,2)', 'empty', 'bar'); INSERT 0 2 postgres=# select * from t; id | valid_at | name -------+----------+------ [1,2) | empty | foo [1,2) | empty | bar (2 rows) Cases like this shouldn't actually happen for temporal tables, since empty is not a meaningful value. An UPDATE/DELETE FOR PORTION OF would never cause an empty. But we should still make sure they don't cause problems. One place we should avoid temporally-unique indexes is REPLICA IDENTITY. Fortunately we already do that, but patch 2 adds a test to keep it that way. Uniqueness is an important property to the planner, too. We consider indisunique often for estimates, where it needn't be 100% true. Even if there are nullable columns or a non-indimmediate index, it still gives useful stats. Duplicates from 'empty' shouldn't cause any new problems there. In proof code we must be more careful. Patch 3 updates relation_has_unique_index_ext and rel_supports_distinctness to disqualify WITHOUT OVERLAPS indexes. Maybe that's more cautious than needed, but better safe than sorry. This patch has no new test though. I had trouble writing SQL that was wrong before its change. I'd be happy for help here! Another problem is GROUP BY and functional dependencies. This is wrong: postgres=# create table a (id int4range, valid_at daterange, name text, constraint apk primary key (id, valid_at without overlaps)); CREATE TABLE postgres=# insert into a values ('[1,2)', 'empty', 'foo'), ('[1,2)', 'empty', 'bar'); INSERT 0 2 postgres=# select * from a group by id, valid_at; id | valid_at | name -------+----------+------ [1,2) | empty | foo (1 row) One fix is to return false from check_functional_grouping for WITHOUT OVERLAPS primary keys. But I think there is a better fix that is less ad hoc. We should give temporal primary keys an internal CHECK constraint saying `NOT isempty(valid_at)`. The problem is analogous to NULLs in parts of a primary key. NULLs prevent two identical keys from ever comparing as equal. And just as a regular primary key cannot contain NULLs, so a temporal primary key should not contain empties. The standard effectively prevents this with PERIODs, because a PERIOD adds a constraint saying start < end. But our ranges enforce only start <= end. If you say `int4range(4,4)` you get `empty`. If we constrain primary keys as I'm suggesting, then they are literally unique, and indisunique seems safer. Should we add the same CHECK constraint to temporal UNIQUE indexes? I'm inclined toward no, just as we don't forbid NULLs in parts of a UNIQUE key. We should try to pick what gives users more options, when possible. Even if it is questionably meaningful, I can see use cases for allowing empty ranges in a temporal table. For example it lets you "disable" a row, preserving its values but marking it as never true. Also it gives you a way to make a non-temporal foreign key reference to a temporal table. Normally temporal tables are "contagious", which is annoying. But if the referencing table had 'empty' for its temporal part, then references should succeed. For example this is true: 'empty'::daterange <@ '[2000-01-01,2001-01-01)'. (Technically this would require a small change to our FK SQL, because we do `pkperiod && fkperiod` as an optimization (to use the index more fully), and we would need to skip that when fkperiod is empty.) Finally, if we have a not-empty constraint on our primary keys, then the GROUP BY problem above goes away. And we can still use temporal primary keys in proofs (but maybe not other temporally-unique indexes). We can allow them in relation_has_unique_index_ext/rel_supports_distinctness. The drawback to putting a CHECK constraint on just PKs and not UNIQUEs is that indisunique may not be literally unique for them, if they have empty ranges. But even for traditional UNIQUE constraints, indisunique can be misleading: If they have nullable parts, identical keys are still "unique", so the code is already careful about them. Do note though the problems come from 'empty' values, not nullable values, so there might still be some planner rules we need to correct. Another drawback is that by using isempty we're limiting temporal PKs to just ranges and multiranges, whereas currently any type with appropriate operators is allowed. But since we decided to limit FKs already, I think this is okay. We can open it back up again later if we like (e.g. by adding a support function for the isempty concept). I'll start working on a patch for this too, but I'd be happy for early feedback/objections/etc. I guess an alternative would be to add a new operator, say &&&, that is the same as overlaps, except 'empty' overlaps everything instead of nothing. In a way that seems more consistent with <@. (How can a range contain something if it doesn't overlap it?) I don't love that a key like (5, 'empty') would conflict with every other 5, but you as I said it's not a meaningful value in a temporal table anyway. Or you could have 'empty' overlap nothing except itself. Maybe I prefer this solution to an internal CHECK constraint, but it feels like it has more unknown unknowns. Thoughts? Also I suspect there are still places where indisunique causes problems. I'll keep looking for them, but if others have thoughts please let me know. Patches here are generated against c627d944e6. Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------T23Cm3FyGPw2tFb4x0WA0pT5 Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Fix-ON-CONFLICT-DO-NOTHING-UPDATE-for-temporal-in.patch" Content-Disposition: attachment; filename*0="v1-0001-Fix-ON-CONFLICT-DO-NOTHING-UPDATE-for-temporal-in.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5ZGY1MmVkYjk5NjEyYjExMmY3OThmYzQwY2NmMTFlZmExNDc0ZjY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjQgTWFyIDIwMjQgMjE6NDY6MzAgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxIDEvM10gRml4IE9OIENPTkZMSUNUIERPIE5PVEhJTkcv VVBEQVRFIGZvciB0ZW1wb3JhbCBpbmRleGVzCgpBIFBSSU1BUlkgS0VZIG9yIFVOSVFVRSBj b25zdHJhaW50IHdpdGggV0lUSE9VVCBPVkVSTEFQUyB3aWxsIGJlIGEgR2lTVAppbmRleCwg bm90IGEgQi1UcmVlLCBidXQgaXQgd2lsbCBzdGlsbCBoYXZlIGluZGlzdW5pcXVlIHNldC4g VGhlIGNvZGUKZm9yIE9OIENPTkZMSUNUIGZhaWxzIGlmIGl0IHNlZXMgYSBub24tYnRyZWUg aW5kZXggdGhhdCBoYXMgaW5kaXN1bmlxdWUuClRoaXMgY29tbWl0IGZpeGVzIHRoYXQgYW5k IGFkZHMgc29tZSB0ZXN0cy4gQnV0IG5vdyB0aGF0IHdlIGNhbid0IGp1c3QKdGVzdCBpbmRp c3VuaXF1ZSwgd2UgYWxzbyBuZWVkIHNvbWUgZXh0cmEgY2hlY2tzIHRvIHByZXZlbnQgRE8g VVBEQVRFCmZyb20gcnVubmluZyBhZ2FpbnN0IGEgV0lUSE9VVCBPVkVSTEFQUyBjb25zdHJh aW50IChiZWNhdXNlIHRoZSBjb25mbGljdApjb3VsZCBoYXBwZW4gYWdhaW5zdCBtb3JlIHRo YW4gb25lIHJvdywgYW5kIHdlJ2Qgb25seSB1cGRhdGUgb25lKS4KLS0tCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgICAgfCAgIDQgKy0KIHNyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4v cmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCAgICAgfCAxNzYgKysrKysr KysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNx bCAgICAgfCAxMTMgKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMjk0IGluc2VydGlv bnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGI2YTdjNjBl MjMwLi5hYTYwNGRjNDMwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMjQ0Myw2ICsyNDQz LDcgQEAgQnVpbGRJbmRleEluZm8oUmVsYXRpb24gaW5kZXgpCiAJCQkJCQkJCSAmaWktPmlp X0V4Y2x1c2lvbk9wcywKIAkJCQkJCQkJICZpaS0+aWlfRXhjbHVzaW9uUHJvY3MsCiAJCQkJ CQkJCSAmaWktPmlpX0V4Y2x1c2lvblN0cmF0cyk7CisJCWlpLT5paV9IYXNXaXRob3V0T3Zl cmxhcHMgPSBpaS0+aWlfVW5pcXVlOwogCX0KIAogCXJldHVybiBpaTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggOWYwNWIzNjU0YzEuLmZhYTM3Y2E1NmRiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtMjEwLDcgKzIxMCw3IEBA IEV4ZWNPcGVuSW5kaWNlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBib29sIHNw ZWN1bGF0aXZlKQogCQkgKiBJZiB0aGUgaW5kZXhlcyBhcmUgdG8gYmUgdXNlZCBmb3Igc3Bl Y3VsYXRpdmUgaW5zZXJ0aW9uLCBhZGQgZXh0cmEKIAkJICogaW5mb3JtYXRpb24gcmVxdWly ZWQgYnkgdW5pcXVlIGluZGV4IGVudHJpZXMuCiAJCSAqLwotCQlpZiAoc3BlY3VsYXRpdmUg JiYgaWktPmlpX1VuaXF1ZSkKKwkJaWYgKHNwZWN1bGF0aXZlICYmIGlpLT5paV9VbmlxdWUg JiYgIWlpLT5paV9IYXNXaXRob3V0T3ZlcmxhcHMpCiAJCQlCdWlsZFNwZWN1bGF0aXZlSW5k ZXhJbmZvKGluZGV4RGVzYywgaWkpOwogCiAJCXJlbGF0aW9uRGVzY3NbaV0gPSBpbmRleERl c2M7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggNmJiNTNlNDM0 NmYuLmIzMjYxNDc1YmRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5j CkBAIC04MDQsNyArODA0LDcgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZv ICpyb290KQogCQkgKi8KIAkJaWYgKGluZGV4T2lkRnJvbUNvbnN0cmFpbnQgPT0gaWR4Rm9y bS0+aW5kZXhyZWxpZCkKIAkJewotCQkJaWYgKCFpZHhGb3JtLT5pbmRpc3VuaXF1ZSAmJiBv bmNvbmZsaWN0LT5hY3Rpb24gPT0gT05DT05GTElDVF9VUERBVEUpCisJCQlpZiAoKCFpZHhG b3JtLT5pbmRpc3VuaXF1ZSB8fCBpZHhGb3JtLT5pbmRpc2V4Y2x1c2lvbikgJiYgb25jb25m bGljdC0+YWN0aW9uID09IE9OQ09ORkxJQ1RfVVBEQVRFKQogCQkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQkJCSBl cnJtc2coIk9OIENPTkZMSUNUIERPIFVQREFURSBub3Qgc3VwcG9ydGVkIHdpdGggZXhjbHVz aW9uIGNvbnN0cmFpbnRzIikpKTsKQEAgLTgyNiw3ICs4MjYsNyBAQCBpbmZlcl9hcmJpdGVy X2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCSAqIGNvbnN0cmFpbnRzKSwgc28gaW5k ZXggdW5kZXIgY29uc2lkZXJhdGlvbiBjYW4gYmUgaW1tZWRpYXRlbHkKIAkJICogc2tpcHBl ZCBpZiBpdCdzIG5vdCB1bmlxdWUKIAkJICovCi0JCWlmICghaWR4Rm9ybS0+aW5kaXN1bmlx dWUpCisJCWlmICghaWR4Rm9ybS0+aW5kaXN1bmlxdWUgfHwgaWR4Rm9ybS0+aW5kaXNleGNs dXNpb24pCiAJCQlnb3RvIG5leHQ7CiAKIAkJLyogQnVpbGQgQk1TIHJlcHJlc2VudGF0aW9u IG9mIHBsYWluIChub24gZXhwcmVzc2lvbikgaW5kZXggYXR0cnMgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKaW5kZXggZTdmZjhlNDk5MmYuLmQ5ODVmYmFhMDZkIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaApAQCAtMjA0LDYgKzIwNCw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4SW5m bwogCWJvb2wJCWlpX1N1bW1hcml6aW5nOwogCWludAkJCWlpX1BhcmFsbGVsV29ya2VyczsK IAlPaWQJCQlpaV9BbTsKKwlib29sCQlpaV9IYXNXaXRob3V0T3ZlcmxhcHM7CiAJdm9pZAkg ICAqaWlfQW1DYWNoZTsKIAlNZW1vcnlDb250ZXh0IGlpX0NvbnRleHQ7CiB9IEluZGV4SW5m bzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0CmluZGV4IGY2ZmU4ZjA5MzY5Li45YzE1N2FkNjViMyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC00NDksNiArNDQ5 LDE4MiBAQCBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAKIERS T1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CiAtLQorLS0gT04gQ09ORkxJQ1QKKy0t CitUUlVOQ0FURSB0ZW1wb3JhbF9ybmc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlk LCB2YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAn MjAxMC0wMS0wMScpKTsKKy0tIHdpdGggYSBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDA1 LTAxLTAxJywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgRE8gTk9USElORzsKKy0tIGlk IG1hdGNoZXMgYnV0IG5vIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlk LCB2YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAn MjAyMC0wMS0wMScpKSBPTiBDT05GTElDVCBETyBOT1RISU5HOworLS0gZGF0ZSBtYXRjaGVz IGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRf YXQpIFZBTFVFUyAoJ1syLDMpJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEt MDEnKSkgT04gQ09ORkxJQ1QgRE8gTk9USElORzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf cm5nIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAg ICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsMikgfCBb MjAwMC0wMS0wMSwyMDEwLTAxLTAxKQorIFsxLDIpIHwgWzIwMTAtMDEtMDEsMjAyMC0wMS0w MSkKKyBbMiwzKSB8IFsyMDA1LTAxLTAxLDIwMDYtMDEtMDEpCisoMyByb3dzKQorCitUUlVO Q0FURSB0ZW1wb3JhbF9ybmc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxp ZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0w MS0wMScpKTsKKy0tIHdpdGggYSBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAx JywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgKGlkLCB2YWxpZF9hdCkgRE8gTk9USElO RzsKK0VSUk9SOiAgdGhlcmUgaXMgbm8gdW5pcXVlIG9yIGV4Y2x1c2lvbiBjb25zdHJhaW50 IG1hdGNoaW5nIHRoZSBPTiBDT05GTElDVCBzcGVjaWZpY2F0aW9uCistLSBpZCBtYXRjaGVz IGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRf YXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMjAtMDEt MDEnKSkgT04gQ09ORkxJQ1QgKGlkLCB2YWxpZF9hdCkgRE8gTk9USElORzsKK0VSUk9SOiAg dGhlcmUgaXMgbm8gdW5pcXVlIG9yIGV4Y2x1c2lvbiBjb25zdHJhaW50IG1hdGNoaW5nIHRo ZSBPTiBDT05GTElDVCBzcGVjaWZpY2F0aW9uCistLSBkYXRlIG1hdGNoZXMgYnV0IG5vIGNv bmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVT ICgnWzIsMyknLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScpKSBPTiBD T05GTElDVCAoaWQsIHZhbGlkX2F0KSBETyBOT1RISU5HOworRVJST1I6ICB0aGVyZSBpcyBu byB1bmlxdWUgb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbWF0Y2hpbmcgdGhlIE9OIENPTkZM SUNUIHNwZWNpZmljYXRpb24KK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcm5nIE9SREVSIEJZ IGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsMikgfCBbMjAwMC0wMS0wMSwy MDEwLTAxLTAxKQorKDEgcm93KQorCitUUlVOQ0FURSB0ZW1wb3JhbF9ybmc7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpKTsKKy0tIHdpdGggYSBjb25mbGlj dAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sx LDIpJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJ Q1QgT04gQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgRE8gTk9USElORzsKKy0tIGlkIG1h dGNoZXMgYnV0IG5vIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2 YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAy MC0wMS0wMScpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBE TyBOT1RISU5HOworLS0gZGF0ZSBtYXRjaGVzIGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1syLDMpJywgZGF0ZXJh bmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RS QUlOVCB0ZW1wb3JhbF9ybmdfcGsgRE8gTk9USElORzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcm5nIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9h dCAgICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsMikg fCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKQorIFsxLDIpIHwgWzIwMTAtMDEtMDEsMjAyMC0w MS0wMSkKKyBbMiwzKSB8IFsyMDA1LTAxLTAxLDIwMDYtMDEtMDEpCisoMyByb3dzKQorCitU UlVOQ0FURSB0ZW1wb3JhbF9ybmc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2 YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpKTsKKy0tIHdpdGggYSBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDA1LTAx LTAxJywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgKGlkLCB2YWxpZF9hdCkgRE8gVVBE QVRFIFNFVCBpZCA9IEVYQ0xVREVELmlkICsgJ1syLDMpJzsKK0VSUk9SOiAgdGhlcmUgaXMg bm8gdW5pcXVlIG9yIGV4Y2x1c2lvbiBjb25zdHJhaW50IG1hdGNoaW5nIHRoZSBPTiBDT05G TElDVCBzcGVjaWZpY2F0aW9uCistLSBpZCBtYXRjaGVzIGJ1dCBubyBjb25mbGljdAorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywg ZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMjAtMDEtMDEnKSkgT04gQ09ORkxJQ1QgKGlk LCB2YWxpZF9hdCkgRE8gVVBEQVRFIFNFVCBpZCA9IEVYQ0xVREVELmlkICsgJ1szLDQpJzsK K0VSUk9SOiAgdGhlcmUgaXMgbm8gdW5pcXVlIG9yIGV4Y2x1c2lvbiBjb25zdHJhaW50IG1h dGNoaW5nIHRoZSBPTiBDT05GTElDVCBzcGVjaWZpY2F0aW9uCistLSBkYXRlIG1hdGNoZXMg YnV0IG5vIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9h dCkgVkFMVUVTICgnWzIsMyknLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0w MScpKSBPTiBDT05GTElDVCAoaWQsIHZhbGlkX2F0KSBETyBVUERBVEUgU0VUIGlkID0gRVhD TFVERUQuaWQgKyAnWzQsNSknOworRVJST1I6ICB0aGVyZSBpcyBubyB1bmlxdWUgb3IgZXhj bHVzaW9uIGNvbnN0cmFpbnQgbWF0Y2hpbmcgdGhlIE9OIENPTkZMSUNUIHNwZWNpZmljYXRp b24KK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcm5nIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK KyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgWzEsMikgfCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKQorKDEg cm93KQorCitUUlVOQ0FURSB0ZW1wb3JhbF9ybmc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEt MDEnLCAnMjAxMC0wMS0wMScpKTsKKy0tIHdpdGggYSBjb25mbGljdAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdl KCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmdfcGsgRE8gVVBEQVRFIFNFVCBpZCA9IEVYQ0xVREVELmlkICsgJ1sy LDMpJzsKK0VSUk9SOiAgT04gQ09ORkxJQ1QgRE8gVVBEQVRFIG5vdCBzdXBwb3J0ZWQgd2l0 aCBleGNsdXNpb24gY29uc3RyYWludHMKKy0tIGlkIG1hdGNoZXMgYnV0IG5vIGNvbmZsaWN0 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzEs MiknLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAyMC0wMS0wMScpKSBPTiBDT05GTElD VCBPTiBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBETyBVUERBVEUgU0VUIGlkID0gRVhD TFVERUQuaWQgKyAnWzMsNCknOworRVJST1I6ICBPTiBDT05GTElDVCBETyBVUERBVEUgbm90 IHN1cHBvcnRlZCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cworLS0gZGF0ZSBtYXRjaGVz IGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRf YXQpIFZBTFVFUyAoJ1syLDMpJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEt MDEnKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgRE8gVVBE QVRFIFNFVCBpZCA9IEVYQ0xVREVELmlkICsgJ1s0LDUpJzsKK0VSUk9SOiAgT04gQ09ORkxJ Q1QgRE8gVVBEQVRFIG5vdCBzdXBwb3J0ZWQgd2l0aCBleGNsdXNpb24gY29uc3RyYWludHMK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcm5nIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAg aWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgWzEsMikgfCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKQorKDEgcm93 KQorCistLSB3aXRoIGEgVU5JUVVFIGNvbnN0cmFpbnQ6CitDUkVBVEUgVEFCTEUgdGVtcG9y YWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWwzX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworVFJVTkNBVEUgdGVtcG9yYWwzOworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwg dmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MTAtMDEtMDEnKSk7CistLSB3aXRoIGEgY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFs MyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0w MScsICcyMDA2LTAxLTAxJykpIE9OIENPTkZMSUNUIERPIE5PVEhJTkc7CistLSBpZCBtYXRj aGVzIGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRf YXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMjAtMDEt MDEnKSkgT04gQ09ORkxJQ1QgRE8gTk9USElORzsKKy0tIGRhdGUgbWF0Y2hlcyBidXQgbm8g Y29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMg KCdbMiwzKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJykpIE9OIENP TkZMSUNUIERPIE5PVEhJTkc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsMyBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsxLDIpIHwgWzIwMDAtMDEtMDEsMjAx MC0wMS0wMSkKKyBbMSwyKSB8IFsyMDEwLTAxLTAxLDIwMjAtMDEtMDEpCisgWzIsMykgfCBb MjAwNS0wMS0wMSwyMDA2LTAxLTAxKQorKDMgcm93cykKKworVFJVTkNBVEUgdGVtcG9yYWwz OworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIp JywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSk7CistLSB3aXRoIGEg Y29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMg KCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJykpIE9OIENP TkZMSUNUIChpZCwgdmFsaWRfYXQpIERPIE5PVEhJTkc7CitFUlJPUjogIHRoZXJlIGlzIG5v IHVuaXF1ZSBvciBleGNsdXNpb24gY29uc3RyYWludCBtYXRjaGluZyB0aGUgT04gQ09ORkxJ Q1Qgc3BlY2lmaWNhdGlvbgorLS0gaWQgbWF0Y2hlcyBidXQgbm8gY29uZmxpY3QKK0lOU0VS VCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVy YW5nZSgnMjAxMC0wMS0wMScsICcyMDIwLTAxLTAxJykpIE9OIENPTkZMSUNUIChpZCwgdmFs aWRfYXQpIERPIE5PVEhJTkc7CitFUlJPUjogIHRoZXJlIGlzIG5vIHVuaXF1ZSBvciBleGNs dXNpb24gY29uc3RyYWludCBtYXRjaGluZyB0aGUgT04gQ09ORkxJQ1Qgc3BlY2lmaWNhdGlv bgorLS0gZGF0ZSBtYXRjaGVzIGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9y YWwzIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1syLDMpJywgZGF0ZXJhbmdlKCcyMDA1LTAx LTAxJywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgKGlkLCB2YWxpZF9hdCkgRE8gTk9U SElORzsKK0VSUk9SOiAgdGhlcmUgaXMgbm8gdW5pcXVlIG9yIGV4Y2x1c2lvbiBjb25zdHJh aW50IG1hdGNoaW5nIHRoZSBPTiBDT05GTElDVCBzcGVjaWZpY2F0aW9uCitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAg dmFsaWRfYXQgICAgICAgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFsxLDIpIHwgWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSkKKygxIHJvdykKKworVFJVTkNBVEUg dGVtcG9yYWwzOworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZBTFVF UyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSk7Cist LSB3aXRoIGEgY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0 KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAx JykpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxIERPIE5PVEhJTkc7 CistLSBpZCBtYXRjaGVzIGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWwz IChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAx JywgJzIwMjAtMDEtMDEnKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0ZW1wb3JhbDNf dXEgRE8gTk9USElORzsKKy0tIGRhdGUgbWF0Y2hlcyBidXQgbm8gY29uZmxpY3QKK0lOU0VS VCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMiwzKScsIGRhdGVy YW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJykpIE9OIENPTkZMSUNUIE9OIENPTlNU UkFJTlQgdGVtcG9yYWwzX3VxIERPIE5PVEhJTkc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs MyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAg ICAgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsxLDIpIHwgWzIw MDAtMDEtMDEsMjAxMC0wMS0wMSkKKyBbMSwyKSB8IFsyMDEwLTAxLTAxLDIwMjAtMDEtMDEp CisgWzIsMykgfCBbMjAwNS0wMS0wMSwyMDA2LTAxLTAxKQorKDMgcm93cykKKworVFJVTkNB VEUgdGVtcG9yYWwzOworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZB TFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSk7 CistLSB3aXRoIGEgY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlk X2F0KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAx LTAxJykpIE9OIENPTkZMSUNUIChpZCwgdmFsaWRfYXQpIERPIFVQREFURSBTRVQgaWQgPSBF WENMVURFRC5pZCArICdbMiwzKSc7CitFUlJPUjogIHRoZXJlIGlzIG5vIHVuaXF1ZSBvciBl eGNsdXNpb24gY29uc3RyYWludCBtYXRjaGluZyB0aGUgT04gQ09ORkxJQ1Qgc3BlY2lmaWNh dGlvbgorLS0gaWQgbWF0Y2hlcyBidXQgbm8gY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBv cmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAxMC0w MS0wMScsICcyMDIwLTAxLTAxJykpIE9OIENPTkZMSUNUIChpZCwgdmFsaWRfYXQpIERPIFVQ REFURSBTRVQgaWQgPSBFWENMVURFRC5pZCArICdbMyw0KSc7CitFUlJPUjogIHRoZXJlIGlz IG5vIHVuaXF1ZSBvciBleGNsdXNpb24gY29uc3RyYWludCBtYXRjaGluZyB0aGUgT04gQ09O RkxJQ1Qgc3BlY2lmaWNhdGlvbgorLS0gZGF0ZSBtYXRjaGVzIGJ1dCBubyBjb25mbGljdAor SU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1syLDMpJywg ZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgKGlk LCB2YWxpZF9hdCkgRE8gVVBEQVRFIFNFVCBpZCA9IEVYQ0xVREVELmlkICsgJ1s0LDUpJzsK K0VSUk9SOiAgdGhlcmUgaXMgbm8gdW5pcXVlIG9yIGV4Y2x1c2lvbiBjb25zdHJhaW50IG1h dGNoaW5nIHRoZSBPTiBDT05GTElDVCBzcGVjaWZpY2F0aW9uCitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRf YXQgICAgICAgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsxLDIp IHwgWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSkKKygxIHJvdykKKworVFJVTkNBVEUgdGVtcG9y YWwzOworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sx LDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSk7CistLSB3aXRo IGEgY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxV RVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJykpIE9O IENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxIERPIFVQREFURSBTRVQgaWQg PSBFWENMVURFRC5pZCArICdbMiwzKSc7CitFUlJPUjogIE9OIENPTkZMSUNUIERPIFVQREFU RSBub3Qgc3VwcG9ydGVkIHdpdGggZXhjbHVzaW9uIGNvbnN0cmFpbnRzCistLSBpZCBtYXRj aGVzIGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRf YXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMjAtMDEt MDEnKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEgRE8gVVBEQVRF IFNFVCBpZCA9IEVYQ0xVREVELmlkICsgJ1szLDQpJzsKK0VSUk9SOiAgT04gQ09ORkxJQ1Qg RE8gVVBEQVRFIG5vdCBzdXBwb3J0ZWQgd2l0aCBleGNsdXNpb24gY29uc3RyYWludHMKKy0t IGRhdGUgbWF0Y2hlcyBidXQgbm8gY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAo aWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMiwzKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScs ICcyMDA2LTAxLTAxJykpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGVtcG9yYWwzX3Vx IERPIFVQREFURSBTRVQgaWQgPSBFWENMVURFRC5pZCArICdbNCw1KSc7CitFUlJPUjogIE9O IENPTkZMSUNUIERPIFVQREFURSBub3Qgc3VwcG9ydGVkIHdpdGggZXhjbHVzaW9uIGNvbnN0 cmFpbnRzCitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFsxLDIpIHwgWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSkKKygx IHJvdykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLQogLS0gdGVzdCBGSyBkZXBlbmRl bmNpZXMKIC0tCiAtLSBjYW4ndCBkcm9wIGEgcmFuZ2UgcmVmZXJlbmNlZCBieSBhbiBGSywg dW5sZXNzIHdpdGggQ0FTQ0FERQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv d2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292 ZXJsYXBzLnNxbAppbmRleCBkYTJiN2YxOWE4NS4uZWM0Nzg0NjU5NGUgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0zMTUsNiArMzE1LDEx OSBAQCBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1Qg KiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkOwogCistLQorLS0gT04gQ09ORkxJQ1QKKy0tCisKK1RSVU5DQVRFIHRl bXBvcmFsX3JuZzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0KSBW QUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJykp OworLS0gd2l0aCBhIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2 YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAw Ni0wMS0wMScpKSBPTiBDT05GTElDVCBETyBOT1RISU5HOworLS0gaWQgbWF0Y2hlcyBidXQg bm8gY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0KSBW QUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAxMC0wMS0wMScsICcyMDIwLTAxLTAxJykp IE9OIENPTkZMSUNUIERPIE5PVEhJTkc7CistLSBkYXRlIG1hdGNoZXMgYnV0IG5vIGNvbmZs aWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgn WzIsMyknLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScpKSBPTiBDT05G TElDVCBETyBOT1RISU5HOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ybmcgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworCitUUlVOQ0FURSB0ZW1wb3JhbF9ybmc7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2Uo JzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpKTsKKy0tIHdpdGggYSBjb25mbGljdAorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywg ZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgKGlk LCB2YWxpZF9hdCkgRE8gTk9USElORzsKKy0tIGlkIG1hdGNoZXMgYnV0IG5vIGNvbmZsaWN0 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzEs MiknLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAyMC0wMS0wMScpKSBPTiBDT05GTElD VCAoaWQsIHZhbGlkX2F0KSBETyBOT1RISU5HOworLS0gZGF0ZSBtYXRjaGVzIGJ1dCBubyBj b25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVF UyAoJ1syLDMpJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSkgT04g Q09ORkxJQ1QgKGlkLCB2YWxpZF9hdCkgRE8gTk9USElORzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcm5nIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworVFJVTkNBVEUgdGVtcG9yYWxf cm5nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAo J1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSk7CistLSB3 aXRoIGEgY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0 KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAx JykpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIERPIE5PVEhJ Tkc7CistLSBpZCBtYXRjaGVzIGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDEw LTAxLTAxJywgJzIwMjAtMDEtMDEnKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0ZW1w b3JhbF9ybmdfcGsgRE8gTk9USElORzsKKy0tIGRhdGUgbWF0Y2hlcyBidXQgbm8gY29uZmxp Y3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdb MiwzKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJykpIE9OIENPTkZM SUNUIE9OIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIERPIE5PVEhJTkc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3JuZyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKK1RSVU5DQVRF IHRlbXBvcmFsX3JuZzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0 KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAx JykpOworLS0gd2l0aCBhIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlk LCB2YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAn MjAwNi0wMS0wMScpKSBPTiBDT05GTElDVCAoaWQsIHZhbGlkX2F0KSBETyBVUERBVEUgU0VU IGlkID0gRVhDTFVERUQuaWQgKyAnWzIsMyknOworLS0gaWQgbWF0Y2hlcyBidXQgbm8gY29u ZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMg KCdbMSwyKScsIGRhdGVyYW5nZSgnMjAxMC0wMS0wMScsICcyMDIwLTAxLTAxJykpIE9OIENP TkZMSUNUIChpZCwgdmFsaWRfYXQpIERPIFVQREFURSBTRVQgaWQgPSBFWENMVURFRC5pZCAr ICdbMyw0KSc7CistLSBkYXRlIG1hdGNoZXMgYnV0IG5vIGNvbmZsaWN0CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzIsMyknLCBkYXRlcmFu Z2UoJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScpKSBPTiBDT05GTElDVCAoaWQsIHZhbGlk X2F0KSBETyBVUERBVEUgU0VUIGlkID0gRVhDTFVERUQuaWQgKyAnWzQsNSknOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ybmcgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCitUUlVOQ0FU RSB0ZW1wb3JhbF9ybmc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9h dCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0w MScpKTsKKy0tIHdpdGggYSBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChp ZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywg JzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdf cGsgRE8gVVBEQVRFIFNFVCBpZCA9IEVYQ0xVREVELmlkICsgJ1syLDMpJzsKKy0tIGlkIG1h dGNoZXMgYnV0IG5vIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2 YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAy MC0wMS0wMScpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBE TyBVUERBVEUgU0VUIGlkID0gRVhDTFVERUQuaWQgKyAnWzMsNCknOworLS0gZGF0ZSBtYXRj aGVzIGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFs aWRfYXQpIFZBTFVFUyAoJ1syLDMpJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYt MDEtMDEnKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgRE8g VVBEQVRFIFNFVCBpZCA9IEVYQ0xVREVELmlkICsgJ1s0LDUpJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcm5nIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0gd2l0aCBhIFVOSVFV RSBjb25zdHJhaW50OgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWwzX3VxIFVO SVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworVFJVTkNBVEUgdGVt cG9yYWwzOworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAo J1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSk7CistLSB3 aXRoIGEgY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KSBW QUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJykp IE9OIENPTkZMSUNUIERPIE5PVEhJTkc7CistLSBpZCBtYXRjaGVzIGJ1dCBubyBjb25mbGlj dAorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIp JywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMjAtMDEtMDEnKSkgT04gQ09ORkxJQ1Qg RE8gTk9USElORzsKKy0tIGRhdGUgbWF0Y2hlcyBidXQgbm8gY29uZmxpY3QKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMiwzKScsIGRhdGVyYW5n ZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJykpIE9OIENPTkZMSUNUIERPIE5PVEhJTkc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKK1RS VU5DQVRFIHRlbXBvcmFsMzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0 KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAx JykpOworLS0gd2l0aCBhIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2 YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAw Ni0wMS0wMScpKSBPTiBDT05GTElDVCAoaWQsIHZhbGlkX2F0KSBETyBOT1RISU5HOworLS0g aWQgbWF0Y2hlcyBidXQgbm8gY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQs IHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAxMC0wMS0wMScsICcy MDIwLTAxLTAxJykpIE9OIENPTkZMSUNUIChpZCwgdmFsaWRfYXQpIERPIE5PVEhJTkc7Cist LSBkYXRlIG1hdGNoZXMgYnV0IG5vIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMg KGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzIsMyknLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEn LCAnMjAwNi0wMS0wMScpKSBPTiBDT05GTElDVCAoaWQsIHZhbGlkX2F0KSBETyBOT1RISU5H OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCitU UlVOQ0FURSB0ZW1wb3JhbDM7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9h dCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0w MScpKTsKKy0tIHdpdGggYSBjb25mbGljdAorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwg dmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIw MDYtMDEtMDEnKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEgRE8g Tk9USElORzsKKy0tIGlkIG1hdGNoZXMgYnV0IG5vIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIw MTAtMDEtMDEnLCAnMjAyMC0wMS0wMScpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRl bXBvcmFsM191cSBETyBOT1RISU5HOworLS0gZGF0ZSBtYXRjaGVzIGJ1dCBubyBjb25mbGlj dAorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1syLDMp JywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSkgT04gQ09ORkxJQ1Qg T04gQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEgRE8gTk9USElORzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWwzIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworVFJVTkNBVEUgdGVtcG9yYWwz OworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIp JywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSk7CistLSB3aXRoIGEg Y29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMg KCdbMSwyKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJykpIE9OIENP TkZMSUNUIChpZCwgdmFsaWRfYXQpIERPIFVQREFURSBTRVQgaWQgPSBFWENMVURFRC5pZCAr ICdbMiwzKSc7CistLSBpZCBtYXRjaGVzIGJ1dCBubyBjb25mbGljdAorSU5TRVJUIElOVE8g dGVtcG9yYWwzIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcy MDEwLTAxLTAxJywgJzIwMjAtMDEtMDEnKSkgT04gQ09ORkxJQ1QgKGlkLCB2YWxpZF9hdCkg RE8gVVBEQVRFIFNFVCBpZCA9IEVYQ0xVREVELmlkICsgJ1szLDQpJzsKKy0tIGRhdGUgbWF0 Y2hlcyBidXQgbm8gY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlk X2F0KSBWQUxVRVMgKCdbMiwzKScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAx LTAxJykpIE9OIENPTkZMSUNUIChpZCwgdmFsaWRfYXQpIERPIFVQREFURSBTRVQgaWQgPSBF WENMVURFRC5pZCArICdbNCw1KSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsMyBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisKK1RSVU5DQVRFIHRlbXBvcmFsMzsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDEwLTAxLTAxJykpOworLS0gd2l0aCBhIGNvbmZsaWN0CitJTlNFUlQg SU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlcmFu Z2UoJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScpKSBPTiBDT05GTElDVCBPTiBDT05TVFJB SU5UIHRlbXBvcmFsM191cSBETyBVUERBVEUgU0VUIGlkID0gRVhDTFVERUQuaWQgKyAnWzIs MyknOworLS0gaWQgbWF0Y2hlcyBidXQgbm8gY29uZmxpY3QKK0lOU0VSVCBJTlRPIHRlbXBv cmFsMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5nZSgnMjAxMC0w MS0wMScsICcyMDIwLTAxLTAxJykpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGVtcG9y YWwzX3VxIERPIFVQREFURSBTRVQgaWQgPSBFWENMVURFRC5pZCArICdbMyw0KSc7CistLSBk YXRlIG1hdGNoZXMgYnV0IG5vIGNvbmZsaWN0CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlk LCB2YWxpZF9hdCkgVkFMVUVTICgnWzIsMyknLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAn MjAwNi0wMS0wMScpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRlbXBvcmFsM191cSBE TyBVUERBVEUgU0VUIGlkID0gRVhDTFVERUQuaWQgKyAnWzQsNSknOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCitEUk9QIFRBQkxFIHRlbXBv cmFsMzsKKwogLS0KIC0tIHRlc3QgRksgZGVwZW5kZW5jaWVzCiAtLQotLSAKMi40Mi4wCgo= --------------T23Cm3FyGPw2tFb4x0WA0pT5 Content-Type: text/x-patch; charset=UTF-8; name="v1-0002-Add-test-for-REPLICA-IDENTITY-with-a-temporal-key.patch" Content-Disposition: attachment; filename*0="v1-0002-Add-test-for-REPLICA-IDENTITY-with-a-temporal-key.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkOGExN2U2MGQ2Y2Q1ZjkzMmJkYzNlYTA5MTE3MzhmNjc1ZGJiMTg3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFR1ZSwgMjYgTWFyIDIwMjQgMjI6MzI6NTAgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxIDIvM10gQWRkIHRlc3QgZm9yIFJFUExJQ0EgSURFTlRJ VFkgd2l0aCBhIHRlbXBvcmFsIGtleQoKWW91IGNhbiBvbmx5IHVzZSBSRVBMSUNBIElERU5U SVRZIFVTSU5HIElOREVYIHdpdGggYSB1bmlxdWUgYi10cmVlCmluZGV4LiBUaGlzIGNvbW1p dCBqdXN0IGFkZHMgYSB0ZXN0IHNob3dpbmcgdGhhdCB5b3UgY2Fubm90IHVzZSBpdCB3aXRo CmEgV0lUSE9VVCBPVkVSTEFQUyBpbmRleCAod2hpY2ggaXMgR2lTVCkuCi0tLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCB8IDQgKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICAgICB8IDQgKysrKwog MiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRleCA5YzE1N2FkNjViMy4u ZDQ1MTM0M2FjZmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRo b3V0X292ZXJsYXBzLm91dApAQCAtNjI0LDYgKzYyNCwxMCBAQCBTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAoMSByb3cpCiAKIERST1AgVEFCTEUg dGVtcG9yYWwzOworLS0gQUxURVIgVEFCTEUgUkVQTElDQSBJREVOVElUWQorLS0gKHNob3Vs ZCBmYWlsKQorQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nIFJFUExJQ0EgSURFTlRJVFkgVVNJ TkcgSU5ERVggdGVtcG9yYWxfcm5nX3BrOworRVJST1I6ICBjYW5ub3QgdXNlIG5vbi11bmlx dWUgaW5kZXggInRlbXBvcmFsX3JuZ19wayIgYXMgcmVwbGljYSBpZGVudGl0eQogLS0KIC0t IHRlc3QgRksgZGVwZW5kZW5jaWVzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbAppbmRleCBlYzQ3ODQ2NTk0ZS4uNGQ5NTNiZTMwNmYgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC00MjgsNiAr NDI4LDEwIEBAIFNFTEVDVCAqIEZST00gdGVtcG9yYWwzIE9SREVSIEJZIGlkLCB2YWxpZF9h dDsKIAogRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAKKy0tIEFMVEVSIFRBQkxFIFJFUExJQ0Eg SURFTlRJVFkKKy0tIChzaG91bGQgZmFpbCkKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZyBS RVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlbXBvcmFsX3JuZ19wazsKKwogLS0KIC0t IHRlc3QgRksgZGVwZW5kZW5jaWVzCiAtLQotLSAKMi40Mi4wCgo= --------------T23Cm3FyGPw2tFb4x0WA0pT5 Content-Type: text/x-patch; charset=UTF-8; name="v1-0003-Don-t-treat-WITHOUT-OVERLAPS-indexes-as-unique-in.patch" Content-Disposition: attachment; filename*0="v1-0003-Don-t-treat-WITHOUT-OVERLAPS-indexes-as-unique-in.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwZDJmZTBlNzc4NTcwODQzZjQ0Y2UyNzRkYmRiZDlkZTEzMDIxMjYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFR1ZSwgMiBBcHIgMjAyNCAxNTozOTowNCAtMDcw MApTdWJqZWN0OiBbUEFUQ0ggdjEgMy8zXSBEb24ndCB0cmVhdCBXSVRIT1VUIE9WRVJMQVBT IGluZGV4ZXMgYXMgdW5pcXVlIGluCiBwbGFubmVyCgpCZWNhdXNlIHRoZSBzcGVjaWFsIHJh bmdldHlwZSAnZW1wdHknIG5ldmVyIG92ZXJsYXBzIGFub3RoZXIgdmFsdWUsIGl0CmlzIHBv c3NpYmxlIGZvciBXSVRIT1VUIE9WRVJMQVBTIHRhYmxlcyB0byBoYXZlIHR3byByb3dzIHdp dGggdGhlIHNhbWUKa2V5LCBkZXNwaXRlIGJlaW5nIGluZGlzdW5pcXVlLCBpZiB0aGUgYXBw bGljYXRpb24tdGltZSByYW5nZSBpcwonZW1wdHknLiBTbyB0byBiZSBzYWZlIHdlIHNob3Vs ZCBub3QgdHJlYXQgV0lUSE9VVCBPVkVSTEFQUyBpbmRleGVzIGFzCnVuaXF1ZSBpbiBhbnkg cHJvb2ZzLgoKVGhpcyBzdGlsbCBuZWVkcyBhIHRlc3QsIGJ1dCBJJ20gaGF2aW5nIHRyb3Vi bGUgZmluZGluZyBhIHF1ZXJ5IHRoYXQKZ2l2ZXMgd3JvbmcgcmVzdWx0cy4KLS0tCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jICAgICB8IDUgKysrLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jIHwgNiArKystLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyAgICAgIHwgMSArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICB8IDIgKysKIDQgZmlsZXMgY2hhbmdl ZCwgOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDMyYzZhOGJiZGNiLi41NmZhZTY2ZGFmNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCkBAIC0zNTY5LDEzICszNTY5 LDE0IEBAIHJlbGF0aW9uX2hhc191bmlxdWVfaW5kZXhfZXh0KFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAKIAkJLyoKIAkJICogSWYgdGhlIGluZGV4IGlzIG5vdCB1 bmlxdWUsIG9yIG5vdCBpbW1lZGlhdGVseSBlbmZvcmNlZCwgb3IgaWYgaXQncwotCQkgKiBh IHBhcnRpYWwgaW5kZXgsIGl0J3MgdXNlbGVzcyBoZXJlLiAgV2UncmUgdW5hYmxlIHRvIG1h a2UgdXNlIG9mCisJCSAqIGEgcGFydGlhbCBpbmRleCwgb3IgaWYgaXQncyBhIFdJVEhPVVQg T1ZFUkxBUFMgaW5kZXggKHNvIG5vdAorCQkgKiBsaXRlcmFsbHkgdW5pcXVlKSwgaXQncyB1 c2VsZXNzIGhlcmUuICBXZSdyZSB1bmFibGUgdG8gbWFrZSB1c2Ugb2YKIAkJICogcHJlZE9L IHBhcnRpYWwgdW5pcXVlIGluZGV4ZXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQKIAkJICogY2hl Y2tfaW5kZXhfcHJlZGljYXRlcygpIGFsc28gbWFrZXMgdXNlIG9mIGpvaW4gcHJlZGljYXRl cyB0bwogCQkgKiBkZXRlcm1pbmUgaWYgdGhlIHBhcnRpYWwgaW5kZXggaXMgdXNhYmxlLiBI ZXJlIHdlIG5lZWQgcHJvb2ZzIHRoYXQKIAkJICogaG9sZCB0cnVlIGJlZm9yZSBhbnkgam9p bnMgYXJlIGV2YWx1YXRlZC4KIAkJICovCi0JCWlmICghaW5kLT51bmlxdWUgfHwgIWluZC0+ aW1tZWRpYXRlIHx8IGluZC0+aW5kcHJlZCAhPSBOSUwpCisJCWlmICghaW5kLT51bmlxdWUg fHwgIWluZC0+aW1tZWRpYXRlIHx8IGluZC0+aW5kcHJlZCAhPSBOSUwgfHwgaW5kLT5oYXNw ZXJpb2QpCiAJCQljb250aW51ZTsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9hbmFseXplam9pbnMuYwppbmRleCA1MDZmY2NkMjBjOS4uM2QzMzJlMjA4ZjEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCkBAIC04NDgs OCArODQ4LDggQEAgcmVsX3N1cHBvcnRzX2Rpc3RpbmN0bmVzcyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsKQogCQkgKiBGb3IgYSBwbGFpbiByZWxhdGlvbiwgd2Ugb25s eSBrbm93IGhvdyB0byBwcm92ZSB1bmlxdWVuZXNzIGJ5CiAJCSAqIHJlZmVyZW5jZSB0byB1 bmlxdWUgaW5kZXhlcy4gIE1ha2Ugc3VyZSB0aGVyZSdzIGF0IGxlYXN0IG9uZQogCQkgKiBz dWl0YWJsZSB1bmlxdWUgaW5kZXguICBJdCBtdXN0IGJlIGltbWVkaWF0ZWx5IGVuZm9yY2Vk LCBhbmQgbm90IGEKLQkJICogcGFydGlhbCBpbmRleC4gKEtlZXAgdGhlc2UgY29uZGl0aW9u cyBpbiBzeW5jIHdpdGgKLQkJICogcmVsYXRpb25faGFzX3VuaXF1ZV9pbmRleF9mb3IhKQor CQkgKiBwYXJ0aWFsIGluZGV4LCBhbmQgbm90IFdJVEhPVVQgT1ZFUkxBUFMgKEtlZXAgdGhl c2UgY29uZGl0aW9ucworCQkgKiBpbiBzeW5jIHdpdGggcmVsYXRpb25faGFzX3VuaXF1ZV9p bmRleF9mb3IhKQogCQkgKi8KIAkJTGlzdENlbGwgICAqbGM7CiAKQEAgLTg1Nyw3ICs4NTcs NyBAQCByZWxfc3VwcG9ydHNfZGlzdGluY3RuZXNzKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwpCiAJCXsKIAkJCUluZGV4T3B0SW5mbyAqaW5kID0gKEluZGV4T3B0SW5m byAqKSBsZmlyc3QobGMpOwogCi0JCQlpZiAoaW5kLT51bmlxdWUgJiYgaW5kLT5pbW1lZGlh dGUgJiYgaW5kLT5pbmRwcmVkID09IE5JTCkKKwkJCWlmIChpbmQtPnVuaXF1ZSAmJiBpbmQt PmltbWVkaWF0ZSAmJiBpbmQtPmluZHByZWQgPT0gTklMICYmICFpbmQtPmhhc3BlcmlvZCkK IAkJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Bs YW5jYXQuYwppbmRleCBiMzI2MTQ3NWJkYi4uYTExMDAzNjk4OGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTQ0Niw2ICs0NDYsNyBAQCBnZXRfcmVsYXRp b25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wg aW5ocGFyZW50LAogCQkJaW5mby0+cHJlZE9LID0gZmFsc2U7CS8qIHNldCBsYXRlciwgaW4g aW5keHBhdGguYyAqLwogCQkJaW5mby0+dW5pcXVlID0gaW5kZXgtPmluZGlzdW5pcXVlOwog CQkJaW5mby0+aW1tZWRpYXRlID0gaW5kZXgtPmluZGltbWVkaWF0ZTsKKwkJCWluZm8tPmhh c3BlcmlvZCA9IGluZGV4LT5pbmRpc3VuaXF1ZSAmJiBpbmRleC0+aW5kaXNleGNsdXNpb247 CiAJCQlpbmZvLT5oeXBvdGhldGljYWwgPSBmYWxzZTsKIAogCQkJLyoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKaW5kZXggMGFiMjVkOWNlN2IuLjc4YjExZjRjYjVmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaApAQCAtMTE3Miw2ICsxMTcyLDggQEAgc3RydWN0IEluZGV4T3B0SW5mbwog CWJvb2wJCXVuaXF1ZTsKIAkvKiBpcyB1bmlxdWVuZXNzIGVuZm9yY2VkIGltbWVkaWF0ZWx5 PyAqLwogCWJvb2wJCWltbWVkaWF0ZTsKKwkvKiB0cnVlIGlmIGluZGV4IGhhcyBXSVRIT1VU IE9WRVJMQVBTICovCisJYm9vbAkJaGFzcGVyaW9kOwogCS8qIHRydWUgaWYgaW5kZXggZG9l c24ndCByZWFsbHkgZXhpc3QgKi8KIAlib29sCQloeXBvdGhldGljYWw7CiAKLS0gCjIuNDIu MAoK --------------T23Cm3FyGPw2tFb4x0WA0pT5--