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 1rLuQG-001JSI-Du for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Jan 2024 00:20:22 +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 1rLuQF-005ZVB-8F for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Jan 2024 00:20:19 +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 1rLuQD-005ZUt-F3 for pgsql-hackers@lists.postgresql.org; Sat, 06 Jan 2024 00:20:18 +0000 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rLuPx-0005Zc-GG for pgsql-hackers@lists.postgresql.org; Sat, 06 Jan 2024 00:20:15 +0000 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-6d9a795cffbso104566b3a.0 for ; Fri, 05 Jan 2024 16:20:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1704500400; x=1705105200; darn=lists.postgresql.org; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=nAV0jyyAYkdT+oV1S7YeEJ3BX7VDWBvgyPx4oClHL9A=; b=DDHLe9E3c7Z/eb7hSlyy9GxqT92ecj3K4IOO2ENOK62O9AIsAhC+euXuVQP5AE/IAd hnVmBTdapZgEutsin6kyX9GSRqdY75xXOaq8H8AfLh78KnWUHziqffhSDF9W1ROAQjla BEXghid53rnII98kTbuUOtjfki28Z7uifj6Df9vmWoUTYRiEk497Cf9rxQAPSUbqgfU+ XL5fefw1C3+vj3NXAU1ppWPhUMGwSeYXNKgS+ADj3W3sP9GRqGMp3sT7A2K4N3mvMjTx sMs2qnn19e0IZVAhW0mWaibGWVtjJnqAc1nn+ElNK74hETugv/2JrHJ2LqtyV2jCEmwi K65Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704500400; x=1705105200; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=nAV0jyyAYkdT+oV1S7YeEJ3BX7VDWBvgyPx4oClHL9A=; b=P0WQOW7ZFvjqt2b/LlqgnuvsQfFh6yLvudqKaHMCsQqZhbzKTg/r1nZp1vaicYAVAB m5WEXl+jNDzR2oUqHAMNUjUR1VQYGlz7yyqNAcj0sWgiuJEJiKFKafjx/NFrFtkLq19F z1xl3GRy/qcEIlZrORPQfhAxTibnCqtlELl8ybOYx5beBAdwsMF3002VR5WhLJ8PGyOR ZND+FqSBCUbRFct0K1XawzAkU6es7bdFtKOuqyb5yhU7IFyDt7TXUTDX1tvT2AMBGB8e G1YMDdZkkqgtu2xmnbWqWbzr+uXR4sKAgmIYDrLXK7KilO4sS7PI/8kxNqkXOofj7EGZ cjHA== X-Gm-Message-State: AOJu0YxurZCRofyJZXF/fka/Vd7UR6kYVzcDVqgPIHFr6hdhY6cKcNXv X+vLorm9GrwohTujf4XnVOsSS1wr/I4nhaI+s3lv1SlMt+A= X-Google-Smtp-Source: AGHT+IHguPSlMlg9R+vNA4B2aNDwvbbJk7qVRsNuqya9tYLgkpIzf2L5JzL4/CKviec1TAIQ3xyrzA== X-Received: by 2002:aa7:88c7:0:b0:6d9:bf50:196e with SMTP id k7-20020aa788c7000000b006d9bf50196emr3783953pff.19.1704500399069; Fri, 05 Jan 2024 16:19:59 -0800 (PST) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id z5-20020a636505000000b005ca0ae17983sm1931809pgb.8.2024.01.05.16.19.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Jan 2024 16:19:56 -0800 (PST) Content-Type: multipart/mixed; boundary="------------iqvziU4Z040MH3WdnoYY4mNT" Message-ID: <609ede69-49fb-4c45-acc8-544b72d6d5bb@illuminatedcomputing.com> Date: Fri, 5 Jan 2024 16:19:53 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US To: jian he Cc: Peter Eisentraut , PostgreSQL Hackers References: <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> From: Paul Jungwirth In-Reply-To: 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. --------------iqvziU4Z040MH3WdnoYY4mNT Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Getting caught up on reviews from November and December: On 11/19/23 22:57, jian he wrote: > > I believe the following part should fail. Similar tests on > src/test/regress/sql/generated.sql. line begin 347. > > drop table if exists gtest23a,gtest23x cascade; > CREATE TABLE gtest23a (x int4range, y int4range, > CONSTRAINT gtest23a_pk PRIMARY KEY (x, y WITHOUT OVERLAPS)); > CREATE TABLE gtest23x (a int4range, b int4range GENERATED ALWAYS AS > ('empty') STORED, > FOREIGN KEY (a, PERIOD b ) REFERENCES gtest23a(x, PERIOD y) ON UPDATE > CASCADE); -- should be error? Okay, I've added a restriction for temporal FKs too. But note this will change once the PERIODs patch (the last one here) is finished. When the generated column is for a PERIOD, there will be logic to "reroute" the updates to the constituent start/end columns instead. > begin; > drop table if exists fk, pk cascade; > CREATE TABLE pk (id int4range, valid_at int4range, > CONSTRAINT pk_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS) > ); > CREATE TABLE fk ( > id int4range,valid_at tsrange, parent_id int4range, > CONSTRAINT fk FOREIGN KEY (parent_id, valid_at) > REFERENCES pk > ); > rollback; > -- > the above query will return an error: number of referencing and > referenced columns for foreign key disagree. > but if you look at it closely, primary key and foreign key columns both are two! > The error should be saying valid_at should be specified with "PERIOD". Ah okay, thanks for the clarification! This is tricky because the user left out the PERIOD on the fk side, and left out the entire pk side, so those columns are just implicit. So there is no PERIOD anywhere. But I agree that if the pk has WITHOUT OVERLAPS, we should expect a corresponding PERIOD modifier on the fk side and explain that that's what's missing. The attached patches include that. > I found out other issues in v18. > I first do `git apply` then `git diff --check`, there is a white > space error in v18-0005. Fixed, thanks! > You also need to change update.sgml and delete.sgml Outputs part. > Since at most, it can return 'UPDATE 3' or 'DELETE 3'. This doesn't sound correct to me. An UPDATE or DELETE can target many rows. Also I don't think the inserted "leftovers" should be included in these counts. They represent the rows updated/deleted. > --the following query should work? > drop table pk; > CREATE table pk(a numrange PRIMARY key,b text); > insert into pk values('[1,10]'); > create or replace function demo1() returns void as $$ > declare lb numeric default 1; up numeric default 3; > begin > update pk for portion of a from lb to up set b = 'lb_to_up'; > return; > end > $$ language plpgsql; > select * from demo1(); Hmm this is a tough one. It is correct that the `FROM __ TO __` values cannot be column references. They are computed up front, not per row. One reason is they are used to search the table. In fact the standard basically allows nothing but literal strings here. See section 14.14, page 971 then look up on page 348 and on page 308. The most flexibility you get is you can add/subtract an interval to the datetime literal. We are already well past that by allowing expressions, (certain) functions, parameters, etc. OTOH in your plpgsql example they are not really columns. They just get represented as ColumnRefs and then passed to transformColumnRef. I'm surprised plpgsql does it that way. As a workaround you could use `EXECUTE format(...)`, but I'd love to make that work as you show instead. I'll keep working on this one but it's not done yet. Perhaps I can move the restriction into analysis/planning. If anyone has any advice it'd be welcome. On 12/6/23 05:22, jian he wrote: > this TODO: > * TODO: It sounds like FOR PORTION OF might need to do something here too? > based on comments on ExprContext. I refactor a bit, and solved this TODO. The patch looks wrong to me. We need to range targeted by `FROM __ TO __` to live for the whole statement, not just one tuple (see just above). That's why it gets computed in the Init function node. I don't think that TODO is needed anymore at all. Older versions of the patch had more expressions besides this one, and I think it was those I was concerned about. So I've removed the comment here. > tring to the following TODO: > // TODO: Need to save context->mtstate->mt_transition_capture? (See > comment on ExecInsert) > > but failed. > I also attached the trial, and also added the related test. > > You can also use the test to check portion update with insert trigger > with "referencing old table as old_table new table as new_table" > situation. Thank you for the test case! This is very helpful. So the problem is `referencing new table as new_table` gets lost. I don't have a fix yet but I'll work on it. On 12/11/23 00:31, jian he wrote: > - false); /* quiet */ > + false); /* quiet */ > > Is the above part unnecessary? Good catch! Fixed. > I am confused. so now I only apply v19, 0001 to 0003. > period_to_range function never used. maybe we can move this part to > 0005-Add PERIODs.patch? > Also you add change in Makefile in 0003, meson.build change in 0005, > better put it on in 0005? You're right, those changes should have been in the PERIODs patch. Moved. > +/* > + * We need to handle this shift/reduce conflict: > + * FOR PORTION OF valid_at FROM INTERVAL YEAR TO MONTH TO foo. > + * This is basically the classic "dangling else" problem, and we want a > + * similar resolution: treat the TO as part of the INTERVAL, not as part of > + * the FROM ... TO .... Users can add parentheses if that's a problem. > + * TO just needs to be higher precedence than YEAR_P etc. > + * TODO: I need to figure out a %prec solution before this gets committed! > + */ > +%nonassoc YEAR_P MONTH_P DAY_P HOUR_P MINUTE_P > +%nonassoc TO > > this part will never happen? > since "FROM INTERVAL YEAR TO MONTH TO" > means "valid_at" will be interval range data type, which does not exist now. It appears still needed to me. Without those lines I get 4 shift/reduce conflicts. Are you seeing something different? Or if you have a better solution I'd love to add it. I definitely need to fix this before that patch gets applied. > for all the refactor related to ri_PerformCheck, do you need (Datum) 0 > instead of plain 0? Casts added. > + > + If the table has a range column or > + PERIOD, > + you may supply a FOR PORTION OF clause, and > your delete will > + only affect rows that overlap the given interval. Furthermore, if > a row's span > > https://influentialpoints.com/Training/basic_statistics_ranges.htm#:~:text=A%20range%20is%20two%20numbers,or%20the%20difference%20between%20them > So "range" is more accurate than "interval"? I don't think we should be using R to define the terms "range" and "interval", which both already have meanings in Postgres, SQL, and the literature for temporal databases. But I'm planning to revise the docs' terminology here anyway. Some temporal database texts use "interval" in this sense, and I thought it was a decent term to mean "range or PERIOD". But now we need something to mean "range or multirange or custom type or PERIOD". Actually "portion" seems like maybe the best term, since the SQL syntax `FOR PORTION OF` reinforces that term. If you have suggestions I'm happy for ideas. > +/* ---------- > + * ForPortionOfState() > + * > + * Copies a ForPortionOfState into the current memory context. > + */ > +static ForPortionOfState * > +CopyForPortionOfState(ForPortionOfState *src) > +{ > + ForPortionOfState *dst = NULL; > + if (src) { > + MemoryContext oldctx; > + RangeType *r; > + TypeCacheEntry *typcache; > + > + /* > + * Need to lift the FOR PORTION OF details into a higher memory context > + * because cascading foreign key update/deletes can cause triggers to fire > + * triggers, and the AfterTriggerEvents will outlive the FPO > + * details of the original query. > + */ > + oldctx = MemoryContextSwitchTo(TopTransactionContext); > > should it be "Copy a ForPortionOfState into the TopTransactionContext"? You're right, the other function comments here use imperative mood. Changed. New patches attached, rebased to 43b46aae12. I'll work on your feedback from Jan 4 next. Thanks! -- Paul ~{:-) pj@illuminatedcomputing.com --------------iqvziU4Z040MH3WdnoYY4mNT Content-Type: text/x-patch; charset=UTF-8; name="v22-0001-Add-stratnum-GiST-support-function.patch" Content-Disposition: attachment; filename="v22-0001-Add-stratnum-GiST-support-function.patch" Content-Transfer-Encoding: base64 RnJvbSAyZmQ3ZWNlNGY4MmM3ZDEzMjJlOTU1YWE4MGYwOTE3ZmQ0NzhlNzhkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFdlZCwgMTMgRGVjIDIwMjMgMjE6MTc6NTMgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMiAxLzhdIEFkZCBzdHJhdG51bSBHaVNUIHN1cHBvcnQg ZnVuY3Rpb24KClRoaXMgaXMgc3VwcG9ydCBmdW5jdGlvbiAxMiBmb3IgdGhlIEdpU1QgQU0g YW5kIHRyYW5zbGF0ZXMgIndlbGwta25vd24iClJUKlN0cmF0ZWd5TnVtYmVyIHZhbHVlcyBp bnRvIHdoYXRldmVyIHN0cmF0ZWd5IG51bWJlciBpcyB1c2VkIGJ5IHRoZQpvcGNsYXNzIChz aW5jZSBubyBwYXJ0aWN1bGFyIG51bWJlcnMgYXJlIGFjdHVhbGx5IHJlcXVpcmVkKS4gV2Ug d2lsbCB1c2UKdGhpcyB0byBzdXBwb3J0IHRlbXBvcmFsIFBSSU1BUlkgS0VZL1VOSVFVRS9G T1JFSUdOIEtFWS9GT1IgUE9SVElPTiBPRgpmdW5jdGlvbmFsaXR5LgoKVGhpcyBjb21taXQg YWRkcyB0d28gaW1wbGVtZW50YXRpb25zLCBvbmUgZm9yIGludGVybmFsIEdpU1Qgb3BjbGFz c2VzCihqdXN0IGFuIGlkZW50aXR5IGZ1bmN0aW9uKSBhbmQgYW5vdGhlciBmb3IgYnRyZWVf Z2lzdCBvcGNsYXNzZXMuIEl0CnVwZGF0ZXMgYnRyZWVfZ2lzdCBmcm9tIDEuNyB0byAxLjgs IGFkZGluZyB0aGUgc3VwcG9ydCBmdW5jdGlvbiBmb3IgYWxsCml0cyBvcGNsYXNzZXMuCi0t LQogY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgMyAr LQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCAgfCA4NyAr KysrKysrKysrKysrKysrKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuY29u dHJvbCAgICAgICAgfCAgMiArLQogZG9jL3NyYy9zZ21sL2dpc3Quc2dtbCAgICAgICAgICAg ICAgICAgICAgICAgfCA2NiArKysrKysrKysrKysrKy0KIGRvYy9zcmMvc2dtbC94aW5kZXgu c2dtbCAgICAgICAgICAgICAgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3R1dGlsLmMgICAgICAgICAgIHwgNDIgKysrKysrKysrKwogc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMgICAgICAgfCAgOCArLQogc3JjL2luY2x1ZGUv YWNjZXNzL2dpc3QuaCAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hbXByb2MuZGF0ICAgICAgICAgICAgfCAxOCArKysrCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8IDEwICsrKwogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQgfCAyNSArKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbCAgICAgIHwgIDYgKysKIDEyIGZp bGVzIGNoYW5nZWQsIDI3MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEuOC5z cWwKCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvTWFrZWZpbGUgYi9jb250cmli L2J0cmVlX2dpc3QvTWFrZWZpbGUKaW5kZXggMDczZGNjNzQ1YzQuLmZhMWI5ODdiMzliIDEw MDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvTWFrZWZpbGUKKysrIGIvY29udHJpYi9i dHJlZV9naXN0L01ha2VmaWxlCkBAIC0zMyw3ICszMyw4IEBAIEVYVEVOU0lPTiA9IGJ0cmVl X2dpc3QKIERBVEEgPSBidHJlZV9naXN0LS0xLjAtLTEuMS5zcWwgXAogICAgICAgIGJ0cmVl X2dpc3QtLTEuMS0tMS4yLnNxbCBidHJlZV9naXN0LS0xLjIuc3FsIGJ0cmVlX2dpc3QtLTEu Mi0tMS4zLnNxbCBcCiAgICAgICAgYnRyZWVfZ2lzdC0tMS4zLS0xLjQuc3FsIGJ0cmVlX2dp c3QtLTEuNC0tMS41LnNxbCBcCi0gICAgICAgYnRyZWVfZ2lzdC0tMS41LS0xLjYuc3FsIGJ0 cmVlX2dpc3QtLTEuNi0tMS43LnNxbAorICAgICAgIGJ0cmVlX2dpc3QtLTEuNS0tMS42LnNx bCBidHJlZV9naXN0LS0xLjYtLTEuNy5zcWwgXAorCQkJIGJ0cmVlX2dpc3QtLTEuNy0tMS44 LnNxbAogUEdGSUxFREVTQyA9ICJidHJlZV9naXN0IC0gQi10cmVlIGVxdWl2YWxlbnQgR2lT VCBvcGVyYXRvciBjbGFzc2VzIgogCiBSRUdSRVNTID0gaW5pdCBpbnQyIGludDQgaW50OCBm bG9hdDQgZmxvYXQ4IGNhc2ggb2lkIHRpbWVzdGFtcCB0aW1lc3RhbXB0eiBcCmRpZmYgLS1n aXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43LS0xLjguc3FsIGIvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTJjMmU2YzE0YjIKLS0tIC9kZXYvbnVsbAor KysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43LS0xLjguc3FsCkBAIC0w LDAgKzEsODcgQEAKKy8qIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEu OC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwg cmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQUxURVIgRVhU RU5TSU9OIGJ0cmVlX2dpc3QgVVBEQVRFIFRPICcxLjgnIiB0byBsb2FkIHRoaXMgZmlsZS4g XHF1aXQKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3Rfb2lkX29wcyBVU0lORyBnaXN0 IEFERAorCUZVTkNUSU9OICAxMiAob2lkLCBvaWQpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGlu dDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50Ml9vcHMgVVNJTkcgZ2lz dCBBREQKKwlGVU5DVElPTiAgMTIgKGludDIsIGludDIpIGdpc3Rfc3RyYXRudW1fYnRyZWUg KGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50NF9vcHMgVVNJTkcg Z2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKGludDQsIGludDQpIGdpc3Rfc3RyYXRudW1fYnRy ZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50OF9vcHMgVVNJ TkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKGludDgsIGludDgpIGdpc3Rfc3RyYXRudW1f YnRyZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZmxvYXQ0X29w cyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAoZmxvYXQ0LCBmbG9hdDQpIGdpc3Rf c3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3Rf ZmxvYXQ4X29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAoZmxvYXQ4LCBmbG9h dDgpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFN SUxZIGdpc3RfdGltZXN0YW1wX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAo dGltZXN0YW1wLCB0aW1lc3RhbXApIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKwor QUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZXN0YW1wdHpfb3BzIFVTSU5HIGdpc3Qg QURECisJRlVOQ1RJT04gIDEyICh0aW1lc3RhbXB0eiwgdGltZXN0YW1wdHopIGdpc3Rfc3Ry YXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGlt ZV9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKHRpbWUsIHRpbWUpIGdpc3Rf c3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3Rf ZGF0ZV9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKGRhdGUsIGRhdGUpIGdp c3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdp c3RfaW50ZXJ2YWxfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChpbnRlcnZh bCwgaW50ZXJ2YWwpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BF UkFUT1IgRkFNSUxZIGdpc3RfY2FzaF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAg MTIgKG1vbmV5LCBtb25leSkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRF UiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9tYWNhZGRyX29wcyBVU0lORyBnaXN0IEFERAorCUZV TkNUSU9OICAxMiAobWFjYWRkciwgbWFjYWRkcikgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50 MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90ZXh0X29wcyBVU0lORyBnaXN0 IEFERAorCUZVTkNUSU9OICAxMiAodGV4dCwgdGV4dCkgZ2lzdF9zdHJhdG51bV9idHJlZSAo aW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9icGNoYXJfb3BzIFVTSU5H IGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChicGNoYXIsIGJwY2hhcikgZ2lzdF9zdHJhdG51 bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9ieXRlYV9v cHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKGJ5dGVhLCBieXRlYSkgZ2lzdF9z dHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9u dW1lcmljX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAobnVtZXJpYywgbnVt ZXJpYykgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBG QU1JTFkgZ2lzdF9iaXRfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChiaXQs IGJpdCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBG QU1JTFkgZ2lzdF92Yml0X29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAodmFy Yml0LCB2YXJiaXQpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BF UkFUT1IgRkFNSUxZIGdpc3RfaW5ldF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAg MTIgKGluZXQsIGluZXQpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIg T1BFUkFUT1IgRkFNSUxZIGdpc3RfY2lkcl9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElP TiAgMTIgKGNpZHIsIGNpZHIpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworLS0g YWRkZWQgaW4gMS4yOgorQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZXR6X29wcyBV U0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAodGltZXR6LCB0aW1ldHopIGdpc3Rfc3Ry YXRudW1fYnRyZWUgKGludDIpIDsKKworLS0gYWRkZWQgaW4gMS4zOgorQUxURVIgT1BFUkFU T1IgRkFNSUxZIGdpc3RfdXVpZF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIg KHV1aWQsIHV1aWQpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworLS0gYWRkZWQg aW4gMS40OgorQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfbWFjYWRkcjhfb3BzIFVTSU5H IGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChtYWNhZGRyOCwgbWFjYWRkcjgpIGdpc3Rfc3Ry YXRudW1fYnRyZWUgKGludDIpIDsKKworLS0gYWRkZWQgaW4gMS41OgorQUxURVIgT1BFUkFU T1IgRkFNSUxZIGdpc3RfZW51bV9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIg KGFueWVudW0sIGFueWVudW0pIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworLS0g YWRkZWQgaW4gMS43OgorQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYm9vbF9vcHMgVVNJ TkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKGJvb2wsIGJvb2wpIGdpc3Rfc3RyYXRudW1f YnRyZWUgKGludDIpIDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9n aXN0LmNvbnRyb2wgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250cm9sCmlu ZGV4IGZhOTE3MWE4MGEyLi5hYmY2NjUzOGYzMiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2dpc3QuY29udHJvbAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfZ2lzdC5jb250cm9sCkBAIC0xLDYgKzEsNiBAQAogIyBidHJlZV9naXN0IGV4dGVuc2lv bgogY29tbWVudCA9ICdzdXBwb3J0IGZvciBpbmRleGluZyBjb21tb24gZGF0YXR5cGVzIGlu IEdpU1QnCi1kZWZhdWx0X3ZlcnNpb24gPSAnMS43JworZGVmYXVsdF92ZXJzaW9uID0gJzEu OCcKIG1vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL2J0cmVlX2dpc3QnCiByZWxvY2F0YWJs ZSA9IHRydWUKIHRydXN0ZWQgPSB0cnVlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lz dC5zZ21sIGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCA5YWM2YjAzZTZlNC4uYmFh MjZjNjVjYzMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2dpc3Quc2dtbApAQCAtMjcyLDcgKzI3Miw3IEBAIENSRUFURSBJTkRFWCBP TiBteV90YWJsZSBVU0lORyBHSVNUIChteV9pbmV0X2NvbHVtbiBpbmV0X29wcyk7CiAKICA8 cGFyYT4KICAgIFRoZXJlIGFyZSBmaXZlIG1ldGhvZHMgdGhhdCBhbiBpbmRleCBvcGVyYXRv ciBjbGFzcyBmb3IKLSAgIDxhY3JvbnltPkdpU1Q8L2Fjcm9ueW0+IG11c3QgcHJvdmlkZSwg YW5kIHNpeCB0aGF0IGFyZSBvcHRpb25hbC4KKyAgIDxhY3JvbnltPkdpU1Q8L2Fjcm9ueW0+ IG11c3QgcHJvdmlkZSwgYW5kIHNldmVuIHRoYXQgYXJlIG9wdGlvbmFsLgogICAgQ29ycmVj dG5lc3Mgb2YgdGhlIGluZGV4IGlzIGVuc3VyZWQKICAgIGJ5IHByb3BlciBpbXBsZW1lbnRh dGlvbiBvZiB0aGUgPGZ1bmN0aW9uPnNhbWU8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPmNvbnNp c3RlbnQ8L2Z1bmN0aW9uPgogICAgYW5kIDxmdW5jdGlvbj51bmlvbjwvZnVuY3Rpb24+IG1l dGhvZHMsIHdoaWxlIGVmZmljaWVuY3kgKHNpemUgYW5kIHNwZWVkKSBvZiB0aGUKQEAgLTI5 NSw2ICsyOTUsMTAgQEAgQ1JFQVRFIElOREVYIE9OIG15X3RhYmxlIFVTSU5HIEdJU1QgKG15 X2luZXRfY29sdW1uIGluZXRfb3BzKTsKICAgIHVzZXItc3BlY2lmaWVkIHBhcmFtZXRlcnMu CiAgICBUaGUgb3B0aW9uYWwgZWxldmVudGggbWV0aG9kIDxmdW5jdGlvbj5zb3J0c3VwcG9y dDwvZnVuY3Rpb24+IGlzIHVzZWQgdG8KICAgIHNwZWVkIHVwIGJ1aWxkaW5nIGEgPGFjcm9u eW0+R2lTVDwvYWNyb255bT4gaW5kZXguCisgICBUaGUgb3B0aW9uYWwgdHdlbGZ0aCBtZXRo b2QgPGZ1bmN0aW9uPnN0cmF0bnVtPC9mdW5jdGlvbj4gaXMgdXNlZCB0byB0cmFuc2xhdGUK KyAgIHdlbGwta25vd24gPGxpdGVyYWw+UlQqU3RyYXRlZ3lOdW1iZXJzPC9saXRlcmFsPiAo ZnJvbQorICAgPGZpbGVuYW1lPnNyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oPC9maWxl bmFtZT4pIGludG8gc3RyYXRlZ3kgbnVtYmVycworICAgdXNlZCBieSB0aGUgb3BjbGFzcy4K ICA8L3BhcmE+CiAKICA8dmFyaWFibGVsaXN0PgpAQCAtMTE2OSw2ICsxMTczLDY2IEBAIG15 X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCiAgICAgICA8L3BhcmE+CiAgICAgIDwv bGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgPHRlcm0+PGZ1bmN0aW9uPnN0cmF0bnVtPC9mdW5jdGlvbj48L3Rlcm0+CisgICAgIDxs aXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIEdpdmVuIGFuIDxsaXRlcmFsPlJUKlN0 cmF0ZWd5TnVtYmVyPC9saXRlcmFsPiB2YWx1ZSBmcm9tCisgICAgICAgPGZpbGVuYW1lPnNy Yy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oPC9maWxlbmFtZT4sCisgICAgICAgcmV0dXJu cyBhIHN0cmF0ZWd5IG51bWJlciB1c2VkIGJ5IHRoaXMgb3BjbGFzcyBmb3IgbWF0Y2hpbmcg ZnVuY3Rpb25hbGl0eS4KKyAgICAgICBUaGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiA8bGl0 ZXJhbD5JbnZhbGlkU3RyYXRlZ3k8L2xpdGVyYWw+CisgICAgICAgaWYgdGhlIG9wY2xhc3Mg aGFzIG5vIG1hdGNoaW5nIHN0cmF0ZWd5LAorICAgICAgIG9yIGF0IGxlYXN0IGEgc3RyYXRl Z3kgbnVtYmVyIHRoYXQgaXNuJ3QgdXNlZCBieSB0aGlzIG9wY2xhc3MuCisgICAgICA8L3Bh cmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSA8YWNyb255bT5TUUw8L2Fjcm9ueW0+ IGRlY2xhcmF0aW9uIG9mIHRoZSBmdW5jdGlvbiBtdXN0IGxvb2sgbGlrZQorICAgICAgIHRo aXM6CisKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG15 X3N0cmF0bnVtKGludGVnZXIpCitSRVRVUk5TIGludGVnZXIKK0FTICdNT0RVTEVfUEFUSE5B TUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3Bh cmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG1hdGNoaW5nIGNvZGUgaW4gdGhl IEMgbW9kdWxlIGNvdWxkIHRoZW4gZm9sbG93IHRoaXMgc2tlbGV0b246CisKKzxwcm9ncmFt bGlzdGluZz4KK1BHX0ZVTkNUSU9OX0lORk9fVjEobXlfc3RyYXRudW0pOworCitEYXR1bQor bXlfc3RyYXRudW0oUEdfRlVOQ1RJT05fQVJHUykKK3sKKyAgICBTdHJhdGVneU51bWJlciBz dHJhdGVneSA9IChTdHJhdGVneU51bWJlcikgUEdfR0VUQVJHX1VJTlQxNigxKTsKKyAgICBT dHJhdGVneU51bWJlciByZXQgPSBJbnZhbGlkU3RyYXRlZ3k7CisKKyAgICBzd2l0Y2ggKHN0 cmF0ZWd5KQorICAgIHsKKyAgICAgICAgY2FzZSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI6Cisg ICAgICAgICAgICByZXQgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisgICAgfQorCisgICAg UEdfUkVUVVJOX1VJTlQxNihyZXQpOworfQorPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwv cGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgVHdvIHRyYW5zbGF0aW9uIGZ1bmN0aW9u cyBhcmUgcHJvdmlkZWQgYnkgUG9zdGdyZXM6CisgICAgICAgPGxpdGVyYWw+Z2lzdF9zdHJh dG51bV9pZGVudGl0eTwvbGl0ZXJhbD4gaXMgZm9yIG9wY2xhc3NlcyB0aGF0CisgICAgICAg YWxyZWFkeSB1c2UgdGhlIDxsaXRlcmFsPlJUKlN0cmF0ZWd5TnVtYmVyPC9saXRlcmFsPiBj b25zdGFudHMuCisgICAgICAgSXQgcmV0dXJucyB3aGF0ZXZlciBpcyBwYXNzZWQgdG8gaXQu CisgICAgICAgPGxpdGVyYWw+Z2lzdF9zdHJhdG51bV9idHJlZTwvbGl0ZXJhbD4gaXMgZm9y IG9wY2xhc3NlcyB0aGF0CisgICAgICAgdXNlIHRoZSA8bGl0ZXJhbD5CVCpTdHJhdGVneU51 bWJlcjwvbGl0ZXJhbD4gY29uc3RhbnRzCisgICAgICAgKGxpa2UgdGhvc2UgaW4gPGxpdGVy YWw+YnRyZWVfZ2lzdDwvbGl0ZXJhbD4pLgorICAgICAgIEl0IHJldHVybnMgPGxpdGVyYWw+ QlRFcXVhbFN0cmF0ZWd5TnVtYmVyPC9saXRlcmFsPiBmb3IgZXF1YWxzLAorICAgICAgIGFu ZCA8bGl0ZXJhbD5JbnZhbGlkU3RyYXRlZ3k8L2xpdGVyYWw+IGZvciBldmVyeXRoaW5nIGVs c2UuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50 cnk+CiAgIDwvdmFyaWFibGVsaXN0PgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3hpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3hpbmRleC5zZ21sCmluZGV4IDIy ZDhhZDFhYWM0Li44YzRlZGUzMTA1NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3hpbmRl eC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbApAQCAtNTA4LDcgKzUwOCw3 IEBACiAgICA8L3RhYmxlPgogCiAgIDxwYXJhPgotICAgR2lTVCBpbmRleGVzIGhhdmUgZWxl dmVuIHN1cHBvcnQgZnVuY3Rpb25zLCBzaXggb2Ygd2hpY2ggYXJlIG9wdGlvbmFsLAorICAg R2lTVCBpbmRleGVzIGhhdmUgdHdlbHZlIHN1cHBvcnQgZnVuY3Rpb25zLCBzZXZlbiBvZiB3 aGljaCBhcmUgb3B0aW9uYWwsCiAgICBhcyBzaG93biBpbiA8eHJlZiBsaW5rZW5kPSJ4aW5k ZXgtZ2lzdC1zdXBwb3J0LXRhYmxlIi8+LgogICAgKEZvciBtb3JlIGluZm9ybWF0aW9uIHNl ZSA8eHJlZiBsaW5rZW5kPSJnaXN0Ii8+LikKICAgPC9wYXJhPgpAQCAtNTkwLDYgKzU5MCwx MiBAQAogICAgICAgICAob3B0aW9uYWwpPC9lbnRyeT4KICAgICAgICA8ZW50cnk+MTE8L2Vu dHJ5PgogICAgICAgPC9yb3c+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeT48ZnVuY3Rp b24+c3RyYXRudW08L2Z1bmN0aW9uPjwvZW50cnk+CisgICAgICAgPGVudHJ5PnRyYW5zbGF0 ZSB3ZWxsLWtub3duIHN0cmF0ZWd5IG51bWJlcnMgdG8gb25lcworICAgICAgICB1c2VkIGJ5 IHRoZSBvcGNsYXNzIChvcHRpb25hbCk8L2VudHJ5PgorICAgICAgIDxlbnRyeT4xMjwvZW50 cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICA8L3Rncm91cD4KICAgIDwv dGFibGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwppbmRleCBkZGRjMDg4OTNh MS4uNWJmMTNlYzY4MGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3R1dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAt MjMsNiArMjMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaW5kZXhmc20uaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgorI2luY2x1ZGUg InV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK QEAgLTEwNTYsMyArMTA1Nyw0NCBAQCBnaXN0R2V0RmFrZUxTTihSZWxhdGlvbiByZWwpCiAJ CXJldHVybiBHZXRGYWtlTFNORm9yVW5sb2dnZWRSZWwoKTsKIAl9CiB9CisKKy8qCisgKiBS ZXR1cm5zIHRoZSBzYW1lIG51bWJlciB0aGF0IHdhcyByZWNlaXZlZC4KKyAqCisgKiBUaGlz IGlzIGZvciBHaVNUIG9wY2xhc3NlcyB0aGF0IHVzZSB0aGUgUlQqU3RyYXRlZ3lOdW1iZXIg Y29uc3RhbnRzLgorICovCitEYXR1bQorZ2lzdF9zdHJhdG51bV9pZGVudGl0eShQR19GVU5D VElPTl9BUkdTKQoreworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUEdfR0VUQVJHX1VJTlQx NigwKTsKKworCVBHX1JFVFVSTl9VSU5UMTYoc3RyYXQpOworfQorCisvKgorICogUmV0dXJu cyB0aGUgYnRyZWUgbnVtYmVyIGZvciBlcXVhbHMsIG90aGVyd2lzZSBpbnZhbGlkLgorICoK KyAqIFRoaXMgaXMgZm9yIEdpU1Qgb3BjbGFzc2VzIGluIGJ0cmVlX2dpc3QgKGFuZCBtYXli ZSBlbHNld2hlcmUpCisgKiB0aGF0IHVzZSB0aGUgQlQqU3RyYXRlZ3lOdW1iZXIgY29uc3Rh bnRzLgorICovCitEYXR1bQorZ2lzdF9zdHJhdG51bV9idHJlZShQR19GVU5DVElPTl9BUkdT KQoreworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUEdfR0VUQVJHX1VJTlQxNigwKTsKKwor CXN3aXRjaCAoc3RyYXQpCisJeworCQljYXNlIFJURXF1YWxTdHJhdGVneU51bWJlcjoKKwkJ CVBHX1JFVFVSTl9VSU5UMTYoQlRFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKKwkJY2FzZSBSVExl c3NTdHJhdGVneU51bWJlcjoKKwkJCVBHX1JFVFVSTl9VSU5UMTYoQlRMZXNzU3RyYXRlZ3lO dW1iZXIpOworCQljYXNlIFJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQlQR19SRVRV Uk5fVUlOVDE2KEJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQljYXNlIFJUR3JlYXRl clN0cmF0ZWd5TnVtYmVyOgorCQkJUEdfUkVUVVJOX1VJTlQxNihCVEdyZWF0ZXJTdHJhdGVn eU51bWJlcik7CisJCWNhc2UgUlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCVBH X1JFVFVSTl9VSU5UMTYoQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcik7CisJCWRlZmF1 bHQ6CisJCQlQR19SRVRVUk5fVUlOVDE2KEludmFsaWRTdHJhdGVneSk7CisJfQorfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYwppbmRleCA3ZTJhNzE1MjAwYS4u Njk4ZTAxZWQyZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2 YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5j CkBAIC0xNDcsNiArMTQ3LDEwIEBAIGdpc3R2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJ CQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgVk9JRE9J RCwgdHJ1ZSwKIAkJCQkJCQkJCQkJMSwgMSwgSU5URVJOQUxPSUQpOwogCQkJCWJyZWFrOwor CQkJY2FzZSBHSVNUX1NUUkFUTlVNX1BST0M6CisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2ln bmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVDJPSUQsIHRydWUsCisJCQkJCQkJCQkJCTEs IDEsIElOVDJPSUQpOworCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQllcmVwb3J0KElO Rk8sCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04p LApAQCAtMjY3LDcgKzI3MSw4IEBAIGdpc3R2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJ CWNvbnRpbnVlOwkJCS8qIGdvdCBpdCAqLwogCQlpZiAoaSA9PSBHSVNUX0RJU1RBTkNFX1BS T0MgfHwgaSA9PSBHSVNUX0ZFVENIX1BST0MgfHwKIAkJCWkgPT0gR0lTVF9DT01QUkVTU19Q Uk9DIHx8IGkgPT0gR0lTVF9ERUNPTVBSRVNTX1BST0MgfHwKLQkJCWkgPT0gR0lTVF9PUFRJ T05TX1BST0MgfHwgaSA9PSBHSVNUX1NPUlRTVVBQT1JUX1BST0MpCisJCQlpID09IEdJU1Rf T1BUSU9OU19QUk9DIHx8IGkgPT0gR0lTVF9TT1JUU1VQUE9SVF9QUk9DIHx8CisJCQlpID09 IEdJU1RfU1RSQVROVU1fUFJPQykKIAkJCWNvbnRpbnVlOwkJCS8qIG9wdGlvbmFsIG1ldGhv ZHMgKi8KIAkJZXJlcG9ydChJTkZPLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCkBAIC0zMzksNiArMzQ0LDcgQEAgZ2lzdGFkanVzdG1lbWJl cnMoT2lkIG9wZmFtaWx5b2lkLAogCQkJY2FzZSBHSVNUX0ZFVENIX1BST0M6CiAJCQljYXNl IEdJU1RfT1BUSU9OU19QUk9DOgogCQkJY2FzZSBHSVNUX1NPUlRTVVBQT1JUX1BST0M6CisJ CQljYXNlIEdJU1RfU1RSQVROVU1fUFJPQzoKIAkJCQkvKiBPcHRpb25hbCwgc28gZm9yY2Ug aXQgdG8gYmUgYSBzb2Z0IGZhbWlseSBkZXBlbmRlbmN5ICovCiAJCQkJb3AtPnJlZl9pc19o YXJkID0gZmFsc2U7CiAJCQkJb3AtPnJlZl9pc19mYW1pbHkgPSB0cnVlOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 LmgKaW5kZXggYzZkY2Q2YTkwZGQuLmU3Y2VkMThhNWJhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2lzdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKQEAg LTM4LDcgKzM4LDggQEAKICNkZWZpbmUgR0lTVF9GRVRDSF9QUk9DCQkJCQk5CiAjZGVmaW5l IEdJU1RfT1BUSU9OU19QUk9DCQkJCTEwCiAjZGVmaW5lIEdJU1RfU09SVFNVUFBPUlRfUFJP QwkJCTExCi0jZGVmaW5lIEdJU1ROUHJvY3MJCQkJCTExCisjZGVmaW5lIEdJU1RfU1RSQVRO VU1fUFJPQwkJCQkxMgorI2RlZmluZSBHSVNUTlByb2NzCQkJCQkxMgogCiAvKgogICogUGFn ZSBvcGFxdWUgZGF0YSBpbiBhIEdpU1QgaW5kZXggcGFnZS4KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW1wcm9jLmRhdAppbmRleCBmNjM5YzNhNmE1MS4uMzUyNTU4YzFmMDYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAgLTUwNyw2ICs1MDcsOSBAQAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2JveCcsIGFtcHJvY251bSA9PiAnNycsIGFtcHJvYyA9PiAnZ2lzdF9ib3hf c2FtZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L2JveF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnYm94JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdib3gnLCBhbXByb2NudW0g PT4gJzgnLCBhbXByb2MgPT4gJ2dpc3RfYm94X2Rpc3RhbmNlJyB9LAoreyBhbXByb2NmYW1p bHkgPT4gJ2dpc3QvYm94X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdib3gnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ2JveCcsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4g J2dpc3Rfc3RyYXRudW1faWRlbnRpdHknIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9w b2x5X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwb2x5Z29uJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdwb2x5Z29uJywgYW1wcm9jbnVtID0+ICcxJywKICAgYW1wcm9jID0+ICdnaXN0 X3BvbHlfY29uc2lzdGVudCcgfSwKQEAgLTUyNiw2ICs1MjksOSBAQAogeyBhbXByb2NmYW1p bHkgPT4gJ2dpc3QvcG9seV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncG9seWdvbicsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAncG9seWdvbicsIGFtcHJvY251bSA9PiAnOCcsCiAgIGFt cHJvYyA9PiAnZ2lzdF9wb2x5X2Rpc3RhbmNlJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2dp c3QvcG9seV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncG9seWdvbicsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAncG9seWdvbicsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4g J2dpc3Rfc3RyYXRudW1faWRlbnRpdHknIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9j aXJjbGVfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NpcmNsZScsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnY2lyY2xlJywgYW1wcm9jbnVtID0+ICcxJywKICAgYW1wcm9jID0+ICdnaXN0 X2NpcmNsZV9jb25zaXN0ZW50JyB9LApAQCAtNTQ0LDYgKzU1MCw5IEBACiB7IGFtcHJvY2Zh bWlseSA9PiAnZ2lzdC9jaXJjbGVfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NpcmNsZScs CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2lyY2xlJywgYW1wcm9jbnVtID0+ICc4JywKICAg YW1wcm9jID0+ICdnaXN0X2NpcmNsZV9kaXN0YW5jZScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ ICdnaXN0L2NpcmNsZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2lyY2xlJywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICdjaXJjbGUnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1wcm9j ID0+ICdnaXN0X3N0cmF0bnVtX2lkZW50aXR5JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dp c3QvdHN2ZWN0b3Jfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RzdmVjdG9yJywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICd0c3ZlY3RvcicsIGFtcHJvY251bSA9PiAnMScsCiAgIGFtcHJv YyA9PiAnZ3RzdmVjdG9yX2NvbnNpc3RlbnQoaW50ZXJuYWwsdHN2ZWN0b3IsaW50MixvaWQs aW50ZXJuYWwpJyB9LApAQCAtNTk4LDYgKzYwNyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAn Z2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICc3JywKICAgYW1wcm9j ID0+ICdyYW5nZV9naXN0X3NhbWUnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5n ZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnZ2lz dF9zdHJhdG51bV9pZGVudGl0eScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L25ldHdv cmtfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUg PT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzEnLAogICBhbXByb2MgPT4gJ2luZXRfZ2lzdF9j b25zaXN0ZW50JyB9LApAQCAtNjE0LDYgKzYyNiw5IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnNycsIGFtcHJvYyA9PiAnaW5ldF9naXN0X3NhbWUn IH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9uZXR3b3JrX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVt ID0+ICc5JywgYW1wcm9jID0+ICdpbmV0X2dpc3RfZmV0Y2gnIH0sCit7IGFtcHJvY2ZhbWls eSA9PiAnZ2lzdC9uZXR3b3JrX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKKyAg YW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJv YyA9PiAnZ2lzdF9zdHJhdG51bV9pZGVudGl0eScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdn aXN0L211bHRpcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2Un LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4g JzEnLAogICBhbXByb2MgPT4gJ211bHRpcmFuZ2VfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAt NjMyLDYgKzY0Nyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1wcm9jbnVtID0+ICc3JywKICAgYW1wcm9jID0+ ICdyYW5nZV9naXN0X3NhbWUnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJh bmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKKyAgYW1wcm9j cmlnaHR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFt cHJvYyA9PiAnZ2lzdF9zdHJhdG51bV9pZGVudGl0eScgfSwKIAogIyBnaW4KIHsgYW1wcm9j ZmFtaWx5ID0+ICdnaW4vYXJyYXlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueWFycmF5 JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDc5NzkzOTI3NzZkLi41OWIwYTY5 NzQ5NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjE0Myw0ICsxMjE0Mywx NCBAQAogICBwcm9hcmduYW1lcyA9PiAne3RsaSxzdGFydF9sc24sZW5kX2xzbixyZWxmaWxl bm9kZSxyZWx0YWJsZXNwYWNlLHJlbGRhdGFiYXNlLHJlbGZvcmtudW1iZXIscmVsYmxvY2tu dW1iZXIsaXNfbGltaXRfYmxvY2t9JywKICAgcHJvc3JjID0+ICdwZ193YWxfc3VtbWFyeV9j b250ZW50cycgfSwKIAorIyBHaVNUIHN0cmF0bnVtIGltcGxlbWVudGF0aW9ucworeyBvaWQg PT4gJzgwNDcnLCBkZXNjciA9PiAnR2lTVCBzdXBwb3J0JywKKyAgcHJvbmFtZSA9PiAnZ2lz dF9zdHJhdG51bV9pZGVudGl0eScsIHByb3JldHR5cGUgPT4gJ2ludDInLAorICBwcm9hcmd0 eXBlcyA9PiAnaW50MicsCisgIHByb3NyYyA9PiAnZ2lzdF9zdHJhdG51bV9pZGVudGl0eScg fSwKK3sgb2lkID0+ICc4MDQ4JywgZGVzY3IgPT4gJ0dpU1Qgc3VwcG9ydCcsCisgIHByb25h bWUgPT4gJ2dpc3Rfc3RyYXRudW1fYnRyZWUnLCBwcm9yZXR0eXBlID0+ICdpbnQyJywKKyAg cHJvYXJndHlwZXMgPT4gJ2ludDInLAorICBwcm9zcmMgPT4gJ2dpc3Rfc3RyYXRudW1fYnRy ZWUnIH0sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlz Y19mdW5jdGlvbnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0 aW9ucy5vdXQKaW5kZXggOTMwMjEzNDA3NzMuLjU0N2FmODk0YWFhIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dApAQCAtNjcwLDMgKzY3 MCwyOCBAQCBGUk9NIHBnX3dhbGZpbGVfbmFtZV9vZmZzZXQoJzAvMCc6OnBnX2xzbiArIDpz ZWdtZW50X3NpemUgLSAxKSwKICAgICAgICAgICAgICAgMCB8IHQKICgxIHJvdykKIAorLS0g dGVzdCBzdHJhdG51bSBzdXBwb3J0IGZ1bmNzCitTRUxFQ1QgZ2lzdF9zdHJhdG51bV9pZGVu dGl0eSgzOjpzbWFsbGludCk7CisgZ2lzdF9zdHJhdG51bV9pZGVudGl0eSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgIDMKKygxIHJvdykKKwor U0VMRUNUIGdpc3Rfc3RyYXRudW1faWRlbnRpdHkoMTg6OnNtYWxsaW50KTsKKyBnaXN0X3N0 cmF0bnVtX2lkZW50aXR5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAxOAorKDEgcm93KQorCitTRUxFQ1QgZ2lzdF9zdHJhdG51bV9idHJlZSgz OjpzbWFsbGludCk7CisgZ2lzdF9zdHJhdG51bV9idHJlZSAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworU0VMRUNUIGdpc3Rfc3Ry YXRudW1fYnRyZWUoMTg6OnNtYWxsaW50KTsKKyBnaXN0X3N0cmF0bnVtX2J0cmVlIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgMworKDEgcm93KQorCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwKaW5kZXggZDNkYzU5MTE3 M2QuLjRhOWE5Y2ZhNWQ5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNj X2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlv bnMuc3FsCkBAIC0yNTAsMyArMjUwLDkgQEAgRlJPTSBwZ193YWxmaWxlX25hbWVfb2Zmc2V0 KCcwLzAnOjpwZ19sc24gKyA6c2VnbWVudF9zaXplICsgMSksCiBTRUxFQ1Qgc2VnbWVudF9u dW1iZXIsIGZpbGVfb2Zmc2V0ID0gOnNlZ21lbnRfc2l6ZSAtIDEKIEZST00gcGdfd2FsZmls ZV9uYW1lX29mZnNldCgnMC8wJzo6cGdfbHNuICsgOnNlZ21lbnRfc2l6ZSAtIDEpLAogICAg ICBwZ19zcGxpdF93YWxmaWxlX25hbWUoZmlsZV9uYW1lKTsKKworLS0gdGVzdCBzdHJhdG51 bSBzdXBwb3J0IGZ1bmNzCitTRUxFQ1QgZ2lzdF9zdHJhdG51bV9pZGVudGl0eSgzOjpzbWFs bGludCk7CitTRUxFQ1QgZ2lzdF9zdHJhdG51bV9pZGVudGl0eSgxODo6c21hbGxpbnQpOwor U0VMRUNUIGdpc3Rfc3RyYXRudW1fYnRyZWUoMzo6c21hbGxpbnQpOworU0VMRUNUIGdpc3Rf c3RyYXRudW1fYnRyZWUoMTg6OnNtYWxsaW50KTsKLS0gCjIuNDIuMAoK --------------iqvziU4Z040MH3WdnoYY4mNT Content-Type: text/x-patch; charset=UTF-8; name="v22-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v22-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBiYzVhM2Y2NzEyOTJkMjlhY2QzYzA1ZWE4ODNjZTFkZjA0MDIyZWVjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMiAyLzhdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBvbmx5IHJhbmdlCiAgY29sdW1ucywgbm90IHll dCBQRVJJT0RzICh3aGljaCB3ZSdsbCBhZGQgc29vbikuCi0gVGVtcG9yYWwgUFJJTUFSWSBL RVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMgYXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhl cyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVzLCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxs eQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMg b2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhlIHRlbXBvcmFsIHBhcnQuCi0gQWRkZWQgcGdf Y29uc3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMg YQogIHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgZG9jcyBhbmQgdGVzdHMuCi0gQWRk ZWQgcGdfZHVtcCBzdXBwb3J0LgotLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICB8ICAgMyArLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQgIHwgIDMxICsrCiBjb250cmliL2J0cmVlX2dpc3Qvc3FsL3dp dGhvdXRfb3ZlcmxhcHMuc3FsICAgfCAgMTMgKwogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwg ICAgICAgICAgICAgICAgICAgICAgICB8ICAxOCArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwgIDM5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dXRpbC5jICAgICAgICAgICAgfCAgMjkgKysKIHNyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8IDE1NyArKysrKystCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgMjkgKy0K IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAyOCAr LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE0 ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAg MTggKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8 ICAxNiArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAg ICB8ICA0MCArKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmggICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAg ICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAg ICAgICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAg ICAgICAgICAgICAgIHwgICAyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zl cmxhcHMub3V0ICAgICB8IDM5NSArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgMjkwICsrKysrKysrKysrKysK IDMzIGZpbGVzIGNoYW5nZWQsIDExMzEgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9idHJlZV9naXN0 L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAoKZGlmZiAt LWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9NYWtlZmlsZQppbmRleCBmYTFiOTg3YjM5Yi4uNjJhZWZhZGQ4MWUgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZQorKysgYi9jb250cmliL2J0cmVlX2dpc3Qv TWFrZWZpbGUKQEAgLTM5LDcgKzM5LDggQEAgUEdGSUxFREVTQyA9ICJidHJlZV9naXN0IC0g Qi10cmVlIGVxdWl2YWxlbnQgR2lTVCBvcGVyYXRvciBjbGFzc2VzIgogCiBSRUdSRVNTID0g aW5pdCBpbnQyIGludDQgaW50OCBmbG9hdDQgZmxvYXQ4IGNhc2ggb2lkIHRpbWVzdGFtcCB0 aW1lc3RhbXB0eiBcCiAgICAgICAgIHRpbWUgdGltZXR6IGRhdGUgaW50ZXJ2YWwgbWFjYWRk ciBtYWNhZGRyOCBpbmV0IGNpZHIgdGV4dCB2YXJjaGFyIGNoYXIgXAotICAgICAgICBieXRl YSBiaXQgdmFyYml0IG51bWVyaWMgdXVpZCBub3RfZXF1YWwgZW51bSBib29sIHBhcnRpdGlv bnMKKyAgICAgICAgYnl0ZWEgYml0IHZhcmJpdCBudW1lcmljIHV1aWQgbm90X2VxdWFsIGVu dW0gYm9vbCBwYXJ0aXRpb25zIFwKKyAgICAgICAgd2l0aG91dF9vdmVybGFwcwogCiBTSExJ Ql9MSU5LICs9ICQoZmlsdGVyIC1sbSwgJChMSUJTKSkKIApkaWZmIC0tZ2l0IGEvY29udHJp Yi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvY29udHJpYi9i dHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNjkyNzI2ODhmYgotLS0gL2Rldi9udWxsCisr KyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApA QCAtMCwwICsxLDMxIEBACistLSBDb3JlIG11c3QgdGVzdCBXSVRIT1VUIE9WRVJMQVBTCist LSB3aXRoIGFuIGludDRyYW5nZSArIHRzcmFuZ2UsCistLSBzbyBoZXJlIHdlIGRvIHNvbWUg c2ltcGxlIHRlc3RzCistLSB0byBtYWtlIHN1cmUgaW50ICsgdHNyYW5nZSB3b3JrcyB0b28s CistLSBzaW5jZSB0aGF0IGlzIHRoZSBleHBlY3RlZCB1c2UtY2FzZS4KK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ybmcgKAorICBpZCBpbnRlZ2VyLAorICB2YWxpZF9hdCB0c3JhbmdlLAor ICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nCisgICAgICAgICAgICAg VGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmciCisgIENvbHVtbiAgfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICB8IGludGVnZXIgfCAg ICAgICAgICAgfCBub3QgbnVsbCB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmdfcGsiIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKworU0VMRUNUIHBnX2dl dF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGVtcG9yYWxfcm5nX3BrJzsKKyAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVm ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nX3BrIE9OIHRlbXBvcmFsX3JuZyBV U0lORyBnaXN0IChpZCwgdmFsaWRfYXQpCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9jb250cmliL2J0cmVl X2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi45ODY2NWRiYjllYwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRy aWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTAsMCArMSwxMyBA QAorLS0gQ29yZSBtdXN0IHRlc3QgV0lUSE9VVCBPVkVSTEFQUworLS0gd2l0aCBhbiBpbnQ0 cmFuZ2UgKyB0c3JhbmdlLAorLS0gc28gaGVyZSB3ZSBkbyBzb21lIHNpbXBsZSB0ZXN0cwor LS0gdG8gbWFrZSBzdXJlIGludCArIHRzcmFuZ2Ugd29ya3MgdG9vLAorLS0gc2luY2UgdGhh dCBpcyB0aGUgZXhwZWN0ZWQgdXNlLWNhc2UuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5n ICgKKyAgaWQgaW50ZWdlciwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5n X3BrJzsKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCmluZGV4IDNlYzczOTFlYzVlLi42MThhMDVhYzg5NiAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwKQEAgLTI3MDksNiArMjcwOSwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJs ZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4m bAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb253aXRob3V0b3Zlcmxh cHM8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgVGhpcyBjb25zdHJhaW50IGlzIGRlZmluZWQgd2l0aCA8bGl0 ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPgorICAgICAgIChmb3IgcHJpbWFyeSBr ZXlzIGFuZCB1bmlxdWUgY29uc3RyYWludHMpLgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxz dHJ1Y3RmaWVsZD5jb25rZXk8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyW108L3R5cGU+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sIGIvZG9jL3NyYy9zZ21sL2dpc3Qu c2dtbAppbmRleCBiYWEyNmM2NWNjMy4uZjA1ODc1ZDM2YzEgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9naXN0LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbApAQCAtMjk4 LDcgKzI5OCw4IEBAIENSRUFURSBJTkRFWCBPTiBteV90YWJsZSBVU0lORyBHSVNUIChteV9p bmV0X2NvbHVtbiBpbmV0X29wcyk7CiAgICBUaGUgb3B0aW9uYWwgdHdlbGZ0aCBtZXRob2Qg PGZ1bmN0aW9uPnN0cmF0bnVtPC9mdW5jdGlvbj4gaXMgdXNlZCB0byB0cmFuc2xhdGUKICAg IHdlbGwta25vd24gPGxpdGVyYWw+UlQqU3RyYXRlZ3lOdW1iZXJzPC9saXRlcmFsPiAoZnJv bQogICAgPGZpbGVuYW1lPnNyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oPC9maWxlbmFt ZT4pIGludG8gc3RyYXRlZ3kgbnVtYmVycwotICAgdXNlZCBieSB0aGUgb3BjbGFzcy4KKyAg IHVzZWQgYnkgdGhlIG9wY2xhc3MuIFRoaXMgbGV0cyB0aGUgY29yZSBjb2RlIGxvb2sgdXAg b3BlcmF0b3JzIGZvciB0ZW1wb3JhbAorICAgY29uc3RyYWludCBpbmRleGVzLgogIDwvcGFy YT4KIAogIDx2YXJpYWJsZWxpc3Q+CkBAIC0xMTg0LDYgKzExODUsMjEgQEAgbXlfc29ydHN1 cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKICAgICAgICBpZiB0aGUgb3BjbGFzcyBoYXMgbm8g bWF0Y2hpbmcgc3RyYXRlZ3ksCiAgICAgICAgb3IgYXQgbGVhc3QgYSBzdHJhdGVneSBudW1i ZXIgdGhhdCBpc24ndCB1c2VkIGJ5IHRoaXMgb3BjbGFzcy4KICAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgdGVtcG9yYWwgaW5kZXggY29u c3RyYWludHMKKyAgICAgICAoaS5lLiA8bGl0ZXJhbD5QUklNQVJZIEtFWTwvbGl0ZXJhbD4g YW5kIDxsaXRlcmFsPlVOSVFVRTwvbGl0ZXJhbD4pLgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgSWYgdGhlIG9wY2xhc3MgcHJvdmlkZXMgdGhpcyBmdW5jdGlvbiBh bmQgaXQgcmV0dXJucyByZXN1bHRzCisgICAgICAgZm9yIDxsaXRlcmFsPlJURXF1YWxTdHJh dGVneU51bWJlcjwvbGl0ZXJhbD4sIGl0IGNhbiBiZSB1c2VkCisgICAgICAgaW4gdGhlIG5v bi08bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBwYXJ0KHMpIG9mIGFuCisg ICAgICAgaW5kZXggY29uc3RyYWludC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIElmIGl0IHJldHVybnMgcmVzdWx0cyBmb3IgPGxpdGVyYWw+UlRPdmVybGFwU3Ry YXRlZ3lOdW1iZXI8L2xpdGVyYWw+LAorICAgICAgIHRoZSBvcGNsYXNzIGNhbiBiZSB1c2Vk IGluIHRoZSA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPgorICAgICAgIHBh cnQgb2YgYW4gaW5kZXggY29uc3RyYWludC4KKyAgICAgIDwvcGFyYT4KIAogICAgICAgPHBh cmE+CiAgICAgICAgVGhlIDxhY3JvbnltPlNRTDwvYWNyb255bT4gZGVjbGFyYXRpb24gb2Yg dGhlIGZ1bmN0aW9uIG11c3QgbG9vayBsaWtlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbAppbmRleCBlMDRhMDY5MmM0ZS4uYTBiZDJiOGFkYzYgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfdGFibGUuc2dtbApAQCAtNzgsOCArNzgsOCBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8 IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYg Tk9UIEVYSQogWyBDT05TVFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPiBdCiB7IENIRUNLICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIFsgTk8gSU5I RVJJVCBdIHwKICAgTk9UIE5VTEwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBOTyBJTkhFUklUIF0gfAotICBVTklRVUUgWyBO VUxMUyBbIE5PVCBdIERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAotICBQ UklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CisgIFVOSVFVRSBbIE5VTExT IFsgTk9UIF0gRElTVElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxB UFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJz PC9yZXBsYWNlYWJsZT4gfAorICBQUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJ VEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRl eF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBFWENMVURFIFsgVVNJTkcgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IF0g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjbHVkZV9lbGVtZW50PC9yZXBs YWNlYWJsZT4gV0lUSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3I8 L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gWyBXSEVSRSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3JlcGxhY2VhYmxlPiApIF0gfAogICBG T1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkg XQogICAgIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXSBb IE9OIERFTEVURSA8cmVwbGFjZWFibGUKQEAgLTk2NSw3ICs5NjUsNyBAQCBXSVRIICggTU9E VUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9y ZXBsYWNlYWJsZT4sIFJFTQogCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFi bGUtcGFybXMtdW5pcXVlIj4KICAgICA8dGVybT48bGl0ZXJhbD5VTklRVUUgWyBOVUxMUyBb IE5PVCBdIERJU1RJTkNUIF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rlcm0+ Ci0gICAgPHRlcm0+PGxpdGVyYWw+VU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBd ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD4KKyAgICA8dGVybT48bGl0ZXJhbD5VTklRVUUg WyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBXSVRIT1VU IE9WRVJMQVBTIF0gKTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPklOQ0xV REUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxh Y2VhYmxlPiBbLCAuLi5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKHRhYmxlIGNvbnN0cmFp bnQpPC90ZXJtPgogCiAgICAgPGxpc3RpdGVtPgpAQCAtOTc5LDYgKzk3OSwyNiBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRl cmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgb2YgdGhlc2UgY29sdW1ucy4KICAgICAg PC9wYXJhPgogCisgICAgIDxwYXJhPgorICAgICAgSWYgdGhlIDxsaXRlcmFsPldJVEhPVVQg T1ZFUkxBUFM8L2xpdGVyYWw+IG9wdGlvbiBpcyBzcGVjaWZpZWQgZm9yIHRoZQorICAgICAg bGFzdCBjb2x1bW4sIHRoZW4gdGhhdCBjb2x1bW4gaXMgY2hlY2tlZCBmb3Igb3ZlcmxhcHMg aW5zdGVhZCBvZgorICAgICAgZXF1YWxpdHkuICBJbiB0aGF0IGNhc2UsIHRoZSBvdGhlciBj b2x1bW5zIG9mIHRoZSBjb25zdHJhaW50IHdpbGwgYWxsb3cKKyAgICAgIGR1cGxpY2F0ZXMg c28gbG9uZyBhcyB0aGUgZHVwbGljYXRlcyBkb24ndCBvdmVybGFwIGluIHRoZQorICAgICAg PGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY29sdW1uLiAgKFRoaXMgaXMg c29tZXRpbWVzIGNhbGxlZCBhCisgICAgICB0ZW1wb3JhbCBrZXksIGlmIHRoZSBjb2x1bW4g aXMgYSByYW5nZSBvZiBkYXRlcyBvciB0aW1lc3RhbXBzLCBidXQKKyAgICAgIFBvc3RncmVT UUwgYWxsb3dzIHJhbmdlcyBvdmVyIGFueSBiYXNlIHR5cGUuKSAgSW4gZWZmZWN0LCBzdWNo IGEKKyAgICAgIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQgd2l0aCBhbiA8bGl0ZXJhbD5FWENM VURFPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICByYXRoZXIgdGhhbiBhIDxsaXRlcmFs PlVOSVFVRTwvbGl0ZXJhbD4gY29uc3RyYWludC4gIFNvIGZvciBleGFtcGxlCisgICAgICA8 bGl0ZXJhbD5VTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTwvbGl0ZXJh bD4gYmVoYXZlcyBsaWtlCisgICAgICA8bGl0ZXJhbD5FWENMVURFIFVTSU5HIEdJU1QgKGlk IFdJVEggPSwgdmFsaWRfYXQgV0lUSAorICAgICAgJmFtcDsmYW1wOyk8L2xpdGVyYWw+LiAg VGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNvbHVtbgorICAgICAg bXVzdCBoYXZlIGEgcmFuZ2UgdHlwZS4gIFRoZSBub24tPGxpdGVyYWw+V0lUSE9VVCBPVkVS TEFQUzwvbGl0ZXJhbD4KKyAgICAgIGNvbHVtbnMgb2YgdGhlIGNvbnN0cmFpbnQgY2FuIGJl IGFueSB0eXBlIHRoYXQgY2FuIGJlIGNvbXBhcmVkIGZvcgorICAgICAgZXF1YWxpdHkgaW4g YSBHaVNUIGluZGV4LiBCeSBkZWZhdWx0IG9ubHkgcmFuZ2UgdHlwZXMgYXJlIHN1cHBvcnRl ZCwgYnV0CisgICAgICB5b3UgY2FuIHVzZSBvdGhlciB0eXBlcyBieSBhZGRpbmcgdGhlIDx4 cmVmIGxpbmtlbmQ9ImJ0cmVlLWdpc3QiLz4KKyAgICAgIGV4dGVuc2lvbiAod2hpY2ggaXMg dGhlIGV4cGVjdGVkIHdheSB0byB1c2UgdGhpcyBmZWF0dXJlKS4KKyAgICAgPC9wYXJhPgor CiAgICAgIDxwYXJhPgogICAgICAgRm9yIHRoZSBwdXJwb3NlIG9mIGEgdW5pcXVlIGNvbnN0 cmFpbnQsIG51bGwgdmFsdWVzIGFyZSBub3QKICAgICAgIGNvbnNpZGVyZWQgZXF1YWwsIHVu bGVzcyA8bGl0ZXJhbD5OVUxMUyBOT1QgRElTVElOQ1Q8L2xpdGVyYWw+IGlzCkBAIC0xMDAx LDcgKzEwMjEsOSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogCiAgICAgIDxwYXJh PgogICAgICAgQWRkaW5nIGEgdW5pcXVlIGNvbnN0cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5 IGNyZWF0ZSBhIHVuaXF1ZSBidHJlZQotICAgICAgaW5kZXggb24gdGhlIGNvbHVtbiBvciBn cm91cCBvZiBjb2x1bW5zIHVzZWQgaW4gdGhlIGNvbnN0cmFpbnQuCisgICAgICBpbmRleCBv biB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWlu dC4gQnV0IGlmCisgICAgICB0aGUgY29uc3RyYWludCBpbmNsdWRlcyBhIDxsaXRlcmFsPldJ VEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAgIGl0IHdpbGwgdXNlIGEg R2lTVCBpbmRleC4KICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpAQCAtMTAxOSw3ICsx MDQxLDcgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KIAogICAgPHZhcmxpc3RlbnRy eSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLXByaW1hcnkta2V5Ij4KICAgICA8dGVybT48 bGl0ZXJhbD5QUklNQVJZIEtFWTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVy bT4KLSAgICA8dGVybT48bGl0ZXJhbD5QUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICk8L2xp dGVyYWw+CisgICAgPHRlcm0+PGxpdGVyYWw+UFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBb LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0gKTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+IDxs aXRlcmFsPklOQ0xVREUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKHRh YmxlIGNvbnN0cmFpbnQpPC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CkBA IC0xMDUyLDkgKzEwNzQsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAg PC9wYXJhPgogCiAgICAgIDxwYXJhPgotICAgICAgQWRkaW5nIGEgPGxpdGVyYWw+UFJJTUFS WSBLRVk8L2xpdGVyYWw+IGNvbnN0cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5Ci0gICAgICBj cmVhdGUgYSB1bmlxdWUgYnRyZWUgaW5kZXggb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBj b2x1bW5zIHVzZWQgaW4gdGhlCi0gICAgICBjb25zdHJhaW50LgorICAgICAgQXMgd2l0aCBh IDxsaXRlcmFsPlVOSVFVRTwvbGl0ZXJhbD4gY29uc3RyYWludCwgYWRkaW5nIGEKKyAgICAg IDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiBjb25zdHJhaW50IHdpbGwgYXV0b21h dGljYWxseSBjcmVhdGUgYQorICAgICAgdW5pcXVlIGJ0cmVlIGluZGV4LCBvciBHaVNUIGlm IDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHdhcworICAgICAgc3BlY2lm aWVkLCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29u c3RyYWludC4KICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3R1dGlsLmMKaW5kZXggNWJmMTNlYzY4MGUuLjEwNTZkZGQ2NDI4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKQEAgLTEwOTgsMyArMTA5OCwzMiBAQCBnaXN0 X3N0cmF0bnVtX2J0cmVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlQR19SRVRVUk5fVUlOVDE2 KEludmFsaWRTdHJhdGVneSk7CiAJfQogfQorCisvKgorICogUmV0dXJucyB0aGUgb3BjbGFz cydzIHByaXZhdGUgc3RyYXRudW0gdXNlZCBmb3IgdGhlIGdpdmVuIHN0cmF0ZWd5LgorICoK KyAqIENhbGxzIHRoZSBvcGNsYXNzJ3MgR0lTVF9TVFJBVE5VTV9QUk9DIHN1cHBvcnQgZnVu Y3Rpb24sIGlmIGFueSwKKyAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCisgKiBSZXR1cm5z IEludmFsaWRTdHJhdGVneSBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IGRlZmluZWQuCisgKi8K K1N0cmF0ZWd5TnVtYmVyCitnaXN0VHJhbnNsYXRlU3RyYXRudW0oT2lkIG9wY2xhc3MsIFN0 cmF0ZWd5TnVtYmVyIHN0cmF0KQoreworCU9pZAlvcGZhbWlseTsKKwlPaWQJb3BjaW50eXBl OworCU9pZAlmdW5jaWQ7CisJRGF0dW0gcmVzdWx0OworCisJLyogTG9vayB1cCB0aGUgb3Bj bGFzcyBmYW1pbHkgYW5kIGlucHV0IGRhdGF0eXBlLiAqLworCWlmICghZ2V0X29wY2xhc3Nf b3BmYW1pbHlfYW5kX2lucHV0X3R5cGUob3BjbGFzcywgJm9wZmFtaWx5LCAmb3BjaW50eXBl KSkKKwkJcmV0dXJuIEludmFsaWRTdHJhdGVneTsKKworCS8qIENoZWNrIHdoZXRoZXIgdGhl IGZ1bmN0aW9uIGlzIHByb3ZpZGVkLiAqLworCWZ1bmNpZCA9IGdldF9vcGZhbWlseV9wcm9j KG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgR0lTVF9TVFJBVE5VTV9QUk9DKTsK KwlpZiAoIU9pZElzVmFsaWQoZnVuY2lkKSkKKwkJcmV0dXJuIEludmFsaWRTdHJhdGVneTsK KworCS8qIEFzayB0aGUgdHJhbnNsYXRpb24gZnVuY3Rpb24gKi8KKwlyZXN1bHQgPSBPaWRG dW5jdGlvbkNhbGwxQ29sbChmdW5jaWQsIEludmFsaWRPaWQsIFVJbnQxNkdldERhdHVtKHN0 cmF0KSk7CisJcmV0dXJuIERhdHVtR2V0VUludDE2KHJlc3VsdCk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVh cC5jCmluZGV4IGU4MGE5MGVmNGMwLi43YWJjMmUwZDIyZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMK QEAgLTIxNDMsNiArMjE0Myw3IEBAIFN0b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkJICBpc19sb2NhbCwgLyogY29u aXNsb2NhbCAqLwogCQkJCQkJCSAgaW5oY291bnQsIC8qIGNvbmluaGNvdW50ICovCiAJCQkJ CQkJICBpc19ub19pbmhlcml0LAkvKiBjb25ub2luaGVyaXQgKi8KKwkJCQkJCQkgIGZhbHNl LAkvKiBjb253aXRob3V0b3ZlcmxhcHMgKi8KIAkJCQkJCQkgIGlzX2ludGVybmFsKTsgLyog aW50ZXJuYWxseSBjb25zdHJ1Y3RlZD8gKi8KIAogCXBmcmVlKGNjYmluKTsKQEAgLTIxOTMs NiArMjE5NCw3IEBAIFN0b3JlUmVsTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIg Km5ubmFtZSwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCQkJICBpc19sb2NhbCwKIAkJCQkJ CQkgIGluaGNvdW50LAogCQkJCQkJCSAgaXNfbm9faW5oZXJpdCwKKwkJCQkJCQkgIGZhbHNl LAkvKiBjb253aXRob3V0b3ZlcmxhcHMgKi8KIAkJCQkJCQkgIGZhbHNlKTsKIAlyZXR1cm4g Y29uc3RyT2lkOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDg4Zjc5OTRiNWE2Li4yOTM0 YjU1MzA2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMTg5NSw2ICsxODk1LDcgQEAgaW5k ZXhfY29uY3VycmVudGx5X3NldF9kZWFkKE9pZCBoZWFwSWQsIE9pZCBpbmRleElkKQogICoJ CUlOREVYX0NPTlNUUl9DUkVBVEVfVVBEQVRFX0lOREVYOiB1cGRhdGUgdGhlIHBnX2luZGV4 IHJvdwogICoJCUlOREVYX0NPTlNUUl9DUkVBVEVfUkVNT1ZFX09MRF9ERVBTOiByZW1vdmUg ZXhpc3RpbmcgZGVwZW5kZW5jaWVzCiAgKgkJCW9mIGluZGV4IG9uIHRhYmxlJ3MgY29sdW1u cworICoJCUlOREVYX0NPTlNUUl9DUkVBVEVfV0lUSE9VVF9PVkVSTEFQUzogY29uc3RyYWlu dCB1c2VzIFdJVEhPVVQgT1ZFUkxBUFMKICAqIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzOiBh bGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nCiAgKiBpc19pbnRlcm5hbDogaW5k ZXggaXMgY29uc3RydWN0ZWQgZHVlIHRvIGludGVybmFsIHByb2Nlc3MKICAqLwpAQCAtMTkx OCwxMSArMTkxOSwxMyBAQCBpbmRleF9jb25zdHJhaW50X2NyZWF0ZShSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJYm9vbAkJbWFya19hc19wcmltYXJ5OwogCWJvb2wJCWlzbG9jYWw7CiAJ Ym9vbAkJbm9pbmhlcml0OworCWJvb2wJCWlzX3dpdGhvdXRfb3ZlcmxhcHM7CiAJaW50CQkJ aW5oY291bnQ7CiAKIAlkZWZlcnJhYmxlID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNU Ul9DUkVBVEVfREVGRVJSQUJMRSkgIT0gMDsKIAlpbml0ZGVmZXJyZWQgPSAoY29uc3RyX2Zs YWdzICYgSU5ERVhfQ09OU1RSX0NSRUFURV9JTklUX0RFRkVSUkVEKSAhPSAwOwogCW1hcmtf YXNfcHJpbWFyeSA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktf QVNfUFJJTUFSWSkgIT0gMDsKKwlpc193aXRob3V0X292ZXJsYXBzID0gKGNvbnN0cl9mbGFn cyAmIElOREVYX0NPTlNUUl9DUkVBVEVfV0lUSE9VVF9PVkVSTEFQUykgIT0gMDsKIAogCS8q IGNvbnN0cmFpbnQgY3JlYXRpb24gc3VwcG9ydCBkb2Vzbid0IHdvcmsgd2hpbGUgYm9vdHN0 cmFwcGluZyAqLwogCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKQEAg LTE5OTksNiArMjAwMiw3IEBAIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJICAgaXNsb2NhbCwKIAkJCQkJCQkJICAgaW5oY291bnQs CiAJCQkJCQkJCSAgIG5vaW5oZXJpdCwKKwkJCQkJCQkJICAgaXNfd2l0aG91dF9vdmVybGFw cywKIAkJCQkJCQkJICAgaXNfaW50ZXJuYWwpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19jb25zdHJhaW50LmMKaW5kZXggYTAyMzJhYTFiYmYuLjBhOTU2MDgxNzlkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwpAQCAtNzgsNiArNzgsNyBAQCBDcmVhdGVD b25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCQkJCSAgYm9v bCBjb25Jc0xvY2FsLAogCQkJCQkgIGludCBjb25JbmhDb3VudCwKIAkJCQkJICBib29sIGNv bk5vSW5oZXJpdCwKKwkJCQkJICBib29sIGNvbldpdGhvdXRPdmVybGFwcywKIAkJCQkJICBi b29sIGlzX2ludGVybmFsKQogewogCVJlbGF0aW9uCWNvbkRlc2M7CkBAIC0xOTMsNiArMTk0 LDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1l LAogCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29uaXNsb2NhbCAtIDFdID0gQm9vbEdl dERhdHVtKGNvbklzTG9jYWwpOwogCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29uaW5o Y291bnQgLSAxXSA9IEludDE2R2V0RGF0dW0oY29uSW5oQ291bnQpOwogCXZhbHVlc1tBbnVt X3BnX2NvbnN0cmFpbnRfY29ubm9pbmhlcml0IC0gMV0gPSBCb29sR2V0RGF0dW0oY29uTm9J bmhlcml0KTsKKwl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbndpdGhvdXRvdmVybGFw cyAtIDFdID0gQm9vbEdldERhdHVtKGNvbldpdGhvdXRPdmVybGFwcyk7CiAKIAlpZiAoY29u a2V5QXJyYXkpCiAJCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5IC0gMV0gPSBQ b2ludGVyR2V0RGF0dW0oY29ua2V5QXJyYXkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwppbmRleCAzNDAyNDhhM2YyOS4uMzAxNjJlZTdhYWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2lu ZGV4Y21kcy5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAog I2luY2x1ZGUgImFjY2Vzcy9hbWFwaS5oIgorI2luY2x1ZGUgImFjY2Vzcy9naXN0X3ByaXZh dGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0 dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxvcHRpb25zLmgiCkBAIC04Niw2 ICs4Nyw3IEBAIHN0YXRpYyB2b2lkIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5k ZXhJbmZvLAogCQkJCQkJCSAgT2lkIGFjY2Vzc01ldGhvZElkLAogCQkJCQkJCSAgYm9vbCBh bWNhbm9yZGVyLAogCQkJCQkJCSAgYm9vbCBpc2NvbnN0cmFpbnQsCisJCQkJCQkJICBib29s IGlzd2l0aG91dG92ZXJsYXBzLAogCQkJCQkJCSAgT2lkIGRkbF91c2VyaWQsCiAJCQkJCQkJ ICBpbnQgZGRsX3NlY19jb250ZXh0LAogCQkJCQkJCSAgaW50ICpkZGxfc2F2ZV9uZXN0bGV2 ZWwpOwpAQCAtMTQ0LDYgKzE0Niw3IEBAIHR5cGVkZWYgc3RydWN0IFJlaW5kZXhFcnJvcklu Zm8KICAqCQl0byBpbmRleCBvbi4KICAqICdleGNsdXNpb25PcE5hbWVzJzogbGlzdCBvZiBu YW1lcyBvZiBleGNsdXNpb24tY29uc3RyYWludCBvcGVyYXRvcnMsCiAgKgkJb3IgTklMIGlm IG5vdCBhbiBleGNsdXNpb24gY29uc3RyYWludC4KKyAqICdpc1dpdGhvdXRPdmVybGFwcyc6 IHRydWUgaWZmIHRoaXMgaW5kZXggaGFzIGEgV0lUSE9VVCBPVkVSTEFQUyBjbGF1c2UuCiAg KgogICogVGhpcyBpcyB0YWlsb3JlZCB0byB0aGUgbmVlZHMgb2YgQUxURVIgVEFCTEUgQUxU RVIgVFlQRSwgd2hpY2ggcmVjcmVhdGVzCiAgKiBhbnkgaW5kZXhlcyB0aGF0IGRlcGVuZGVk IG9uIGEgY2hhbmdpbmcgY29sdW1uIGZyb20gdGhlaXIgcGdfZ2V0X2luZGV4ZGVmCkBAIC0x NzMsNyArMTc2LDggQEAgYm9vbAogQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAog CQkJCQkgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwKIAkJCQkJIGNvbnN0IExpc3Qg KmF0dHJpYnV0ZUxpc3QsCi0JCQkJCSBjb25zdCBMaXN0ICpleGNsdXNpb25PcE5hbWVzKQor CQkJCQkgY29uc3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcywKKwkJCQkJIGJvb2wgaXNXaXRo b3V0T3ZlcmxhcHMpCiB7CiAJYm9vbAkJaXNjb25zdHJhaW50OwogCU9pZAkJICAgKnR5cGVJ ZHM7CkBAIC0yNDgsOCArMjUyLDggQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElk LAogCQkJCQkgIGNvbG9wdGlvbnMsIGF0dHJpYnV0ZUxpc3QsCiAJCQkJCSAgZXhjbHVzaW9u T3BOYW1lcywgcmVsYXRpb25JZCwKIAkJCQkJICBhY2Nlc3NNZXRob2ROYW1lLCBhY2Nlc3NN ZXRob2RJZCwKLQkJCQkJICBhbWNhbm9yZGVyLCBpc2NvbnN0cmFpbnQsIEludmFsaWRPaWQs IDAsIE5VTEwpOwotCisJCQkJCSAgYW1jYW5vcmRlciwgaXNjb25zdHJhaW50LCBpc1dpdGhv dXRPdmVybGFwcywgSW52YWxpZE9pZCwKKwkJCQkJICAwLCBOVUxMKTsKIAogCS8qIEdldCB0 aGUgc29vbi1vYnNvbGV0ZSBwZ19pbmRleCB0dXBsZS4gKi8KIAl0dXBsZSA9IFNlYXJjaFN5 c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJZEdldERhdHVtKG9sZElkKSk7CkBAIC01NTks NiArNTYzLDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJYm9vbAkJYW1jYW5vcmRl cjsKIAlib29sCQlhbWlzc3VtbWFyaXppbmc7CiAJYW1vcHRpb25zX2Z1bmN0aW9uIGFtb3B0 aW9uczsKKwlib29sCQlleGNsdXNpb247CiAJYm9vbAkJcGFydGl0aW9uZWQ7CiAJYm9vbAkJ c2FmZV9pbmRleDsKIAlEYXR1bQkJcmVsb3B0aW9uczsKQEAgLTY3Nyw2ICs2ODIsMTIgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAluYW1lc3BhY2VJZCA9IFJlbGF0aW9uR2V0 TmFtZXNwYWNlKHJlbCk7CiAKKwkvKgorCSAqIEl0IGhhcyBleGNsdXNpb24gY29uc3RyYWlu dCBiZWhhdmlvciBpZiBpdCdzIGFuIEVYQ0xVREUgY29uc3RyYWludAorCSAqIG9yIGEgdGVt cG9yYWwgUFJJTUFSWSBLRVkvVU5JUVVFIGNvbnN0cmFpbnQKKwkgKi8KKwlleGNsdXNpb24g PSBzdG10LT5leGNsdWRlT3BOYW1lcyB8fCBzdG10LT5pc3dpdGhvdXRvdmVybGFwczsKKwog CS8qIEVuc3VyZSB0aGF0IGl0IG1ha2VzIHNlbnNlIHRvIGluZGV4IHRoaXMga2luZCBvZiBy ZWxhdGlvbiAqLwogCXN3aXRjaCAocmVsLT5yZF9yZWwtPnJlbGtpbmQpCiAJewpAQCAtODQ1 LDcgKzg1Niw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX0FDQ0VTU19NRVRIT0RfT0lELAog CQkJCQkJCQkgYWNjZXNzTWV0aG9kSWQpOwogCi0JaWYgKHN0bXQtPnVuaXF1ZSAmJiAhYW1S b3V0aW5lLT5hbWNhbnVuaXF1ZSkKKwlpZiAoc3RtdC0+dW5pcXVlICYmICFzdG10LT5pc3dp dGhvdXRvdmVybGFwcyAmJiAhYW1Sb3V0aW5lLT5hbWNhbnVuaXF1ZSkKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJ CQkJIGVycm1zZygiYWNjZXNzIG1ldGhvZCBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCB1bmlx dWUgaW5kZXhlcyIsCkBAIC04NjAsNyArODcxLDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJ CSBlcnJtc2coImFjY2VzcyBtZXRob2QgXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlj b2x1bW4gaW5kZXhlcyIsCiAJCQkJCQlhY2Nlc3NNZXRob2ROYW1lKSkpOwotCWlmIChzdG10 LT5leGNsdWRlT3BOYW1lcyAmJiBhbVJvdXRpbmUtPmFtZ2V0dHVwbGUgPT0gTlVMTCkKKwlp ZiAoZXhjbHVzaW9uICYmIGFtUm91dGluZS0+YW1nZXR0dXBsZSA9PSBOVUxMKQogCQllcmVw b3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKIAkJCQkgZXJybXNnKCJhY2Nlc3MgbWV0aG9kIFwiJXNcIiBkb2VzIG5vdCBzdXBwb3J0 IGV4Y2x1c2lvbiBjb25zdHJhaW50cyIsCkBAIC05MTMsOCArOTI0LDkgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJCQkJCSAgY29sb3B0aW9ucywgYWxsSW5kZXhQYXJhbXMsCiAJ CQkJCSAgc3RtdC0+ZXhjbHVkZU9wTmFtZXMsIHRhYmxlSWQsCiAJCQkJCSAgYWNjZXNzTWV0 aG9kTmFtZSwgYWNjZXNzTWV0aG9kSWQsCi0JCQkJCSAgYW1jYW5vcmRlciwgc3RtdC0+aXNj b25zdHJhaW50LCByb290X3NhdmVfdXNlcmlkLAotCQkJCQkgIHJvb3Rfc2F2ZV9zZWNfY29u dGV4dCwgJnJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOworCQkJCQkgIGFtY2Fub3JkZXIsIHN0bXQt PmlzY29uc3RyYWludCwgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMsCisJCQkJCSAgcm9vdF9z YXZlX3VzZXJpZCwgcm9vdF9zYXZlX3NlY19jb250ZXh0LAorCQkJCQkgICZyb290X3NhdmVf bmVzdGxldmVsKTsKIAogCS8qCiAJICogRXh0cmEgY2hlY2tzIHdoZW4gY3JlYXRpbmcgYSBQ UklNQVJZIEtFWSBpbmRleC4KQEAgLTkzMiw3ICs5NDQsNyBAQCBEZWZpbmVJbmRleChPaWQg dGFibGVJZCwKIAkgKiBXZSBjb3VsZCBsaWZ0IHRoaXMgbGltaXRhdGlvbiBpZiB3ZSBoYWQg Z2xvYmFsIGluZGV4ZXMsIGJ1dCB0aG9zZSBoYXZlCiAJICogdGhlaXIgb3duIHByb2JsZW1z LCBzbyB0aGlzIGlzIGEgdXNlZnVsIGZlYXR1cmUgY29tYmluYXRpb24uCiAJICovCi0JaWYg KHBhcnRpdGlvbmVkICYmIChzdG10LT51bmlxdWUgfHwgc3RtdC0+ZXhjbHVkZU9wTmFtZXMp KQorCWlmIChwYXJ0aXRpb25lZCAmJiAoc3RtdC0+dW5pcXVlIHx8IGV4Y2x1c2lvbikpCiAJ ewogCQlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocmVsKTsK IAkJY29uc3QgY2hhciAqY29uc3RyYWludF90eXBlOwpAQCAtOTg2LDEwICs5OTgsMTAgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkgKiBhc3NvY2lhdGVkIHdpdGggaW5kZXgg Y29sdW1ucywgdG9vLiAgV2Uga25vdyB3aGF0IHRvIGRvIHdpdGgKIAkJCSAqIGJ0cmVlIG9w Y2xhc3NlczsgaWYgdGhlcmUgYXJlIGV2ZXIgYW55IG90aGVyIGluZGV4IHR5cGVzIHRoYXQK IAkJCSAqIHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMsIHRoaXMgbG9naWMgd2lsbCBuZWVkIGV4 dGVuc2lvbi4gQnV0IGlmCi0JCQkgKiB3ZSBoYXZlIGFuIGV4Y2x1c2lvbiBjb25zdHJhaW50 LCBpdCBhbHJlYWR5IGtub3dzIHRoZQotCQkJICogb3BlcmF0b3JzLCBzbyB3ZSBkb24ndCBo YXZlIHRvIGluZmVyIHRoZW0uCisJCQkgKiB3ZSBoYXZlIGFuIGV4Y2x1c2lvbiBjb25zdHJh aW50IChvciBhIHRlbXBvcmFsIFBLKSwgaXQgYWxyZWFkeQorCQkJICoga25vd3MgdGhlIG9w ZXJhdG9ycywgc28gd2UgZG9uJ3QgaGF2ZSB0byBpbmZlciB0aGVtLgogCQkJICovCi0JCQlp ZiAoc3RtdC0+dW5pcXVlICYmIGFjY2Vzc01ldGhvZElkICE9IEJUUkVFX0FNX09JRCkKKwkJ CWlmIChzdG10LT51bmlxdWUgJiYgIXN0bXQtPmlzd2l0aG91dG92ZXJsYXBzICYmIGFjY2Vz c01ldGhvZElkICE9IEJUUkVFX0FNX09JRCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkJIGVycm1z ZygiY2Fubm90IG1hdGNoIHBhcnRpdGlvbiBrZXkgdG8gYW4gaW5kZXggdXNpbmcgYWNjZXNz IG1ldGhvZCBcIiVzXCIiLApAQCAtMTAyOCwxMiArMTA0MCwxMiBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAkJCQkJewogCQkJCQkJT2lkCQkJaWR4X2Vxb3AgPSBJbnZhbGlkT2lk OwogCi0JCQkJCQlpZiAoc3RtdC0+dW5pcXVlKQorCQkJCQkJaWYgKHN0bXQtPnVuaXF1ZSAm JiAhc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpCiAJCQkJCQkJaWR4X2Vxb3AgPSBnZXRfb3Bm YW1pbHlfbWVtYmVyKGlkeF9vcGZhbWlseSwKIAkJCQkJCQkJCQkJCQkJICAgaWR4X29wY2lu dHlwZSwKIAkJCQkJCQkJCQkJCQkJICAgaWR4X29wY2ludHlwZSwKIAkJCQkJCQkJCQkJCQkJ ICAgQlRFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKLQkJCQkJCWVsc2UgaWYgKHN0bXQtPmV4Y2x1 ZGVPcE5hbWVzKQorCQkJCQkJZWxzZSBpZiAoZXhjbHVzaW9uKQogCQkJCQkJCWlkeF9lcW9w ID0gaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHNbal07CiAJCQkJCQlBc3NlcnQoaWR4X2Vx b3ApOwogCkBAIC0xMDQyLDcgKzEwNTQsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IAkJCQkJCQlmb3VuZCA9IHRydWU7CiAJCQkJCQkJYnJlYWs7CiAJCQkJCQl9Ci0JCQkJCQll bHNlIGlmIChzdG10LT5leGNsdWRlT3BOYW1lcykKKwkJCQkJCWVsc2UgaWYgKGV4Y2x1c2lv bikKIAkJCQkJCXsKIAkJCQkJCQkvKgogCQkJCQkJCSAqIFdlIGZvdW5kIGEgbWF0Y2gsIGJ1 dCBpdCdzIG5vdCBhbiBlcXVhbGl0eQpAQCAtMTE4Niw2ICsxMTk4LDggQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJCWNvbnN0cl9mbGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRF X0RFRkVSUkFCTEU7CiAJaWYgKHN0bXQtPmluaXRkZWZlcnJlZCkKIAkJY29uc3RyX2ZsYWdz IHw9IElOREVYX0NPTlNUUl9DUkVBVEVfSU5JVF9ERUZFUlJFRDsKKwlpZiAoc3RtdC0+aXN3 aXRob3V0b3ZlcmxhcHMpCisJCWNvbnN0cl9mbGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRF X1dJVEhPVVRfT1ZFUkxBUFM7CiAKIAlpbmRleFJlbGF0aW9uSWQgPQogCQlpbmRleF9jcmVh dGUocmVsLCBpbmRleFJlbGF0aW9uTmFtZSwgaW5kZXhSZWxhdGlvbklkLCBwYXJlbnRJbmRl eElkLApAQCAtMTg1MCw2ICsxODY0LDcgQEAgQ29tcHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZv ICppbmRleEluZm8sCiAJCQkJICBPaWQgYWNjZXNzTWV0aG9kSWQsCiAJCQkJICBib29sIGFt Y2Fub3JkZXIsCiAJCQkJICBib29sIGlzY29uc3RyYWludCwKKwkJCQkgIGJvb2wgaXN3aXRo b3V0b3ZlcmxhcHMsCiAJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkgIGludCBkZGxfc2Vj X2NvbnRleHQsCiAJCQkJICBpbnQgKmRkbF9zYXZlX25lc3RsZXZlbCkKQEAgLTE4NzMsNiAr MTg4OCwxNCBAQCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAll bHNlCiAJCW5leHRFeGNsT3AgPSBOVUxMOwogCisJLyogZXhjbHVzaW9uT3BOYW1lcyBjYW4g YmUgbm9uLU5JTCBpZiB3ZSBhcmUgY3JlYXRpbmcgYSBwYXJ0aXRpb24gKi8KKwlpZiAoaXN3 aXRob3V0b3ZlcmxhcHMgJiYgZXhjbHVzaW9uT3BOYW1lcyA9PSBOSUwpCisJeworCQlpbmRl eEluZm8tPmlpX0V4Y2x1c2lvbk9wcyA9IHBhbGxvY19hcnJheShPaWQsIG5rZXljb2xzKTsK KwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25Qcm9jcyA9IHBhbGxvY19hcnJheShPaWQsIG5r ZXljb2xzKTsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHMgPSBwYWxsb2NfYXJy YXkodWludDE2LCBua2V5Y29scyk7CisJfQorCiAJaWYgKE9pZElzVmFsaWQoZGRsX3VzZXJp ZCkpCiAJCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNf Y29udGV4dCk7CiAKQEAgLTIxNDksNiArMjE3MiwzMSBAQCBDb21wdXRlSW5kZXhBdHRycyhJ bmRleEluZm8gKmluZGV4SW5mbywKIAkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRz W2F0dG5dID0gc3RyYXQ7CiAJCQluZXh0RXhjbE9wID0gbG5leHQoZXhjbHVzaW9uT3BOYW1l cywgbmV4dEV4Y2xPcCk7CiAJCX0KKwkJZWxzZSBpZiAoaXN3aXRob3V0b3ZlcmxhcHMpCisJ CXsKKwkJCVN0cmF0ZWd5TnVtYmVyIHN0cmF0OworCQkJT2lkIG9waWQ7CisJCQljaGFyICpv cG5hbWU7CisKKwkJCWlmIChhdHRuID09IG5rZXljb2xzIC0gMSkKKwkJCXsKKwkJCQlzdHJh dCA9IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyOworCQkJCW9wbmFtZSA9ICJvdmVybGFwcyI7 CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJc3RyYXQgPSBSVEVxdWFsU3RyYXRlZ3lOdW1i ZXI7CisJCQkJb3BuYW1lID0gImVxdWFscyI7CisJCQl9CisJCQlHZXRPcGVyYXRvckZyb21D YW5vbmljYWxTdHJhdGVneShvcGNsYXNzT2lkc1thdHRuXSwKKwkJCQkJCQkJCQkJIGF0dHR5 cGUsCisJCQkJCQkJCQkJCSBvcG5hbWUsCisJCQkJCQkJCQkJCSAmb3BpZCwKKwkJCQkJCQkJ CQkJICZzdHJhdCk7CisJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wc1thdHRuXSA9IG9w aWQ7CisJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblByb2NzW2F0dG5dID0gZ2V0X29wY29k ZShvcGlkKTsKKwkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRzW2F0dG5dID0gc3Ry YXQ7CisJCX0KIAogCQkvKgogCQkgKiBTZXQgdXAgdGhlIHBlci1jb2x1bW4gb3B0aW9ucyAo aW5kb3B0aW9uIGZpZWxkKS4gIEZvciBub3csIHRoaXMgaXMKQEAgLTIzNzksNiArMjQyNyw4 NyBAQCBHZXREZWZhdWx0T3BDbGFzcyhPaWQgdHlwZV9pZCwgT2lkIGFtX2lkKQogCXJldHVy biBJbnZhbGlkT2lkOwogfQogCisvKgorICogR2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3Ry YXRlZ3kKKyAqCisgKiBvcGNsYXNzIC0gdGhlIG9wY2xhc3MgdG8gdXNlCisgKiBhdHR0eXBl IC0gdGhlIHR5cGUgdG8gYXNrIGFib3V0CisgKiBvcG5hbWUgLSB1c2VkIHRvIGJ1aWxkIGVy cm9yIG1lc3NhZ2VzCisgKiBvcGlkIC0gaG9sZHMgdGhlIG9wZXJhdG9yIHdlIGZvdW5kCisg KiBzdHJhdCAtIGhvbGRzIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHN0cmF0ZWd5IG51bWJlcgor ICoKKyAqIEZpbmRzIGFuIG9wZXJhdG9yIGZyb20gYSAid2VsbC1rbm93biIgc3RyYXRlZ3kg bnVtYmVyLgorICogVGhpcyBpcyB1c2VkIGZvciB0ZW1wb3JhbCBpbmRleCBjb25zdHJhaW50 cworICogKGFuZCBvdGhlciB0ZW1wb3JhbCBmZWF0dXJlcykKKyAqIHRvIGxvb2sgdXAgZXF1 YWxpdHkgYW5kIG92ZXJsYXBzIG9wZXJhdG9ycywgc2luY2UKKyAqIHRoZSBzdHJhdGVneSBu dW1iZXJzIGZvciBub24tYnRyZWUgaW5kZXhhbXMgbmVlZCBub3QKKyAqIGZvbGxvdyBhbnkg Zml4ZWQgc2NoZW1lLiBXZSBhc2sgYW4gb3BjbGFzcyBzdXBwb3J0CisgKiBmdW5jdGlvbiB0 byB0cmFuc2xhdGUgZnJvbSB0aGUgd2VsbC1rbm93biBudW1iZXIKKyAqIHRvIHRoZSBpbnRl cm5hbCB2YWx1ZS4gSWYgdGhlIGZ1bmN0aW9uIGlzbid0IGRlZmluZWQKKyAqIG9yIGl0IGdp dmVzIG5vIHJlc3VsdCwgd2UgcmV0cnVuIEludmFsaWRTdHJhdGVneS4KKyAqLwordm9pZAor R2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRlZ3koT2lkIG9wY2xhc3MsCisJCQkJCQkJ CSBPaWQgYXR0dHlwZSwKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKm9wbmFtZSwKKwkJCQkJCQkJ IE9pZCAqb3BpZCwKKwkJCQkJCQkJIFN0cmF0ZWd5TnVtYmVyICpzdHJhdCkKK3sKKwlPaWQg b3BmYW1pbHk7CisJT2lkIG9wY2ludHlwZTsKKwlTdHJhdGVneU51bWJlciBvcHN0cmF0ID0g KnN0cmF0OworCisJKm9waWQgPSBJbnZhbGlkT2lkOworCisJaWYgKGdldF9vcGNsYXNzX29w ZmFtaWx5X2FuZF9pbnB1dF90eXBlKG9wY2xhc3MsCisJCQkJCQkJCQkJCSZvcGZhbWlseSwK KwkJCQkJCQkJCQkJJm9wY2ludHlwZSkpCisJeworCQkvKgorCQkgKiBBc2sgdGhlIG9wY2xh c3MgdG8gdHJhbnNsYXRlIHRvIGl0cyBpbnRlcm5hbCBzdHJhdG51bQorCQkgKgorCQkgKiBG b3Igbm93IHdlIG9ubHkgbmVlZCBHaVNUIHN1cHBvcnQsIGJ1dCB0aGlzIGNvdWxkIHN1cHBv cnQKKwkJICogb3RoZXIgaW5kZXhhbXMgaWYgd2Ugd2FudGVkLgorCQkgKi8KKwkJKnN0cmF0 ID0gZ2lzdFRyYW5zbGF0ZVN0cmF0bnVtKG9wY2xhc3MsIG9wc3RyYXQpOworCQlpZiAoIVN0 cmF0ZWd5SXNWYWxpZCgqc3RyYXQpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygibm8gJXMgb3Bl cmF0b3IgZm91bmQgZm9yIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWludCIsIG9wbmFtZSks CisJCQkJCSBlcnJkZXRhaWwoIkNvdWxkIG5vdCB0cmFuc2xhdGUgc3RyYXRlZ3kgbnVtYmVy ICV1IGZvciBvcGNsYXNzICVkLiIsCisJCQkJCQkgb3BzdHJhdCwgb3BjbGFzcyksCisJCQkJ CSBlcnJoaW50KCJEZWZpbmUgYSBzdHJhdG51bSBzdXBwb3J0IGZ1bmN0aW9uIGZvciB5b3Vy IEdpU1Qgb3BjbGFzcy4iKSkpOworCisJCSpvcGlkID0gZ2V0X29wZmFtaWx5X21lbWJlcihv cGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsICpzdHJhdCk7CisJfQorCisJaWYgKCFP aWRJc1ZhbGlkKCpvcGlkKSkKKwl7CisJCUhlYXBUdXBsZQlvcGZ0dXBsZTsKKwkJRm9ybV9w Z19vcGZhbWlseSBvcGZmb3JtOworCisJCS8qCisJCSAqIGF0dHJpYnV0ZS0+b3BjbGFzcyBt aWdodCBub3QgZXhwbGljaXRseSBuYW1lIHRoZSBvcGZhbWlseSwKKwkJICogc28gZmV0Y2gg dGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIG9wZmFtaWx5IGZvciB1c2UgaW4gdGhlCisJCSAq IGVycm9yIG1lc3NhZ2UuCisJCSAqLworCQlvcGZ0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShP UEZBTUlMWU9JRCwKKwkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseSkpOwor CQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3BmdHVwbGUpKQorCQkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wZmFtaWx5ICV1IiwKKwkJCQkgb3BmYW1pbHkpOwor CQlvcGZmb3JtID0gKEZvcm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChvcGZ0dXBsZSk7CisK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpF Q1QpLAorCQkJCSBlcnJtc2coIm5vICVzIG9wZXJhdG9yIGZvdW5kIGZvciBXSVRIT1VUIE9W RVJMQVBTIGNvbnN0cmFpbnQiLCBvcG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoZXJlIG11 c3QgYmUgYW4gJXMgb3BlcmF0b3Igd2l0aGluIG9wZmFtaWx5IFwiJXNcIiBmb3IgdHlwZSBc IiVzXCIuIiwKKwkJCQkJCSAgIG9wbmFtZSwKKwkJCQkJCSAgIE5hbWVTdHIob3BmZm9ybS0+ b3BmbmFtZSksCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShhdHR0eXBlKSkpKTsKKwl9Cit9 CisKIC8qCiAgKgltYWtlT2JqZWN0TmFtZSgpCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwppbmRleCAyODIyYjJiYjQ0MC4uYzY5NjQzOGVkNWUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCkBAIC0xMDIyNSw2ICsxMDIyNSw3IEBAIGFkZEZrUmVjdXJzZVJlZmVy ZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlv biByZWwsCiAJCQkJCQkJCQkgIGNvbmlzbG9jYWwsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJ CSAgY29uaW5oY291bnQsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCQkgIGNvbm5vaW5oZXJp dCwgLyogY29uTm9Jbmhlcml0ICovCisJCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRob3V0 T3ZlcmxhcHMgKi8KIAkJCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJ T2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29uc3Ry T2lkKTsKQEAgLTEwNTIzLDYgKzEwNTI0LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmco TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWws CiAJCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxzZSwK KwkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLwogCQkJCQkJCQkJ ICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0xMTAyOCw2ICsxMTAzMCw3IEBAIENsb25lRmtSZWZl cmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBh cnRSZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkv KiBpbmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25Ob0luaGVyaXQgKi8KKwkJ CQkJCQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJsYXBzICovCiAJCQkJCQkJCSAgdHJ1 ZSk7CiAKIAkJLyogU2V0IHVwIHBhcnRpdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcg Y29uc3RyYWludCAqLwpAQCAtMTQ0NDEsNyArMTQ0NDQsOCBAQCBUcnlSZXVzZUluZGV4KE9p ZCBvbGRJZCwgSW5kZXhTdG10ICpzdG10KQogCWlmIChDaGVja0luZGV4Q29tcGF0aWJsZShv bGRJZCwKIAkJCQkJCQkgc3RtdC0+YWNjZXNzTWV0aG9kLAogCQkJCQkJCSBzdG10LT5pbmRl eFBhcmFtcywKLQkJCQkJCQkgc3RtdC0+ZXhjbHVkZU9wTmFtZXMpKQorCQkJCQkJCSBzdG10 LT5leGNsdWRlT3BOYW1lcywKKwkJCQkJCQkgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpKQog CXsKIAkJUmVsYXRpb24JaXJlbCA9IGluZGV4X29wZW4ob2xkSWQsIE5vTG9jayk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCA2ODczYzNiNGQ5ZC4uMzRlYTNkMTljOGMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTg0MSw2ICs4NDEsNyBAQCBDcmVhdGVUcmln Z2VyRmlyaW5nT24oQ3JlYXRlVHJpZ1N0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3Ry aW5nLAogCQkJCQkJCQkJCQkgIHRydWUsIC8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJCQkJICAw LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJCQkgIHRydWUsIC8qIG5vaW5oZXJpdCAqLwor CQkJCQkJCQkJCQkgIGZhbHNlLCAvKiBjb253aXRob3V0b3ZlcmxhcHMgKi8KIAkJCQkJCQkJ CQkJICBpc0ludGVybmFsKTsJLyogaXNfaW50ZXJuYWwgKi8KIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90eXBlY21kcy5jCmluZGV4IDI3Y2MxODZjMTZmLi5hNDAwZmIzOWY2NyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90eXBlY21kcy5jCkBAIC0zNTQ0LDYgKzM1NDQsNyBAQCBkb21haW5BZGRDb25z dHJhaW50KE9pZCBkb21haW5PaWQsIE9pZCBkb21haW5OYW1lc3BhY2UsIE9pZCBiYXNlVHlw ZU9pZCwKIAkJCQkJCQkgIHRydWUsIC8qIGlzIGxvY2FsICovCiAJCQkJCQkJICAwLAkvKiBp bmhjb3VudCAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIGNvbm5vaW5oZXJpdCAqLworCQkJCQkJ CSAgZmFsc2UsCS8qIGNvbndpdGhvdXRvdmVybGFwcyAqLwogCQkJCQkJCSAgZmFsc2UpOwkv KiBpc19pbnRlcm5hbCAqLwogCWlmIChjb25zdHJBZGRyKQogCQlPYmplY3RBZGRyZXNzU2V0 KCpjb25zdHJBZGRyLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY2NvaWQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291 dGZ1bmNzLmMKaW5kZXggMjk2YmE4NDUxODcuLjAzZjY3YjY4NTA2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291 dGZ1bmNzLmMKQEAgLTc1Niw2ICs3NTYsNyBAQCBfb3V0Q29uc3RyYWludChTdHJpbmdJbmZv IHN0ciwgY29uc3QgQ29uc3RyYWludCAqbm9kZSkKIAkJY2FzZSBDT05TVFJfUFJJTUFSWToK IAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCAiUFJJTUFSWV9LRVkiKTsKIAkJCVdS SVRFX05PREVfRklFTEQoa2V5cyk7CisJCQlXUklURV9CT09MX0ZJRUxEKHdpdGhvdXRfb3Zl cmxhcHMpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChpbmNsdWRpbmcpOwogCQkJV1JJVEVfTk9E RV9GSUVMRChvcHRpb25zKTsKIAkJCVdSSVRFX1NUUklOR19GSUVMRChpbmRleG5hbWUpOwpA QCAtNzY4LDYgKzc2OSw3IEBAIF9vdXRDb25zdHJhaW50KFN0cmluZ0luZm8gc3RyLCBjb25z dCBDb25zdHJhaW50ICpub2RlKQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICJV TklRVUUiKTsKIAkJCVdSSVRFX0JPT0xfRklFTEQobnVsbHNfbm90X2Rpc3RpbmN0KTsKIAkJ CVdSSVRFX05PREVfRklFTEQoa2V5cyk7CisJCQlXUklURV9CT09MX0ZJRUxEKHdpdGhvdXRf b3ZlcmxhcHMpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChpbmNsdWRpbmcpOwogCQkJV1JJVEVf Tk9ERV9GSUVMRChvcHRpb25zKTsKIAkJCVdSSVRFX1NUUklOR19GSUVMRChpbmRleG5hbWUp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCAxNjI0YjM0NTgxMi4uY2ZiNTUyZmRlNzQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC00MjcsNiArNDI3LDcgQEAgX3JlYWRDb25z dHJhaW50KHZvaWQpCiAKIAkJY2FzZSBDT05TVFJfUFJJTUFSWToKIAkJCVJFQURfTk9ERV9G SUVMRChrZXlzKTsKKwkJCVJFQURfQk9PTF9GSUVMRCh3aXRob3V0X292ZXJsYXBzKTsKIAkJ CVJFQURfTk9ERV9GSUVMRChpbmNsdWRpbmcpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKG9wdGlv bnMpOwogCQkJUkVBRF9TVFJJTkdfRklFTEQoaW5kZXhuYW1lKTsKQEAgLTQzOCw2ICs0Mzks NyBAQCBfcmVhZENvbnN0cmFpbnQodm9pZCkKIAkJY2FzZSBDT05TVFJfVU5JUVVFOgogCQkJ UkVBRF9CT09MX0ZJRUxEKG51bGxzX25vdF9kaXN0aW5jdCk7CiAJCQlSRUFEX05PREVfRklF TEQoa2V5cyk7CisJCQlSRUFEX0JPT0xfRklFTEQod2l0aG91dF9vdmVybGFwcyk7CiAJCQlS RUFEX05PREVfRklFTEQoaW5jbHVkaW5nKTsKIAkJCVJFQURfTk9ERV9GSUVMRChvcHRpb25z KTsKIAkJCVJFQURfU1RSSU5HX0ZJRUxEKGluZGV4bmFtZSk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRl eCA2Yjg4MDk2ZThlMS4uMGE1NzYxMWMzODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTI4LDcg KzUyOCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJY29sdW1ucmVmIGlu X2V4cHIgaGF2aW5nX2NsYXVzZSBmdW5jX3RhYmxlIHhtbHRhYmxlIGFycmF5X2V4cHIKIAkJ CQlPcHRXaGVyZUNsYXVzZSBvcGVyYXRvcl9kZWZfYXJnCiAldHlwZSA8bGlzdD4Jcm93c2Zy b21faXRlbSByb3dzZnJvbV9saXN0IG9wdF9jb2xfZGVmX2xpc3QKLSV0eXBlIDxib29sZWFu PiBvcHRfb3JkaW5hbGl0eQorJXR5cGUgPGJvb2xlYW4+IG9wdF9vcmRpbmFsaXR5IG9wdF93 aXRob3V0X292ZXJsYXBzCiAldHlwZSA8bGlzdD4JRXhjbHVzaW9uQ29uc3RyYWludExpc3Qg RXhjbHVzaW9uQ29uc3RyYWludEVsZW0KICV0eXBlIDxsaXN0PglmdW5jX2FyZ19saXN0IGZ1 bmNfYXJnX2xpc3Rfb3B0CiAldHlwZSA8bm9kZT4JZnVuY19hcmdfZXhwcgpAQCAtNDEyNyw3 ICs0MTI3LDcgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmluaXRpYWxseV92YWxpZCA9 IHRydWU7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IFVOSVFVRSBvcHRf dW5pcXVlX251bGxfdHJlYXRtZW50ICcoJyBjb2x1bW5MaXN0ICcpJyBvcHRfY19pbmNsdWRl IG9wdF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCisJCQl8IFVOSVFVRSBvcHRfdW5p cXVlX251bGxfdHJlYXRtZW50ICcoJyBjb2x1bW5MaXN0IG9wdF93aXRob3V0X292ZXJsYXBz ICcpJyBvcHRfY19pbmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCiAJ CQkJQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4g PSBtYWtlTm9kZShDb25zdHJhaW50KTsKQEAgLTQxMzYsMTEgKzQxMzYsMTIgQEAgQ29uc3Ry YWludEVsZW06CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCW4tPm51bGxzX25vdF9k aXN0aW5jdCA9ICEkMjsKIAkJCQkJbi0+a2V5cyA9ICQ0OwotCQkJCQluLT5pbmNsdWRpbmcg PSAkNjsKLQkJCQkJbi0+b3B0aW9ucyA9ICQ3OworCQkJCQluLT53aXRob3V0X292ZXJsYXBz ID0gJDU7CisJCQkJCW4tPmluY2x1ZGluZyA9ICQ3OworCQkJCQluLT5vcHRpb25zID0gJDg7 CiAJCQkJCW4tPmluZGV4bmFtZSA9IE5VTEw7Ci0JCQkJCW4tPmluZGV4c3BhY2UgPSAkODsK LQkJCQkJcHJvY2Vzc0NBU2JpdHMoJDksIEA5LCAiVU5JUVVFIiwKKwkJCQkJbi0+aW5kZXhz cGFjZSA9ICQ5OworCQkJCQlwcm9jZXNzQ0FTYml0cygkMTAsIEAxMCwgIlVOSVFVRSIsCiAJ CQkJCQkJCSAgICZuLT5kZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLCBOVUxMLAogCQkJ CQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopIG47CkBAIC00 MTYxLDcgKzQxNjIsNyBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJCQkJICAgTlVMTCwgeXlz Y2FubmVyKTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KLQkJCXwgUFJJTUFSWSBL RVkgJygnIGNvbHVtbkxpc3QgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0 Q29uc1RhYmxlU3BhY2UKKwkJCXwgUFJJTUFSWSBLRVkgJygnIGNvbHVtbkxpc3Qgb3B0X3dp dGhvdXRfb3ZlcmxhcHMgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29u c1RhYmxlU3BhY2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRlU3BlYwogCQkJCXsKIAkJCQkJ Q29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwpAQCAtNDE2OSwxMSArNDE3 MCwxMiBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+Y29udHlwZSA9IENPTlNUUl9QUklN QVJZOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQluLT5rZXlzID0gJDQ7Ci0JCQkJ CW4tPmluY2x1ZGluZyA9ICQ2OwotCQkJCQluLT5vcHRpb25zID0gJDc7CisJCQkJCW4tPndp dGhvdXRfb3ZlcmxhcHMgPSAkNTsKKwkJCQkJbi0+aW5jbHVkaW5nID0gJDc7CisJCQkJCW4t Pm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+aW5kZXhuYW1lID0gTlVMTDsKLQkJCQkJbi0+aW5k ZXhzcGFjZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FTYml0cygkOSwgQDksICJQUklNQVJZIEtF WSIsCisJCQkJCW4tPmluZGV4c3BhY2UgPSAkOTsKKwkJCQkJcHJvY2Vzc0NBU2JpdHMoJDEw LCBAMTAsICJQUklNQVJZIEtFWSIsCiAJCQkJCQkJCSAgICZuLT5kZWZlcnJhYmxlLCAmbi0+ aW5pdGRlZmVycmVkLCBOVUxMLAogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJ CQkkJCA9IChOb2RlICopIG47CkBAIC00MjQxLDYgKzQyNDMsMTEgQEAgb3B0X25vX2luaGVy aXQ6CU5PIElOSEVSSVQJCQkJCQkJeyAgJCQgPSB0cnVlOyB9CiAJCQl8IC8qIEVNUFRZICov CQkJCQkJCXsgICQkID0gZmFsc2U7IH0KIAkJOwogCitvcHRfd2l0aG91dF9vdmVybGFwczoK KwkJCVdJVEhPVVQgT1ZFUkxBUFMJCQkJCQl7ICQkID0gdHJ1ZTsgfQorCQkJfCAvKkVNUFRZ Ki8JCQkJCQkJCXsgJCQgPSBmYWxzZTsgfQorCTsKKwogb3B0X2NvbHVtbl9saXN0OgogCQkJ JygnIGNvbHVtbkxpc3QgJyknCQkJCQkJeyAkJCA9ICQyOyB9CiAJCQl8IC8qRU1QVFkqLwkJ CQkJCQkJeyAkJCA9IE5JTDsgfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5k ZXggYjJkMWZhOWQwZDYuLjA3NzJhMDIxMGU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMKQEAgLTE3MTYsNiArMTcxNiw3IEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10 KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCWluZGV4LT51bmlx dWUgPSBpZHhyZWMtPmluZGlzdW5pcXVlOwogCWluZGV4LT5udWxsc19ub3RfZGlzdGluY3Qg PSBpZHhyZWMtPmluZG51bGxzbm90ZGlzdGluY3Q7CiAJaW5kZXgtPnByaW1hcnkgPSBpZHhy ZWMtPmluZGlzcHJpbWFyeTsKKwlpbmRleC0+aXN3aXRob3V0b3ZlcmxhcHMgPSAoaWR4cmVj LT5pbmRpc3ByaW1hcnkgfHwgaWR4cmVjLT5pbmRpc3VuaXF1ZSkgJiYgaWR4cmVjLT5pbmRp c2V4Y2x1c2lvbjsKIAlpbmRleC0+dHJhbnNmb3JtZWQgPSB0cnVlOwkvKiBkb24ndCBuZWVk IHRyYW5zZm9ybUluZGV4U3RtdCAqLwogCWluZGV4LT5jb25jdXJyZW50ID0gZmFsc2U7CiAJ aW5kZXgtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKQEAgLTE3NjUsNyArMTc2Niw5IEBAIGdl bmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3Vy Y2VfaWR4LAogCQkJCWludAkJCW5FbGVtczsKIAkJCQlpbnQJCQlpOwogCi0JCQkJQXNzZXJ0 KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xVU0lPTik7CisJCQkJQXNzZXJ0 KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xVU0lPTiB8fAorCQkJCQkJKGlu ZGV4LT5pc3dpdGhvdXRvdmVybGFwcyAmJgorCQkJCQkJIChjb25yZWMtPmNvbnR5cGUgPT0g Q09OU1RSQUlOVF9QUklNQVJZIHx8IGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1VO SVFVRSkpKTsKIAkJCQkvKiBFeHRyYWN0IG9wZXJhdG9yIE9JRHMgZnJvbSB0aGUgcGdfY29u c3RyYWludCB0dXBsZSAqLwogCQkJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChD T05TVFJPSUQsIGh0X2NvbnN0ciwKIAkJCQkJCQkJCQkJICAgQW51bV9wZ19jb25zdHJhaW50 X2NvbmV4Y2xvcCk7CkBAIC0yMzA1LDYgKzIzMDgsNyBAQCB0cmFuc2Zvcm1JbmRleENvbnN0 cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkK IAl9CiAJaW5kZXgtPm51bGxzX25vdF9kaXN0aW5jdCA9IGNvbnN0cmFpbnQtPm51bGxzX25v dF9kaXN0aW5jdDsKIAlpbmRleC0+aXNjb25zdHJhaW50ID0gdHJ1ZTsKKwlpbmRleC0+aXN3 aXRob3V0b3ZlcmxhcHMgPSBjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzOwogCWluZGV4 LT5kZWZlcnJhYmxlID0gY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKIAlpbmRleC0+aW5pdGRl ZmVycmVkID0gY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwogCkBAIC0yMzk3LDYgKzI0MDEs MTEgQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQs IENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJCQkJCSBlcnJtc2coImluZGV4IFwiJXNcIiBp cyBub3QgdmFsaWQiLCBpbmRleF9uYW1lKSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihj eHQtPnBzdGF0ZSwgY29uc3RyYWludC0+bG9jYXRpb24pKSk7CiAKKwkJLyoKKwkJICogVG9k YXkgd2UgZm9yYmlkIG5vbi11bmlxdWUgaW5kZXhlcywgYnV0IHdlIGNvdWxkIHBlcm1pdCBH aVNUCisJCSAqIGluZGV4ZXMgd2hvc2UgbGFzdCBlbnRyeSBpcyBhIHJhbmdlIHR5cGUgYW5k IHVzZSB0aGF0IHRvIGNyZWF0ZSBhCisJCSAqIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWlu dCAoaS5lLiBhIHRlbXBvcmFsIGNvbnN0cmFpbnQpLgorCQkgKi8KIAkJaWYgKCFpbmRleF9m b3JtLT5pbmRpc3VuaXF1ZSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVS UkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLApAQCAtMjY3Myw2ICsyNjgyLDIzIEBAIHRyYW5z Zm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10 Q29udGV4dCAqY3h0KQogCQkJCW5vdG51bGxjbWRzID0gbGFwcGVuZChub3RudWxsY21kcywg bm90bnVsbGNtZCk7CiAJCQl9CiAJCX0KKworCQlpZiAoY29uc3RyYWludC0+d2l0aG91dF9v dmVybGFwcykKKwkJeworCQkJLyoKKwkJCSAqIFRoaXMgZW5mb3JjZXMgdGhhdCB0aGVyZSBp cyBhdCBsZWFzdCBvbmUgZXF1YWxpdHkgY29sdW1uIGJlc2lkZXMKKwkJCSAqIHRoZSBXSVRI T1VUIE9WRVJMQVBTIGNvbHVtbnMuICBUaGlzIGlzIHBlciBTUUwgc3RhbmRhcmQuICBYWFgK KwkJCSAqIERvIHdlIG5lZWQgdGhpcz8KKwkJCSAqLworCQkJaWYgKGxpc3RfbGVuZ3RoKGNv bnN0cmFpbnQtPmtleXMpIDwgMikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2coImNvbnN0cmFpbnQgdXNp bmcgV0lUSE9VVCBPVkVSTEFQUyBuZWVkcyBhdCBsZWFzdCB0d28gY29sdW1ucyIpKTsKKwor CQkJLyogV0lUSE9VVCBPVkVSTEFQUyByZXF1aXJlcyBhIEdpU1QgaW5kZXggKi8KKwkJCWlu ZGV4LT5hY2Nlc3NNZXRob2QgPSAiZ2lzdCI7CisJCX0KKwogCX0KIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggMGIyYTE2NDA1N2IuLmQxNDBhYjRiZGRhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zMzksNyArMzM5LDcgQEAgc3Rh dGljIGNoYXIgKnBnX2dldF92aWV3ZGVmX3dvcmtlcihPaWQgdmlld29pZCwKIAkJCQkJCQkJ ICAgaW50IHByZXR0eUZsYWdzLCBpbnQgd3JhcENvbHVtbik7CiBzdGF0aWMgY2hhciAqcGdf Z2V0X3RyaWdnZXJkZWZfd29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJldHR5KTsKIHN0YXRp YyBpbnQJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhf YXJyYXksIE9pZCByZWxJZCwKLQkJCQkJCQkJCQkgU3RyaW5nSW5mbyBidWYpOworCQkJCQkJ CQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpOwogc3RhdGljIGNo YXIgKnBnX2dldF9ydWxlZGVmX3dvcmtlcihPaWQgcnVsZW9pZCwgaW50IHByZXR0eUZsYWdz KTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfaW5kZXhkZWZfd29ya2VyKE9pZCBpbmRleHJlbGlk LCBpbnQgY29sbm8sCiAJCQkJCQkJCQljb25zdCBPaWQgKmV4Y2x1ZGVPcHMsCkBAIC0yMjQ3 LDcgKzIyNDcsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFp bnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3RO dWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2Nv bmtleSk7CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9y bS0+Y29ucmVsaWQsICZidWYpOworCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko dmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2UsICZidWYpOwogCiAJCQkJLyogYWRkIGZv cmVpZ24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIikg UkVGRVJFTkNFUyAlcygiLApAQCAtMjI1OCw3ICsyMjU4LDcgQEAgcGdfZ2V0X2NvbnN0cmFp bnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJ dmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJ CQkJIEFudW1fcGdfY29uc3RyYWludF9jb25ma2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1 bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsICZidWYpOworCQkJCWRl Y29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsIGZh bHNlLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAK QEAgLTIzNDQsNyArMjM0NCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQg Y29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCWlmICghaXNudWxsKQogCQkJ CXsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiICgiKTsKLQkJCQkJZGVj b21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVm KTsKKwkJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNv bnJlbGlkLCBmYWxzZSwgJmJ1Zik7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYs ICcpJyk7CiAJCQkJfQogCkBAIC0yMzc5LDcgKzIzNzksNyBAQCBwZ19nZXRfY29uc3RyYWlu dGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2 YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJ CQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlrZXlhdHRzID0gZGVjb21w aWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsK KwkJCQlrZXlhdHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZv cm0tPmNvbnJlbGlkLCBjb25Gb3JtLT5jb253aXRob3V0b3ZlcmxhcHMsICZidWYpOwogCiAJ CQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAtMjU3NSw3ICsyNTc1 LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJv b2wgZnVsbENvbW1hbmQsCiAgKi8KIHN0YXRpYyBpbnQKIGRlY29tcGlsZV9jb2x1bW5faW5k ZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJ IFN0cmluZ0luZm8gYnVmKQorCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5n SW5mbyBidWYpCiB7CiAJRGF0dW0JICAgKmtleXM7CiAJaW50CQkJbktleXM7CkBAIC0yNTk2 LDYgKzI1OTYsOCBAQCBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVt bl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAogCQllbHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZv KGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAl9CisJaWYgKHdp dGhvdXRPdmVybGFwcykKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgV0lUSE9V VCBPVkVSTEFQUyIpOwogCiAJcmV0dXJuIG5LZXlzOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMKaW5kZXggMjAyNzNmMGJlMTYuLjY2ZTE5YjlmNmRhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU1NjgsMTEgKzU1NjgsMTQgQEAgUmVsYXRp b25HZXRJZGVudGl0eUtleUJpdG1hcChSZWxhdGlvbiByZWxhdGlvbikKIC8qCiAgKiBSZWxh dGlvbkdldEV4Y2x1c2lvbkluZm8gLS0gZ2V0IGluZm8gYWJvdXQgaW5kZXgncyBleGNsdXNp b24gY29uc3RyYWludAogICoKLSAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGZvciBh biBpbmRleCB0aGF0IGlzIGtub3duIHRvIGhhdmUgYW4KLSAqIGFzc29jaWF0ZWQgZXhjbHVz aW9uIGNvbnN0cmFpbnQuICBJdCByZXR1cm5zIGFycmF5cyAocGFsbG9jJ2QgaW4gY2FsbGVy J3MKLSAqIGNvbnRleHQpIG9mIHRoZSBleGNsdXNpb24gb3BlcmF0b3IgT0lEcywgdGhlaXIg dW5kZXJseWluZyBmdW5jdGlvbnMnCi0gKiBPSURzLCBhbmQgdGhlaXIgc3RyYXRlZ3kgbnVt YmVycyBpbiB0aGUgaW5kZXgncyBvcGNsYXNzZXMuICBXZSBjYWNoZQotICogYWxsIHRoaXMg aW5mb3JtYXRpb24gc2luY2UgaXQgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiB3b3JrIHRv IGdldC4KKyAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGZvciBhbiBpbmRleCB0aGF0 IGlzIGtub3duIHRvIGhhdmUgYW4gYXNzb2NpYXRlZAorICogZXhjbHVzaW9uIGNvbnN0cmFp bnQgb3IgcHJpbWFyeSBrZXkvdW5pcXVlIGNvbnN0cmFpbnQgdXNpbmcgV0lUSE9VVAorICog T1ZFUkxBUFMuCisKKyAqIEl0IHJldHVybnMgYXJyYXlzIChwYWxsb2MnZCBpbiBjYWxsZXIn cyBjb250ZXh0KSBvZiB0aGUgZXhjbHVzaW9uIG9wZXJhdG9yCisgKiBPSURzLCB0aGVpciB1 bmRlcmx5aW5nIGZ1bmN0aW9ucycgT0lEcywgYW5kIHRoZWlyIHN0cmF0ZWd5IG51bWJlcnMg aW4gdGhlCisgKiBpbmRleCdzIG9wY2xhc3Nlcy4gIFdlIGNhY2hlIGFsbCB0aGlzIGluZm9y bWF0aW9uIHNpbmNlIGl0IHJlcXVpcmVzIGEgZmFpcgorICogYW1vdW50IG9mIHdvcmsgdG8g Z2V0LgogICovCiB2b2lkCiBSZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8oUmVsYXRpb24gaW5k ZXhSZWxhdGlvbiwKQEAgLTU2MzYsNyArNTYzOSwxMCBAQCBSZWxhdGlvbkdldEV4Y2x1c2lv bkluZm8oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJaW50CQkJbmVsZW07CiAKIAkJLyog V2Ugd2FudCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3duaW5nIHRoZSBpbmRleCAqLwot CQlpZiAoY29uZm9ybS0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0VYQ0xVU0lPTiB8fAorCQlp ZiAoKGNvbmZvcm0tPmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJT04gJiYKKwkJCQkJ IShjb25mb3JtLT5jb253aXRob3V0b3ZlcmxhcHMgJiYgKAorCQkJCQkJCWNvbmZvcm0tPmNv bnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZCisJCQkJCQkJfHwgY29uZm9ybS0+Y29udHlw ZSA9PSBDT05TVFJBSU5UX1VOSVFVRSkpKSB8fAogCQkJY29uZm9ybS0+Y29uaW5kaWQgIT0g UmVsYXRpb25HZXRSZWxpZChpbmRleFJlbGF0aW9uKSkKIAkJCWNvbnRpbnVlOwogCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwppbmRleCAyMmQxZTZjZjkyMi4uMTNkYTI0NTNhMTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwpAQCAtNzIzMyw2ICs3MjMzLDcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJs ZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWlfY29ubmFtZSwKIAkJCQlp X2NvbmRlZmVycmFibGUsCiAJCQkJaV9jb25kZWZlcnJlZCwKKwkJCQlpX2NvbndpdGhvdXRv dmVybGFwcywKIAkJCQlpX2NvbnRhYmxlb2lkLAogCQkJCWlfY29ub2lkLAogCQkJCWlfY29u ZGVmLApAQCAtNzMxNCwxMCArNzMxNSwxNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQs IFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAKIAlpZiAoZm91dC0+cmVt b3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAot CQkJCQkJCSAiaS5pbmRudWxsc25vdGRpc3RpbmN0ICIpOworCQkJCQkJCSAiaS5pbmRudWxs c25vdGRpc3RpbmN0LCAiKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LAotCQkJCQkJCSAiZmFsc2UgQVMgaW5kbnVsbHNub3RkaXN0aW5jdCAiKTsKKwkJCQkJCQkg ImZhbHNlIEFTIGluZG51bGxzbm90ZGlzdGluY3QsICIpOworCisJaWYgKGZvdXQtPnJlbW90 ZVZlcnNpb24gPj0gMTcwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJ CQkJCQkgImMuY29ud2l0aG91dG92ZXJsYXBzICIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJOVUxMIEFTIGNvbndpdGhvdXRvdmVybGFwcyAi KTsKIAogCS8qCiAJICogVGhlIHBvaW50IG9mIHRoZSBtZXNzeS1sb29raW5nIG91dGVyIGpv aW4gaXMgdG8gZmluZCBhIGNvbnN0cmFpbnQgdGhhdApAQCAtNzM4NSw2ICs3MzkzLDcgQEAg Z2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVt VGFibGVzKQogCWlfY29ubmFtZSA9IFBRZm51bWJlcihyZXMsICJjb25uYW1lIik7CiAJaV9j b25kZWZlcnJhYmxlID0gUFFmbnVtYmVyKHJlcywgImNvbmRlZmVycmFibGUiKTsKIAlpX2Nv bmRlZmVycmVkID0gUFFmbnVtYmVyKHJlcywgImNvbmRlZmVycmVkIik7CisJaV9jb253aXRo b3V0b3ZlcmxhcHMgPSBQUWZudW1iZXIocmVzLCAiY29ud2l0aG91dG92ZXJsYXBzIik7CiAJ aV9jb250YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJjb250YWJsZW9pZCIpOwogCWlfY29u b2lkID0gUFFmbnVtYmVyKHJlcywgImNvbm9pZCIpOwogCWlfY29uZGVmID0gUFFmbnVtYmVy KHJlcywgImNvbmRlZiIpOwpAQCAtNzQ5Miw2ICs3NTAxLDcgQEAgZ2V0SW5kZXhlcyhBcmNo aXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWNv bnN0cmluZm8tPmNvbmluZGV4ID0gaW5keGluZm9bal0uZG9iai5kdW1wSWQ7CiAJCQkJY29u c3RyaW5mby0+Y29uZGVmZXJyYWJsZSA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfY29uZGVm ZXJyYWJsZSkpID09ICd0JzsKIAkJCQljb25zdHJpbmZvLT5jb25kZWZlcnJlZCA9ICooUFFn ZXR2YWx1ZShyZXMsIGosIGlfY29uZGVmZXJyZWQpKSA9PSAndCc7CisJCQkJY29uc3RyaW5m by0+Y29ud2l0aG91dG92ZXJsYXBzID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV9jb253aXRo b3V0b3ZlcmxhcHMpKSA9PSAndCc7CiAJCQkJY29uc3RyaW5mby0+Y29uaXNsb2NhbCA9IHRy dWU7CiAJCQkJY29uc3RyaW5mby0+c2VwYXJhdGUgPSB0cnVlOwogCkBAIC0xNzIwMCw2ICsx NzIxMCw4IEBAIGR1bXBDb25zdHJhaW50KEFyY2hpdmUgKmZvdXQsIGNvbnN0IENvbnN0cmFp bnRJbmZvICpjb25pbmZvKQogCQkJCQkJCQkgIChrID09IDApID8gIiIgOiAiLCAiLAogCQkJ CQkJCQkgIGZtdElkKGF0dG5hbWUpKTsKIAkJCX0KKwkJCWlmIChjb25pbmZvLT5jb253aXRo b3V0b3ZlcmxhcHMpCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiBXSVRIT1VUIE9W RVJMQVBTIik7CiAKIAkJCWlmIChpbmR4aW5mby0+aW5kbmtleWF0dHJzIDwgaW5keGluZm8t PmluZG5hdHRycykKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiKSBJTkNMVURFICgi KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCmluZGV4IDlhMzQzNDdjZmM3Li5kMWE2ZGMwNzIzMiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oCkBAIC00ODksNiArNDg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFp bnRJbmZvCiAJRHVtcElkCQljb25pbmRleDsJCS8qIGlkZW50aWZpZXMgYXNzb2NpYXRlZCBp bmRleCBpZiBhbnkgKi8KIAlib29sCQljb25kZWZlcnJhYmxlOwkvKiB0cnVlIGlmIGNvbnN0 cmFpbnQgaXMgREVGRVJSQUJMRSAqLwogCWJvb2wJCWNvbmRlZmVycmVkOwkvKiB0cnVlIGlm IGNvbnN0cmFpbnQgaXMgSU5JVElBTExZIERFRkVSUkVEICovCisJYm9vbAkJY29ud2l0aG91 dG92ZXJsYXBzOwkvKiB0cnVlIGlmIHRoZSBjb25zdHJhaW50IGlzIFdJVEhPVVQgT1ZFUkxB UFMgKi8KIAlib29sCQljb25pc2xvY2FsOwkJLyogdHJ1ZSBpZiBjb25zdHJhaW50IGhhcyBs b2NhbCBkZWZpbml0aW9uICovCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3Qg ZHVtcCBhcyBzZXBhcmF0ZSBpdGVtICovCiB9IENvbnN0cmFpbnRJbmZvOwpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbAppbmRleCAzOTEyZGJmNDgxYS4uNGE0ZDgxYzRkOWYgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4v cGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0xMDE1LDYgKzEwMTUsNDYgQEAgbXkgJXRl c3RzID0gKAogCQl9LAogCX0sCiAKKwknQ09OU1RSQUlOVCBQUklNQVJZIEtFWSAvIFdJVEhP VVQgT1ZFUkxBUFMnID0+IHsKKwkJY3JlYXRlX3NxbCAgPT4gJ0NSRUFURSBUQUJMRSBkdW1w X3Rlc3QudGVzdF90YWJsZV90cGsgKAorCQkJCQkJCWNvbDEgaW50NHJhbmdlLAorCQkJCQkJ CWNvbDIgdHN0enJhbmdlLAorCQkJCQkJCUNPTlNUUkFJTlQgdGVzdF90YWJsZV90cGtfcGtl eSBQUklNQVJZIEtFWSAoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKSk7JywKKwkJcmVn ZXhwID0+IHFyL14KKwkJCVxRQUxURVIgVEFCTEUgT05MWSBkdW1wX3Rlc3QudGVzdF90YWJs ZV90cGtcRSBcbl5ccysKKwkJCVxRQUREIENPTlNUUkFJTlQgdGVzdF90YWJsZV90cGtfcGtl eSBQUklNQVJZIEtFWSAoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKTtcRQorCQkJL3ht LAorCQlsaWtlID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJCQklZHVtcF90ZXN0X3NjaGVtYV9y dW5zLAorCQkJc2VjdGlvbl9wb3N0X2RhdGEgID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7 CisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF9tZWFz dXJlbWVudCAgICA9PiAxLAorCQl9LAorCX0sCisKKwknQ09OU1RSQUlOVCBVTklRVUUgLyBX SVRIT1VUIE9WRVJMQVBTJyA9PiB7CisJCWNyZWF0ZV9zcWwgID0+ICdDUkVBVEUgVEFCTEUg ZHVtcF90ZXN0LnRlc3RfdGFibGVfdHVxICgKKwkJCQkJCQljb2wxIGludDRyYW5nZSwKKwkJ CQkJCQljb2wyIHRzdHpyYW5nZSwKKwkJCQkJCQlDT05TVFJBSU5UIHRlc3RfdGFibGVfdHVx X3VxIFVOSVFVRSAoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKSk7JywKKwkJcmVnZXhw ID0+IHFyL14KKwkJCVxRQUxURVIgVEFCTEUgT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZV90 dXFcRSBcbl5ccysKKwkJCVxRQUREIENPTlNUUkFJTlQgdGVzdF90YWJsZV90dXFfdXEgVU5J UVVFIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpO1xFCisJCQkveG0sCisJCWxpa2Ug PT4geworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsCisJCQlz ZWN0aW9uX3Bvc3RfZGF0YSAgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1 ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX21lYXN1cmVtZW50ICAg ID0+IDEsCisJCX0sCisJfSwKKwogCSdBTFRFUiBUQUJMRSAocGFydGl0aW9uZWQpIEFERCBD T05TVFJBSU5UIC4uLiBGT1JFSUdOIEtFWScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNCwK IAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX2Zr ICgKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKaW5kZXggMzdmOTUxNjMyMDEuLjNmOGJmZjU5NTQ4IDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YwpAQCAtMjM3OSw2ICsyMzc5LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQllbHNlCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmJ1ZiwgIiwgZmFsc2UgQVMgaW5kaXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZidWYsICIsIGMyLnJlbHRhYmxlc3BhY2UiKTsKKwkJCWlmIChwc2V0LnN2ZXJz aW9uID49IDE3MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBjb24u Y29ud2l0aG91dG92ZXJsYXBzIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgIiwgZmFsc2UgQVMgY29ud2l0aG91dG92ZXJsYXBzIik7CiAJCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMsIHBnX2NhdGFsb2cucGdfY2xhc3MgYzIsIHBnX2NhdGFsb2cucGdfaW5kZXggaVxuIgog CQkJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBjb24gT04g KGNvbnJlbGlkID0gaS5pbmRyZWxpZCBBTkQgY29uaW5kaWQgPSBpLmluZGV4cmVsaWQgQU5E IGNvbnR5cGUgSU4gKCdwJywndScsJ3gnKSlcbiIKQEAgLTI0MDAsOCArMjQwNCwxMiBAQCBk ZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsCiAJCQkJCQkJCQkgIFBRZ2V0 dmFsdWUocmVzdWx0LCBpLCAwKSk7CiAKLQkJCQkJLyogSWYgZXhjbHVzaW9uIGNvbnN0cmFp bnQsIHByaW50IHRoZSBjb25zdHJhaW50ZGVmICovCi0JCQkJCWlmIChzdHJjbXAoUFFnZXR2 YWx1ZShyZXN1bHQsIGksIDcpLCAieCIpID09IDApCisJCQkJCS8qCisJCQkJCSAqIElmIGV4 Y2x1c2lvbiBjb25zdHJhaW50IG9yIFBLL1VOSVFVRSBjb25zdHJhaW50IFdJVEhPVVQKKwkJ CQkJICogT1ZFUkxBUFMsIHByaW50IHRoZSBjb25zdHJhaW50ZGVmCisJCQkJCSAqLworCQkJ CQlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA3KSwgIngiKSA9PSAwIHx8CisJ CQkJCQkJc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxMiksICJ0IikgPT0gMCkKIAkJ CQkJewogCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAlcyIsCiAJCQkJCQkJCQkJ ICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgNikpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0 ZS5oCmluZGV4IDdiODc0OWM4ZGIwLi4yYWY3ZmJhY2JhYyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9n aXN0X3ByaXZhdGUuaApAQCAtNTMyLDYgKzUzMiw3IEBAIGV4dGVybiB2b2lkIGdpc3RNYWtl VW5pb25LZXkoR0lTVFNUQVRFICpnaXN0c3RhdGUsIGludCBhdHRubywKIAkJCQkJCQkgRGF0 dW0gKmRzdCwgYm9vbCAqZHN0aXNudWxsKTsKIAogZXh0ZXJuIFhMb2dSZWNQdHIgZ2lzdEdl dEZha2VMU04oUmVsYXRpb24gcmVsKTsKK2V4dGVybiBTdHJhdGVneU51bWJlciBnaXN0VHJh bnNsYXRlU3RyYXRudW0oT2lkIG9wY2xhc3MsIFN0cmF0ZWd5TnVtYmVyIHN0cmF0KTsKIAog LyogZ2lzdHZhY3V1bS5jICovCiBleHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpnaXN0 YnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3Mvc3RyYXRudW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5o CmluZGV4IDhhNDdkM2M5ZWM4Li5lYWYzYmIwMjc2NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3N0cmF0bnVtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVt LmgKQEAgLTIyLDYgKzIyLDcgQEAKIHR5cGVkZWYgdWludDE2IFN0cmF0ZWd5TnVtYmVyOwog CiAjZGVmaW5lIEludmFsaWRTdHJhdGVneSAoKFN0cmF0ZWd5TnVtYmVyKSAwKQorI2RlZmlu ZSBTdHJhdGVneUlzVmFsaWQoc3RyYXRudW0pICgoYm9vbCkgKChzdHJhdG51bSkgIT0gSW52 YWxpZFN0cmF0ZWd5KSkKIAogLyoKICAqIFN0cmF0ZWd5IG51bWJlcnMgZm9yIEItdHJlZSBp bmRleGVzLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDk5ZGFiNTk0MGJjLi4yZWY4NTEyZGJm ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtOTIsNiArOTIsNyBAQCBleHRlcm4gT2lkCWlu ZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAjZGVmaW5lCUlOREVYX0NPTlNU Ul9DUkVBVEVfSU5JVF9ERUZFUlJFRAkoMSA8PCAyKQogI2RlZmluZQlJTkRFWF9DT05TVFJf Q1JFQVRFX1VQREFURV9JTkRFWAkoMSA8PCAzKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JF QVRFX1JFTU9WRV9PTERfREVQUwkoMSA8PCA0KQorI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JF QVRFX1dJVEhPVVRfT1ZFUkxBUFMgKDEgPDwgNSkKIAogZXh0ZXJuIE9pZAlpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJ CSAgIE9pZCBvbGRJbmRleElkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19jb25zdHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaApp bmRleCBkNzk0MzJlMTQyYi4uOGZkNzZhOTRkNzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfY29uc3RyYWludC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y29uc3RyYWludC5oCkBAIC0xMDcsNiArMTA3LDEyIEBAIENBVEFMT0cocGdfY29uc3RyYWlu dCwyNjA2LENvbnN0cmFpbnRSZWxhdGlvbklkKQogCS8qIEhhcyBhIGxvY2FsIGRlZmluaXRp b24gYW5kIGNhbm5vdCBiZSBpbmhlcml0ZWQgKi8KIAlib29sCQljb25ub2luaGVyaXQ7CiAK KwkvKgorCSAqIEZvciBwcmltYXJ5IGtleXMgYW5kIHVuaXF1ZSBjb25zdHJhaW50cywgc2ln bmlmaWVzIHRoZSBsYXN0IGNvbHVtbiB1c2VzCisJICogb3ZlcmxhcHMgaW5zdGVhZCBvZiBl cXVhbHMuCisJICovCisJYm9vbAkJY29ud2l0aG91dG92ZXJsYXBzOworCiAjaWZkZWYgQ0FU QUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8K IAogCS8qCkBAIC0xNDYsNyArMTUyLDggQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYs Q29uc3RyYWludFJlbGF0aW9uSWQpCiAKIAkvKgogCSAqIElmIGFuIGV4Y2x1c2lvbiBjb25z dHJhaW50LCB0aGUgT0lEcyBvZiB0aGUgZXhjbHVzaW9uIG9wZXJhdG9ycyBmb3IKLQkgKiBl YWNoIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludAorCSAqIGVhY2ggY29sdW1uIG9mIHRoZSBj b25zdHJhaW50LiAgQWxzbyBzZXQgZm9yIHVuaXF1ZSBjb25zdHJhaW50cy9wcmltYXJ5CisJ ICoga2V5cyB1c2luZyBXSVRIT1VUIE9WRVJMQVBTLgogCSAqLwogCU9pZAkJCWNvbmV4Y2xv cFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKIApAQCAtMjM2LDYgKzI0Myw3IEBAIGV4 dGVybiBPaWQJQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnRO YW1lLAogCQkJCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJCQkJICBpbnQgY29uSW5o Q291bnQsCiAJCQkJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCQkJCSAgYm9vbCBj b25XaXRob3V0T3ZlcmxhcHMsCiAJCQkJCQkJCSAgYm9vbCBpc19pbnRlcm5hbCk7CiAKIGV4 dGVybiBib29sIENvbnN0cmFpbnROYW1lSXNVc2VkKENvbnN0cmFpbnRDYXRlZ29yeSBjb25D YXQsIE9pZCBvYmpJZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJl bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKaW5kZXggMjljNTExZTMxOTYu LmIyNWZmMmE4NzczIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0u aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtMTQsNiArMTQsNyBA QAogI2lmbmRlZiBERUZSRU1fSAogI2RlZmluZSBERUZSRU1fSAogCisjaW5jbHVkZSAiYWNj ZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAj aW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUu aCIKQEAgLTQ0LDEwICs0NSwxNCBAQCBleHRlcm4gY2hhciAqQ2hvb3NlUmVsYXRpb25OYW1l KGNvbnN0IGNoYXIgKm5hbWUxLCBjb25zdCBjaGFyICpuYW1lMiwKIGV4dGVybiBib29sIENo ZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJCQkJIGNvbnN0IGNoYXIgKmFj Y2Vzc01ldGhvZE5hbWUsCiAJCQkJCQkJCSBjb25zdCBMaXN0ICphdHRyaWJ1dGVMaXN0LAot CQkJCQkJCQkgY29uc3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcyk7CisJCQkJCQkJCSBjb25z dCBMaXN0ICpleGNsdXNpb25PcE5hbWVzLAorCQkJCQkJCQkgYm9vbCBpc1dpdGhvdXRPdmVy bGFwcyk7CiBleHRlcm4gT2lkCUdldERlZmF1bHRPcENsYXNzKE9pZCB0eXBlX2lkLCBPaWQg YW1faWQpOwogZXh0ZXJuIE9pZAlSZXNvbHZlT3BDbGFzcyhjb25zdCBMaXN0ICpvcGNsYXNz LCBPaWQgYXR0clR5cGUsCiAJCQkJCQkgICBjb25zdCBjaGFyICphY2Nlc3NNZXRob2ROYW1l LCBPaWQgYWNjZXNzTWV0aG9kSWQpOworZXh0ZXJuIHZvaWQgR2V0T3BlcmF0b3JGcm9tQ2Fu b25pY2FsU3RyYXRlZ3koT2lkIG9wY2xhc3MsIE9pZCBhdHR0eXBlLAorCQkJCQkJCQkJCQkg Y29uc3QgY2hhciAqb3BuYW1lLCBPaWQgKm9waWQsCisJCQkJCQkJCQkJCSBTdHJhdGVneU51 bWJlciAqc3RyYXQpOwogCiAvKiBjb21tYW5kcy9mdW5jdGlvbmNtZHMuYyAqLwogZXh0ZXJu IE9iamVjdEFkZHJlc3MgQ3JlYXRlRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVh dGVGdW5jdGlvblN0bXQgKnN0bXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGIz MTgxZjM0YWVlLi40NzZkNTVkZDI0MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt MjU5MCw2ICsyNTkwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogCWJvb2wJCW51 bGxzX25vdF9kaXN0aW5jdDsgLyogbnVsbCB0cmVhdG1lbnQgZm9yIFVOSVFVRSBjb25zdHJh aW50cyAqLwogCUxpc3QJICAgKmtleXM7CQkJLyogU3RyaW5nIG5vZGVzIG5hbWluZyByZWZl cmVuY2VkIGtleQogCQkJCQkJCQkgKiBjb2x1bW4ocyk7IGFsc28gdXNlZCBmb3IgTk9UIE5V TEwgKi8KKwlib29sCQl3aXRob3V0X292ZXJsYXBzOwkvKiBXSVRIT1VUIE9WRVJMQVBTIHNw ZWNpZmllZCAqLwogCUxpc3QJICAgKmluY2x1ZGluZzsJCS8qIFN0cmluZyBub2RlcyBuYW1p bmcgcmVmZXJlbmNlZCBub25rZXkKIAkJCQkJCQkJICogY29sdW1uKHMpICovCiAKQEAgLTMy MTksNiArMzIyMCw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U3RtdAogCWJvb2wJCW51bGxz X25vdF9kaXN0aW5jdDsgLyogbnVsbCB0cmVhdG1lbnQgZm9yIFVOSVFVRSBjb25zdHJhaW50 cyAqLwogCWJvb2wJCXByaW1hcnk7CQkvKiBpcyBpbmRleCBhIHByaW1hcnkga2V5PyAqLwog CWJvb2wJCWlzY29uc3RyYWludDsJLyogaXMgaXQgZm9yIGEgcGtleS91bmlxdWUgY29uc3Ry YWludD8gKi8KKwlib29sCQlpc3dpdGhvdXRvdmVybGFwczsJLyogaXMgdGhlIGNvbnN0cmFp bnQgV0lUSE9VVCBPVkVSTEFQUz8gKi8KIAlib29sCQlkZWZlcnJhYmxlOwkJLyogaXMgdGhl IGNvbnN0cmFpbnQgREVGRVJSQUJMRT8gKi8KIAlib29sCQlpbml0ZGVmZXJyZWQ7CS8qIGlz IHRoZSBjb25zdHJhaW50IElOSVRJQUxMWSBERUZFUlJFRD8gKi8KIAlib29sCQl0cmFuc2Zv cm1lZDsJLyogdHJ1ZSB3aGVuIHRyYW5zZm9ybUluZGV4U3RtdCBpcyBmaW5pc2hlZCAqLwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcyNmU5NDEwMmJmCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292 ZXJsYXBzLm91dApAQCAtMCwwICsxLDM5NSBAQAorLS0gVGVzdHMgZm9yIFdJVEhPVVQgT1ZF UkxBUFMuCistLQorLS0gV2UgbGVhdmUgYmVoaW5kIHNldmVyYWwgdGFibGVzIHRvIHRlc3Qg cGdfZHVtcCBldGM6CistLSB0ZW1wb3JhbF9ybmcsIHRlbXBvcmFsX3JuZzIsCistLSB0ZW1w b3JhbF9ma19ybmcycm5nLgorLS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorLS0gUEsg d2l0aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQUzoKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ybmcgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmdfcGsgUFJJTUFSWSBLRVkgKHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor RVJST1I6ICBjb25zdHJhaW50IHVzaW5nIFdJVEhPVVQgT1ZFUkxBUFMgbmVlZHMgYXQgbGVh c3QgdHdvIGNvbHVtbnMKKy0tIFBLIHdpdGggYSByYW5nZSBjb2x1bW4vUEVSSU9EIHRoYXQg aXNuJ3QgdGhlcmU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBJTlRFR0VS LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIG5h bWVkIGluIGtleSBkb2VzIG5vdCBleGlzdAorTElORSAzOiAgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1UuLi4KKyAgICAgICAg IF4KKy0tIFBLIHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKK0VSUk9SOiAgZGF0YSB0eXBlIHRleHQgaGFzIG5vIGRlZmF1bHQgb3Bl cmF0b3IgY2xhc3MgZm9yIGFjY2VzcyBtZXRob2QgImdpc3QiCitISU5UOiAgWW91IG11c3Qg c3BlY2lmeSBhbiBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGluZGV4IG9yIGRlZmluZSBhIGRl ZmF1bHQgb3BlcmF0b3IgY2xhc3MgZm9yIHRoZSBkYXRhIHR5cGUuCistLSBQSyB3aXRoIG9u ZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJ LS0gU2luY2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJ LS0gdXNlIGFuIGludDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdl dHlwZXMgcmVncmVzc2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0 ZW1wb3JhbF9ybmcKKyAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmci CisgIENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tCisgaWQgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8 IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK0lu ZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsn OworICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBw Z19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBX SEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRF WCB0ZW1wb3JhbF9ybmdfcGsgT04gdGVtcG9yYWxfcm5nIFVTSU5HIGdpc3QgKGlkLCB2YWxp ZF9hdCkKKygxIHJvdykKKworLS0gUEsgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgcmFuZ2U6 CistLSBXZSBkb24ndCBkcm9wIHRoaXMgdGFibGUgYmVjYXVzZSB0ZXN0cyBiZWxvdyBhbHNv IG5lZWQgbXVsdGlwbGUgc2NhbGFyIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cm5nMiAoCisJaWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3BrIFBSSU1BUlkgS0VZIChpZDEs IGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcy CisgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmcyIgorICBDb2x1bW4g IHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlk MSAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBpZDIgICAg ICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0 c3JhbmdlICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAgICAidGVt cG9yYWxfcm5nMl9wayIgUFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBn X2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKKyAgICAg ICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUFJJTUFS WSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQor CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2Nv bnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmcyX3BrIE9OIHRlbXBv cmFsX3JuZzIgVVNJTkcgZ2lzdCAoaWQxLCBpZDIsIHZhbGlkX2F0KQorKDEgcm93KQorCist LSBQSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2Uy IEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2Uy LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nMyBE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wazsKK0RST1AgVEFCTEUgdGVtcG9yYWxf cm5nMzsKK0RST1AgVFlQRSB0ZXh0cmFuZ2UyOworLS0gUEsgd2l0aCBhIG11bHRpcmFuZ2U6 CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0cm5nICgKKyAgaWQgaW50NHJhbmdlLAorICB2 YWxpZF9hdCB0c211bHRpcmFuZ2UsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0 ZW1wb3JhbF9tbHRybmcKKyAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9t bHRybmciCisgIENvbHVtbiAgfCAgICAgVHlwZSAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJs ZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnQ0cmFuZ2UgICAgfCAgICAgICAg ICAgfCBub3QgbnVsbCB8IAorIHZhbGlkX2F0IHwgdHNtdWx0aXJhbmdlIHwgICAgICAgICAg IHwgbm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX21sdHJuZ19wayIgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorCistLSBVTklRVUUg d2l0aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQUzoKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ybmczICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfcm5nM191cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJS T1I6ICBjb25zdHJhaW50IHVzaW5nIFdJVEhPVVQgT1ZFUkxBUFMgbmVlZHMgYXQgbGVhc3Qg dHdvIGNvbHVtbnMKKy0tIFVOSVFVRSB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklPRCB0aGF0 IGlzbid0IHRoZXJlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIElOVEVH RVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBuYW1l ZCBpbiBrZXkgZG9lcyBub3QgZXhpc3QKK0xJTkUgMzogIENPTlNUUkFJTlQgdGVtcG9yYWxf cm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WLi4uCisgICAgICAgICBe CistLSBVTklRVUUgd2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworRVJST1I6ICBkYXRhIHR5cGUgdGV4dCBoYXMgbm8gZGVmYXVsdCBvcGVy YXRvciBjbGFzcyBmb3IgYWNjZXNzIG1ldGhvZCAiZ2lzdCIKK0hJTlQ6ICBZb3UgbXVzdCBz cGVjaWZ5IGFuIG9wZXJhdG9yIGNsYXNzIGZvciB0aGUgaW5kZXggb3IgZGVmaW5lIGEgZGVm YXVsdCBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGRhdGEgdHlwZS4KKy0tIFVOSVFVRSB3aXRo IG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKK1xkIHRlbXBvcmFsX3JuZzMKKyAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBv cmFsX3JuZzMiCisgIENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJs ZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZzNfdXEiIFVOSVFVRSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRl ZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3Ju ZzNfdXEnOworICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVOSVFVRSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5k ZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRl bXBvcmFsX3JuZzNfdXEgT04gdGVtcG9yYWxfcm5nMyBVU0lORyBnaXN0IChpZCwgdmFsaWRf YXQpCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKy0tIFVOSVFVRSB3 aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9y bmczICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVFIChpZDEsIGlkMiwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmczCisgICAg ICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmczIgorICBDb2x1bW4gIHwgICBU eXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkMSAgICAg IHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBpZDIgICAgICB8IGlu dDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgdmFsaWRfYXQgfCB0c3Jhbmdl ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxf cm5nM191cSIgVU5JUVVFIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK KworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nM191cSc7CisgICAgICAgICAgICAgcGdf Z2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVU5JUVVFIChpZDEsIGlkMiwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9pbmRleGRlZihj b25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAn dGVtcG9yYWxfcm5nM191cSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBVTklRVUUgSU5E RVggdGVtcG9yYWxfcm5nM191cSBPTiB0ZW1wb3JhbF9ybmczIFVTSU5HIGdpc3QgKGlkMSwg aWQyLCB2YWxpZF9hdCkKKygxIHJvdykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmczOwor LS0gVU5JUVVFIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZToKK0NSRUFURSBUWVBFIHRleHRy YW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9dGV4dCwgY29sbGF0aW9uPSJDIik7CitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRleHRy YW5nZTIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nMyBE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cTsKK0RST1AgVEFCTEUgdGVtcG9yYWxf cm5nMzsKK0RST1AgVFlQRSB0ZXh0cmFuZ2UyOworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUg QUREIENPTlNUUkFJTlQKKy0tCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzsKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl CispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfcm5nX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KTsKKy0tIFBLIHdpdGggVVNJTkcgSU5ERVggKG5vdCBwb3NzaWJsZSk6CitDUkVBVEUgVEFC TEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsK K0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRlbXBvcmFsMyBVU0lORyBnaXN0 IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFs M191cTsKK0VSUk9SOiAgImlkeF90ZW1wb3JhbDNfdXEiIGlzIG5vdCBhIHVuaXF1ZSBpbmRl eAorTElORSAyOiAgQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisgICAgICAgICAgICAg XgorREVUQUlMOiAgQ2Fubm90IGNyZWF0ZSBhIHByaW1hcnkga2V5IG9yIHVuaXF1ZSBjb25z dHJhaW50IHVzaW5nIHN1Y2ggYW4gaW5kZXguCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0t IFVOSVFVRSB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxF IHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitD UkVBVEUgSU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAo aWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsM191cQorCVVOSVFVRSBVU0lORyBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxOwor RVJST1I6ICAiaWR4X3RlbXBvcmFsM191cSIgaXMgbm90IGEgdW5pcXVlIGluZGV4CitMSU5F IDI6ICBBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKyAgICAgICAgICAgICBeCitERVRB SUw6ICBDYW5ub3QgY3JlYXRlIGEgcHJpbWFyeSBrZXkgb3IgdW5pcXVlIGNvbnN0cmFpbnQg dXNpbmcgc3VjaCBhbiBpbmRleC4KK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0gVU5JUVVF IHdpdGggVVNJTkcgW1VOSVFVRV0gSU5ERVggKHBvc3NpYmxlIGJ1dCBub3QgYSB0ZW1wb3Jh bCBjb25zdHJhaW50KToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGVt cG9yYWwzX3VxIE9OIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSBVU0lORyBJ TkRFWCBpZHhfdGVtcG9yYWwzX3VxOworTk9USUNFOiAgQUxURVIgVEFCTEUgLyBBREQgQ09O U1RSQUlOVCBVU0lORyBJTkRFWCB3aWxsIHJlbmFtZSBpbmRleCAiaWR4X3RlbXBvcmFsM191 cSIgdG8gInRlbXBvcmFsM191cSIKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0gQWRkIHJh bmdlIGNvbHVtbiBhbmQgdGhlIFBLIGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMwor CUFERCBDT0xVTU4gdmFsaWRfYXQgdHNyYW5nZSwKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bDNfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOwor RFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCBVTklRVUUg Y29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgK KwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1O IHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5J UVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBv cmFsMzsKKy0tCistLSB0ZXN0IFBLIGluc2VydHMKKy0tCistLSBva2F5OgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMics ICcyMDE4LTAyLTAzJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sx LDFdJywgdHNyYW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sz LDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsIE5VTEwpKTsKKy0tIHNob3VsZCBmYWlsOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFs dWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsX3JuZ19wayIKK0RF VEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikpIGNvbmZsaWN0cyB3aXRoIGV4 aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiVHVlIEphbiAwMiAwMDowMDow MCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikpLgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAx LTA1JykpOworRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiaWQiIG9mIHJlbGF0aW9u ICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIG5vdC1udWxsIGNvbnN0cmFpbnQKK0RFVEFJTDog IEZhaWxpbmcgcm93IGNvbnRhaW5zIChudWxsLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpKS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbMywzXScsIE5VTEwpOworRVJST1I6ICBudWxsIHZhbHVlIGluIGNv bHVtbiAidmFsaWRfYXQiIG9mIHJlbGF0aW9uICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIG5v dC1udWxsIGNvbnN0cmFpbnQKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChbMyw0 KSwgbnVsbCkuCistLQorLS0gdGVzdCBhIHJhbmdlIHdpdGggYm90aCBhIFBLIGFuZCBhIFVO SVFVRSBjb25zdHJhaW50CistLQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisgIGlkIGlu dDRyYW5nZSwKKyAgdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBpZDIgaW50OHJhbmdlLAorICBu YW1lIFRFWFQsCisgIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisgIENPTlNUUkFJTlQgdGVtcG9yYWwzX3Vu aXEgVU5JUVVFIChpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJU IElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisg ICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcs N10nLCAnZm9vJyksCisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKKzsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOwor LS0KKy0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVwZW5kZW5jaWVzCistLQorQ1JFQVRF IFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2Us CisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xV TU4gdmFsaWRfYXQgRFJPUCBOT1QgTlVMTDsKK0VSUk9SOiAgY29sdW1uICJ2YWxpZF9hdCIg aXMgaW4gYSBwcmltYXJ5IGtleQorQUxURVIgVEFCTEUgdGVtcG9yYWwzIEFMVEVSIENPTFVN TiB2YWxpZF9hdCBUWVBFIHRzdHpyYW5nZSBVU0lORyB0c3R6cmFuZ2UobG93ZXIodmFsaWRf YXQpLCB1cHBlcih2YWxpZF9hdCkpOworQUxURVIgVEFCTEUgdGVtcG9yYWwzIFJFTkFNRSBD T0xVTU4gdmFsaWRfYXQgVE8gdmFsaWRfdGhydTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBE Uk9QIENPTFVNTiB2YWxpZF90aHJ1OworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLQorLS0g dGVzdCBQQVJUSVRJT04gQlkgZm9yIHJhbmdlcworLS0KKy0tIHRlbXBvcmFsIFBSSU1BUlkg S0VZOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJpdGlvbmVkX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0 cDEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9y YWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVy YW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScs IGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdb MywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJlZScp OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0w MS0yMDAwLDAyLTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0y MDAwKSB8IG9uZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQor KDMgcm93cykKKworU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owor ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDIt MDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAzLTAxLTIwMDApIHwgb25l CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMyw0KSB8IFswMS0wMS0yMDAw LDAxLTAxLTIwMTApIHwgdGhyZWUKKygxIHJvdykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZDsKKy0tIHRlbXBvcmFsIFVOSVFVRToKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwK KyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElT VCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0 aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUg dHAyIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgn WzMsM10nLCAnWzQsNF0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZB TFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEn KSwgJ29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAt MDMtMDEnKSwgJ29uZScpLAorICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywg JzIwMTAtMDEtMDEnKSwgJ3RocmVlJyk7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9h dCAgICAgICAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwy KSB8IFswMi0wMS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzMsNCkgfCBbMDEtMDEtMjAw MCwwMS0wMS0yMDEwKSB8IHRocmVlCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMSBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisg WzEsMikgfCBbMDEtMDEtMjAwMCwwMi0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAx LTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdHAy IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAg ICAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQorKDEgcm93KQor CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKaW5kZXggZjA5ODdmZjUzN2IuLmIwOGFhYWU0NGI4IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTc4LDcgKzc4LDcgQEAgdGVzdDogYnJpbl9i bG9vbSBicmluX211bHRpCiAjIHBzcWwgZGVwZW5kcyBvbiBjcmVhdGVfYW0KICMgYW11dGls cyBkZXBlbmRzIG9uIGdlb21ldHJ5LCBjcmVhdGVfaW5kZXhfc3BnaXN0LCBoYXNoX2luZGV4 LCBicmluCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IGNyZWF0ZV90YWJsZV9saWtlIGFsdGVyX2dl bmVyaWMgYWx0ZXJfb3BlcmF0b3IgbWlzYyBhc3luYyBkYnNpemUgbWVyZ2UgbWlzY19mdW5j dGlvbnMgc3lzdmlld3MgdHNyZiB0aWQgdGlkc2NhbiB0aWRyYW5nZXNjYW4gY29sbGF0ZS5p Y3UudXRmOCBpbmNyZW1lbnRhbF9zb3J0IGNyZWF0ZV9yb2xlCit0ZXN0OiBjcmVhdGVfdGFi bGVfbGlrZSBhbHRlcl9nZW5lcmljIGFsdGVyX29wZXJhdG9yIG1pc2MgYXN5bmMgZGJzaXpl IG1lcmdlIG1pc2NfZnVuY3Rpb25zIHN5c3ZpZXdzIHRzcmYgdGlkIHRpZHNjYW4gdGlkcmFu Z2VzY2FuIGNvbGxhdGUuaWN1LnV0ZjggaW5jcmVtZW50YWxfc29ydCBjcmVhdGVfcm9sZSB3 aXRob3V0X292ZXJsYXBzCiAKICMgY29sbGF0ZS4qLnV0ZjggdGVzdHMgY2Fubm90IGJlIHJ1 biBpbiBwYXJhbGxlbCB3aXRoIGVhY2ggb3RoZXIKIHRlc3Q6IHJ1bGVzIHBzcWwgcHNxbF9j cm9zc3RhYiBhbXV0aWxzIHN0YXRzX2V4dCBjb2xsYXRlLmxpbnV4LnV0ZjggY29sbGF0ZS53 aW5kb3dzLndpbjEyNTIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhv dXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4ZThhYjk5 NGEwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9v dmVybGFwcy5zcWwKQEAgLTAsMCArMSwyOTAgQEAKKy0tIFRlc3RzIGZvciBXSVRIT1VUIE9W RVJMQVBTLgorLS0KKy0tIFdlIGxlYXZlIGJlaGluZCBzZXZlcmFsIHRhYmxlcyB0byB0ZXN0 IHBnX2R1bXAgZXRjOgorLS0gdGVtcG9yYWxfcm5nLCB0ZW1wb3JhbF9ybmcyLAorLS0gdGVt cG9yYWxfZmtfcm5nMnJuZy4KKworLS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorCist LSBQSyB3aXRoIG5vIGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBTOgorCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfcm5nICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKKworLS0gUEsgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0 aGVyZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgSU5URUdFUiwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworCistLSBQSyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoK KworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IFRFWFQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBvbmUgY29s dW1uIHBsdXMgYSByYW5nZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJLS0g U2luY2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0g dXNlIGFuIGludDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlw ZXMgcmVncmVzc2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1w b3JhbF9ybmcKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29u c3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CitTRUxFQ1QgcGdf Z2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hF UkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOworCistLSBQSyB3aXRoIHR3byBjb2x1 bW5zIHBsdXMgYSByYW5nZToKKy0tIFdlIGRvbid0IGRyb3AgdGhpcyB0YWJsZSBiZWNhdXNl IHRlc3RzIGJlbG93IGFsc28gbmVlZCBtdWx0aXBsZSBzY2FsYXIgY29sdW1ucy4KK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsg UFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K1xkIHRlbXBvcmFsX3JuZzIKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZS T00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsnOwor U0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CisKKworLS0gUEsg d2l0aCBhIGN1c3RvbSByYW5nZSB0eXBlOgorQ1JFQVRFIFRZUEUgdGV4dHJhbmdlMiBBUyBy YW5nZSAoc3VidHlwZT10ZXh0LCBjb2xsYXRpb249IkMiKTsKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdGV4dHJhbmdlMiwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfcGs7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7 CitEUk9QIFRZUEUgdGV4dHJhbmdlMjsKKworLS0gUEsgd2l0aCBhIG11bHRpcmFuZ2U6CitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0cm5nICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxp ZF9hdCB0c211bHRpcmFuZ2UsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1w b3JhbF9tbHRybmcKKworLS0gVU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQg T1ZFUkxBUFM6CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVt bi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZzMgKAorCWlkIElOVEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFV RSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0 aCBhIG5vbi1yYW5nZSBjb2x1bW46CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X3JuZzNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisK Ky0tIFVOSVFVRSB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorCitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2Us CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworU0VMRUNUIHBnX2dldF9j b25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAn dGVtcG9yYWxfcm5nM191cSc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAw LCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9y bmczX3VxJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKworLS0gVU5JUVVFIHdpdGgg dHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMg KAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkMSwgaWQyLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzMKK1NFTEVDVCBw Z19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25p bmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVt cG9yYWxfcm5nM191cSc7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CisKKy0tIFVOSVFV RSB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFT IHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitE Uk9QIFRZUEUgdGV4dHJhbmdlMjsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENP TlNUUkFJTlQKKy0tCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nOworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9y bmdfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOwor CistLSBQSyB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxF IHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitD UkVBVEUgSU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAo aWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsM19waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNf dXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gVU5JUVVFIHdpdGggVVNJTkcgSU5E RVggKG5vdCBwb3NzaWJsZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9y YWwzX3VxIE9OIHRlbXBvcmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIg VEFCTEUgdGVtcG9yYWwzCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVF IFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsK KworLS0gVU5JUVVFIHdpdGggVVNJTkcgW1VOSVFVRV0gSU5ERVggKHBvc3NpYmxlIGJ1dCBu b3QgYSB0ZW1wb3JhbCBjb25zdHJhaW50KToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIFVOSVFVRSBJ TkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVO SVFVRSBVU0lORyBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxOworRFJPUCBUQUJMRSB0ZW1wb3Jh bDM7CisKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1l CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLSBBZGQgcmFuZ2Ug Y29sdW1uIGFuZCBVTklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUg VEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWwzX3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7 CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgUEsgaW5zZXJ0cworLS0K KworLS0gb2theToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAx OC0wNC0wNCcpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMiwyXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxM KSk7CisKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1szLDNdJywgTlVMTCk7CisKKy0tCistLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBib3RoIGEgUEsg YW5kIGEgVU5JUVVFIGNvbnN0cmFpbnQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMg KAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgaWQyIGludDhy YW5nZSwKKyAgbmFtZSBURVhULAorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRl bXBvcmFsM191bmlxIFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisg IFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEt MDEnKSwgJ1s3LDddJywgJ2ZvbycpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAx LTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCis7CitEUk9QIFRBQkxFIHRl bXBvcmFsMzsKKworLS0KKy0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVwZW5kZW5jaWVz CistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCitBTFRFUiBUQUJMRSB0ZW1w b3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5H IHRzdHpyYW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbDMgUkVOQU1FIENPTFVNTiB2YWxpZF9hdCBUTyB2YWxpZF90aHJ1Owor QUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX3RocnU7CitEUk9QIFRB QkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgUEFSVElUSU9OIEJZIGZvciByYW5nZXMK Ky0tCisKKy0tIHRlbXBvcmFsIFBSSU1BUlkgS0VZOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAor ICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZ IExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRB QkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJ TiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAy LTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcy MDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0w MScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMSBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLSB0ZW1w b3JhbCBVTklRVUU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJM RSB0cDEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4g KCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVt cG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwx XScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAg KCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJl ZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitT RUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitEUk9QIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkOwotLSAKMi40Mi4wCgo= --------------iqvziU4Z040MH3WdnoYY4mNT Content-Type: text/x-patch; charset=UTF-8; name="v22-0003-Add-GiST-referencedagg-support-func.patch" Content-Disposition: attachment; filename="v22-0003-Add-GiST-referencedagg-support-func.patch" Content-Transfer-Encoding: base64 RnJvbSA3Nzk3MmY4NmM0NTU5YmI1MGEzZjlmN2QzYjMxYzk5MzA1MTA2OWJkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjkgRGVjIDIwMjMgMTQ6MzY6MjcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMiAzLzhdIEFkZCBHaVNUIHJlZmVyZW5jZWRhZ2cgc3Vw cG9ydCBmdW5jCgpUaGlzIGlzIHRoZSB0aGlydGVlbnRoIHN1cHBvcnQgZnVuY3Rpb24gYW5k IGxldHMgdXMgaW1wbGVtZW50IHRlbXBvcmFsCmZvcmVpZ24ga2V5cyB3aXRob3V0IGhhcmRj b2RpbmcgdGhlIHJhbmdlX2FnZyBmdW5jdGlvbi4gVGhlIHN1cHBvcnQKZnVuY3Rpb24gc2hv dWxkIGJlIGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdHlwZSBtYXRjaGlu ZyB0aGUKZm9yZWlnbiBrZXkncyBQRVJJT0QgZWxlbWVudCBhbmQgcmV0dXJucyBhIHR5cGUg dGhhdCBjYW4gYXBwZWFyIG9uIHRoZQpyaWdodGhhbmQgc2lkZSBvZiBhIENvbnRhaW5lZEJ5 IG9wZXJhdG9yLCBzbyB0aGF0IGZvciBleGFtcGxlIHdlIGNhbiBzYXkKYGZrcGVyaW9kIDxA IHJhbmdlX2FnZyhwa3BlcmlvZClgLgotLS0KIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwgICAg ICAgICAgICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysKIGRvYy9zcmMv c2dtbC94aW5kZXguc2dtbCAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYyB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2FtdmFsaWRhdGUuYyAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 LmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJv Yy5kYXQgICAgICB8ICAgNiArKwogNiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21s IGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCBmMDU4NzVkMzZjMS4uYzQ5MDllNmQ4 YWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2dpc3Quc2dtbApAQCAtMzAwLDYgKzMwMCwxMCBAQCBDUkVBVEUgSU5ERVggT04gbXlf dGFibGUgVVNJTkcgR0lTVCAobXlfaW5ldF9jb2x1bW4gaW5ldF9vcHMpOwogICAgPGZpbGVu YW1lPnNyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oPC9maWxlbmFtZT4pIGludG8gc3Ry YXRlZ3kgbnVtYmVycwogICAgdXNlZCBieSB0aGUgb3BjbGFzcy4gVGhpcyBsZXRzIHRoZSBj b3JlIGNvZGUgbG9vayB1cCBvcGVyYXRvcnMgZm9yIHRlbXBvcmFsCiAgICBjb25zdHJhaW50 IGluZGV4ZXMuCisgICBUaGUgb3B0aW9uYWwgdGhpcnRlZW50aCBtZXRob2QgPGZ1bmN0aW9u PnJlZmVyZW5jZWRhZ2c8L2Z1bmN0aW9uPiBpcyB1c2VkIGJ5CisgICB0ZW1wb3JhbCBmb3Jl aWduIGtleXMgdG8gY29tYmluZWQgcmVmZXJlbmNlZCByb3dzIHdpdGggdGhlIHNhbWUKKyAg IG5vbi08bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBpbnRvIG9uZSA8bGl0 ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPgorICAgc3BhbiB0byBjb21wYXJlIGFn YWluc3QgcmVmZXJlbmNpbmcgcm93cy4KICA8L3BhcmE+CiAKICA8dmFyaWFibGVsaXN0PgpA QCAtMTI0OSw2ICsxMjUzLDExNCBAQCBteV9zdHJhdG51bShQR19GVU5DVElPTl9BUkdTKQog ICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5Pgor ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5yZWZlcmVuY2VkYWdn PC9mdW5jdGlvbj48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAg ICAgIEFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbi4gR2l2ZW4gdmFsdWVzIG9mIHRoaXMgb3BjbGFz cywKKyAgICAgICBpdCByZXR1cm5zIGEgdmFsdWUgY29tYmluaW5nIHRoZW0gYWxsLiBUaGUg cmV0dXJuIHZhbHVlCisgICAgICAgbmVlZCBub3QgYmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUg aW5wdXQsIGJ1dCBpdCBtdXN0IGJlIGEKKyAgICAgICB0eXBlIHRoYXQgY2FuIGFwcGVhciBv biB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHRoZSAiY29udGFpbmVkIGJ5IgorICAgICAgIG9w ZXJhdG9yLiBGb3IgZXhhbXBsZSB0aGUgYnVpbHQtaW4gPGxpdGVyYWw+cmFuZ2Vfb3BzPC9s aXRlcmFsPgorICAgICAgIG9wY2xhc3MgdXNlcyA8bGl0ZXJhbD5yYW5nZV9hZ2c8L2xpdGVy YWw+IGhlcmUsIHNvIHRoYXQgZm9yZWlnbgorICAgICAgIGtleXMgY2FuIGNoZWNrIDxsaXRl cmFsPmZrcGVyaW9kIEA+IHJhbmdlX2FnZyhwa3BlcmlvZCk8L2xpdGVyYWw+LgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBpcyB1c2VkIGZvciB0ZW1wb3Jh bCBmb3JlaWduIGtleSBjb25zdHJhaW50cy4KKyAgICAgICBJZiB5b3Ugb21pdCB0aGlzIHN1 cHBvcnQgZnVuY3Rpb24sIHlvdXIgdHlwZSBjYW5ub3QgYmUgdXNlZAorICAgICAgIGFzIHRo ZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IHBhcnQgb2YgYSBmb3JlaWduIGtleS4KKyAg ICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgVGhlIDxhY3JvbnltPlNRTDwv YWNyb255bT4gZGVjbGFyYXRpb24gb2YgdGhlIGZ1bmN0aW9uIG11c3QgbG9vayBsaWtlCisg ICAgICAgdGhpcyAodXNpbmcgPGxpdGVyYWw+bXlfcmFuZ2VfYWdnPC9saXRlcmFsPiBhcyBh biBleGFtcGxlKToKKworPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gbXlfcmFuZ2VfYWdnX3RyYW5zZm4oaW50ZXJuYWwsIGFueXJhbmdlKQorUkVUVVJO UyBpbnRlcm5hbAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOwor CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBteV9yYW5nZV9hZ2dfZmluYWxmbihpbnRl cm5hbCwgYW55cmFuZ2UpCitSRVRVUk5TIGFueW11bHRpcmFuZ2UKK0FTICdNT0RVTEVfUEFU SE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKworQ1JFQVRFIEFHR1JFR0FURSBteV9yYW5n ZV9hZ2coYW55cmFuZ2UpIHsKKyAgU0ZVTkMgPSBteV9yYW5nZV9hZ2dfdHJhbnNmbiwKKyAg U1RZUEUgPSBpbnRlcm5hbCwKKyAgRklOQUxGVU5DID0gbXlfcmFuZ2VfYWdnX2ZpbmFsZm4K K307Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+ CisgICAgICAgIFRoZSBtYXRjaGluZyBjb2RlIGluIHRoZSBDIG1vZHVsZSBjb3VsZCB0aGVu IGZvbGxvdyB0aGlzIGV4YW1wbGU6CisKKzxwcm9ncmFtbGlzdGluZz4KK0RhdHVtCitteV9y YW5nZV9hZ2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQoreworICAgIE1lbW9yeUNvbnRl eHQgICAgYWdnQ29udGV4dDsKKyAgICBPaWQgICAgICAgICAgICAgIHJuZ3R5cG9pZDsKKyAg ICBBcnJheUJ1aWxkU3RhdGUgKnN0YXRlOworCisgICAgaWYgKCFBZ2dDaGVja0NhbGxDb250 ZXh0KGZjaW5mbywgJmFtcDthZ2dDb250ZXh0KSkKKyAgICAgICAgZWxvZyhFUlJPUiwgInJh bmdlX2FnZ190cmFuc2ZuIGNhbGxlZCBpbiBub24tYWdncmVnYXRlIGNvbnRleHQiKTsKKwor ICAgIHJuZ3R5cG9pZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLSZndDtmbGluZm8s IDEpOworICAgIGlmICghdHlwZV9pc19yYW5nZShybmd0eXBvaWQpKQorICAgICAgICBlbG9n KEVSUk9SLCAicmFuZ2VfYWdnIG11c3QgYmUgY2FsbGVkIHdpdGggYSByYW5nZSIpOworCisg ICAgaWYgKFBHX0FSR0lTTlVMTCgwKSkKKyAgICAgICAgc3RhdGUgPSBpbml0QXJyYXlSZXN1 bHQocm5ndHlwb2lkLCBhZ2dDb250ZXh0LCBmYWxzZSk7CisgICAgZWxzZQorICAgICAgICBz dGF0ZSA9IChBcnJheUJ1aWxkU3RhdGUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKyAg ICAvKiBza2lwIE5VTExzICovCisgICAgaWYgKCFQR19BUkdJU05VTEwoMSkpCisgICAgICAg IGFjY3VtQXJyYXlSZXN1bHQoc3RhdGUsIFBHX0dFVEFSR19EQVRVTSgxKSwgZmFsc2UsIHJu Z3R5cG9pZCwgYWdnQ29udGV4dCk7CisKKyAgICBQR19SRVRVUk5fUE9JTlRFUihzdGF0ZSk7 Cit9CisKK0RhdHVtCitteV9yYW5nZV9hZ2dfZmluYWxmbihQR19GVU5DVElPTl9BUkdTKQor eworICAgIE1lbW9yeUNvbnRleHQgICAgYWdnQ29udGV4dDsKKyAgICBPaWQgICAgICAgICAg ICAgIG1sdHJuZ3R5cG9pZDsKKyAgICBUeXBlQ2FjaGVFbnRyeSAgKnR5cGNhY2hlOworICAg IEFycmF5QnVpbGRTdGF0ZSAqc3RhdGU7CisgICAgaW50MzIgICAgICAgICAgICByYW5nZV9j b3VudDsKKyAgICBSYW5nZVR5cGUgICAgICAqKnJhbmdlczsKKyAgICBpbnQgICAgICAgICAg ICAgIGk7CisKKyAgICBpZiAoIUFnZ0NoZWNrQ2FsbENvbnRleHQoZmNpbmZvLCAmYW1wO2Fn Z0NvbnRleHQpKQorICAgICAgICBlbG9nKEVSUk9SLCAicmFuZ2VfYWdnX2ZpbmFsZm4gY2Fs bGVkIGluIG5vbi1hZ2dyZWdhdGUgY29udGV4dCIpOworCisgICAgc3RhdGUgPSBQR19BUkdJ U05VTEwoMCkgPyBOVUxMIDogKEFycmF5QnVpbGRTdGF0ZSAqKSBQR19HRVRBUkdfUE9JTlRF UigwKTsKKyAgICBpZiAoc3RhdGUgPT0gTlVMTCkKKyAgICAgICAgLyogVGhpcyBzaG91bGRu J3QgYmUgcG9zc2libGUsIGJ1dCBqdXN0IGluIGNhc2UuLi4uICovCisgICAgICAgIFBHX1JF VFVSTl9OVUxMKCk7CisKKyAgICAvKiBBbHNvIHJldHVybiBOVUxMIGlmIHdlIGhhZCB6ZXJv IGlucHV0cywgbGlrZSBvdGhlciBhZ2dyZWdhdGVzICovCisgICAgcmFuZ2VfY291bnQgPSBz dGF0ZS0mZ3Q7bmVsZW1zOworICAgIGlmIChyYW5nZV9jb3VudCA9PSAwKQorICAgICAgICBQ R19SRVRVUk5fTlVMTCgpOworCisgICAgbWx0cm5ndHlwb2lkID0gZ2V0X2ZuX2V4cHJfcmV0 dHlwZShmY2luZm8tJmd0O2ZsaW5mbyk7CisgICAgdHlwY2FjaGUgPSBtdWx0aXJhbmdlX2dl dF90eXBjYWNoZShmY2luZm8sIG1sdHJuZ3R5cG9pZCk7CisKKyAgICByYW5nZXMgPSBwYWxs b2MwKHJhbmdlX2NvdW50ICogc2l6ZW9mKFJhbmdlVHlwZSAqKSk7CisgICAgZm9yIChpID0g MDsgaSAmbHQ7IHJhbmdlX2NvdW50OyBpKyspCisgICAgICAgIHJhbmdlc1tpXSA9IERhdHVt R2V0UmFuZ2VUeXBlUChzdGF0ZS0mZ3Q7ZHZhbHVlc1tpXSk7CisKKyAgICBQR19SRVRVUk5f TVVMVElSQU5HRV9QKG1ha2VfbXVsdGlyYW5nZShtbHRybmd0eXBvaWQsIHR5cGNhY2hlLSZn dDtybmd0eXBlLCByYW5nZV9jb3VudCwgcmFuZ2VzKSk7Cit9Cis8L3Byb2dyYW1saXN0aW5n PgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5 PgogICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC94aW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbAppbmRleCA4YzRl ZGUzMTA1Ny4uM2VlMTM2MTcxNzEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC94aW5kZXgu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKQEAgLTUwOCw3ICs1MDgsNyBA QAogICAgPC90YWJsZT4KIAogICA8cGFyYT4KLSAgIEdpU1QgaW5kZXhlcyBoYXZlIHR3ZWx2 ZSBzdXBwb3J0IGZ1bmN0aW9ucywgc2V2ZW4gb2Ygd2hpY2ggYXJlIG9wdGlvbmFsLAorICAg R2lTVCBpbmRleGVzIGhhdmUgdGhpcnRlZW4gc3VwcG9ydCBmdW5jdGlvbnMsIGVpZ2h0IG9m IHdoaWNoIGFyZSBvcHRpb25hbCwKICAgIGFzIHNob3duIGluIDx4cmVmIGxpbmtlbmQ9Inhp bmRleC1naXN0LXN1cHBvcnQtdGFibGUiLz4uCiAgICAoRm9yIG1vcmUgaW5mb3JtYXRpb24g c2VlIDx4cmVmIGxpbmtlbmQ9Imdpc3QiLz4uKQogICA8L3BhcmE+CkBAIC01OTYsNiArNTk2 LDEyIEBACiAgICAgICAgIHVzZWQgYnkgdGhlIG9wY2xhc3MgKG9wdGlvbmFsKTwvZW50cnk+ CiAgICAgICAgPGVudHJ5PjEyPC9lbnRyeT4KICAgICAgIDwvcm93PgorICAgICAgPHJvdz4K KyAgICAgICA8ZW50cnk+PGZ1bmN0aW9uPnJlZmVyZW5jZWRhZ2c8L2Z1bmN0aW9uPjwvZW50 cnk+CisgICAgICAgPGVudHJ5PmFnZ3JlZ2F0ZXMgcmVmZXJlbmNlZCByb3dzJyA8bGl0ZXJh bD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPgorICAgICAgICBwYXJ0PC9lbnRyeT4KKyAg ICAgICA8ZW50cnk+MTM8L2VudHJ5PgorICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAg ICAgPC90Z3JvdXA+CiAgICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 dmFsaWRhdGUuYwppbmRleCA2OThlMDFlZDJmNy4uNGJkMmU1MzFkNzEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCkBAIC0xNTEsNiArMTUxLDExIEBAIGdp c3R2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWdu YXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5UMk9JRCwgdHJ1ZSwKIAkJCQkJCQkJCQkJMSwg MSwgSU5UMk9JRCk7CiAJCQkJYnJlYWs7CisJCQljYXNlIEdJU1RfUkVGRVJFTkNFRF9BR0df UFJPQzoKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJv YywgSW52YWxpZE9pZCwgZmFsc2UsCisJCQkJCQkJCQkJCSAgIDEsIDEsIG9wY2ludHlwZSk7 CisJCQkJLy8gVE9ETzogbXVzdCBiZSBhZ2dyZWdhdGUKKwkJCQlicmVhazsKIAkJCWRlZmF1 bHQ6CiAJCQkJZXJlcG9ydChJTkZPLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKQEAgLTI3Miw3ICsyNzcsNyBAQCBnaXN0dmFsaWRhdGUo T2lkIG9wY2xhc3NvaWQpCiAJCWlmIChpID09IEdJU1RfRElTVEFOQ0VfUFJPQyB8fCBpID09 IEdJU1RfRkVUQ0hfUFJPQyB8fAogCQkJaSA9PSBHSVNUX0NPTVBSRVNTX1BST0MgfHwgaSA9 PSBHSVNUX0RFQ09NUFJFU1NfUFJPQyB8fAogCQkJaSA9PSBHSVNUX09QVElPTlNfUFJPQyB8 fCBpID09IEdJU1RfU09SVFNVUFBPUlRfUFJPQyB8fAotCQkJaSA9PSBHSVNUX1NUUkFUTlVN X1BST0MpCisJCQlpID09IEdJU1RfU1RSQVROVU1fUFJPQyB8fCBpID09IEdJU1RfUkVGRVJF TkNFRF9BR0dfUFJPQykKIAkJCWNvbnRpbnVlOwkJCS8qIG9wdGlvbmFsIG1ldGhvZHMgKi8K IAkJZXJlcG9ydChJTkZPLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvYW12 YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2FtdmFsaWRhdGUuYwppbmRl eCAzMmJiNDc3ZjMyOC4uNzE2MzhjYjQwMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2FtdmFsaWRhdGUuYwpAQCAtMTQ2LDcgKzE0Niw4IEBAIGlkZW50aWZ5X29wZmFtaWx5X2dy b3VwcyhDYXRDTGlzdCAqb3BybGlzdCwgQ2F0Q0xpc3QgKnByb2NsaXN0KQogICoKICAqIFRo ZSAiLi4uIiByZXByZXNlbnRzIG1heGFyZ3MgYXJndW1lbnQtdHlwZSBPSURzLiAgSWYgImV4 YWN0IiBpcyB0cnVlLCB0aGV5CiAgKiBtdXN0IG1hdGNoIHRoZSBmdW5jdGlvbiBhcmcgdHlw ZXMgZXhhY3RseSwgZWxzZSBvbmx5IGJpbmFyeS1jb2VyY2libHkuCi0gKiBJbiBhbnkgY2Fz ZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5cGUgbXVzdCBtYXRjaCByZXN0eXBlIGV4YWN0bHku CisgKiBJbiBhbnkgY2FzZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5cGUgbXVzdCBtYXRjaCBy ZXN0eXBlIGV4YWN0bHksCisgKiB1bmxlc3MgaXQgaXMgSW52YWxpZE9pZC4KICAqLwogYm9v bAogY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShPaWQgZnVuY2lkLCBPaWQgcmVzdHlwZSwgYm9v bCBleGFjdCwKQEAgLTE2Myw4ICsxNjQsOSBAQCBjaGVja19hbXByb2Nfc2lnbmF0dXJlKE9p ZCBmdW5jaWQsIE9pZCByZXN0eXBlLCBib29sIGV4YWN0LAogCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3IgZnVuY3Rpb24gJXUiLCBmdW5jaWQpOwogCXByb2Nmb3Jt ID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHRwKTsKIAotCWlmIChwcm9jZm9ybS0+cHJv cmV0dHlwZSAhPSByZXN0eXBlIHx8IHByb2Nmb3JtLT5wcm9yZXRzZXQgfHwKLQkJcHJvY2Zv cm0tPnByb25hcmdzIDwgbWluYXJncyB8fCBwcm9jZm9ybS0+cHJvbmFyZ3MgPiBtYXhhcmdz KQorCWlmICgocHJvY2Zvcm0tPnByb3JldHR5cGUgIT0gcmVzdHlwZSAmJiBPaWRJc1ZhbGlk KHJlc3R5cGUpKQorCQl8fCBwcm9jZm9ybS0+cHJvcmV0c2V0IHx8IHByb2Nmb3JtLT5wcm9u YXJncyA8IG1pbmFyZ3MKKwkJfHwgcHJvY2Zvcm0tPnByb25hcmdzID4gbWF4YXJncykKIAkJ cmVzdWx0ID0gZmFsc2U7CiAKIAl2YV9zdGFydChhcCwgbWF4YXJncyk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3Qu aAppbmRleCBlN2NlZDE4YTViYS4uNTExNjhjZjlkNzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9naXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3QuaApAQCAt MzksNyArMzksOCBAQAogI2RlZmluZSBHSVNUX09QVElPTlNfUFJPQwkJCQkxMAogI2RlZmlu ZSBHSVNUX1NPUlRTVVBQT1JUX1BST0MJCQkxMQogI2RlZmluZSBHSVNUX1NUUkFUTlVNX1BS T0MJCQkJMTIKLSNkZWZpbmUgR0lTVE5Qcm9jcwkJCQkJMTIKKyNkZWZpbmUgR0lTVF9SRUZF UkVOQ0VEX0FHR19QUk9DCQkxMworI2RlZmluZSBHSVNUTlByb2NzCQkJCQkxMwogCiAvKgog ICogUGFnZSBvcGFxdWUgZGF0YSBpbiBhIEdpU1QgaW5kZXggcGFnZS4KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYW1wcm9jLmRhdAppbmRleCAzNTI1NThjMWYwNi4uMWQzZDVmY2Y0ZDggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAgLTYxMCw2ICs2MTAsOSBAQAogeyBhbXBy b2NmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueXJh bmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScsIGFtcHJvY251bSA9PiAn MTInLAogICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHknIH0sCit7IGFtcHJv Y2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFu Z2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICcx MycsCisgIGFtcHJvYyA9PiAncmFuZ2VfYWdnKGFueXJhbmdlKScgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdnaXN0L25ldHdvcmtfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzEnLAogICBhbXBy b2MgPT4gJ2luZXRfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAtNjUwLDYgKzY1Myw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdhbnltdWx0aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJh bmdlJywgYW1wcm9jbnVtID0+ICcxMicsCiAgIGFtcHJvYyA9PiAnZ2lzdF9zdHJhdG51bV9p ZGVudGl0eScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUg PT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4gJzEzJywKKyAgYW1wcm9jID0+ICdy YW5nZV9hZ2coYW55bXVsdGlyYW5nZSknIH0sCiAKICMgZ2luCiB7IGFtcHJvY2ZhbWlseSA9 PiAnZ2luL2FycmF5X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlhcnJheScsCi0tIAoy LjQyLjAKCg== --------------iqvziU4Z040MH3WdnoYY4mNT Content-Type: text/x-patch; charset=UTF-8; name="v22-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v22-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSA5NjQ2YzhhZmJmOGEwMzVjNjkxYmExOTJjOTAxYjE2NTQxMTYzMDkzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMiA0LzhdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgIHwg IDI3ICsKIGNvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICB8 ICAxMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAg fCAgNDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAg ICB8ICAyNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAg ICAgIHwgOTE2ICsrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55ICAgICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jICAgICAgICAgICB8IDQwNCArKysrKysrLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMzEgKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjQgKwogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA2ICsKIHNy Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgNTYxICsr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAg ICAgfCA1MzUgKysrKysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwgMjI5NCBpbnNlcnRpb25z KCspLCAzNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0 L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvY29udHJpYi9idHJlZV9naXN0L2V4 cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDA2OTI3MjY4OGZiLi5kMTE2MDFl NTcwZCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRf b3ZlcmxhcHMub3V0CisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0 X292ZXJsYXBzLm91dApAQCAtMjksMyArMjksMzAgQEAgU0VMRUNUIHBnX2dldF9pbmRleGRl Zihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGUKICBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZ19wayBPTiB0ZW1wb3Jh bF9ybmcgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQogKDEgcm93KQogCistLSBGb3JlaWdu IGtleQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorICBpZCBpbnRlZ2Vy LAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBwYXJlbnRfaWQgaW50ZWdlciwKKyAgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisgICAgUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9y YWxfZmtfcm5nMnJuZworICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfZmtfcm5n MnJuZyIKKyAgQ29sdW1uICAgfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tCisgaWQgICAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxs IHwgCisgdmFsaWRfYXQgIHwgdHNyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisg cGFyZW50X2lkIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVz OgorICAgICJ0ZW1wb3JhbF9ma19ybmcycm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitGb3JlaWduLWtleSBjb25zdHJhaW50czoKKyAgICAi dGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhpZCwgUEVSSU9EIHZhbGlkX2F0 KQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFp bnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZyhpZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEgcm93KQorCmRp ZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3Fs IGIvY29udHJpYi9idHJlZV9naXN0L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCA5 ODY2NWRiYjllYy4uMDM2ZWUwYTc2MGYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvY29udHJpYi9idHJlZV9naXN0L3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMTEsMyArMTEsMTUgQEAgQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3JuZyAoCiBcZCB0ZW1wb3JhbF9ybmcKIFNFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBv cmFsX3JuZ19wayc7CiBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVl KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsn OworCistLSBGb3JlaWduIGtleQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcg KAorICBpZCBpbnRlZ2VyLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBwYXJlbnRfaWQgaW50 ZWdlciwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisgIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisgICAgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CispOworXGQgdGVtcG9yYWxfZmtfcm5nMnJuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50 ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxf Zmtfcm5nMnJuZ19mayc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCBh MGJkMmI4YWRjNi4uYjVmNDg1MjVkZWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtODEsNyArODEsNyBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBU RU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogICBV TklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBX SVRIT1VUIE9WRVJMQVBTIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5k ZXhfcGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IHwKICAgUFJJTUFSWSBLRVkgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAu Li4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IHwKICAgRVhDTFVERSBb IFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3Jl cGxhY2VhYmxlPiBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2x1ZGVf ZWxlbWVudDwvcmVwbGFjZWFibGU+IFdJVEggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm9wZXJhdG9yPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IFsgV0hFUkUg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJlZGljYXRlPC9yZXBsYWNlYWJs ZT4gKSBdIHwKLSAgRk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIFJFRkVSRU5DRVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApIF0KKyAgRk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0Qg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBs YWNlYWJsZT4gXSApIFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJs ZT4gXSApIF0KICAgICBbIE1BVENIIEZVTEwgfCBNQVRDSCBQQVJUSUFMIHwgTUFUQ0ggU0lN UExFIF0gWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlCiBjbGFzcz0icGFyYW1ldGVyIj5yZWZl cmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBEQVRFIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBd IH0KIFsgREVGRVJSQUJMRSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFMTFkgREVGRVJS RUQgfCBJTklUSUFMTFkgSU1NRURJQVRFIF0KQEAgLTExNDYsOCArMTE0Niw4IEBAIFdJVEgg KCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVy YWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRl dGFibGUtcGFybXMtcmVmZXJlbmNlcyI+CiAgICAgPHRlcm0+PGxpdGVyYWw+UkVGRVJFTkNF UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxl PiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFj ZWFibGU+ICkgXSBbIE1BVENIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXRj aHR5cGU8L3JlcGxhY2VhYmxlPiBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBE QVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248 L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPiAoY29sdW1uIGNvbnN0cmFpbnQpPC90ZXJtPgog Ci0gICA8dGVybT48bGl0ZXJhbD5GT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkKLSAgICBS RUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVw bGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1u PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisgICA8dGVybT48bGl0ZXJhbD5GT1JFSUdO IEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBdICkKKyAgICBSRUZFUkVO Q0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFi bGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKSBdCiAgICAgWyBNQVRD SCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWF0Y2h0eXBlPC9yZXBsYWNlYWJs ZT4gXQogICAgIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y ZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdCiAgICAgWyBPTiBVUERBVEUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFj ZWFibGU+IF08L2xpdGVyYWw+CkBAIC0xMTU4LDExICsxMTU4LDI5IEBAIFdJVEggKCBNT0RV TFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3Jl cGxhY2VhYmxlPiwgUkVNCiAgICAgICBUaGVzZSBjbGF1c2VzIHNwZWNpZnkgYSBmb3JlaWdu IGtleSBjb25zdHJhaW50LCB3aGljaCByZXF1aXJlcwogICAgICAgdGhhdCBhIGdyb3VwIG9m IG9uZSBvciBtb3JlIGNvbHVtbnMgb2YgdGhlIG5ldyB0YWJsZSBtdXN0IG9ubHkKICAgICAg IGNvbnRhaW4gdmFsdWVzIHRoYXQgbWF0Y2ggdmFsdWVzIGluIHRoZSByZWZlcmVuY2VkCi0g ICAgICBjb2x1bW4ocykgb2Ygc29tZSByb3cgb2YgdGhlIHJlZmVyZW5jZWQgdGFibGUuICBJ ZiB0aGUgPHJlcGxhY2VhYmxlCisgICAgICBjb2x1bW4ocykgb2Ygc29tZSByb3cgb2YgdGhl IHJlZmVyZW5jZWQgdGFibGUuCisgICAgICBJZiB0aGUgPHJlcGxhY2VhYmxlCiAgICAgICBj bGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBsaXN0IGlzIG9taXR0 ZWQsIHRoZQogICAgICAgcHJpbWFyeSBrZXkgb2YgdGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+CiAgICAgICBpcyB1c2VkLiAgVGhl IHJlZmVyZW5jZWQgY29sdW1ucyBtdXN0IGJlIHRoZSBjb2x1bW5zIG9mIGEgbm9uLWRlZmVy cmFibGUKLSAgICAgIHVuaXF1ZSBvciBwcmltYXJ5IGtleSBjb25zdHJhaW50IGluIHRoZSBy ZWZlcmVuY2VkIHRhYmxlLiAgVGhlIHVzZXIKKyAgICAgIHVuaXF1ZSBvciBwcmltYXJ5IGtl eSBjb25zdHJhaW50IGluIHRoZSByZWZlcmVuY2VkIHRhYmxlLgorICAgICA8L3BhcmE+CisK KyAgICAgPHBhcmE+CisgICAgICBJZiB0aGUgbGFzdCBjb2x1bW4gaXMgbWFya2VkIHdpdGgg PGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiwKKyAgICAgIGl0IG11c3QgYmUgYSBwZXJpb2Qg b3IgcmFuZ2UgY29sdW1uLCBhbmQgdGhlIHJlZmVyZW5jZWQgdGFibGUKKyAgICAgIG11c3Qg aGF2ZSBhIHRlbXBvcmFsIHByaW1hcnkga2V5LgorICAgICAgVGhlIG5vbi08bGl0ZXJhbD5Q RVJJT0Q8L2xpdGVyYWw+IGNvbHVtbnMgYXJlIHRyZWF0ZWQgbm9ybWFsbHkKKyAgICAgIChh bmQgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgb2YgdGhlbSksCisgICAgICBidXQgdGhl IDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1uIGlzIG5vdCBjb21wYXJlZCBmb3Ig ZXF1YWxpdHkuCisgICAgICBJbnN0ZWFkIHRoZSBjb25zdHJhaW50IGlzIGNvbnNpZGVyZWQg c2F0aXNmaWVkCisgICAgICBpZiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBoYXMgbWF0Y2hpbmcg cmVjb3JkcyB3aG9zZSBjb21iaW5lZCByYW5nZXMgY29tcGxldGVseSBjb3ZlcgorICAgICAg dGhlIHJlZmVyZW5jaW5nIHJlY29yZC4KKyAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgcmVm ZXJlbmNlIG11c3QgaGF2ZSBhIHJlZmVyZW50IGZvciBpdHMgZW50aXJlIGR1cmF0aW9uLgor ICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgdXNlcgogICAgICAgbXVz dCBoYXZlIDxsaXRlcmFsPlJFRkVSRU5DRVM8L2xpdGVyYWw+IHBlcm1pc3Npb24gb24gdGhl IHJlZmVyZW5jZWQgdGFibGUKICAgICAgIChlaXRoZXIgdGhlIHdob2xlIHRhYmxlLCBvciB0 aGUgc3BlY2lmaWMgcmVmZXJlbmNlZCBjb2x1bW5zKS4gIFRoZQogICAgICAgYWRkaXRpb24g b2YgYSBmb3JlaWduIGtleSBjb25zdHJhaW50IHJlcXVpcmVzIGEKQEAgLTEyMzYsNiArMTI1 NCwxMiBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgIHZhbHVlcyBv ZiB0aGUgcmVmZXJlbmNpbmcgY29sdW1uKHMpIHRvIHRoZSBuZXcgdmFsdWVzIG9mIHRoZQog ICAgICAgICAgIHJlZmVyZW5jZWQgY29sdW1ucywgcmVzcGVjdGl2ZWx5LgogICAgICAgICAg PC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJbiBhIHRlbXBvcmFsIGZv cmVpZ24ga2V5LCB0aGUgZGVsZXRlL3VwZGF0ZSB3aWxsIHVzZQorICAgICAgICAgIDxsaXRl cmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBzZW1hbnRpY3MgdG8gY29uc3RyYWluIHRo ZQorICAgICAgICAgIGVmZmVjdCB0byB0aGUgYm91bmRzIGJlaW5nIGRlbGV0ZWQvdXBkYXRl ZCBpbiB0aGUgcmVmZXJlbmNlZCByb3cuCisgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTEyNDcsNiArMTI3MSwx MyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVt ZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgIHJlZmVyZW5jaW5n IGNvbHVtbnMsIHRvIG51bGwuIEEgc3Vic2V0IG9mIGNvbHVtbnMgY2FuIG9ubHkgYmUKICAg ICAgICAgICBzcGVjaWZpZWQgZm9yIDxsaXRlcmFsPk9OIERFTEVURTwvbGl0ZXJhbD4gYWN0 aW9ucy4KICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAg SW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhlIGNoYW5nZSB3aWxsIHVzZSA8bGl0ZXJh bD5GT1IgUE9SVElPTgorICAgICAgICAgIE9GPC9saXRlcmFsPiBzZW1hbnRpY3MgdG8gY29u c3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBiZWluZworICAgICAgICAgIGRlbGV0 ZWQvdXBkYXRlZCBpbiB0aGUgcmVmZXJlbmNlZCByb3cuIFRoZSBjb2x1bW4gbWFrZWQgd2l0 aAorICAgICAgICAgIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gd2lsbCBub3QgYmUgc2V0 IHRvIG51bGwuCisgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAg ICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTEyNjAsNiArMTI5MSwxMyBAQCBXSVRIICggTU9E VUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9y ZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgIChUaGVyZSBtdXN0IGJlIGEgcm93IGluIHRo ZSByZWZlcmVuY2VkIHRhYmxlIG1hdGNoaW5nIHRoZSBkZWZhdWx0CiAgICAgICAgICAgdmFs dWVzLCBpZiB0aGV5IGFyZSBub3QgbnVsbCwgb3IgdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwu KQogICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJbiBh IHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0aGUgY2hhbmdlIHdpbGwgdXNlIDxsaXRlcmFsPkZP UiBQT1JUSU9OCisgICAgICAgICAgT0Y8L2xpdGVyYWw+IHNlbWFudGljcyB0byBjb25zdHJh aW4gdGhlIGVmZmVjdCB0byB0aGUgYm91bmRzIGJlaW5nCisgICAgICAgICAgZGVsZXRlZC91 cGRhdGVkIGluIHRoZSByZWZlcmVuY2VkIHJvdy4gVGhlIGNvbHVtbiBtYXJrZWQgd2l0aAor ICAgICAgICAgIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gd2l0aCBub3QgYmUgc2V0IHRv IGEgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRl bT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgIDwvdmFyaWFibGVsaXN0PgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCAzMDE2MmVlN2FhZS4uYWFjNGI3MmFkODYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0yMTg5LDggKzIxODksOSBAQCBD b21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQlvcG5hbWUgPSAi ZXF1YWxzIjsKIAkJCX0KIAkJCUdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KG9w Y2xhc3NPaWRzW2F0dG5dLAotCQkJCQkJCQkJCQkgYXR0dHlwZSwKKwkJCQkJCQkJCQkJIElu dmFsaWRPaWQsCiAJCQkJCQkJCQkJCSBvcG5hbWUsCisJCQkJCQkJCQkJCSAiV0lUSE9VVCBP VkVSTEFQUyBjb25zdHJhaW50IiwKIAkJCQkJCQkJCQkJICZvcGlkLAogCQkJCQkJCQkJCQkg JnN0cmF0KTsKIAkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzW2F0dG5dID0gb3BpZDsK QEAgLTI0MzEsOCArMjQzMiw5IEBAIEdldERlZmF1bHRPcENsYXNzKE9pZCB0eXBlX2lkLCBP aWQgYW1faWQpCiAgKiBHZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJhdGVneQogICoKICAq IG9wY2xhc3MgLSB0aGUgb3BjbGFzcyB0byB1c2UKLSAqIGF0dHR5cGUgLSB0aGUgdHlwZSB0 byBhc2sgYWJvdXQKKyAqIHJoc3R5cGUgLSB0aGUgdHlwZSBmb3IgdGhlIHJpZ2h0LWhhbmQg c2lkZQogICogb3BuYW1lIC0gdXNlZCB0byBidWlsZCBlcnJvciBtZXNzYWdlcworICogY29u dGV4dCAtIHVzZWQgdG8gYnVpbGQgZXJyb3IgbWVzc2FnZXMKICAqIG9waWQgLSBob2xkcyB0 aGUgb3BlcmF0b3Igd2UgZm91bmQKICAqIHN0cmF0IC0gaG9sZHMgdGhlIGlucHV0IGFuZCBv dXRwdXQgc3RyYXRlZ3kgbnVtYmVyCiAgKgpAQCAtMjQ0NSwxMSArMjQ0NywxNCBAQCBHZXRE ZWZhdWx0T3BDbGFzcyhPaWQgdHlwZV9pZCwgT2lkIGFtX2lkKQogICogZnVuY3Rpb24gdG8g dHJhbnNsYXRlIGZyb20gdGhlIHdlbGwta25vd24gbnVtYmVyCiAgKiB0byB0aGUgaW50ZXJu YWwgdmFsdWUuIElmIHRoZSBmdW5jdGlvbiBpc24ndCBkZWZpbmVkCiAgKiBvciBpdCBnaXZl cyBubyByZXN1bHQsIHdlIHJldHJ1biBJbnZhbGlkU3RyYXRlZ3kuCisgKgorICogcmhzdHlw ZSBjYW4gYmUgSW52YWxpZE9pZCB0byB1c2UgdGhlIG9wY2ludHlwZSBpbnN0ZWFkLgogICov CiB2b2lkCiBHZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJhdGVneShPaWQgb3BjbGFzcywK LQkJCQkJCQkJIE9pZCBhdHR0eXBlLAorCQkJCQkJCQkgT2lkIHJoc3R5cGUsCiAJCQkJCQkJ CSBjb25zdCBjaGFyICpvcG5hbWUsCisJCQkJCQkJCSBjb25zdCBjaGFyICpjb250ZXh0LAog CQkJCQkJCQkgT2lkICpvcGlkLAogCQkJCQkJCQkgU3RyYXRlZ3lOdW1iZXIgKnN0cmF0KQog ewpAQCAtMjQ3MywxMiArMjQ3OCwxOSBAQCBHZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJh dGVneShPaWQgb3BjbGFzcywKIAkJaWYgKCFTdHJhdGVneUlzVmFsaWQoKnN0cmF0KSkKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVD VCksCi0JCQkJCSBlcnJtc2coIm5vICVzIG9wZXJhdG9yIGZvdW5kIGZvciBXSVRIT1VUIE9W RVJMQVBTIGNvbnN0cmFpbnQiLCBvcG5hbWUpLAorCQkJCQkgZXJybXNnKCJubyAlcyBvcGVy YXRvciBmb3VuZCBmb3IgJXMiLCBvcG5hbWUsIGNvbnRleHQpLAogCQkJCQkgZXJyZGV0YWls KCJDb3VsZCBub3QgdHJhbnNsYXRlIHN0cmF0ZWd5IG51bWJlciAldSBmb3Igb3BjbGFzcyAl ZC4iLAogCQkJCQkJIG9wc3RyYXQsIG9wY2xhc3MpLAogCQkJCQkgZXJyaGludCgiRGVmaW5l IGEgc3RyYXRudW0gc3VwcG9ydCBmdW5jdGlvbiBmb3IgeW91ciBHaVNUIG9wY2xhc3MuIikp KTsKIAotCQkqb3BpZCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlw ZSwgb3BjaW50eXBlLCAqc3RyYXQpOworCQkvKgorCQkgKiBXZSBwYXJhbWV0ZXJpemUgcmhz dHlwZSBzbyBmb3JlaWduIGtleXMgY2FuIGFzayBmb3IgYSA8QCBvcGVyYXRvcgorCQkgKiB3 aG9zZSByaHMgbWF0Y2hlcyB0aGUgYWdncmVnYXRlIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSBy YW5nZV9hZ2cKKwkJICogcmV0dXJucyBhbnltdWx0aXJhbmdlLgorCQkgKi8KKwkJaWYgKCFP aWRJc1ZhbGlkKHJoc3R5cGUpKQorCQkJcmhzdHlwZSA9IG9wY2ludHlwZTsKKwkJKm9waWQg PSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIHJoc3R5cGUsICpz dHJhdCk7CiAJfQogCiAJaWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSkKQEAgLTI1MDAsMTEgKzI1 MTIsMTEgQEAgR2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRlZ3koT2lkIG9wY2xhc3Ms CiAKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAotCQkJCSBlcnJtc2coIm5vICVzIG9wZXJhdG9yIGZvdW5kIGZvciBXSVRIT1VU IE9WRVJMQVBTIGNvbnN0cmFpbnQiLCBvcG5hbWUpLAorCQkJCSBlcnJtc2coIm5vICVzIG9w ZXJhdG9yIGZvdW5kIGZvciAlcyIsIG9wbmFtZSwgY29udGV4dCksCiAJCQkJIGVycmRldGFp bCgiVGhlcmUgbXVzdCBiZSBhbiAlcyBvcGVyYXRvciB3aXRoaW4gb3BmYW1pbHkgXCIlc1wi IGZvciB0eXBlIFwiJXNcIi4iLAogCQkJCQkJICAgb3BuYW1lLAogCQkJCQkJICAgTmFtZVN0 cihvcGZmb3JtLT5vcGZuYW1lKSwKLQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGF0dHR5cGUp KSkpOworCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUob3BjaW50eXBlKSkpKTsKIAl9CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggYzY5NjQzOGVkNWUuLmVhMDY5NzM4 ZTlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTYsNiArMTYsNyBAQAog CiAjaW5jbHVkZSAiYWNjZXNzL2F0dG1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5o IgorI2luY2x1ZGUgImFjY2Vzcy9naXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCiAjaW5jbHVkZSAi YWNjZXNzL211bHRpeGFjdC5oIgpAQCAtMjEyLDggKzIxMywxMSBAQCB0eXBlZGVmIHN0cnVj dCBOZXdDb25zdHJhaW50CiAJQ29uc3RyVHlwZQljb250eXBlOwkJLyogQ0hFQ0sgb3IgRk9S RUlHTiAqLwogCU9pZAkJCXJlZnJlbGlkOwkJLyogUEsgcmVsLCBpZiBGT1JFSUdOICovCiAJ T2lkCQkJcmVmaW5kaWQ7CQkvKiBPSUQgb2YgUEsncyBpbmRleCwgaWYgRk9SRUlHTiAqLwor CWJvb2wJCWNvbndpdGhwZXJpb2Q7CS8qIFdoZXRoZXIgdGhlIG5ldyBGT1JFSUdOIEtFWSB1 c2VzIFBFUklPRCAqLwogCU9pZAkJCWNvbmlkOwkJCS8qIE9JRCBvZiBwZ19jb25zdHJhaW50 IGVudHJ5LCBpZiBGT1JFSUdOICovCiAJTm9kZQkgICAqcXVhbDsJCQkvKiBDaGVjayBleHBy IG9yIENPTlNUUl9GT1JFSUdOIENvbnN0cmFpbnQgKi8KKwlPaWQJCSAgICpvcGVyb2lkczsJ CS8qIG9wZXIgb2lkcyBmb3IgRk9SRUlHTiBLRVkgd2l0aCBQRVJJT0QgKi8KKwlPaWQJCSAg ICpwcm9jb2lkczsJCS8qIHByb2Mgb2lkcyBmb3IgRk9SRUlHTiBLRVkgd2l0aCBQRVJJT0Qg Ki8KIAlFeHByU3RhdGUgICpxdWFsc3RhdGU7CQkvKiBFeGVjdXRpb24gc3RhdGUgZm9yIENI RUNLIGV4cHIgKi8KIH0gTmV3Q29uc3RyYWludDsKIApAQCAtMzg0LDE3ICszODgsMjAgQEAg c3RhdGljIGludAl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChPaWQgcmVsSWQsIExpc3QgKmNv bExpc3QsCiAJCQkJCQkJCQlpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBpZHMpOwogc3Rh dGljIGludAl0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxhdGlvbiBwa3JlbCwgT2lk ICppbmRleE9pZCwKIAkJCQkJCQkJCSAgIExpc3QgKiphdHRuYW1lbGlzdCwKKwkJCQkJCQkJ CSAgIE5vZGUgKipwa19wZXJpb2QsCiAJCQkJCQkJCQkgICBpbnQxNiAqYXR0bnVtcywgT2lk ICphdHR0eXBpZHMsCisJCQkJCQkJCQkgICBpbnQxNiAqcGVyaW9kYXR0bnVtcywgT2lkICpw ZXJpb2RhdHR0eXBpZHMsCiAJCQkJCQkJCQkgICBPaWQgKm9wY2xhc3Nlcyk7CiBzdGF0aWMg T2lkCXRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJCQkJ aW50IG51bWF0dHJzLCBpbnQxNiAqYXR0bnVtcywKKwkJCQkJCQkJCWJvb2wgaXNfdGVtcG9y YWwsIGludDE2IHBlcmlvZGF0dG51bSwKIAkJCQkJCQkJCU9pZCAqb3BjbGFzc2VzKTsKIHN0 YXRpYyB2b2lkIGNoZWNrRmtleVBlcm1pc3Npb25zKFJlbGF0aW9uIHJlbCwgaW50MTYgKmF0 dG51bXMsIGludCBuYXR0cyk7CiBzdGF0aWMgQ29lcmNpb25QYXRoVHlwZSBmaW5kRmtleUNh c3QoT2lkIHRhcmdldFR5cGVJZCwgT2lkIHNvdXJjZVR5cGVJZCwKIAkJCQkJCQkJCSBPaWQg KmZ1bmNpZCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNo YXIgKmNvbm5hbWUsCiAJCQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gcGtyZWws Ci0JCQkJCQkJCQkJIE9pZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQpOworCQkJCQkJ CQkJCSBPaWQgcGtpbmRPaWQsIE9pZCBjb25zdHJhaW50T2lkLCBib29sIHRlbXBvcmFsKTsK IHN0YXRpYyB2b2lkIEFUQ29udHJvbGxlcihBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLAog CQkJCQkJIFJlbGF0aW9uIHJlbCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlLCBMT0NLTU9E RSBsb2NrbW9kZSwKIAkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQp OwpAQCAtNTA2LDcgKzUxMyw4IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIGFkZEZrUmVjdXJz ZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhCiAJCQkJ CQkJCQkJCU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZm ZXFvcGVyYXRvcnMsCiAJCQkJCQkJCQkJCWludCBudW1ma2RlbHNldGNvbHMsIGludDE2ICpm a2RlbHNldGNvbHMsCiAJCQkJCQkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLAotCQkJCQkJCQkJ CQlPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIpOworCQkJCQkJ CQkJCQlPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJ CQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVGa09uRGVs ZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmthdHRudW1zLAogCQkJ CQkJCQkJCSBpbnQgbnVtZmtzZXRjb2xzLCBjb25zdCBpbnQxNiAqZmtzZXRjb2xzYXR0bnVt cywKIAkJCQkJCQkJCQkgTGlzdCAqZmtzZXRjb2xzKTsKQEAgLTUxNiw3ICs1MjQsOSBAQCBz dGF0aWMgdm9pZCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25z dHJhaW50ICpma2NvbnN0cmFpbnQsCiAJCQkJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9p ZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJCQkJaW50IG51 bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCQkJCWJvb2wgb2xk X2NoZWNrX29rLCBMT0NLTU9ERSBsb2NrbW9kZSwKLQkJCQkJCQkJCU9pZCBwYXJlbnRJbnNU cmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcik7CisJCQkJCQkJCQlPaWQgcGFyZW50SW5z VHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQkJCQlib29sIGlzX3RlbXBv cmFsKTsKKwogc3RhdGljIHZvaWQgQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLAogCQkJCQkJCQkJICAgUmVsYXRpb24gcGFy dGl0aW9uUmVsKTsKIHN0YXRpYyB2b2lkIENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9uIHBh cmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9uUmVsKTsKQEAgLTU0OCw2ICs1NTgsMTIgQEAg c3RhdGljIHZvaWQgR2V0Rm9yZWlnbktleUNoZWNrVHJpZ2dlcnMoUmVsYXRpb24gdHJpZ3Jl bCwKIAkJCQkJCQkJCSAgIE9pZCBjb25vaWQsIE9pZCBjb25mcmVsaWQsIE9pZCBjb25yZWxp ZCwKIAkJCQkJCQkJCSAgIE9pZCAqaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQkJCQkJCSAgIE9p ZCAqdXBkYXRlVHJpZ2dlck9pZCk7CitzdGF0aWMgdm9pZCBGaW5kRktDb21wYXJpc29uT3Bl cmF0b3JzKENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKKwkJCQkJQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBpbnQgaSwgaW50MTYgKmZrYXR0bnVtLAorCQkJCQlib29sICpvbGRfY2hlY2tf b2ssIExpc3RDZWxsICoqb2xkX3BmZXFvcF9pdGVtLAorCQkJCQlPaWQgcGt0eXBlLCBPaWQg Zmt0eXBlLCBPaWQgb3BjbGFzcywKKwkJCQkJYm9vbCBpc190ZW1wb3JhbCwgYm9vbCBmb3Jf b3ZlcmxhcHMsCisJCQkJCU9pZCAqcGZlcW9wT3V0LCBPaWQgKnBwZXFvcE91dCwgT2lkICpm ZmVxb3BPdXQpOwogc3RhdGljIHZvaWQgQVRFeGVjRHJvcENvbnN0cmFpbnQoUmVsYXRpb24g cmVsLCBjb25zdCBjaGFyICpjb25zdHJOYW1lLAogCQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJl aGF2aW9yLCBib29sIHJlY3Vyc2UsCiAJCQkJCQkJCSBib29sIG1pc3Npbmdfb2ssIExPQ0tN T0RFIGxvY2ttb2RlKTsKQEAgLTU5MTIsNyArNTkyOCw4IEBAIEFUUmV3cml0ZVRhYmxlcyhB bHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2Nr bW9kZSwKIAogCQkJCXZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoZmtjb25zdHJhaW50 LT5jb25uYW1lLCByZWwsIHJlZnJlbCwKIAkJCQkJCQkJCQkJIGNvbi0+cmVmaW5kaWQsCi0J CQkJCQkJCQkJCSBjb24tPmNvbmlkKTsKKwkJCQkJCQkJCQkJIGNvbi0+Y29uaWQsCisJCQkJ CQkJCQkJCSBjb24tPmNvbndpdGhwZXJpb2QpOwogCiAJCQkJLyoKIAkJCQkgKiBObyBuZWVk IHRvIG1hcmsgdGhlIGNvbnN0cmFpbnQgcm93IGFzIHZhbGlkYXRlZCwgd2UgZGlkCkBAIC05 NjU5LDYgKzk2NzYsMTMgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1 ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlPaWQJCQlwcGVx b3BlcmF0b3JzW0lOREVYX01BWF9LRVlTXSA9IHswfTsKIAlPaWQJCQlmZmVxb3BlcmF0b3Jz W0lOREVYX01BWF9LRVlTXSA9IHswfTsKIAlpbnQxNgkJZmtkZWxzZXRjb2xzW0lOREVYX01B WF9LRVlTXSA9IHswfTsKKwlib29sCQlpc190ZW1wb3JhbDsKKwlpbnQxNgkJcGtwZXJpb2Rh dHRudW0gPSAwOworCWludDE2CQlma3BlcmlvZGF0dG51bSA9IDA7CisJT2lkCQkJcGtwZXJp b2R0eXBvaWQgPSAwOworCU9pZAkJCWZrcGVyaW9kdHlwb2lkID0gMDsKKwlPaWQJCQlwZXJp b2RvcGVyb2lkOworCU9pZAkJCXBlcmlvZHByb2NvaWQ7CiAJaW50CQkJaTsKIAlpbnQJCQlu dW1ma3MsCiAJCQkJbnVtcGtzLApAQCAtOTc1Myw2ICs5Nzc3LDE3IEBAIEFUQWRkRm9yZWln bktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBS ZWxhdGlvbiByZWwsCiAJbnVtZmtzID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRp b25HZXRSZWxpZChyZWwpLAogCQkJCQkJCQkJIGZrY29uc3RyYWludC0+ZmtfYXR0cnMsCiAJ CQkJCQkJCQkgZmthdHRudW0sIGZrdHlwb2lkKTsKKwlpc190ZW1wb3JhbCA9IChma2NvbnN0 cmFpbnQtPnBrX3BlcmlvZCB8fCBma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCk7CisJaWYgKGlz X3RlbXBvcmFsKQorCXsKKwkJaWYgKCFma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tF WSksCisJCQkJCWVycm1zZygiZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVy ZW5jZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUiKSkpOworCQl0cmFu c2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCisJCQkJCQkJICBs aXN0X21ha2UxKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKSwKKwkJCQkJCQkgICZma3Blcmlv ZGF0dG51bSwgJmZrcGVyaW9kdHlwb2lkKTsKKwl9CiAKIAludW1ma2RlbHNldGNvbHMgPSB0 cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJ CQkJCSAgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMsCkBAIC05NzcxLDE2ICs5ODA2 LDM4IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJewogCQludW1wa3MgPSB0cmFuc2Zv cm1Ga2V5R2V0UHJpbWFyeUtleShwa3JlbCwgJmluZGV4T2lkLAogCQkJCQkJCQkJCQkmZmtj b25zdHJhaW50LT5wa19hdHRycywKKwkJCQkJCQkJCQkJJmZrY29uc3RyYWludC0+cGtfcGVy aW9kLAogCQkJCQkJCQkJCQlwa2F0dG51bSwgcGt0eXBvaWQsCisJCQkJCQkJCQkJCSZwa3Bl cmlvZGF0dG51bSwgJnBrcGVyaW9kdHlwb2lkLAogCQkJCQkJCQkJCQlvcGNsYXNzZXMpOwor CisJCS8qIElmIHRoZSBwcmltYXJ5IGtleSB1c2VzIFdJVEhPVVQgT1ZFUkxBUFMsIHRoZSBm ayBtdXN0IHVzZSBQRVJJT0QgKi8KKwkJaWYgKHBrcGVyaW9kYXR0bnVtICYmICFma3Blcmlv ZGF0dG51bSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9GT1JFSUdOX0tFWSksCisJCQkJCWVycm1zZygiZm9yZWlnbiBrZXkgdXNlcyBQRVJJ T0Qgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFi bGUiKSkpOwogCX0KIAllbHNlCiAJewogCQludW1wa3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1l TGlzdChSZWxhdGlvbkdldFJlbGlkKHBrcmVsKSwKIAkJCQkJCQkJCQkgZmtjb25zdHJhaW50 LT5wa19hdHRycywKIAkJCQkJCQkJCQkgcGthdHRudW0sIHBrdHlwb2lkKTsKKwkJaWYgKGlz X3RlbXBvcmFsKQorCQl7CisJCQkvKiBTaW5jZSB3ZSBnb3QgcGtfYXR0cnMsIHdlIHNob3Vs ZCBoYXZlIHBrX3BlcmlvZCB0b28uICovCisJCQlpZiAoIWZrY29uc3RyYWludC0+cGtfcGVy aW9kKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfRk9SRUlHTl9LRVkpLAorCQkJCQkJZXJybXNnKCJmb3JlaWduIGtleSB1c2VzIFBFUklP RCBvbiB0aGUgcmVmZXJlbmNpbmcgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNlZCB0YWJs ZSIpKSk7CisKKwkJCXRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQo cGtyZWwpLAorCQkJCQkJCQkJbGlzdF9tYWtlMShma2NvbnN0cmFpbnQtPnBrX3BlcmlvZCks CisJCQkJCQkJCQkmcGtwZXJpb2RhdHRudW0sICZwa3BlcmlvZHR5cG9pZCk7CisJCX0KKwog CQkvKiBMb29rIGZvciBhbiBpbmRleCBtYXRjaGluZyB0aGUgY29sdW1uIGxpc3QgKi8KIAkJ aW5kZXhPaWQgPSB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhwa3JlbCwgbnVtcGtzLCBwa2F0 dG51bSwKKwkJCQkJCQkJCQkgICBpc190ZW1wb3JhbCwgcGtwZXJpb2RhdHRudW0sCiAJCQkJ CQkJCQkJICAgb3BjbGFzc2VzKTsKIAl9CiAKQEAgLTk3ODksMzQgKzk4NDYsNiBAQCBBVEFk ZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCSAqLwogCWNoZWNrRmtleVBlcm1pc3Npb25zKHBrcmVs LCBwa2F0dG51bSwgbnVtcGtzKTsKIAotCS8qCi0JICogQ2hlY2sgc29tZSB0aGluZ3MgZm9y IGdlbmVyYXRlZCBjb2x1bW5zLgotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBudW1ma3M7IGkr KykKLQl7Ci0JCWNoYXIJCWF0dGdlbmVyYXRlZCA9IFR1cGxlRGVzY0F0dHIoUmVsYXRpb25H ZXREZXNjcihyZWwpLCBma2F0dG51bVtpXSAtIDEpLT5hdHRnZW5lcmF0ZWQ7Ci0KLQkJaWYg KGF0dGdlbmVyYXRlZCkKLQkJewotCQkJLyoKLQkJCSAqIENoZWNrIHJlc3RyaWN0aW9ucyBv biBVUERBVEUvREVMRVRFIGFjdGlvbnMsIHBlciBTUUwgc3RhbmRhcmQKLQkJCSAqLwotCQkJ aWYgKGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbiA9PSBGS0NPTlNUUl9BQ1RJT05fU0VU TlVMTCB8fAotCQkJCWZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbiA9PSBGS0NPTlNUUl9B Q1RJT05fU0VUREVGQVVMVCB8fAotCQkJCWZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbiA9 PSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERSkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJIGVycm1zZygiaW52YWxp ZCAlcyBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgY29udGFpbmluZyBnZW5l cmF0ZWQgY29sdW1uIiwKLQkJCQkJCQkJIk9OIFVQREFURSIpKSk7Ci0JCQlpZiAoZmtjb25z dHJhaW50LT5ma19kZWxfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVROVUxMIHx8Ci0J CQkJZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVRE RUZBVUxUKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCi0JCQkJCQkgZXJybXNnKCJpbnZhbGlkICVzIGFjdGlvbiBmb3IgZm9y ZWlnbiBrZXkgY29uc3RyYWludCBjb250YWluaW5nIGdlbmVyYXRlZCBjb2x1bW4iLAotCQkJ CQkJCQkiT04gREVMRVRFIikpKTsKLQkJfQotCX0KLQogCS8qCiAJICogTG9vayB1cCB0aGUg ZXF1YWxpdHkgb3BlcmF0b3JzIHRvIHVzZSBpbiB0aGUgY29uc3RyYWludC4KIAkgKgpAQCAt OTgzOSwxODkgKzk4NjgsNjggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAogCWZvciAo aSA9IDA7IGkgPCBudW1wa3M7IGkrKykKIAl7Ci0JCU9pZAkJCXBrdHlwZSA9IHBrdHlwb2lk W2ldOwotCQlPaWQJCQlma3R5cGUgPSBma3R5cG9pZFtpXTsKLQkJT2lkCQkJZmt0eXBlZDsK LQkJSGVhcFR1cGxlCWNsYV9odDsKLQkJRm9ybV9wZ19vcGNsYXNzIGNsYV90dXA7Ci0JCU9p ZAkJCWFtaWQ7Ci0JCU9pZAkJCW9wZmFtaWx5OwotCQlPaWQJCQlvcGNpbnR5cGU7Ci0JCU9p ZAkJCXBmZXFvcDsKLQkJT2lkCQkJcHBlcW9wOwotCQlPaWQJCQlmZmVxb3A7Ci0JCWludDE2 CQllcXN0cmF0ZWd5OwotCQlPaWQJCQlwZmVxb3BfcmlnaHQ7Ci0KLQkJLyogV2UgbmVlZCBz ZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8KLQkJY2xhX2h0 ID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGNsYXNzZXNb aV0pKTsKLQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNsYV9odCkpCi0JCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyAldSIsIG9wY2xhc3Nlc1tpXSk7 Ci0JCWNsYV90dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhX2h0KTsKLQkJ YW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsKLQkJb3BmYW1pbHkgPSBjbGFfdHVwLT5vcGNm YW1pbHk7Ci0JCW9wY2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsKLQkJUmVsZWFzZVN5 c0NhY2hlKGNsYV9odCk7Ci0KLQkJLyoKLQkJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJy ZW50bHkgdGhpcyBjYW4gbmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgotCQkgKiBpbmRleCBB TXMgc3VwcG9ydCB1bmlxdWUgaW5kZXhlcy4gIElmIHdlIGV2ZXIgZGlkIGhhdmUgb3RoZXIg dHlwZXMKLQkJICogb2YgdW5pcXVlIGluZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRl cm1pbmUgd2hpY2ggb3BlcmF0b3IKLQkJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5 LiAgKElzIGl0IHJlYXNvbmFibGUgdG8gaW5zaXN0IHRoYXQKLQkJICogZXZlcnkgc3VjaCBp bmRleCBBTSB1c2UgYnRyZWUncyBudW1iZXIgZm9yIGVxdWFsaXR5PykKLQkJICovCi0JCWlm IChhbWlkICE9IEJUUkVFX0FNX09JRCkKLQkJCWVsb2coRVJST1IsICJvbmx5IGItdHJlZSBp bmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9yIGZvcmVpZ24ga2V5cyIpOwotCQllcXN0cmF0ZWd5 ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOwotCi0JCS8qCi0JCSAqIFRoZXJlIGhhZCBiZXR0 ZXIgYmUgYSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0aGUgaW5kZXguCi0JCSAq IFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBjb21wYXJpc29ucy4KLQkJICovCi0JCXBwZXFv cCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBl LAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCi0JCWlmICghT2lkSXNWYWxpZChwcGVxb3Ap KQotCQkJZWxvZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFt aWx5ICV1IiwKLQkJCQkgZXFzdHJhdGVneSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIG9wZmFt aWx5KTsKLQotCQkvKgotCQkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRoYXQg dGFrZSBleGFjdGx5IHRoZSBGSyB0eXBlPyBBc3N1bWUKLQkJICogd2Ugc2hvdWxkIGxvb2sg dGhyb3VnaCBhbnkgZG9tYWluIGhlcmUuCi0JCSAqLwotCQlma3R5cGVkID0gZ2V0QmFzZVR5 cGUoZmt0eXBlKTsKKwkJRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycygKKwkJCQlma2NvbnN0 cmFpbnQsIHRhYiwgaSwgZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVx b3BfaXRlbSwKKwkJCQlwa3R5cG9pZFtpXSwgZmt0eXBvaWRbaV0sIG9wY2xhc3Nlc1tpXSwK KwkJCQlpc190ZW1wb3JhbCwgZmFsc2UsCisJCQkJJnBmZXFvcGVyYXRvcnNbaV0sICZwcGVx b3BlcmF0b3JzW2ldLCAmZmZlcW9wZXJhdG9yc1tpXSk7CisJfQorCWlmIChpc190ZW1wb3Jh bCkgeworCQlwa2F0dG51bVtudW1wa3NdID0gcGtwZXJpb2RhdHRudW07CisJCXBrdHlwb2lk W251bXBrc10gPSBwa3BlcmlvZHR5cG9pZDsKKwkJZmthdHRudW1bbnVtcGtzXSA9IGZrcGVy aW9kYXR0bnVtOworCQlma3R5cG9pZFtudW1wa3NdID0gZmtwZXJpb2R0eXBvaWQ7CiAKLQkJ cGZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBma3R5 cGVkLAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCQlpZiAoT2lkSXNWYWxpZChwZmVxb3Ap KQotCQl7Ci0JCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOwotCQkJZmZlcW9wID0gZ2V0X29w ZmFtaWx5X21lbWJlcihvcGZhbWlseSwgZmt0eXBlZCwgZmt0eXBlZCwKLQkJCQkJCQkJCQkg ZXFzdHJhdGVneSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBrZWVwIGNvbXBpbGVyIHF1 aWV0ICovCi0JCQlwZmVxb3BfcmlnaHQgPSBJbnZhbGlkT2lkOwotCQkJZmZlcW9wID0gSW52 YWxpZE9pZDsKLQkJfQorCQlGaW5kRktDb21wYXJpc29uT3BlcmF0b3JzKAorCQkJCWZrY29u c3RyYWludCwgdGFiLCBudW1wa3MsIGZrYXR0bnVtLAorCQkJCSZvbGRfY2hlY2tfb2ssICZv bGRfcGZlcW9wX2l0ZW0sCisJCQkJcGtwZXJpb2R0eXBvaWQsIGZrcGVyaW9kdHlwb2lkLCBv cGNsYXNzZXNbbnVtcGtzXSwKKwkJCQlpc190ZW1wb3JhbCwgdHJ1ZSwKKwkJCQkmcGZlcW9w ZXJhdG9yc1tudW1wa3NdLCAmcHBlcW9wZXJhdG9yc1tudW1wa3NdLCAmZmZlcW9wZXJhdG9y c1tudW1wa3NdKTsKKwkJbnVtZmtzICs9IDE7CisJCW51bXBrcyArPSAxOworCX0KIAotCQlp ZiAoIShPaWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKLQkJewot CQkJLyoKLQkJCSAqIE90aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQgY2FzdCBmcm9t IHRoZSBGSyB0eXBlIHRvIHRoZQotCQkJICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVz ZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvci4KLQkJCSAqIFRoaXMgaXMgYSBiaXQg dHJpY2t5IGJlY2F1c2Ugb3BjaW50eXBlIG1pZ2h0IGJlIGEgcG9seW1vcnBoaWMKLQkJCSAq IHR5cGUgc3VjaCBhcyBBTllBUlJBWSBvciBBTllFTlVNOyBzbyB3aGF0IHdlIGhhdmUgdG8g dGVzdCBpcwotCQkJICogd2hldGhlciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2Fu IGJlIGNvbmN1cnJlbnRseSBjYXN0IHRvCi0JCQkgKiB0aGF0IHR5cGUuICAoT3RoZXJ3aXNl LCB3ZSdkIGZhaWwgdG8gcmVqZWN0IGNvbWJpbmF0aW9ucyBzdWNoCi0JCQkgKiBhcyBpbnRb XSBhbmQgcG9pbnRbXS4pCi0JCQkgKi8KLQkJCU9pZAkJCWlucHV0X3R5cGVpZHNbMl07Ci0J CQlPaWQJCQl0YXJnZXRfdHlwZWlkc1syXTsKLQotCQkJaW5wdXRfdHlwZWlkc1swXSA9IHBr dHlwZTsKLQkJCWlucHV0X3R5cGVpZHNbMV0gPSBma3R5cGU7Ci0JCQl0YXJnZXRfdHlwZWlk c1swXSA9IG9wY2ludHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzFdID0gb3BjaW50eXBlOwot CQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgyLCBpbnB1dF90eXBlaWRzLCB0YXJnZXRfdHlwZWlk cywKLQkJCQkJCQkJQ09FUkNJT05fSU1QTElDSVQpKQotCQkJewotCQkJCXBmZXFvcCA9IGZm ZXFvcCA9IHBwZXFvcDsKLQkJCQlwZmVxb3BfcmlnaHQgPSBvcGNpbnR5cGU7Ci0JCQl9Ci0J CX0KKwkvKgorCSAqIENoZWNrIHNvbWUgdGhpbmdzIGZvciBnZW5lcmF0ZWQgY29sdW1ucy4K KwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbnVtZmtzOyBpKyspCisJeworCQljaGFyCQlhdHRn ZW5lcmF0ZWQgPSBUdXBsZURlc2NBdHRyKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgZmthdHRu dW1baV0gLSAxKS0+YXR0Z2VuZXJhdGVkOwogCi0JCWlmICghKE9pZElzVmFsaWQocGZlcW9w KSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCSBlcnJtc2coImZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgXCIlc1wiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCIsCi0JCQkJ CQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwKLQkJCQkJIGVycmRldGFpbCgiS2V5IGNvbHVt bnMgXCIlc1wiIGFuZCBcIiVzXCIgIgotCQkJCQkJCSAgICJhcmUgb2YgaW5jb21wYXRpYmxl IHR5cGVzOiAlcyBhbmQgJXMuIiwKLQkJCQkJCQkgICBzdHJWYWwobGlzdF9udGgoZmtjb25z dHJhaW50LT5ma19hdHRycywgaSkpLAotCQkJCQkJCSAgIHN0clZhbChsaXN0X250aChma2Nv bnN0cmFpbnQtPnBrX2F0dHJzLCBpKSksCi0JCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoZmt0 eXBlKSwKLQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShwa3R5cGUpKSkpOwotCi0JCWlmIChv bGRfY2hlY2tfb2spCi0JCXsKLQkJCS8qCi0JCQkgKiBXaGVuIGEgcGZlcW9wIGNoYW5nZXMs IHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAotCQkJICogcGVybWl0IGlu dHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxlIGNvbXBsZXhpdHkK LQkJCSAqIHdpdGhvdXQgYW55IGNvbmNyZXRlIGJlbmVmaXQgZm9yIGNvcmUgdHlwZXMuICBX ZSBuZWVkIG5vdAotCQkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3AsIHdoaWNoIFJJX0lu aXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCi0JCQkgKi8KLQkJCW9sZF9jaGVja19vayA9 IChwZmVxb3AgPT0gbGZpcnN0X29pZChvbGRfcGZlcW9wX2l0ZW0pKTsKLQkJCW9sZF9wZmVx b3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCwKLQkJCQkJCQkJ CW9sZF9wZmVxb3BfaXRlbSk7Ci0JCX0KLQkJaWYgKG9sZF9jaGVja19vaykKKwkJaWYgKGF0 dGdlbmVyYXRlZCkKIAkJewotCQkJT2lkCQkJb2xkX2ZrdHlwZTsKLQkJCU9pZAkJCW5ld19m a3R5cGU7Ci0JCQlDb2VyY2lvblBhdGhUeXBlIG9sZF9wYXRodHlwZTsKLQkJCUNvZXJjaW9u UGF0aFR5cGUgbmV3X3BhdGh0eXBlOwotCQkJT2lkCQkJb2xkX2Nhc3RmdW5jOwotCQkJT2lk CQkJbmV3X2Nhc3RmdW5jOwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVz Y0F0dHIodGFiLT5vbGREZXNjLAotCQkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAxKTsK LQogCQkJLyoKLQkJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlzIGZyb20gZWFjaCBv ZiB0aGUgb2xkIGFuZCBuZXcgRkstc2lkZQotCQkJICogY29sdW1uIHR5cGVzIHRvIHRoZSBy aWdodCAoZm9yZWlnbikgb3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCi0JCQkgKiBXZSBt YXkgYXNzdW1lIHRoYXQgcGdfY29uc3RyYWludC5jb25rZXkgaXMgbm90IGNoYW5naW5nLgot CQkJICovCi0JCQlvbGRfZmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7Ci0JCQluZXdfZmt0eXBl ID0gZmt0eXBlOwotCQkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdo dCwgb2xkX2ZrdHlwZSwKLQkJCQkJCQkJCQkmb2xkX2Nhc3RmdW5jKTsKLQkJCW5ld19wYXRo dHlwZSA9IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19ma3R5cGUsCi0JCQkJCQkJ CQkJJm5ld19jYXN0ZnVuYyk7Ci0KLQkJCS8qCi0JCQkgKiBVcG9uIGEgY2hhbmdlIHRvIHRo ZSBjYXN0IGZyb20gdGhlIEZLIGNvbHVtbiB0byBpdHMgcGZlcW9wCi0JCQkgKiBvcGVyYW5k LCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQot CQkJICogYmluYXJ5IGNvZXJjaW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0 IGFsbC4gIFdoaWxlCi0JCQkgKiB0eXBlIGltcGxlbWVudG9ycyBzaG91bGQgZGVzaWduIGlt cGxpY2l0IGNhc3RzIHdpdGggYW4gZXllCi0JCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Yg b3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3ZSBjYW5ub3QKLQkJCSAqIGFzc3VtZSBoZXJl IHRoYXQgdGhleSBoYXZlIGRvbmUgc28uCi0JCQkgKgotCQkJICogQSBmdW5jdGlvbiB3aXRo IGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2aW9yCi0JCQkgKiBh cmJpdHJhcmlseSBpbiByZXNwb25zZSB0byBnZXRfZm5fZXhwcl9hcmd0eXBlKCkuICBUaGVy ZWZvcmUsCi0JCQkgKiB3aGVuIHRoZSBjYXN0IGRlc3RpbmF0aW9uIGlzIHBvbHltb3JwaGlj LCB3ZSBvbmx5IGF2b2lkCi0JCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlucHV0IHR5cGUg aGFzIG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCi0JCQkgKiBqdXN0IHRoZSBjb3JlIGRh dGEgdHlwZXMgYW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQKLQkJCSAq IHByZXZlbnRzIG5vIHdvdWxkLWJlIG9wdGltaXphdGlvbnMuCi0JCQkgKgotCQkJICogSWYg dGhlIGNhc3QgY29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9u LCB0aGVuCi0JCQkgKiB0aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUgdGhlIG9wY2ludHlwZSBv ZiB0aGUgdW5pcXVlIGluZGV4LgotCQkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtl eSBjb2x1bW4gbXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KLQkJCSAqIHR5cGUuICBTaW5j ZSB0aGUgY29uc3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgot CQkJICogdGhlIGZvcmVpZ24gc2lkZSBuZWNlc3NhcmlseSBleGlzdCBvbiB0aGUgcHJpbWFy eSBzaWRlIGFuZCBpbgotCQkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25z ZXF1ZW50bHksIHdlIG5lZWQgbm90IHRyZWF0Ci0JCQkgKiBkb21haW5zIHNwZWNpYWxseSBo ZXJlLgotCQkJICoKLQkJCSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9u cyBzaGFyZSB0aGUgc2FtZSBub3Rpb24gb2YKLQkJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5 IGRvLCBiZWNhdXNlIHRleHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UKLQkJCSAqIGVxdWFsaXR5 KSwgd2UgZG9uJ3QgY29tcGFyZSBjb2xsYXRpb24gaGVyZS4KLQkJCSAqCi0JCQkgKiBXZSBu ZWVkIG5vdCBkaXJlY3RseSBjb25zaWRlciB0aGUgUEsgdHlwZS4gIEl0J3MgbmVjZXNzYXJp bHkKLQkJCSAqIGJpbmFyeSBjb2VyY2libGUgdG8gdGhlIG9wY2ludHlwZSBvZiB0aGUgdW5p cXVlIGluZGV4IGNvbHVtbiwKLQkJCSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBk ZWFsIHdpdGggUEsgZGF0dW1zIGluIHRlcm1zIG9mCi0JCQkgKiB0aGF0IG9wY2ludHlwZS4g IENoYW5naW5nIHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4KKwkJCSAqIENo ZWNrIHJlc3RyaWN0aW9ucyBvbiBVUERBVEUvREVMRVRFIGFjdGlvbnMsIHBlciBTUUwgc3Rh bmRhcmQKIAkJCSAqLwotCQkJb2xkX2NoZWNrX29rID0gKG5ld19wYXRodHlwZSA9PSBvbGRf cGF0aHR5cGUgJiYKLQkJCQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCi0J CQkJCQkJKCFJc1BvbHltb3JwaGljVHlwZShwZmVxb3BfcmlnaHQpIHx8Ci0JCQkJCQkJIG5l d19ma3R5cGUgPT0gb2xkX2ZrdHlwZSkpOworCQkJaWYgKGZrY29uc3RyYWludC0+ZmtfdXBk X2FjdGlvbiA9PSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTCB8fAorCQkJCWZrY29uc3RyYWlu dC0+ZmtfdXBkX2FjdGlvbiA9PSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVCB8fAorCQkJ CWZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbiA9PSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FE RSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCQkJIGVycm1zZygiaW52YWxpZCAlcyBhY3Rpb24gZm9yIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgY29udGFpbmluZyBnZW5lcmF0ZWQgY29sdW1uIiwKKwkJCQkJCQkJ Ik9OIFVQREFURSIpKSk7CisJCQlpZiAoZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uID09 IEZLQ09OU1RSX0FDVElPTl9TRVROVUxMIHx8CisJCQkJZmtjb25zdHJhaW50LT5ma19kZWxf YWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUKQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJy bXNnKCJpbnZhbGlkICVzIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBjb250 YWluaW5nIGdlbmVyYXRlZCBjb2x1bW4iLAorCQkJCQkJCQkiT04gREVMRVRFIikpKTsKIAkJ fQotCi0JCXBmZXFvcGVyYXRvcnNbaV0gPSBwZmVxb3A7Ci0JCXBwZXFvcGVyYXRvcnNbaV0g PSBwcGVxb3A7Ci0JCWZmZXFvcGVyYXRvcnNbaV0gPSBmZmVxb3A7CiAJfQogCisJLyoKKwkg KiBGb3IgRktzIHdpdGggUEVSSU9EIHdlIG5lZWQgYW4gb3BlcmF0b3IgYW5kIGFnZ3JlZ2F0 ZSBmdW5jdGlvbgorCSAqIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHJlZmVyZW5jaW5nIHJvdydz IHJhbmdlIGlzIGNvbnRhaW5lZAorCSAqIGJ5IHRoZSBhZ2dyZWdhdGVkIHJhbmdlcyBvZiB0 aGUgcmVmZXJlbmNlZCByb3cocykuCisJICogRm9yIHJhbmdldHlwZXMgdGhpcyBpcyBmay5w ZXJpb2RhdHQgPEAgcmFuZ2VfYWdnKHBrLnBlcmlvZGF0dCkuCisJICogRktzIHdpbGwgbG9v ayB0aGVzZSB1cCBhdCAicnVudGltZSIsIGJ1dCB3ZSBzaG91bGQgbWFrZSBzdXJlCisJICog dGhlIGxvb2t1cCB3b3JrcyBoZXJlLgorCSAqLworCWlmIChpc190ZW1wb3JhbCkKKwkJRmlu ZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhvcGNsYXNzZXNbbnVtcGtzIC0gMV0sICZwZXJpb2Rv cGVyb2lkLCAmcGVyaW9kcHJvY29pZCk7CisKIAkvKgogCSAqIENyZWF0ZSBhbGwgdGhlIGNv bnN0cmFpbnQgYW5kIHRyaWdnZXIgb2JqZWN0cywgcmVjdXJzaW5nIHRvIHBhcnRpdGlvbnMK IAkgKiBhcyBuZWNlc3NhcnkuICBGaXJzdCBoYW5kbGUgdGhlIHJlZmVyZW5jZWQgc2lkZS4K QEAgLTEwMDM4LDcgKzk5NDYsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3Qg Kip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJ CQkJIG51bWZrZGVsc2V0Y29scywKIAkJCQkJCQkJCSBma2RlbHNldGNvbHMsCiAJCQkJCQkJ CQkgb2xkX2NoZWNrX29rLAotCQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQpOwor CQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgaXNfdGVtcG9y YWwpOwogCiAJLyogTm93IGhhbmRsZSB0aGUgcmVmZXJlbmNpbmcgc2lkZS4gKi8KIAlhZGRG a1JlY3Vyc2VSZWZlcmVuY2luZyh3cXVldWUsIGZrY29uc3RyYWludCwgcmVsLCBwa3JlbCwK QEAgLTEwMDU0LDcgKzk5NjMsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3Qg Kip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJ CWZrZGVsc2V0Y29scywKIAkJCQkJCQlvbGRfY2hlY2tfb2ssCiAJCQkJCQkJbG9ja21vZGUs Ci0JCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJSW52YWxpZE9pZCwg SW52YWxpZE9pZCwKKwkJCQkJCQlpc190ZW1wb3JhbCk7CiAKIAkvKgogCSAqIERvbmUuICBD bG9zZSBwayB0YWJsZSwgYnV0IGtlZXAgbG9jayB1bnRpbCB3ZSd2ZSBjb21taXR0ZWQuCkBA IC0xMDEzOSw3ICsxMDA0OSw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndx dWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCSAg IE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkgICBpbnQg bnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkgICBib29sIG9s ZF9jaGVja19vaywKLQkJCQkJICAgT2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRV cGRUcmlnZ2VyKQorCQkJCQkgICBPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVw ZFRyaWdnZXIsCisJCQkJCSAgIGJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2JqZWN0QWRkcmVz cyBhZGRyZXNzOwogCU9pZAkJCWNvbnN0ck9pZDsKQEAgLTEwMjI1LDcgKzEwMTM2LDcgQEAg YWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2Nv bnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2NhbCwJLyogaXNs b2NhbCAqLwogCQkJCQkJCQkJICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8KIAkJCQkJ CQkJCSAgY29ubm9pbmhlcml0LCAvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJCSAgZmFs c2UsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLworCQkJCQkJCQkJICBpc190ZW1wb3JhbCwJ LyogY29uV2l0aG91dE92ZXJsYXBzICovCiAJCQkJCQkJCQkgIGZhbHNlKTsJLyogaXNfaW50 ZXJuYWwgKi8KIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgQ29uc3RyYWludFJlbGF0 aW9uSWQsIGNvbnN0ck9pZCk7CkBAIC0xMDMwMSw3ICsxMDIxMiw4IEBAIGFkZEZrUmVjdXJz ZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBS ZWxhdGlvbiByZWwsCiAJCQkJCQkJCSAgIHBmZXFvcGVyYXRvcnMsIHBwZXFvcGVyYXRvcnMs IGZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCSAgIG51bWZrZGVsc2V0Y29scywgZmtkZWxzZXRj b2xzLAogCQkJCQkJCQkgICBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCSAgIGRlbGV0ZVRyaWdn ZXJPaWQsIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lk LCB1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkgICBpc190ZW1wb3JhbCk7CiAKIAkJCS8q IERvbmUgLS0gY2xlYW4gdXAgKGJ1dCBrZWVwIHRoZSBsb2NrKSAqLwogCQkJdGFibGVfY2xv c2UocGFydFJlbCwgTm9Mb2NrKTsKQEAgLTEwMzU5LDcgKzEwMjcxLDggQEAgYWRkRmtSZWN1 cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LCBSZWxhdGlvbiByZWwsCiAJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9w ZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJaW50IG51bWZrZGVsc2V0Y29s cywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLCBMT0NL TU9ERSBsb2NrbW9kZSwKLQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50 VXBkVHJpZ2dlcikKKwkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBk VHJpZ2dlciwKKwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2lkCQkJaW5zZXJ0VHJp Z2dlck9pZCwKIAkJCQl1cGRhdGVUcmlnZ2VyT2lkOwpAQCAtMTA0MDcsNiArMTAzMjAsNyBA QCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpm a2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBSZWxh dGlvbkdldFJlbGlkKHBrcmVsKTsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBpbmRleE9pZDsK IAkJCW5ld2Nvbi0+Y29uaWQgPSBwYXJlbnRDb25zdHI7CisJCQluZXdjb24tPmNvbndpdGhw ZXJpb2QgPSBma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBOVUxMOwogCQkJbmV3Y29uLT5x dWFsID0gKE5vZGUgKikgZmtjb25zdHJhaW50OwogCiAJCQl0YWItPmNvbnN0cmFpbnRzID0g bGFwcGVuZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdjb24pOwpAQCAtMTA1MjQsNyArMTA0Mzgs NyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50 ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJ CQkJCQkgIDEsCiAJCQkJCQkJCQkgIGZhbHNlLAotCQkJCQkJCQkJICBmYWxzZSwJLyogY29u V2l0aG91dE92ZXJsYXBzICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25XaXRo b3V0T3ZlcmxhcHMgKi8KIAkJCQkJCQkJCSAgZmFsc2UpOwogCiAJCQkvKgpAQCAtMTA1NTUs NyArMTA0NjksOCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBD b25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCW9sZF9j aGVja19vaywKIAkJCQkJCQkJCWxvY2ttb2RlLAogCQkJCQkJCQkJaW5zZXJ0VHJpZ2dlck9p ZCwKLQkJCQkJCQkJCXVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkJdXBkYXRlVHJpZ2dl ck9pZCwKKwkJCQkJCQkJCWlzX3RlbXBvcmFsKTsKIAogCQkJdGFibGVfY2xvc2UocGFydGl0 aW9uLCBOb0xvY2spOwogCQl9CkBAIC0xMDc5MSw3ICsxMDcwNiw4IEBAIENsb25lRmtSZWZl cmVuY2VkKFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9uUmVsKQogCQkJ CQkJCSAgIGNvbmZkZWxzZXRjb2xzLAogCQkJCQkJCSAgIHRydWUsCiAJCQkJCQkJICAgZGVs ZXRlVHJpZ2dlck9pZCwKLQkJCQkJCQkgICB1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkg ICB1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCSAgIGNvbnN0ckZvcm0tPmNvbndpdGhvdXRv dmVybGFwcyk7CiAKIAkJdGFibGVfY2xvc2UoZmtSZWwsIE5vTG9jayk7CiAJCVJlbGVhc2VT eXNDYWNoZSh0dXBsZSk7CkBAIC0xMDg4NCw2ICsxMDgwMCw3IEBAIENsb25lRmtSZWZlcmVu Y2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRS ZWwpCiAJCUxpc3RDZWxsICAgKmxjOwogCQlPaWQJCQlpbnNlcnRUcmlnZ2VyT2lkLAogCQkJ CQl1cGRhdGVUcmlnZ2VyT2lkOworCQlib29sCQlpc190ZW1wb3JhbDsKIAogCQl0dXBsZSA9 IFNlYXJjaFN5c0NhY2hlMShDT05TVFJPSUQsIE9iamVjdElkR2V0RGF0dW0ocGFyZW50Q29u c3RyT2lkKSk7CiAJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCkBAIC0xMDk5OSw2 ICsxMDkxNiw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlv biBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQlma2NvbnN0cmFpbnQtPmNvbm5h bWUgPSBwc3RyZHVwKE5hbWVTdHIoY29uc3RyRm9ybS0+Y29ubmFtZSkpOwogCiAJCWluZGV4 T2lkID0gY29uc3RyRm9ybS0+Y29uaW5kaWQ7CisJCWlzX3RlbXBvcmFsID0gY29uc3RyRm9y bS0+Y29ud2l0aG91dG92ZXJsYXBzOwogCQljb25zdHJPaWQgPQogCQkJQ3JlYXRlQ29uc3Ry YWludEVudHJ5KGZrY29uc3RyYWludC0+Y29ubmFtZSwKIAkJCQkJCQkJICBjb25zdHJGb3Jt LT5jb25uYW1lc3BhY2UsCkBAIC0xMTAzMCw3ICsxMDk0OCw3IEBAIENsb25lRmtSZWZlcmVu Y2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRS ZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkvKiBp bmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJ CQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJsYXBzICovCisJCQkJCQkJCSAgaXNfdGVt cG9yYWwsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLwogCQkJCQkJCQkgIHRydWUpOwogCiAJ CS8qIFNldCB1cCBwYXJ0aXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGUgbmV3IGNvbnN0cmFp bnQgKi8KQEAgLTExMDY0LDEzICsxMDk4MiwzMDAgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExp c3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJ CQkJCQkJZmFsc2UsCS8qIG5vIG9sZCBjaGVjayBleGlzdHMgKi8KIAkJCQkJCQkJQWNjZXNz RXhjbHVzaXZlTG9jaywKIAkJCQkJCQkJaW5zZXJ0VHJpZ2dlck9pZCwKLQkJCQkJCQkJdXBk YXRlVHJpZ2dlck9pZCk7CisJCQkJCQkJCXVwZGF0ZVRyaWdnZXJPaWQsCisJCQkJCQkJCWlz X3RlbXBvcmFsKTsKIAkJdGFibGVfY2xvc2UocGtyZWwsIE5vTG9jayk7CiAJfQogCiAJdGFi bGVfY2xvc2UodHJpZ3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKK3N0YXRpYyB2b2lk CitGaW5kRktDb21wYXJpc29uT3BlcmF0b3JzKENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwK KwkJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQlpbnQgaSwKKwkJaW50MTYgKmZrYXR0bnVt LAorCQlib29sICpvbGRfY2hlY2tfb2ssCisJCUxpc3RDZWxsICoqb2xkX3BmZXFvcF9pdGVt LAorCQlPaWQgcGt0eXBlLCBPaWQgZmt0eXBlLCBPaWQgb3BjbGFzcywKKwkJYm9vbCBpc190 ZW1wb3JhbCwgYm9vbCBmb3Jfb3ZlcmxhcHMsCisJCU9pZCAqcGZlcW9wT3V0LCBPaWQgKnBw ZXFvcE91dCwgT2lkICpmZmVxb3BPdXQpCit7CisJT2lkCQkJZmt0eXBlZDsKKwlIZWFwVHVw bGUJY2xhX2h0OworCUZvcm1fcGdfb3BjbGFzcyBjbGFfdHVwOworCU9pZAkJCWFtaWQ7CisJ T2lkCQkJb3BmYW1pbHk7CisJT2lkCQkJb3BjaW50eXBlOworCU9pZAkJCXBmZXFvcDsKKwlP aWQJCQlwcGVxb3A7CisJT2lkCQkJZmZlcW9wOworCVN0cmF0ZWd5TnVtYmVyCXJ0c3RyYXRl Z3k7CisJaW50MTYJCWVxc3RyYXRlZ3k7CisJT2lkCQkJcGZlcW9wX3JpZ2h0OworCWNoYXIJ ICAgKnN0cmF0bmFtZTsKKworCS8qIFdlIG5lZWQgc2V2ZXJhbCBmaWVsZHMgb3V0IG9mIHRo ZSBwZ19vcGNsYXNzIGVudHJ5ICovCisJY2xhX2h0ID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9J RCwgT2JqZWN0SWRHZXREYXR1bShvcGNsYXNzKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGNsYV9odCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGNs YXNzICV1Iiwgb3BjbGFzcyk7CisJY2xhX3R1cCA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNU UlVDVChjbGFfaHQpOworCWFtaWQgPSBjbGFfdHVwLT5vcGNtZXRob2Q7CisJb3BmYW1pbHkg PSBjbGFfdHVwLT5vcGNmYW1pbHk7CisJb3BjaW50eXBlID0gY2xhX3R1cC0+b3BjaW50eXBl OworCVJlbGVhc2VTeXNDYWNoZShjbGFfaHQpOworCisJaWYgKGlzX3RlbXBvcmFsKQorCXsK KwkJaWYgKGFtaWQgIT0gR0lTVF9BTV9PSUQpCisJCQllbG9nKEVSUk9SLCAib25seSBHaVNU IGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIik7CisJ CS8qCisJCSAqIEZvciB0aGUgbm9uLW92ZXJsYXBzIHBhcnRzLCB3ZSB3YW50IGVpdGhlciBS VEVxdWFsU3RyYXRlZ3lOdW1iZXIgKHdpdGhvdXQgYnRyZWVfZ2lzdCkKKwkJICogb3IgQlRF cXVhbFN0cmF0ZWd5TnVtYmVyICh3aXRoIGJ0cmVlX2dpc3QpLiBXZSdsbCB0cnkgdGhlIGxh dHRlciBmaXJzdC4KKwkJICovCisJCWlmIChmb3Jfb3ZlcmxhcHMpCisJCXsKKwkJCXN0cmF0 bmFtZSA9ICJvdmVybGFwcyI7CisJCQlydHN0cmF0ZWd5ID0gUlRPdmVybGFwU3RyYXRlZ3lO dW1iZXI7CisJCX0KKwkJZWxzZQorCQl7CisJCQlzdHJhdG5hbWUgPSAiZXF1YWxpdHkiOwor CQkJcnRzdHJhdGVneSA9IFJURXF1YWxTdHJhdGVneU51bWJlcjsKKwkJfQorCQllcXN0cmF0 ZWd5ID0gZ2lzdFRyYW5zbGF0ZVN0cmF0bnVtKG9wY2xhc3MsIHJ0c3RyYXRlZ3kpOworCQlp ZiAoIVN0cmF0ZWd5SXNWYWxpZChlcXN0cmF0ZWd5KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2co Im5vICVzIG9wZXJhdG9yIGZvdW5kIGZvciBmb3JlaWduIGtleSIsIHN0cmF0bmFtZSksCisJ CQkJCSBlcnJkZXRhaWwoIkNvdWxkIG5vdCB0cmFuc2xhdGUgc3RyYXRlZ3kgbnVtYmVyICVk IGZvciBvcGNsYXNzICVkLiIsCisJCQkJCQkgcnRzdHJhdGVneSwgb3BjbGFzcyksCisJCQkJ CSBlcnJoaW50KCJEZWZpbmUgYSBzdHJhdG51bSBzdXBwb3J0IGZ1bmN0aW9uIGZvciB5b3Vy IEdpU1Qgb3BjbGFzcy4iKSkpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBDaGVjayBp dCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBmYWlsIHNpbmNlIG5vIG90 aGVyCisJCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzLiAgSWYgd2UgZXZl ciBkaWQgaGF2ZSBvdGhlciB0eXBlcworCQkgKiBvZiB1bmlxdWUgaW5kZXhlcywgd2UnZCBu ZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgorCQkgKiBzdHJhdGVneSBu dW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBpbnNpc3QgdGhhdAor CQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51bWJlciBmb3IgZXF1YWxp dHk/KQorCQkgKi8KKwkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQorCQkJZWxvZyhFUlJP UiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgZm9yZWlnbiBrZXlz Iik7CisJCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisJfQorCisJLyoK KwkgKiBUaGVyZSBoYWQgYmV0dGVyIGJlIGEgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvciBm b3IgdGhlIGluZGV4LgorCSAqIFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBjb21wYXJpc29u cy4KKwkgKi8KKwlwcGVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNp bnR5cGUsIG9wY2ludHlwZSwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCisJaWYgKCFPaWRJ c1ZhbGlkKHBwZXFvcCkpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIG9wZXJhdG9yICVkKCV1 LCV1KSBpbiBvcGZhbWlseSAldSIsCisJCQkgZXFzdHJhdGVneSwgb3BjaW50eXBlLCBvcGNp bnR5cGUsIG9wZmFtaWx5KTsKKworCS8qCisJICogQXJlIHRoZXJlIGVxdWFsaXR5IG9wZXJh dG9ycyB0aGF0IHRha2UgZXhhY3RseSB0aGUgRksgdHlwZT8gQXNzdW1lCisJICogd2Ugc2hv dWxkIGxvb2sgdGhyb3VnaCBhbnkgZG9tYWluIGhlcmUuCisJICovCisJZmt0eXBlZCA9IGdl dEJhc2VUeXBlKGZrdHlwZSk7CisKKwlwZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9w ZmFtaWx5LCBvcGNpbnR5cGUsIGZrdHlwZWQsCisJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKKwlp ZiAoT2lkSXNWYWxpZChwZmVxb3ApKQorCXsKKwkJcGZlcW9wX3JpZ2h0ID0gZmt0eXBlZDsK KwkJZmZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgZmt0eXBlZCwgZmt0 eXBlZCwKKwkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKKwl9CisJZWxzZQorCXsKKwkJLyoga2Vl cCBjb21waWxlciBxdWlldCAqLworCQlwZmVxb3BfcmlnaHQgPSBJbnZhbGlkT2lkOworCQlm ZmVxb3AgPSBJbnZhbGlkT2lkOworCX0KKworCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAm JiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQorCXsKKwkJLyoKKwkJICogT3RoZXJ3aXNlLCBsb29r IGZvciBhbiBpbXBsaWNpdCBjYXN0IGZyb20gdGhlIEZLIHR5cGUgdG8gdGhlCisJCSAqIG9w Y2ludHlwZSwgYW5kIGlmIGZvdW5kLCB1c2UgdGhlIHByaW1hcnkgZXF1YWxpdHkgb3BlcmF0 b3IuCisJCSAqIFRoaXMgaXMgYSBiaXQgdHJpY2t5IGJlY2F1c2Ugb3BjaW50eXBlIG1pZ2h0 IGJlIGEgcG9seW1vcnBoaWMKKwkJICogdHlwZSBzdWNoIGFzIEFOWUFSUkFZIG9yIEFOWUVO VU07IHNvIHdoYXQgd2UgaGF2ZSB0byB0ZXN0IGlzCisJCSAqIHdoZXRoZXIgdGhlIHR3byBh Y3R1YWwgY29sdW1uIHR5cGVzIGNhbiBiZSBjb25jdXJyZW50bHkgY2FzdCB0bworCQkgKiB0 aGF0IHR5cGUuICAoT3RoZXJ3aXNlLCB3ZSdkIGZhaWwgdG8gcmVqZWN0IGNvbWJpbmF0aW9u cyBzdWNoCisJCSAqIGFzIGludFtdIGFuZCBwb2ludFtdLikKKwkJICovCisJCU9pZAkJCWlu cHV0X3R5cGVpZHNbMl07CisJCU9pZAkJCXRhcmdldF90eXBlaWRzWzJdOworCisJCWlucHV0 X3R5cGVpZHNbMF0gPSBwa3R5cGU7CisJCWlucHV0X3R5cGVpZHNbMV0gPSBma3R5cGU7CisJ CXRhcmdldF90eXBlaWRzWzBdID0gb3BjaW50eXBlOworCQl0YXJnZXRfdHlwZWlkc1sxXSA9 IG9wY2ludHlwZTsKKwkJaWYgKGNhbl9jb2VyY2VfdHlwZSgyLCBpbnB1dF90eXBlaWRzLCB0 YXJnZXRfdHlwZWlkcywKKwkJCQkJCQlDT0VSQ0lPTl9JTVBMSUNJVCkpCisJCXsKKwkJCXBm ZXFvcCA9IGZmZXFvcCA9IHBwZXFvcDsKKwkJCXBmZXFvcF9yaWdodCA9IG9wY2ludHlwZTsK KwkJfQorCX0KKworCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZm ZXFvcCkpKQorCXsKKwkJY2hhciAqZmthdHRyX25hbWU7CisJCWNoYXIgKnBrYXR0cl9uYW1l OworCisJCWlmIChmb3Jfb3ZlcmxhcHMpCisJCXsKKwkJCWZrYXR0cl9uYW1lID0gc3RyVmFs KGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKTsKKwkJCXBrYXR0cl9uYW1lID0gc3RyVmFsKGZr Y29uc3RyYWludC0+cGtfcGVyaW9kKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWZrYXR0cl9u YW1lID0gc3RyVmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+ZmtfYXR0cnMsIGkpKTsKKwkJ CXBrYXR0cl9uYW1lID0gc3RyVmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+cGtfYXR0cnMs IGkpKTsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3RyYWlu dCBcIiVzXCIgY2Fubm90IGJlIGltcGxlbWVudGVkIiwKKwkJCQkJCWZrY29uc3RyYWludC0+ Y29ubmFtZSksCisJCQkJIGVycmRldGFpbCgiS2V5IGNvbHVtbnMgXCIlc1wiIGFuZCBcIiVz XCIgIgorCQkJCQkJICAgImFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFuZCAlcy4i LAorCQkJCQkJICAgZmthdHRyX25hbWUsCisJCQkJCQkgICBwa2F0dHJfbmFtZSwKKwkJCQkJ CSAgIGZvcm1hdF90eXBlX2JlKGZrdHlwZSksCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShw a3R5cGUpKSkpOworCX0KKworCWlmICgqb2xkX2NoZWNrX29rKQorCXsKKwkJLyoKKwkJICog V2hlbiBhIHBmZXFvcCBjaGFuZ2VzLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgV2Ug Y291bGQKKwkJICogcGVybWl0IGludHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFk ZHMgc3VidGxlIGNvbXBsZXhpdHkKKwkJICogd2l0aG91dCBhbnkgY29uY3JldGUgYmVuZWZp dCBmb3IgY29yZSB0eXBlcy4gIFdlIG5lZWQgbm90CisJCSAqIGFzc2VzcyBwcGVxb3Agb3Ig ZmZlcW9wLCB3aGljaCBSSV9Jbml0aWFsX0NoZWNrKCkgZG9lcyBub3QgdXNlLgorCQkgKi8K KwkJKm9sZF9jaGVja19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29pZCgqb2xkX3BmZXFvcF9p dGVtKSk7CisJCSpvbGRfcGZlcW9wX2l0ZW0gPSBsbmV4dChma2NvbnN0cmFpbnQtPm9sZF9j b25wZmVxb3AsCisJCQkJCQkJCSpvbGRfcGZlcW9wX2l0ZW0pOworCX0KKwlpZiAoKm9sZF9j aGVja19vaykKKwl7CisJCU9pZAkJCW9sZF9ma3R5cGU7CisJCU9pZAkJCW5ld19ma3R5cGU7 CisJCUNvZXJjaW9uUGF0aFR5cGUgb2xkX3BhdGh0eXBlOworCQlDb2VyY2lvblBhdGhUeXBl IG5ld19wYXRodHlwZTsKKwkJT2lkCQkJb2xkX2Nhc3RmdW5jOworCQlPaWQJCQluZXdfY2Fz dGZ1bmM7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHRhYi0+ b2xkRGVzYywKKwkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAxKTsKKworCQkvKgorCQkg KiBJZGVudGlmeSBjb2VyY2lvbiBwYXRod2F5cyBmcm9tIGVhY2ggb2YgdGhlIG9sZCBhbmQg bmV3IEZLLXNpZGUKKwkJICogY29sdW1uIHR5cGVzIHRvIHRoZSByaWdodCAoZm9yZWlnbikg b3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCisJCSAqIFdlIG1heSBhc3N1bWUgdGhhdCBw Z19jb25zdHJhaW50LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCisJCSAqLworCQlvbGRfZmt0 eXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJCW5ld19ma3R5cGUgPSBma3R5cGU7CisJCW9sZF9w YXRodHlwZSA9IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG9sZF9ma3R5cGUsCisJCQkJ CQkJCQkmb2xkX2Nhc3RmdW5jKTsKKwkJbmV3X3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBm ZXFvcF9yaWdodCwgbmV3X2ZrdHlwZSwKKwkJCQkJCQkJCSZuZXdfY2FzdGZ1bmMpOworCisJ CS8qCisJCSAqIFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3QgZnJvbSB0aGUgRksgY29sdW1u IHRvIGl0cyBwZmVxb3AKKwkJICogb3BlcmFuZCwgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWlu dC4gIEZvciB0aGlzIGV2YWx1YXRpb24sIGEKKwkJICogYmluYXJ5IGNvZXJjaW9uIGNhc3Qg aXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxlCisJCSAqIHR5cGUgaW1w bGVtZW50b3JzIHNob3VsZCBkZXNpZ24gaW1wbGljaXQgY2FzdHMgd2l0aCBhbiBleWUKKwkJ ICogdG93YXJkIGNvbnNpc3RlbmN5IG9mIG9wZXJhdGlvbnMgbGlrZSBlcXVhbGl0eSwgd2Ug Y2Fubm90CisJCSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZlIGRvbmUgc28uCisJCSAq CisJCSAqIEEgZnVuY3Rpb24gd2l0aCBhIHBvbHltb3JwaGljIGFyZ3VtZW50IGNvdWxkIGNo YW5nZSBiZWhhdmlvcgorCQkgKiBhcmJpdHJhcmlseSBpbiByZXNwb25zZSB0byBnZXRfZm5f ZXhwcl9hcmd0eXBlKCkuICBUaGVyZWZvcmUsCisJCSAqIHdoZW4gdGhlIGNhc3QgZGVzdGlu YXRpb24gaXMgcG9seW1vcnBoaWMsIHdlIG9ubHkgYXZvaWQKKwkJICogcmV2YWxpZGF0aW9u IGlmIHRoZSBpbnB1dCB0eXBlIGhhcyBub3QgY2hhbmdlZCBhdCBhbGwuICBHaXZlbgorCQkg KiBqdXN0IHRoZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMg cmVxdWlyZW1lbnQKKwkJICogcHJldmVudHMgbm8gd291bGQtYmUgb3B0aW1pemF0aW9ucy4K KwkJICoKKwkJICogSWYgdGhlIGNhc3QgY29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBh IGRvbWFpbiB0aGVyZW9uLCB0aGVuCisJCSAqIHRoYXQgZG9tYWluIHR5cGUgbXVzdCBiZSB0 aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXguCisJCSAqIE5lY2Vzc2FyaWx5LCB0 aGUgcHJpbWFyeSBrZXkgY29sdW1uIG11c3QgdGhlbiBiZSBvZiB0aGUgZG9tYWluCisJCSAq IHR5cGUuICBTaW5jZSB0aGUgY29uc3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxs IHZhbHVlcyBvbgorCQkgKiB0aGUgZm9yZWlnbiBzaWRlIG5lY2Vzc2FyaWx5IGV4aXN0IG9u IHRoZSBwcmltYXJ5IHNpZGUgYW5kIGluCisJCSAqIHR1cm4gY29uZm9ybSB0byB0aGUgZG9t YWluLiAgQ29uc2VxdWVudGx5LCB3ZSBuZWVkIG5vdCB0cmVhdAorCQkgKiBkb21haW5zIHNw ZWNpYWxseSBoZXJlLgorCQkgKgorCQkgKiBTaW5jZSB3ZSByZXF1aXJlIHRoYXQgYWxsIGNv bGxhdGlvbnMgc2hhcmUgdGhlIHNhbWUgbm90aW9uIG9mCisJCSAqIGVxdWFsaXR5ICh3aGlj aCB0aGV5IGRvLCBiZWNhdXNlIHRleHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UKKwkJICogZXF1 YWxpdHkpLCB3ZSBkb24ndCBjb21wYXJlIGNvbGxhdGlvbiBoZXJlLgorCQkgKgorCQkgKiBX ZSBuZWVkIG5vdCBkaXJlY3RseSBjb25zaWRlciB0aGUgUEsgdHlwZS4gIEl0J3MgbmVjZXNz YXJpbHkKKwkJICogYmluYXJ5IGNvZXJjaWJsZSB0byB0aGUgb3BjaW50eXBlIG9mIHRoZSB1 bmlxdWUgaW5kZXggY29sdW1uLAorCQkgKiBhbmQgcmlfdHJpZ2dlcnMuYyB3aWxsIG9ubHkg ZGVhbCB3aXRoIFBLIGRhdHVtcyBpbiB0ZXJtcyBvZgorCQkgKiB0aGF0IG9wY2ludHlwZS4g IENoYW5naW5nIHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4KKwkJICovCisJ CSpvbGRfY2hlY2tfb2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9wYXRodHlwZSAmJgorCQkJ CQkJbmV3X2Nhc3RmdW5jID09IG9sZF9jYXN0ZnVuYyAmJgorCQkJCQkJKCFJc1BvbHltb3Jw aGljVHlwZShwZmVxb3BfcmlnaHQpIHx8CisJCQkJCQkgbmV3X2ZrdHlwZSA9PSBvbGRfZmt0 eXBlKSk7CisKKwl9CisKKwkqcGZlcW9wT3V0ID0gcGZlcW9wOworCSpwcGVxb3BPdXQgPSBw cGVxb3A7CisJKmZmZXFvcE91dCA9IGZmZXFvcDsKK30KKworLyoKKyAqIEZpbmRGa1Blcmlv ZE9wZXJzQW5kUHJvY3MgLQorICoKKyAqIExvb2tzIHVwIHRoZSBvcGVyIGFuZCBwcm9jIG9p ZHMgZm9yIGNvbmZrcGVyaW9kb3Blcm9pZHMgYW5kIGNvbmZrcGVyaW9kcHJvY29pZHMuCisg KiBUaGVzZSBhcmUgdXNlZCBieSBmb3JlaWduIGtleXMgd2l0aCBhIFBFUklPRCBlbGVtZW50 LgorICovCit2b2lkCitGaW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKE9pZCBvcGNsYXNzLAor CQkJCQkJICBPaWQgKnBlcmlvZG9wZXJvaWQsCisJCQkJCQkgIE9pZCAqcGVyaW9kcHJvY29p ZCkKK3sKKwlPaWQJb3BmYW1pbHk7CisJT2lkCW9wY2ludHlwZTsKKwlPaWQJYWdncmV0dHlw ZTsKKwlPaWQJZnVuY2lkID0gSW52YWxpZE9pZDsKKwlTdHJhdGVneU51bWJlciBzdHJhdCA9 IFJUQ29udGFpbmVkQnlTdHJhdGVneU51bWJlcjsKKworCS8qIEZpcnN0IGxvb2sgdXAgdGhl IHN1cHBvcnQgcHJvYyBmb3IgYWdncmVnYXRpb24uICovCisJaWYgKGdldF9vcGNsYXNzX29w ZmFtaWx5X2FuZF9pbnB1dF90eXBlKG9wY2xhc3MsICZvcGZhbWlseSwgJm9wY2ludHlwZSkp CisJCWZ1bmNpZCA9IGdldF9vcGZhbWlseV9wcm9jKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9w Y2ludHlwZSwgR0lTVF9SRUZFUkVOQ0VEX0FHR19QUk9DKTsKKworCWlmICghT2lkSXNWYWxp ZChmdW5jaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5E RUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygibm8gc3VwcG9ydCBmdW5jICV1IGZvdW5k IGZvciBGT1JFSUdOIEtFWSBjb25zdHJhaW50IiwgR0lTVF9SRUZFUkVOQ0VEX0FHR19QUk9D KSwKKwkJCQkgZXJyaGludCgiRGVmaW5lIGEgcmVmZXJlbmNlZGFnZyBzdXBwb3J0IGZ1bmN0 aW9uIGZvciB5b3VyIEdpU1Qgb3BjbGFzcy4iKSkpOworCisJKnBlcmlvZHByb2NvaWQgPSBm dW5jaWQ7CisKKwkvKiBMb29rIHVwIHRoZSBmdW5jdGlvbidzIHJldHR5cGUuICovCisJYWdn cmV0dHlwZSA9IGdldF9mdW5jX3JldHR5cGUoZnVuY2lkKTsKKworCS8qCisJICogTm93IGxv b2sgdXAgdGhlIENvbnRhaW5lZEJ5IG9wZXJhdG9yLgorCSAqIEl0cyBsZWZ0IGFyZyBtdXN0 IGJlIHRoZSB0eXBlIG9mIHRoZSBjb2x1bW4gKG9yIHJhdGhlciBvZiB0aGUgb3BjbGFzcyku CisJICogSXRzIHJpZ2h0IGFyZyBtdXN0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUg c3VwcG9ydCBwcm9jLgorCSAqLworCUdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5 KG9wY2xhc3MsCisJCQkJCQkJCQkgYWdncmV0dHlwZSwKKwkJCQkJCQkJCSAiY29udGFpbmVk IGJ5IiwKKwkJCQkJCQkJCSAiRk9SRUlHTiBLRVkgY29uc3RyYWludCIsCisJCQkJCQkJCQkg cGVyaW9kb3Blcm9pZCwKKwkJCQkJCQkJCSAmc3RyYXQpOworfQorCiAvKgogICogV2hlbiB0 aGUgcGFyZW50IG9mIGEgcGFydGl0aW9uIHJlY2VpdmVzIFt0aGUgcmVmZXJlbmNpbmcgc2lk ZSBvZl0gYSBmb3JlaWduCiAgKiBrZXksIHdlIG11c3QgcHJvcGFnYXRlIHRoYXQgZm9yZWln biBrZXkgdG8gdGhlIHBhcnRpdGlvbi4gIEhvd2V2ZXIsIHRoZQpAQCAtMTE1NjgsNyArMTE3 NzMsMTEgQEAgQVRFeGVjQWx0ZXJDb25zdHJSZWN1cnNlKENvbnN0cmFpbnQgKmNtZGNvbiwg UmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwKIAkJCWlmICh0Z2Zvcm0tPnRnZm9p ZCAhPSBGX1JJX0ZLRVlfTk9BQ1RJT05fREVMICYmCiAJCQkJdGdmb3JtLT50Z2ZvaWQgIT0g Rl9SSV9GS0VZX05PQUNUSU9OX1VQRCAmJgogCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklf RktFWV9DSEVDS19JTlMgJiYKLQkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfQ0hF Q0tfVVBEKQorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9DSEVDS19VUEQgJiYK KwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTCAmJgorCQkJ CXRnZm9ybS0+dGdmb2lkICE9IEZfVFJJX0ZLRVlfTk9BQ1RJT05fVVBEICYmCisJCQkJdGdm b3JtLT50Z2ZvaWQgIT0gRl9UUklfRktFWV9DSEVDS19JTlMgJiYKKwkJCQl0Z2Zvcm0tPnRn Zm9pZCAhPSBGX1RSSV9GS0VZX0NIRUNLX1VQRCkKIAkJCQljb250aW51ZTsKIAogCQkJdGdD b3B5VHVwbGUgPSBoZWFwX2NvcHl0dXBsZSh0Z3R1cGxlKTsKQEAgLTExODE1LDcgKzEyMDI0 LDYgQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsIFJlbGF0aW9u IHJlbCwgY2hhciAqY29uc3RyTmFtZSwKIAlyZXR1cm4gYWRkcmVzczsKIH0KIAotCiAvKgog ICogdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QgLSB0cmFuc2Zvcm0gbGlzdCBvZiBjb2x1bW4g bmFtZXMKICAqCkBAIC0xMTg4MSw3ICsxMjA4OSw5IEBAIHRyYW5zZm9ybUNvbHVtbk5hbWVM aXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKIHN0YXRpYyBpbnQKIHRyYW5zZm9ybUZr ZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCQkJCQkJ ICAgTGlzdCAqKmF0dG5hbWVsaXN0LAorCQkJCQkJICAgTm9kZSAqKnBrX3BlcmlvZCwKIAkJ CQkJCSAgIGludDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcywKKwkJCQkJCSAgIGludDE2 ICpwZXJpb2RhdHRudW1zLCBPaWQgKnBlcmlvZGF0dHR5cGlkcywKIAkJCQkJCSAgIE9pZCAq b3BjbGFzc2VzKQogewogCUxpc3QJICAgKmluZGV4b2lkbGlzdDsKQEAgLTExOTQ2LDM2ICsx MjE1Niw1NSBAQCB0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxhdGlvbiBwa3JlbCwg T2lkICppbmRleE9pZCwKIAogCS8qCiAJICogTm93IGJ1aWxkIHRoZSBsaXN0IG9mIFBLIGF0 dHJpYnV0ZXMgZnJvbSB0aGUgaW5ka2V5IGRlZmluaXRpb24gKHdlCi0JICogYXNzdW1lIGEg cHJpbWFyeSBrZXkgY2Fubm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRzKQorCSAqIGFz c3VtZSBhIHByaW1hcnkga2V5IGNhbm5vdCBoYXZlIGV4cHJlc3Npb25hbCBlbGVtZW50cywg dW5sZXNzIGl0CisJICogaGFzIGEgUEVSSU9EKQogCSAqLwogCSphdHRuYW1lbGlzdCA9IE5J TDsKIAlmb3IgKGkgPSAwOyBpIDwgaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzOyBpKyspCiAJ ewogCQlpbnQJCQlwa2F0dG5vID0gaW5kZXhTdHJ1Y3QtPmluZGtleS52YWx1ZXNbaV07CiAK LQkJYXR0bnVtc1tpXSA9IHBrYXR0bm87Ci0JCWF0dHR5cGlkc1tpXSA9IGF0dG51bVR5cGVJ ZChwa3JlbCwgcGthdHRubyk7Ci0JCW9wY2xhc3Nlc1tpXSA9IGluZGNsYXNzLT52YWx1ZXNb aV07Ci0JCSphdHRuYW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAotCQkJCQkJCSAg IG1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0 dG5vKSkpKSk7CisJCWlmIChpID09IGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyAtIDEgJiYg aW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKQorCQl7CisJCQkvKiB3ZSBoYXZlIGEgcmFu Z2UgKi8KKwkJCS8qIFRoZSBjYWxsZXIgd2lsbCBzZXQgYXR0bnVtc1tpXSAqLworCQkJcGVy aW9kYXR0bnVtc1swXSA9IHBrYXR0bm87CisJCQlwZXJpb2RhdHR0eXBpZHNbMF0gPSBhdHRu dW1UeXBlSWQocGtyZWwsIHBrYXR0bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3Mt PnZhbHVlc1tpXTsKKworCQkJQXNzZXJ0KCpwa19wZXJpb2QgPT0gTlVMTCk7CisJCQkqcGtf cGVyaW9kID0gKE5vZGUgKikgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51bUF0 dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJYXR0bnVt c1tpXSA9IHBrYXR0bm87CisJCQlhdHR0eXBpZHNbaV0gPSBhdHRudW1UeXBlSWQocGtyZWws IHBrYXR0bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKKwkJ CSphdHRuYW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAorCQkJCQkJCQkgIG1ha2VT dHJpbmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5vKSkp KSk7CisJCX0KIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CiAKLQlyZXR1 cm4gaTsKKwlpZiAoaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKSByZXR1cm4gaSAtIDE7 CisJZWxzZSByZXR1cm4gaTsKIH0KIAogLyoKICAqIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJz IC0KICAqCiAgKglNYWtlIHN1cmUgdGhhdCB0aGUgYXR0cmlidXRlcyBvZiBhIHJlZmVyZW5j ZWQgdGFibGUgYmVsb25nIHRvIGEgdW5pcXVlCi0gKgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0 cmFpbnQuICBSZXR1cm4gdGhlIE9JRCBvZiB0aGUgaW5kZXggc3VwcG9ydGluZwotICoJdGhl IGNvbnN0cmFpbnQsIGFzIHdlbGwgYXMgdGhlIG9wY2xhc3NlcyBhc3NvY2lhdGVkIHdpdGgg dGhlIGluZGV4CisgKgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0cmFpbnQuICBPciBpZiB0aGlz IGlzIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkKKyAqCXRoZSBwcmltYXJ5IGtleSBzaG91bGQg YmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgaW5zdGVhZC4KKyAqCVJldHVybiB0aGUgT0lE IG9mIHRoZSBpbmRleCBzdXBwb3J0aW5nIHRoZSBjb25zdHJhaW50LAorICoJYXMgd2VsbCBh cyB0aGUgb3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgKICAqCWNvbHVtbnMu CiAgKi8KIHN0YXRpYyBPaWQKIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBr cmVsLAogCQkJCQkJaW50IG51bWF0dHJzLCBpbnQxNiAqYXR0bnVtcywKKwkJCQkJCWJvb2wg aXNfdGVtcG9yYWwsIGludDE2IHBlcmlvZGF0dG51bSwKIAkJCQkJCU9pZCAqb3BjbGFzc2Vz KSAvKiBvdXRwdXQgcGFyYW1ldGVyICovCiB7CiAJT2lkCQkJaW5kZXhvaWQgPSBJbnZhbGlk T2lkOwpAQCAtMTIwMDIsNiArMTIyMzEsMTAgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMo UmVsYXRpb24gcGtyZWwsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlH Tl9LRVkpLAogCQkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5z IGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzIikpKTsKIAkJfQorCQlpZiAoaXNf dGVtcG9yYWwgJiYgYXR0bnVtc1tpXSA9PSBwZXJpb2RhdHRudW0pCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkpLAorCQkJ CQkgZXJybXNnKCJmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5v dCBjb250YWluIGR1cGxpY2F0ZXMiKSkpOwogCX0KIAogCS8qCkBAIC0xMjAyMywxMiArMTIy NTYsMTYgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCWlu ZGV4U3RydWN0ID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVChpbmRleFR1cGxlKTsKIAog CQkvKgotCQkgKiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0 IGJlIHVuaXF1ZSBhbmQgbm90IGEKLQkJICogcGFydGlhbCBpbmRleDsgZm9yZ2V0IGl0IGlm IHRoZXJlIGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRvby4gSW52YWxpZAotCQkgKiBpbmRleGVz IGFyZSBvdXQgYXMgd2VsbC4KKwkJICogTXVzdCBoYXZlIHRoZSByaWdodCBudW1iZXIgb2Yg Y29sdW1uczsgbXVzdCBiZSB1bmlxdWUKKwkJICogKG9yIGlmIHRlbXBvcmFsIHRoZW4gZXhj bHVzaW9uIGluc3RlYWQpIGFuZCBub3QgYQorCQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQg aXQgaWYgdGhlcmUgYXJlIGFueSBleHByZXNzaW9ucywgdG9vLgorCQkgKiBJbnZhbGlkIGlu ZGV4ZXMgYXJlIG91dCBhcyB3ZWxsLgogCQkgKi8KLQkJaWYgKGluZGV4U3RydWN0LT5pbmRu a2V5YXR0cyA9PSBudW1hdHRycyAmJgotCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlICYm CisJCWlmICgoaXNfdGVtcG9yYWwKKwkJCSAgPyAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRz ID09IG51bWF0dHJzICsgMSAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24p CisJCQkgIDogKGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyA9PSBudW1hdHRycyAmJgorCQkJ CSBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUpKSAmJgogCQkJaW5kZXhTdHJ1Y3QtPmluZGlz dmFsaWQgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhf aW5kcHJlZCwgTlVMTCkgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1f cGdfaW5kZXhfaW5kZXhwcnMsIE5VTEwpKQpAQCAtMTIwNjYsNiArMTIzMDMsMTkgQEAgdHJh bnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJaWYgKCFmb3VuZCkK IAkJCQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoZm91bmQgJiYgaXNfdGVtcG9yYWwpCisJCQl7 CisJCQkJZm91bmQgPSBmYWxzZTsKKwkJCQlmb3IgKGogPSAwOyBqIDwgbnVtYXR0cnMgKyAx OyBqKyspCisJCQkJeworCQkJCQlpZiAocGVyaW9kYXR0bnVtID09IGluZGV4U3RydWN0LT5p bmRrZXkudmFsdWVzW2pdKQorCQkJCQl7CisJCQkJCQlvcGNsYXNzZXNbbnVtYXR0cnNdID0g aW5kY2xhc3MtPnZhbHVlc1tqXTsKKwkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCWJyZWFr OworCQkJCQl9CisJCQkJfQorCQkJfQogCiAJCQkvKgogCQkJICogUmVmdXNlIHRvIHVzZSBh IGRlZmVycmFibGUgdW5pcXVlL3ByaW1hcnkga2V5LiAgVGhpcyBpcyBwZXIgU1FMCkBAIC0x MjE3NSw3ICsxMjQyNSw4IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAq Y29ubmFtZSwKIAkJCQkJCQkgUmVsYXRpb24gcmVsLAogCQkJCQkJCSBSZWxhdGlvbiBwa3Jl bCwKIAkJCQkJCQkgT2lkIHBraW5kT2lkLAotCQkJCQkJCSBPaWQgY29uc3RyYWludE9pZCkK KwkJCQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQsCisJCQkJCQkJIGJvb2wgdGVtcG9yYWwpCiB7 CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJVGFibGVTY2FuRGVzYyBzY2FuOwpAQCAtMTIy MDQsOCArMTI0NTUsMTAgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpj b25uYW1lLAogCS8qCiAJICogU2VlIGlmIHdlIGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIExF RlQgSk9JTiBxdWVyeS4gIEEgZmFsc2UgcmVzdWx0CiAJICogaW5kaWNhdGVzIHdlIG11c3Qg cHJvY2VlZCB3aXRoIHRoZSBmaXJlLXRoZS10cmlnZ2VyIG1ldGhvZC4KKwkgKiBXZSBjYW4n dCBkbyBhIExFRlQgSk9JTiBmb3IgdGVtcG9yYWwgRktzIHlldCwKKwkgKiBidXQgd2UgY2Fu IG9uY2Ugd2Ugc3VwcG9ydCB0ZW1wb3JhbCBsZWZ0IGpvaW5zLgogCSAqLwotCWlmIChSSV9J bml0aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVsKSkKKwlpZiAoIXRlbXBvcmFsICYmIFJJ X0luaXRpYWxfQ2hlY2soJnRyaWcsIHJlbCwgcGtyZWwpKQogCQlyZXR1cm47CiAKIAkvKgpA QCAtMTIyNzQsNiArMTI1MjcsNyBAQCBDcmVhdGVGS0NoZWNrVHJpZ2dlcihPaWQgbXlSZWxP aWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIHsKIAlPYmpl Y3RBZGRyZXNzIHRyaWdBZGRyZXNzOwogCUNyZWF0ZVRyaWdTdG10ICpma190cmlnZ2VyOwor CWJvb2wgaXNfdGVtcG9yYWwgPSBma2NvbnN0cmFpbnQtPmZrX3BlcmlvZDsKIAogCS8qCiAJ ICogTm90ZTogZm9yIGEgc2VsZi1yZWZlcmVudGlhbCBGSyAocmVmZXJlbmNpbmcgYW5kIHJl ZmVyZW5jZWQgdGFibGVzIGFyZQpAQCAtMTIyOTMsMTIgKzEyNTQ3LDE4IEBAIENyZWF0ZUZL Q2hlY2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAq Zmtjb25zdHJhaW50LAogCS8qIEVpdGhlciBPTiBJTlNFUlQgb3IgT04gVVBEQVRFICovCiAJ aWYgKG9uX2luc2VydCkKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZr X3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX2lu cyIpOworCQllbHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJSSV9GS2V5X2NoZWNrX2lucyIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VS X1RZUEVfSU5TRVJUOwogCX0KIAllbHNlCiAJewotCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNrX3VwZCIpOworCQlpZiAoaXNfdGVtcG9y YWwpCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktl eV9jaGVja191cGQiKTsKKwkJZWxzZQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja191cGQiKTsKIAkJZmtfdHJpZ2dlci0+ZXZlbnRz ID0gVFJJR0dFUl9UWVBFX1VQREFURTsKIAl9CiAKQEAgLTEyMzU2LDM3ICsxMjYxNiw2OCBA QCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVm UmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXItPndoZW5DbGF1c2Ug PSBOVUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklMOwogCWZrX3RyaWdn ZXItPmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9h Y3Rpb24pCisJaWYgKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEwpCiAJewotCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKLQkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7Ci0JCQli cmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6Ci0JCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfcmVzdHJpY3RfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f Q0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2RlbCIpOwotCQkJYnJlYWs7Ci0J CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJh YmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVs bF9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxU OgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7Ci0JCQlicmVhazsKLQkJZGVm YXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVk IiwKLQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsKLQkJCWJyZWFr OworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8KKwkJc3dpdGNoIChma2NvbnN0cmFp bnQtPmZrX2RlbF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNU SU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVy cmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5p bml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiVFJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJp Z2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfcmVzdHJpY3RfZGVs Iik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9O X1NFVERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKSkpOworCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0 eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pOwor CQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJCXN3aXRjaCAoZmtjb25zdHJhaW50 LT5ma19kZWxfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElP TjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJh YmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5p dGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZl cnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfY2FzY2FkZV9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05T VFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF9kZWwiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRk ZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1 bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQi LAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsKKwkJCQlicmVh azsKKwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3JlYXRlVHJpZ2dlcihma190cmlnZ2Vy LCBOVUxMLCByZWZSZWxPaWQsCkBAIC0xMjQxNiwzNyArMTI3MDcsNjggQEAgY3JlYXRlRm9y ZWlnbktleUFjdGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29u c3RyYWludCAqZmtjb25zdHIKIAlma190cmlnZ2VyLT53aGVuQ2xhdXNlID0gTlVMTDsKIAlm a190cmlnZ2VyLT50cmFuc2l0aW9uUmVscyA9IE5JTDsKIAlma190cmlnZ2VyLT5jb25zdHJy ZWwgPSBOVUxMOwotCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKQorCWlm IChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBOVUxMKQogCXsKLQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fTk9BQ1RJT046Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25z dHJhaW50LT5kZWZlcnJhYmxlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtj b25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9uX3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNh c2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJs ZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlm a190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0 X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6Ci0J CQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09O U1RSX0FDVElPTl9TRVROVUxMOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfdXBkIik7Ci0J CQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKLQkJCWZrX3Ry aWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi UklfRktleV9zZXRkZWZhdWx0X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCi0JCQkJIChp bnQpIGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7Ci0JCQlicmVhazsKKwkJLyogVGVt cG9yYWwgZm9yZWlnbiBrZXlzICovCisJCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRf YWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKKwkJCQlm a190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOworCQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVk OworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X25vYWN0aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f UkVTVFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jlc3RyaWN0X3VwZCIpOworCQkJCWJy ZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCWNhc2UgRktDT05T VFJfQUNUSU9OX1NFVE5VTEw6CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxU OgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90IHN1cHBvcnRlZCBm b3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6 CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAor CQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKTsKKwkJCQlicmVhazsK KwkJfQorCX0KKwllbHNlCisJeworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfdXBkX2Fj dGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlm a190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25v YWN0aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVT VFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7 CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRl ZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5 X2Nhc2NhZGVfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7 CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgorCQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X3NldGRlZmF1bHRfdXBkIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChp bnQpIGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KIAl9 CiAKIAl0cmlnQWRkcmVzcyA9IENyZWF0ZVRyaWdnZXIoZmtfdHJpZ2dlciwgTlVMTCwgcmVm UmVsT2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggMDNmNjdiNjg1MDYuLjJhZGVlNmQ1 ZGIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTc5NCw3ICs3OTQsOSBAQCBfb3V0Q29u c3RyYWludChTdHJpbmdJbmZvIHN0ciwgY29uc3QgQ29uc3RyYWludCAqbm9kZSkKIAkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCAiRk9SRUlHTl9LRVkiKTsKIAkJCVdSSVRFX05P REVfRklFTEQocGt0YWJsZSk7CiAJCQlXUklURV9OT0RFX0ZJRUxEKGZrX2F0dHJzKTsKKwkJ CVdSSVRFX05PREVfRklFTEQoZmtfcGVyaW9kKTsKIAkJCVdSSVRFX05PREVfRklFTEQocGtf YXR0cnMpOworCQkJV1JJVEVfTk9ERV9GSUVMRChwa19wZXJpb2QpOwogCQkJV1JJVEVfQ0hB Ul9GSUVMRChma19tYXRjaHR5cGUpOwogCQkJV1JJVEVfQ0hBUl9GSUVMRChma191cGRfYWN0 aW9uKTsKIAkJCVdSSVRFX0NIQVJfRklFTEQoZmtfZGVsX2FjdGlvbik7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jCmluZGV4IGNmYjU1MmZkZTc0Li5iZmY4MzViNGMxOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv cmVhZGZ1bmNzLmMKQEAgLTQ2Miw3ICs0NjIsOSBAQCBfcmVhZENvbnN0cmFpbnQodm9pZCkK IAkJY2FzZSBDT05TVFJfRk9SRUlHTjoKIAkJCVJFQURfTk9ERV9GSUVMRChwa3RhYmxlKTsK IAkJCVJFQURfTk9ERV9GSUVMRChma19hdHRycyk7CisJCQlSRUFEX05PREVfRklFTEQoZmtf cGVyaW9kKTsKIAkJCVJFQURfTk9ERV9GSUVMRChwa19hdHRycyk7CisJCQlSRUFEX05PREVf RklFTEQocGtfcGVyaW9kKTsKIAkJCVJFQURfQ0hBUl9GSUVMRChma19tYXRjaHR5cGUpOwog CQkJUkVBRF9DSEFSX0ZJRUxEKGZrX3VwZF9hY3Rpb24pOwogCQkJUkVBRF9DSEFSX0ZJRUxE KGZrX2RlbF9hY3Rpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMGE1NzYxMWMzODMuLjU4ZGNi NDdjMjE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTUyMSwxMiArNTIxLDEzIEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJIFNldFJlc2V0Q2xhdXNlIEZ1bmN0aW9uU2V0UmVz ZXRDbGF1c2UKIAogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRhYmxlRWxlbWVu dCBDb25zdHJhaW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50Ci0ldHlwZSA8bm9kZT4JY29sdW1u RGVmIGNvbHVtbk9wdGlvbnMKKyV0eXBlIDxub2RlPgljb2x1bW5EZWYgY29sdW1uT3B0aW9u cyBvcHRpb25hbFBlcmlvZE5hbWUKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJlbG9wdGlv bl9lbGVtIG9sZF9hZ2dyX2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KICV0eXBlIDxub2RlPglk ZWZfYXJnIGNvbHVtbkVsZW0gd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNl CiAJCQkJYV9leHByIGJfZXhwciBjX2V4cHIgQWV4cHJDb25zdCBpbmRpcmVjdGlvbl9lbCBv cHRfc2xpY2VfYm91bmQKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1 bmNfdGFibGUgeG1sdGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJh dG9yX2RlZl9hcmcKKyV0eXBlIDxsaXN0PglvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdAog JXR5cGUgPGxpc3Q+CXJvd3Nmcm9tX2l0ZW0gcm93c2Zyb21fbGlzdCBvcHRfY29sX2RlZl9s aXN0CiAldHlwZSA8Ym9vbGVhbj4gb3B0X29yZGluYWxpdHkgb3B0X3dpdGhvdXRfb3Zlcmxh cHMKICV0eXBlIDxsaXN0PglFeGNsdXNpb25Db25zdHJhaW50TGlzdCBFeGNsdXNpb25Db25z dHJhaW50RWxlbQpAQCAtNzQ0LDcgKzc0NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAog CVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQ QVNTV09SRAotCVBMQUNJTkcgUExBTlMgUE9MSUNZCisJUEVSSU9EIFBMQUNJTkcgUExBTlMg UE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJF IFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VE VVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgogCkBAIC00MjE2LDIxICs0MjE3 LDIzIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwog CQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29s dW1uTGlzdCAnKScgUkVGRVJFTkNFUyBxdWFsaWZpZWRfbmFtZQotCQkJCW9wdF9jb2x1bW5f bGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKKwkJ CXwgRk9SRUlHTiBLRVkgJygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcpJyBS RUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lCisJCQkJb3B0X2NvbHVtbl9hbmRfcGVyaW9kX2xp c3Qga2V5X21hdGNoIGtleV9hY3Rpb25zIENvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJ ewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CiAKIAkJCQkJ bi0+Y29udHlwZSA9IENPTlNUUl9GT1JFSUdOOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwot CQkJCQluLT5wa3RhYmxlID0gJDc7CisJCQkJCW4tPnBrdGFibGUgPSAkODsKIAkJCQkJbi0+ ZmtfYXR0cnMgPSAkNDsKLQkJCQkJbi0+cGtfYXR0cnMgPSAkODsKLQkJCQkJbi0+ZmtfbWF0 Y2h0eXBlID0gJDk7Ci0JCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoJDEwKS0+dXBkYXRlQWN0 aW9uLT5hY3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9hY3Rpb24gPSAoJDEwKS0+ZGVsZXRlQWN0 aW9uLT5hY3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9zZXRfY29scyA9ICgkMTApLT5kZWxldGVB Y3Rpb24tPmNvbHM7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQxMSwgQDExLCAiRk9SRUlHTiBL RVkiLAorCQkJCQluLT5ma19wZXJpb2QgPSAkNTsKKwkJCQkJbi0+cGtfYXR0cnMgPSBsaW5p dGlhbCgkOSk7CisJCQkJCW4tPnBrX3BlcmlvZCA9IGxzZWNvbmQoJDkpOworCQkJCQluLT5m a19tYXRjaHR5cGUgPSAkMTA7CisJCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoJDExKS0+dXBk YXRlQWN0aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2RlbF9hY3Rpb24gPSAoJDExKS0+ZGVs ZXRlQWN0aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2RlbF9zZXRfY29scyA9ICgkMTEpLT5k ZWxldGVBY3Rpb24tPmNvbHM7CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQxMiwgQDEyLCAiRk9S RUlHTiBLRVkiLAogCQkJCQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJl ZCwKIAkJCQkJCQkJICAgJm4tPnNraXBfdmFsaWRhdGlvbiwgTlVMTCwKIAkJCQkJCQkJICAg eXlzY2FubmVyKTsKQEAgLTQyNTgsNiArNDI2MSwxNiBAQCBjb2x1bW5MaXN0OgogCQkJfCBj b2x1bW5MaXN0ICcsJyBjb2x1bW5FbGVtCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0K IAkJOwogCitvcHRpb25hbFBlcmlvZE5hbWU6CisJCQknLCcgUEVSSU9EIGNvbHVtbkVsZW0g eyAkJCA9ICQzOyB9CisJCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQgPSBOVUxM OyB9CisJOworCitvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdDoKKwkJCScoJyBjb2x1bW5M aXN0IG9wdGlvbmFsUGVyaW9kTmFtZSAnKScJCQl7ICQkID0gbGlzdF9tYWtlMigkMiwgJDMp OyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTIoTklMLCBOVUxM KTsgfQorCQk7CisKIGNvbHVtbkVsZW06IENvbElkCiAJCQkJewogCQkJCQkkJCA9IChOb2Rl ICopIG1ha2VTdHJpbmcoJDEpOwpAQCAtMTc2MTIsNiArMTc2MjUsNyBAQCByZXNlcnZlZF9r ZXl3b3JkOgogCQkJfCBPTkxZCiAJCQl8IE9SCiAJCQl8IE9SREVSCisJCQl8IFBFUklPRAog CQkJfCBQTEFDSU5HCiAJCQl8IFBSSU1BUlkKIAkJCXwgUkVGRVJFTkNFUwpAQCAtMTc5MjEs NiArMTc5MzUsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBBUlRJVElPTgogCQkJ fCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECisJCQl8IFBFUklPRAogCQkJfCBQTEFDSU5HCiAJ CQl8IFBMQU5TCiAJCQl8IFBPTElDWQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMu YwppbmRleCA3MDhkOWM4ZWZjOS4uMGRhZGYyYWNiMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jCkBAIC0zMSw3ICszMSw5IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19y YW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1h bmRzL3RhYmxlY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNs dWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgpA QCAtNDgsNiArNTAsNyBAQAogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNs dWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5j bHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCkBAIC0x MTgsMTIgKzEyMSwxNSBAQCB0eXBlZGVmIHN0cnVjdCBSSV9Db25zdHJhaW50SW5mbwogCWlu dDE2CQljb25mZGVsc2V0Y29sc1tSSV9NQVhfTlVNS0VZU107IC8qIGF0dG51bXMgb2YgY29s cyB0byBzZXQgb24KIAkJCQkJCQkJCQkJCSAqIGRlbGV0ZSAqLwogCWNoYXIJCWNvbmZtYXRj aHR5cGU7CS8qIGZvcmVpZ24ga2V5J3MgbWF0Y2ggdHlwZSAqLworCWJvb2wJCXRlbXBvcmFs OwkJLyogaWYgdGhlIGZvcmVpZ24ga2V5IGlzIHRlbXBvcmFsICovCiAJaW50CQkJbmtleXM7 CQkJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zICovCiAJaW50MTYJCXBrX2F0dG51bXNbUklf TUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIHJlZmVyZW5jZWQgY29scyAqLwogCWludDE2 CQlma19hdHRudW1zW1JJX01BWF9OVU1LRVlTXTsgLyogYXR0bnVtcyBvZiByZWZlcmVuY2lu ZyBjb2xzICovCiAJT2lkCQkJcGZfZXFfb3Byc1tSSV9NQVhfTlVNS0VZU107IC8qIGVxdWFs aXR5IG9wZXJhdG9ycyAoUEsgPSBGSykgKi8KIAlPaWQJCQlwcF9lcV9vcHJzW1JJX01BWF9O VU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0b3JzIChQSyA9IFBLKSAqLwogCU9pZAkJCWZm X2VxX29wcnNbUklfTUFYX05VTUtFWVNdOyAvKiBlcXVhbGl0eSBvcGVyYXRvcnMgKEZLID0g RkspICovCisJT2lkCQkJcGVyaW9kX2NvbnRhaW5lZF9ieV9vcGVyOwkvKiBvcGVyYXRvciBm b3IgUEVST0lEIFNRTCAqLworCU9pZAkJCXBlcmlvZF9yZWZlcmVuY2VkX2FnZ19wcm9jOwkv KiBwcm9jIGZvciBQRVJJT0QgU1FMICovCiAJZGxpc3Rfbm9kZQl2YWxpZF9saW5rOwkJLyog TGluayBpbiBsaXN0IG9mIHZhbGlkIGVudHJpZXMgKi8KIH0gUklfQ29uc3RyYWludEluZm87 CiAKQEAgLTIwMCw4ICsyMDYsOSBAQCBzdGF0aWMgaW50CXJpX051bGxDaGVjayhUdXBsZURl c2MgdHVwRGVzYywgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiBzdGF0aWMgdm9pZCByaV9CdWls ZFF1ZXJ5S2V5KFJJX1F1ZXJ5S2V5ICprZXksCiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFp bnRJbmZvICpyaWluZm8sCiAJCQkJCQkJIGludDMyIGNvbnN0cl9xdWVyeW5vKTsKLXN0YXRp YyBib29sIHJpX0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRz bG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKK3N0YXRpYyBib29sIHJpX0tleXNTdGFi bGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNs b3QgKm5ld3Nsb3QsCiAJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywg Ym9vbCByZWxfaXNfcGspOworc3RhdGljIGJvb2wgcmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0No ZWNrKGJvb2wgcmVsX2lzX3BrLCBEYXR1bSBvbGR2YWx1ZSwgRGF0dW0gbmV3dmFsdWUpOwog c3RhdGljIGJvb2wgcmlfQXR0cmlidXRlc0VxdWFsKE9pZCBlcV9vcHIsIE9pZCB0eXBlaWQs CiAJCQkJCQkJICAgRGF0dW0gb2xkdmFsdWUsIERhdHVtIG5ld3ZhbHVlKTsKIApAQCAtMjMx LDYgKzIzOCw4IEBAIHN0YXRpYyB2b2lkIHJpX1JlcG9ydFZpb2xhdGlvbihjb25zdCBSSV9D b25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCSAgIFJlbGF0aW9uIHBrX3JlbCwgUmVs YXRpb24gZmtfcmVsLAogCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICp2aW9sYXRvcnNsb3Qs IFR1cGxlRGVzYyB0dXBkZXNjLAogCQkJCQkJCSAgIGludCBxdWVyeW5vLCBib29sIHBhcnRn b25lKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKK3N0YXRpYyB2b2lkIGxvb2t1cFRSSU9w ZXJBbmRQcm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCisJCQkJCQkJCSBj aGFyICoqb3BuYW1lLCBjaGFyICoqYWdnbmFtZSk7CiAKIAogLyoKQEAgLTM2MSwyNiArMzcw LDU4IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCiAJCS8qIC0t LS0tLS0tLS0KIAkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcwotCQkgKglTRUxFQ1Qg MSBGUk9NIFtPTkxZXSA8cGt0YWJsZT4geCBXSEVSRSBwa2F0dDEgPSAkMSBbQU5EIC4uLl0K LQkJICoJCSAgIEZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKglTRUxFQ1QgMQorCQkgKglGUk9N IFtPTkxZXSA8cGt0YWJsZT4geCBXSEVSRSBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJ Rk9SIEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFt ZXRlcnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBjb3JyZXNwb25kaW5nIEZLIGF0dHJpYnV0 ZXMuCisJCSAqCisJCSAqIEJ1dCBmb3IgdGVtcG9yYWwgRktzIHdlIG5lZWQgdG8gbWFrZSBz dXJlCisJCSAqIHRoZSBGSydzIHJhbmdlIGlzIGNvbXBsZXRlbHkgY292ZXJlZC4KKwkJICog U28gd2UgdXNlIHRoaXMgcXVlcnkgaW5zdGVhZDoKKwkJICogIFNFTEVDVCAxCisJCSAqCUZS T00JKAorCQkgKgkJU0VMRUNUIHBrcGVyaW9kYXR0IEFTIHIKKwkJICoJCUZST00gICBbT05M WV0gcGt0YWJsZSB4CisJCSAqCQlXSEVSRSAgcGthdHQxID0gJDEgW0FORCAuLi5dCisJCSAq CQlBTkQgICAgcGtwZXJpb2RhdHQgJiYgJG4KKwkJICoJCUZPUiBLRVkgU0hBUkUgT0YgeAor CQkgKgkpIHgxCisJCSAqICBIQVZJTkcgJG4gPEAgcmFuZ2VfYWdnKHgxLnIpCisJCSAqIE5v dGUgaWYgRk9SIEtFWSBTSEFSRSBldmVyIGFsbG93cyBHUk9VUCBCWSBhbmQgSEFWSU5HCisJ CSAqIHdlIGNhbiBtYWtlIHRoaXMgYSBiaXQgc2ltcGxlci4KIAkJICogLS0tLS0tLS0tLQog CQkgKi8KIAkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKIAkJcGtfb25seSA9IHBrX3Jl bC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPwogCQkJ IiIgOiAiT05MWSAiOwogCQlxdW90ZVJlbGF0aW9uTmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7 Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgi LAotCQkJCQkJIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCWlmIChyaWluZm8tPnRlbXBvcmFs KQorCQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJUklBdHROYW1lKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOworCisJCQlhcHBl bmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwKKwkJCQkJIlNFTEVDVCAxIEZST00gKFNFTEVDVCAl cyBBUyByIEZST00gJXMlcyB4IiwKKwkJCQkJYXR0bmFtZSwgcGtfb25seSwgcGtyZWxuYW1l KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAi U0VMRUNUIDEgRlJPTSAlcyVzIHgiLAorCQkJCQkJCSBwa19vbmx5LCBwa3JlbG5hbWUpOwor CQl9CiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWlu Zm8tPm5rZXlzOyBpKyspCiAJCXsKLQkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtf cmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwotCQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0 VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQJcGtfdHlwZTsK KwkJCU9pZAlma190eXBlOwogCisJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlp bmZvLT5wa19hdHRudW1zW2ldKTsKIAkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAogCQkJCQkJ IFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOworCisJCQlma190 eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwogCQkJ c3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwo JnF1ZXJ5YnVmLCBxdWVyeXNlcCwKIAkJCQkJCQlhdHRuYW1lLCBwa190eXBlLApAQCAtMzkw LDYgKzQzMSwxNSBAQCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJ CXF1ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0KIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmcXVlcnlidWYsICIgRk9SIEtFWSBTSEFSRSBPRiB4Iik7CisJCWlmIChyaWluZm8tPnRl bXBvcmFsKQorCQl7CisJCQljaGFyICpvcG5hbWU7CisJCQljaGFyICphZ2duYW1lOworCQkJ bG9va3VwVFJJT3BlckFuZFByb2MocmlpbmZvLCAmb3BuYW1lLCAmYWdnbmFtZSk7CisJCQlh cHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIikgeDEgSEFWSU5HICQlZCAlcyAlcyh4MS5y KSIsIHJpaW5mby0+bmtleXMsIG9wbmFtZSwgYWdnbmFtZSk7CisJCQlwZnJlZShvcG5hbWUp OworCQkJcGZyZWUoYWdnbmFtZSk7CisJCX0KIAogCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRo ZSBwbGFuICovCiAJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5m by0+bmtleXMsIHF1ZXJ5b2lkcywKQEAgLTQ5NywyMSArNTQ3LDQ5IEBAIHJpX0NoZWNrX1Br X01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkgKgkJICAgRk9S IEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRl cnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBQSyBhdHRyaWJ1dGVzIHRoZW1zZWx2ZXMuCisJ CSAqIEJ1dCBmb3IgdGVtcG9yYWwgRktzIHdlIG5lZWQgdG8gbWFrZSBzdXJlCisJCSAqIHRo ZSBGSydzIHJhbmdlIGlzIGNvbXBsZXRlbHkgY292ZXJlZC4KKwkJICogU28gd2UgdXNlIHRo aXMgcXVlcnkgaW5zdGVhZDoKKwkJICogIFNFTEVDVCAxCisJCSAqICBGUk9NICAgICgKKwkJ ICoJICBTRUxFQ1QgcGtwZXJpb2RhdHQgQVMgcgorCQkgKgkgIEZST00gICBbT05MWV0gcGt0 YWJsZSB4CisJCSAqCSAgV0hFUkUgIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKgkgIEFO RCAgICBwa3BlcmlvZGF0dCAmJiAkbgorCQkgKgkgIEZPUiBLRVkgU0hBUkUgT0YgeAorCQkg KiAgKSB4MQorCQkgKiAgSEFWSU5HICRuIDxAIHJhbmdlX2FnZyh4MS5yKQorCQkgKiBOb3Rl IGlmIEZPUiBLRVkgU0hBUkUgZXZlciBhbGxvd3MgR1JPVVAgQlkgYW5kIEhBVklORworCQkg KiB3ZSBjYW4gbWFrZSB0aGlzIGEgYml0IHNpbXBsZXIuCiAJCSAqIC0tLS0tLS0tLS0KIAkJ ICovCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBrX29ubHkgPSBwa19yZWwt PnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIi IDogIk9OTFkgIjsKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwot CQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwK LQkJCQkJCSBwa19vbmx5LCBwa3JlbG5hbWUpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkK KwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIFJJQXR0TmFtZShwa19yZWwsIHJpaW5m by0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKworCQkJYXBwZW5kU3RyaW5n SW5mbygmcXVlcnlidWYsCisJCQkJCSJTRUxFQ1QgMSBGUk9NIChTRUxFQ1QgJXMgQVMgciBG Uk9NICVzJXMgeCIsCisJCQkJCWF0dG5hbWUsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0K KwkJZWxzZQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAx IEZST00gJXMlcyB4IiwKKwkJCQkJcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQorCiAJCXF1 ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlz OyBpKyspCiAJCXsKLQkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCQlwa190eXBlOwogCisJCQlwa190eXBlID0g UklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJCXF1b3RlT25l TmFtZShhdHRuYW1lLAogCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSkpOworCiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJ CXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAogCQkJCQkJCWF0dG5hbWUs IHBrX3R5cGUsCkBAIC01MjEsNiArNTk5LDE1IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0 aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlw ZTsKIAkJfQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1ZiwgIiBGT1IgS0VZ IFNIQVJFIE9GIHgiKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCWNoYXIg Km9wbmFtZTsKKwkJCWNoYXIgKmFnZ25hbWU7CisJCQlsb29rdXBUUklPcGVyQW5kUHJvYyhy aWluZm8sICZvcG5hbWUsICZhZ2duYW1lKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5 YnVmLCAiKSB4MSBIQVZJTkcgJCVkICVzICVzKHgxLnIpIiwgcmlpbmZvLT5ua2V5cywgb3Bu YW1lLCBhZ2duYW1lKTsKKwkJCXBmcmVlKG9wbmFtZSk7CisJCQlwZnJlZShhZ2duYW1lKTsK KwkJfQogCiAJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KIAkJcXBsYW4gPSBy aV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cywgcXVlcnlvaWRzLApA QCAtNjk1LDEwICs3ODIsMTYgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRh LCBib29sIGlzX25vX2FjdGlvbikKIAkJcXVlcnlzZXAgPSAiV0hFUkUiOwogCQlmb3IgKGlu dCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJewotCQkJT2lkCQkJcGtfdHlw ZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJ CQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsK LQkJCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtf YXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkCQlwa190eXBlOworCQkJT2lkCQlm a190eXBlOworCQkJT2lkCQlwa19jb2xsOworCQkJT2lkCQlma19jb2xsOworCisJCQlwa190 eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCXBr X2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7 CisKKwkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNb aV0pOworCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19h dHRudW1zW2ldKTsKIAogCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkgUklBdHRO YW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CkBAIC0xMjEzLDYgKzEzMDYs MTI2IEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGws IGludCB0Z2tpbmQpCiAJfQogfQogCisvKiAtLS0tLS0tLS0tCisgKiBUUklfRktleV9jaGVj a19pbnMgLQorICoKKyAqCUNoZWNrIHRlbXBvcmFsIGZvcmVpZ24ga2V5IGV4aXN0ZW5jZSBh dCBpbnNlcnQgZXZlbnQgb24gRksgdGFibGUuCisgKiAtLS0tLS0tLS0tCisgKi8KK0RhdHVt CitUUklfRktleV9jaGVja19pbnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAqIENo ZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGlt ZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlf Y2hlY2tfaW5zIiwgUklfVFJJR1RZUEVfSU5TRVJUKTsKKworCS8qCisJICogU2hhcmUgY29k ZSB3aXRoIFVQREFURSBjYXNlLgorCSAqLworCXJldHVybiBSSV9GS2V5X2NoZWNrKChUcmln Z2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQpOworfQorCisKKy8qIC0tLS0tLS0tLS0KKyAq IFRSSV9GS2V5X2NoZWNrX3VwZCAtCisgKgorICoJQ2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBr ZXkgZXhpc3RlbmNlIGF0IHVwZGF0ZSBldmVudCBvbiBGSyB0YWJsZS4KKyAqIC0tLS0tLS0t LS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X2NoZWNrX3VwZChQR19GVU5DVElPTl9BUkdTKQor eworCS8qCisJICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9u IHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNp bmZvLCAiUklfRktleV9jaGVja191cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyoK KwkgKiBTaGFyZSBjb2RlIHdpdGggSU5TRVJUIGNhc2UuCisJICovCisJcmV0dXJuIFJJX0ZL ZXlfY2hlY2soKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCk7Cit9CisKKworLyog LS0tLS0tLS0tLQorICogVFJJX0ZLZXlfbm9hY3Rpb25fZGVsIC0KKyAqCisgKglHaXZlIGFu IGVycm9yIGFuZCByb2xsIGJhY2sgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gaWYgdGhlCisg KglkZWxldGUgaGFzIHJlc3VsdGVkIGluIGEgdmlvbGF0aW9uIG9mIHRoZSBnaXZlbiB0ZW1w b3JhbAorICoJcmVmZXJlbnRpYWwgaW50ZWdyaXR5IGNvbnN0cmFpbnQuCisgKiAtLS0tLS0t LS0tCisgKi8KK0RhdHVtCitUUklfRktleV9ub2FjdGlvbl9kZWwoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwkvKgorCSAqIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2Fs bCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tUcmlnZ2Vy KGZjaW5mbywgIlRSSV9GS2V5X25vYWN0aW9uX2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7 CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBSRVNUUklDVC9VUERBVEUgY2FzZXMuCisJ ICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRl eHQsIHRydWUpOworfQorCisvKgorICogVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIC0KKyAqCisg KiBSZXN0cmljdCBkZWxldGUgZnJvbSBQSyB0YWJsZSB0byByb3dzIHVucmVmZXJlbmNlZCBi eSBmb3JlaWduIGtleS4KKyAqCisgKiBUaGUgU1FMIHN0YW5kYXJkIGludGVuZHMgdGhhdCB0 aGlzIHJlZmVyZW50aWFsIGFjdGlvbiBvY2N1ciBleGFjdGx5IHdoZW4KKyAqIHRoZSBkZWxl dGUgaXMgcGVyZm9ybWVkLCByYXRoZXIgdGhhbiBhZnRlci4gIFRoaXMgYXBwZWFycyB0byBi ZQorICogdGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuICJOTyBBQ1RJT04iIGFuZCAiUkVT VFJJQ1QiLiAgSW4gUG9zdGdyZXMKKyAqIHdlIHN0aWxsIGltcGxlbWVudCB0aGlzIGFzIGFu IEFGVEVSIHRyaWdnZXIsIGJ1dCBpdCdzIG5vbi1kZWZlcnJhYmxlLgorICovCitEYXR1bQor VFJJX0ZLZXlfcmVzdHJpY3RfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sg dGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFu ZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfcmVzdHJp Y3RfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBO TyBBQ1RJT04vVVBEQVRFIGNhc2VzLiAqLworCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dl ckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7Cit9CisKKy8qCisgKiBUUklfRktl eV9ub2FjdGlvbl91cGQgLQorICoKKyAqIEdpdmUgYW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0 aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqIHVwZGF0ZSBoYXMgcmVzdWx0ZWQg aW4gYSB2aW9sYXRpb24gb2YgdGhlIGdpdmVuIHJlZmVyZW50aWFsCisgKiBpbnRlZ3JpdHkg Y29uc3RyYWludC4KKyAqLworRGF0dW0KK1RSSV9GS2V5X25vYWN0aW9uX3VwZChQR19GVU5D VElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIg Y2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2Vy KGZjaW5mbywgIlRSSV9GS2V5X25vYWN0aW9uX3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7 CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggUkVTVFJJQ1QvREVMRVRFIGNhc2VzLiAqLworCXJl dHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCB0cnVl KTsKK30KKworLyoKKyAqIFRSSV9GS2V5X3Jlc3RyaWN0X3VwZCAtCisgKgorICogUmVzdHJp Y3QgdXBkYXRlIG9mIFBLIHRvIHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5Lgor ICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwg YWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hlbgorICogdGhlIHVwZGF0ZSBpcyBwZXJmb3JtZWQs IHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBhcHBlYXJzIHRvIGJlCisgKiB0aGUgb25seSBk aWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIgYW5kICJSRVNUUklDVCIuICBJbiBQb3N0 Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRoaXMgYXMgYW4gQUZURVIgdHJpZ2dlciwg YnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9yZXN0cmlj dF91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2 YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJp X0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9yZXN0cmljdF91cGQiLCBSSV9UUklH VFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIE5PIEFDVElPTi9ERUxFVEUg Y2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQsIGZhbHNlKTsKK30KIAogLyoKICAqIFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3Jl cXVpcmVkIC0KQEAgLTEyNDEsNyArMTQ1NCw3IEBAIFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3Jl cXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIHBrX3JlbCwKIAkJcmV0dXJuIGZh bHNlOwogCiAJLyogSWYgYWxsIG9sZCBhbmQgbmV3IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBu byBjaGVjayBpcyBuZWVkZWQgKi8KLQlpZiAobmV3c2xvdCAmJiByaV9LZXlzRXF1YWwocGtf cmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8sIHRydWUpKQorCWlmIChuZXdzbG90ICYm IHJpX0tleXNTdGFibGUocGtfcmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8sIHRydWUp KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFbHNlIHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJp Z2dlci4gKi8KQEAgLTEzNDAsNyArMTU1Myw3IEBAIFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3Jl cXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwKIAkJcmV0dXJuIHRy dWU7CiAKIAkvKiBJZiBhbGwgb2xkIGFuZCBuZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5v IGNoZWNrIGlzIG5lZWRlZCAqLwotCWlmIChyaV9LZXlzRXF1YWwoZmtfcmVsLCBvbGRzbG90 LCBuZXdzbG90LCByaWluZm8sIGZhbHNlKSkKKwlpZiAocmlfS2V5c1N0YWJsZShma19yZWws IG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgZmFsc2UpKQogCQlyZXR1cm4gZmFsc2U7CiAK IAkvKiBFbHNlIHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KQEAgLTE0ODgsMTUg KzE3MDEsMTcgQEAgUklfSW5pdGlhbF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlv biBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAlzZXAgPSAiKCI7CiAJZm9yIChpbnQgaSA9 IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJewotCQlPaWQJCQlwa190eXBlID0gUklB dHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJT2lkCQkJZmtfdHlw ZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJ CXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tp XSk7Ci0JCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CisJCU9pZAlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlp bmZvLT5wa19hdHRudW1zW2ldKTsKKwkJT2lkCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQlPaWQJcGtfY29sbCA9IFJJQXR0Q29sbGF0 aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJT2lkCWZrX2NvbGwgPSBS SUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKIAkJcXVv dGVPbmVOYW1lKHBrYXR0bmFtZSArIDMsCiAJCQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pKTsKKwogCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lICsgMywK IAkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCiAJ CXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHNlcCwKIAkJCQkJCXBrYXR0bmFtZSwgcGtf dHlwZSwKIAkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKQEAgLTIxMzcsNiArMjM1Miw3 IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3RyYWludE9pZCkKIAlyaWluZm8g PSAoUklfQ29uc3RyYWludEluZm8gKikgaGFzaF9zZWFyY2gocmlfY29uc3RyYWludF9jYWNo ZSwKIAkJCQkJCQkJCQkJICAgJmNvbnN0cmFpbnRPaWQsCiAJCQkJCQkJCQkJCSAgIEhBU0hf RU5URVIsICZmb3VuZCk7CisKIAlpZiAoIWZvdW5kKQogCQlyaWluZm8tPnZhbGlkID0gZmFs c2U7CiAJZWxzZSBpZiAocmlpbmZvLT52YWxpZCkKQEAgLTIxNzEsNiArMjM4Nyw3IEBAIHJp X0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3RyYWludE9pZCkKIAlyaWluZm8tPmNvbmZ1 cGR0eXBlID0gY29uRm9ybS0+Y29uZnVwZHR5cGU7CiAJcmlpbmZvLT5jb25mZGVsdHlwZSA9 IGNvbkZvcm0tPmNvbmZkZWx0eXBlOwogCXJpaW5mby0+Y29uZm1hdGNodHlwZSA9IGNvbkZv cm0tPmNvbmZtYXRjaHR5cGU7CisJcmlpbmZvLT50ZW1wb3JhbCA9IGNvbkZvcm0tPmNvbndp dGhvdXRvdmVybGFwczsKIAogCURlY29uc3RydWN0RmtDb25zdHJhaW50Um93KHR1cCwKIAkJ CQkJCQkgICAmcmlpbmZvLT5ua2V5cywKQEAgLTIxODIsNiArMjM5OSwxOCBAQCByaV9Mb2Fk Q29uc3RyYWludEluZm8oT2lkIGNvbnN0cmFpbnRPaWQpCiAJCQkJCQkJICAgJnJpaW5mby0+ bmRlbHNldGNvbHMsCiAJCQkJCQkJICAgcmlpbmZvLT5jb25mZGVsc2V0Y29scyk7CiAKKwkv KgorCSAqIEZvciB0ZW1wb3JhbCBGS3MsIGdldCB0aGUgb3BlcmF0b3IgYW5kIGFnZ3JlZ2F0 ZSBmdW5jdGlvbiB3ZSBuZWVkLgorCSAqIFdlIGFzayB0aGUgb3BjbGFzcyBvZiB0aGUgUEsg ZWxlbWVudCBmb3IgdGhpcy4KKwkgKiBUaGlzIGFsbCBnZXRzIGNhY2hlZCAoYXMgZG9lcyB0 aGUgZ2VuZXJhdGVkIHBsYW4pLAorCSAqIHNvIHRoZXJlJ3Mgbm8gcGVyZm9ybWFuY2UgaXNz dWUuCisJICovCisJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJeworCQlPaWQJb3BjbGFzcyA9 IGdldF9pbmRleF9jb2x1bW5fb3BjbGFzcyhjb25Gb3JtLT5jb25pbmRpZCwgcmlpbmZvLT5u a2V5cyk7CisJCUZpbmRGS1BlcmlvZE9wZXJzQW5kUHJvY3Mob3BjbGFzcywgJnJpaW5mby0+ cGVyaW9kX2NvbnRhaW5lZF9ieV9vcGVyLCAmcmlpbmZvLT5wZXJpb2RfcmVmZXJlbmNlZF9h Z2dfcHJvYyk7CisJfQorCiAJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CiAKIAkvKgpAQCAtMjc5 MSw5ICszMDIwLDEyIEBAIHJpX0hhc2hQcmVwYXJlZFBsYW4oUklfUXVlcnlLZXkgKmtleSwg U1BJUGxhblB0ciBwbGFuKQogCiAKIC8qCi0gKiByaV9LZXlzRXF1YWwgLQorICogcmlfS2V5 c1N0YWJsZSAtCiAgKgotICogQ2hlY2sgaWYgYWxsIGtleSB2YWx1ZXMgaW4gT0xEIGFuZCBO RVcgYXJlIGVxdWFsLgorICogQ2hlY2sgaWYgYWxsIGtleSB2YWx1ZXMgaW4gT0xEIGFuZCBO RVcgYXJlICJlcXVpdmFsZW50IjoKKyAqIEZvciBub3JtYWwgRktzIHdlIGNoZWNrIGZvciBl cXVhbGl0eS4KKyAqIEZvciB0ZW1wb3JhbCBGS3Mgd2UgY2hlY2sgdGhhdCB0aGUgUEsgc2lk ZSBpcyBhIHN1cGVyc2V0IG9mIGl0cyBvbGQgdmFsdWUsCisgKiBvciB0aGUgRksgc2lkZSBp cyBhIHN1YnNldC4KICAqCiAgKiBOb3RlOiBhdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdpc2gg dG8gcmVkZWZpbmUgdGhpcyBhcyBjaGVja2luZyBmb3IKICAqICJJUyBOT1QgRElTVElOQ1Qi IHJhdGhlciB0aGFuICI9IiwgdGhhdCBpcywgYWxsb3cgdHdvIG51bGxzIHRvIGJlCkBAIC0y ODAxLDcgKzMwMzMsNyBAQCByaV9IYXNoUHJlcGFyZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXks IFNQSVBsYW5QdHIgcGxhbikKICAqIHByZXZpb3VzbHkgZm91bmQgYXQgbGVhc3Qgb25lIG9m IHRoZSByb3dzIHRvIGNvbnRhaW4gbm8gbnVsbHMuCiAgKi8KIHN0YXRpYyBib29sCi1yaV9L ZXlzRXF1YWwoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVU YWJsZVNsb3QgKm5ld3Nsb3QsCityaV9LZXlzU3RhYmxlKFJlbGF0aW9uIHJlbCwgVHVwbGVU YWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAogCQkJIGNvbnN0 IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGJvb2wgcmVsX2lzX3BrKQogewogCWNvbnN0 IGludDE2ICphdHRudW1zOwpAQCAtMjgzNCwzNSArMzA2Niw4NiBAQCByaV9LZXlzRXF1YWwo UmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3Qg Km5ld3Nsb3QsCiAKIAkJaWYgKHJlbF9pc19waykKIAkJewotCQkJLyoKLQkJCSAqIElmIHdl IGFyZSBsb29raW5nIGF0IHRoZSBQSyB0YWJsZSwgdGhlbiBkbyBhIGJ5dGV3aXNlCi0JCQkg KiBjb21wYXJpc29uLiAgV2UgbXVzdCBwcm9wYWdhdGUgUEsgY2hhbmdlcyBpZiB0aGUgdmFs dWUgaXMKLQkJCSAqIGNoYW5nZWQgdG8gb25lIHRoYXQgImxvb2tzIiBkaWZmZXJlbnQgYnV0 IHdvdWxkIGNvbXBhcmUgYXMKLQkJCSAqIGVxdWFsIHVzaW5nIHRoZSBlcXVhbGl0eSBvcGVy YXRvci4gIFRoaXMgb25seSBtYWtlcyBhCi0JCQkgKiBkaWZmZXJlbmNlIGZvciBPTiBVUERB VEUgQ0FTQ0FERSwgYnV0IGZvciBjb25zaXN0ZW5jeSB3ZSB0cmVhdAotCQkJICogYWxsIGNo YW5nZXMgdG8gdGhlIFBLIHRoZSBzYW1lLgotCQkJICovCi0JCQlGb3JtX3BnX2F0dHJpYnV0 ZSBhdHQgPSBUdXBsZURlc2NBdHRyKG9sZHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIGF0 dG51bXNbaV0gLSAxKTsKKwkJCWlmIChyaWluZm8tPnRlbXBvcmFsICYmIGkgPT0gcmlpbmZv LT5ua2V5cyAtIDEpCisJCQl7CisJCQkJaWYgKHJpX1JhbmdlQXR0cmlidXRlTmVlZHNDaGVj ayh0cnVlLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9 CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZiB3ZSBhcmUgbG9va2luZyBhdCB0 aGUgUEsgdGFibGUsIHRoZW4gZG8gYSBieXRld2lzZQorCQkJCSAqIGNvbXBhcmlzb24uICBX ZSBtdXN0IHByb3BhZ2F0ZSBQSyBjaGFuZ2VzIGlmIHRoZSB2YWx1ZSBpcworCQkJCSAqIGNo YW5nZWQgdG8gb25lIHRoYXQgImxvb2tzIiBkaWZmZXJlbnQgYnV0IHdvdWxkIGNvbXBhcmUg YXMKKwkJCQkgKiBlcXVhbCB1c2luZyB0aGUgZXF1YWxpdHkgb3BlcmF0b3IuICBUaGlzIG9u bHkgbWFrZXMgYQorCQkJCSAqIGRpZmZlcmVuY2UgZm9yIE9OIFVQREFURSBDQVNDQURFLCBi dXQgZm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0CisJCQkJICogYWxsIGNoYW5nZXMgdG8gdGhl IFBLIHRoZSBzYW1lLgorCQkJCSAqLworCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1 cGxlRGVzY0F0dHIob2xkc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgYXR0bnVtc1tpXSAt IDEpOwogCi0JCQlpZiAoIWRhdHVtX2ltYWdlX2VxKG9sZHZhbHVlLCBuZXd2YWx1ZSwgYXR0 LT5hdHRieXZhbCwgYXR0LT5hdHRsZW4pKQotCQkJCXJldHVybiBmYWxzZTsKKwkJCQlpZiAo IWRhdHVtX2ltYWdlX2VxKG9sZHZhbHVlLCBuZXd2YWx1ZSwgYXR0LT5hdHRieXZhbCwgYXR0 LT5hdHRsZW4pKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CiAJCX0KIAkJZWxzZQogCQl7 Ci0JCQkvKgotCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFyZSB3aXRoIHRoZSBhcHBy b3ByaWF0ZSBlcXVhbGl0eQotCQkJICogb3BlcmF0b3IuICBDaGFuZ2VzIHRoYXQgY29tcGFy ZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhlCi0JCQkgKiBjb25zdHJhaW50IGFmdGVy IHRoZSB1cGRhdGUuCi0JCQkgKi8KLQkJCWlmICghcmlfQXR0cmlidXRlc0VxdWFsKHJpaW5m by0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJlbCwgYXR0bnVtc1tpXSksCi0JCQkJCQkJ CQlvbGR2YWx1ZSwgbmV3dmFsdWUpKQotCQkJCXJldHVybiBmYWxzZTsKKwkJCWlmIChyaWlu Zm8tPnRlbXBvcmFsICYmIGkgPT0gcmlpbmZvLT5ua2V5cyAtIDEpCisJCQl7CisJCQkJaWYg KHJpX1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayhmYWxzZSwgb2xkdmFsdWUsIG5ld3ZhbHVl KSkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJ CQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFyZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBl cXVhbGl0eQorCQkJCSAqIG9wZXJhdG9yLiAgQ2hhbmdlcyB0aGF0IGNvbXBhcmUgZXF1YWwg d2lsbCBzdGlsbCBzYXRpc2Z5IHRoZQorCQkJCSAqIGNvbnN0cmFpbnQgYWZ0ZXIgdGhlIHVw ZGF0ZS4KKwkJCQkgKi8KKwkJCQlpZiAoIXJpX0F0dHJpYnV0ZXNFcXVhbChyaWluZm8tPmZm X2VxX29wcnNbaV0sIFJJQXR0VHlwZShyZWwsIGF0dG51bXNbaV0pLAorCQkJCQkJCQkJCW9s ZHZhbHVlLCBuZXd2YWx1ZSkpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KIAkJfQogCX0K IAogCXJldHVybiB0cnVlOwogfQogCisvKgorICogcmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0No ZWNrIC0KKyAqCisgKiBDb21wYXJlIG9sZCBhbmQgbmV3IHZhbHVlcywgYW5kIHJldHVybiB0 cnVlIGlmIHdlIG5lZWQgdG8gY2hlY2sgdGhlIEZLLgorICoKKyAqIE5COiB3ZSBoYXZlIGFs cmVhZHkgY2hlY2tlZCB0aGF0IG5laXRoZXIgdmFsdWUgaXMgbnVsbC4KKyAqLworc3RhdGlj IGJvb2wKK3JpX1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayhib29sIHJlbF9pc19waywgRGF0 dW0gb2xkdmFsdWUsIERhdHVtIG5ld3ZhbHVlKQoreworCVJhbmdlVHlwZSAqb2xkcmFuZ2Us ICpuZXdyYW5nZTsKKwlPaWQgb2xkcm5ndHlwZSwgbmV3cm5ndHlwZTsKKwlUeXBlQ2FjaGVF bnRyeSAqdHlwY2FjaGU7CisKKwlvbGRyYW5nZSA9IERhdHVtR2V0UmFuZ2VUeXBlUChvbGR2 YWx1ZSk7CisJbmV3cmFuZ2UgPSBEYXR1bUdldFJhbmdlVHlwZVAobmV3dmFsdWUpOworCW9s ZHJuZ3R5cGUgPSBSYW5nZVR5cGVHZXRPaWQob2xkcmFuZ2UpOworCW5ld3JuZ3R5cGUgPSBS YW5nZVR5cGVHZXRPaWQobmV3cmFuZ2UpOworCisJaWYgKG9sZHJuZ3R5cGUgIT0gbmV3cm5n dHlwZSkKKwkJZWxvZyhFUlJPUiwgInJhbmdlIHR5cGVzIGFyZSBpbmNvbnNpc3RlbnQiKTsK KworCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUob2xkcm5ndHlwZSwgVFlQRUNBQ0hF X1JBTkdFX0lORk8pOworCWlmICh0eXBjYWNoZS0+cm5nZWxlbXR5cGUgPT0gTlVMTCkKKwkJ ZWxvZyhFUlJPUiwgInR5cGUgJXUgaXMgbm90IGEgcmFuZ2UgdHlwZSIsIG9sZHJuZ3R5cGUp OworCisJaWYgKHJlbF9pc19waykKKwkJLyogSWYgdGhlIFBLJ3MgcmFuZ2Ugc2hydW5rLCBh IGNvbmZsaWN0IGlzIHBvc3NpYmxlLiAqLworCQlyZXR1cm4gIXJhbmdlX2VxX2ludGVybmFs KHR5cGNhY2hlLCBvbGRyYW5nZSwgbmV3cmFuZ2UpICYmCisJCQkhcmFuZ2VfY29udGFpbnNf aW50ZXJuYWwodHlwY2FjaGUsIG5ld3JhbmdlLCBvbGRyYW5nZSk7CisJZWxzZQorCQkvKiBJ ZiB0aGUgRksncyByYW5nZSBncmV3LCBhIGNvbmZsaWN0IGlzIHBvc3NpYmxlLiAqLworCQly ZXR1cm4gIXJhbmdlX2VxX2ludGVybmFsKHR5cGNhY2hlLCBvbGRyYW5nZSwgbmV3cmFuZ2Up ICYmCisJCQlyYW5nZV9jb250YWluc19pbnRlcm5hbCh0eXBjYWNoZSwgbmV3cmFuZ2UsIG9s ZHJhbmdlKTsKK30KIAogLyoKICAqIHJpX0F0dHJpYnV0ZXNFcXVhbCAtCkBAIC0zMDIxLDEy ICszMzA0LDQ5IEBAIFJJX0ZLZXlfdHJpZ2dlcl90eXBlKE9pZCB0Z2ZvaWQpCiAJCWNhc2Ug Rl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgogCQljYXNlIEZfUklfRktFWV9OT0FDVElPTl9E RUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZ X1JFU1RSSUNUX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX1VQRDoKKwkJY2Fz ZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX05PQUNUSU9O X1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BLOwogCiAJCWNhc2UgRl9SSV9GS0VZX0NI RUNLX0lOUzoKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hFQ0tfVVBEOgorCQljYXNlIEZfVFJJX0ZL RVlfQ0hFQ0tfSU5TOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0hFQ0tfVVBEOgogCQkJcmV0dXJu IFJJX1RSSUdHRVJfRks7CiAJfQogCiAJcmV0dXJuIFJJX1RSSUdHRVJfTk9ORTsKIH0KKwor LyoKKyAqIGxvb2t1cFRSSU9wZXJBbmRQcm9jIC0KKyAqCisgKiBHZXRzIHRoZSBuYW1lcyBv ZiB0aGUgb3BlcmF0b3IgYW5kIGFnZ3JlZ2F0ZSBmdW5jdGlvbgorICogdXNlZCB0byBidWls ZCB0aGUgU1FMIGZvciBUUkkgY29uc3RyYWludHMuCisgKiBSYWlzZXMgYW4gZXJyb3IgaWYg ZWl0aGVyIGlzIG5vdCBmb3VuZC4KKyAqLworc3RhdGljIHZvaWQKK2xvb2t1cFRSSU9wZXJB bmRQcm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGNoYXIgKipvcG5hbWUs IGNoYXIgKiphZ2duYW1lKQoreworCU9pZAlvaWQ7CisKKwlvaWQgPSByaWluZm8tPnBlcmlv ZF9jb250YWluZWRfYnlfb3BlcjsKKwlpZiAoIU9pZElzVmFsaWQob2lkKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJ CSBlcnJtc2coIm5vIENvbnRhaW5lZEJ5IG9wZXJhdG9yIGZvciBmb3JlaWduIGtleSBjb25z dHJhaW50IFwiJXNcIiIsCisJCQkJCQlOYW1lU3RyKHJpaW5mby0+Y29ubmFtZSkpLAorCQkJ CSBlcnJoaW50KCJZb3UgbXVzdCB1c2UgYW4gb3BlcmF0b3IgY2xhc3Mgd2l0aCBhIG1hdGNo aW5nIENvbnRhaW5lZEJ5IG9wZXJhdG9yLiIpKSk7CisJKm9wbmFtZSA9IGdldF9vcG5hbWUo b2lkKTsKKworCW9pZCA9IHJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRfYWdnX3Byb2M7CisJ aWYgKCFPaWRJc1ZhbGlkKG9pZCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNnKCJubyByZWZlcmVuY2Vk YWdnIHN1cHBvcnQgZnVuY3Rpb24gZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgXCIlc1wi IiwKKwkJCQkJCU5hbWVTdHIocmlpbmZvLT5jb25uYW1lKSksCisJCQkJIGVycmhpbnQoIllv dSBtdXN0IHVzZSBhbiBvcGVyYXRvciBjbGFzcyB3aXRoIGEgcmVmZXJlbmNlZGFnZyBzdXBw b3J0IGZ1bmN0aW9uLiIpKSk7CisJKmFnZ25hbWUgPSBnZXRfZnVuY19uYW1lX2FuZF9uYW1l c3BhY2Uob2lkKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBkMTQw YWI0YmRkYS4uNWFlZGIxODg3MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMK QEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgY2hhciAqcGdfZ2V0X3ZpZXdkZWZfd29ya2Vy KE9pZCB2aWV3b2lkLAogCQkJCQkJCQkgICBpbnQgcHJldHR5RmxhZ3MsIGludCB3cmFwQ29s dW1uKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfdHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdp ZCwgYm9vbCBwcmV0dHkpOwogc3RhdGljIGludAlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2Fy cmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAotCQkJCQkJCQkJCSBi b29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpOworCQkJCQkJCQkJCSBib29s IHdpdGhvdXRPdmVybGFwcywgYm9vbCB3aXRoUGVyaW9kLCBTdHJpbmdJbmZvIGJ1Zik7CiBz dGF0aWMgY2hhciAqcGdfZ2V0X3J1bGVkZWZfd29ya2VyKE9pZCBydWxlb2lkLCBpbnQgcHJl dHR5RmxhZ3MpOwogc3RhdGljIGNoYXIgKnBnX2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGlu ZGV4cmVsaWQsIGludCBjb2xubywKIAkJCQkJCQkJCWNvbnN0IE9pZCAqZXhjbHVkZU9wcywK QEAgLTIyNDcsNyArMjI0Nyw5IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQg Y29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0 QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0 cmFpbnRfY29ua2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFs LCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2UsICZidWYpOworCQkJCS8qIElmIGl0IGlzIGEg dGVtcG9yYWwgZm9yZWlnbiBrZXkgdGhlbiBpdCB1c2VzIFBFUklPRC4gKi8KKwkJCQlkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNl LAorCQkJCQkJCQkJCQkgY29uRm9ybS0+Y29ud2l0aG91dG92ZXJsYXBzLCAmYnVmKTsKIAog CQkJCS8qIGFkZCBmb3JlaWduIHJlbGF0aW9uIG5hbWUgKi8KIAkJCQlhcHBlbmRTdHJpbmdJ bmZvKCZidWYsICIpIFJFRkVSRU5DRVMgJXMoIiwKQEAgLTIyNTgsNyArMjI2MCw4IEBAIHBn X2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxD b21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0 dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZmtleSk7CiAKLQkJCQlk ZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29uZnJlbGlkLCBm YWxzZSwgJmJ1Zik7CisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNv bkZvcm0tPmNvbmZyZWxpZCwgZmFsc2UsCisJCQkJCQkJCQkJCSBjb25Gb3JtLT5jb253aXRo b3V0b3ZlcmxhcHMsICZidWYpOwogCiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1Ziwg JyknKTsKIApAQCAtMjM0NCw3ICsyMzQ3LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29y a2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJaWYgKCFpc251 bGwpCiAJCQkJewogCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICIgKCIpOwot CQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVs aWQsIGZhbHNlLCAmYnVmKTsKKwkJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2 YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBmYWxzZSwgZmFsc2UsICZidWYpOwogCQkJCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCQkJCX0KIApAQCAtMjM3OSw3ICsyMzgy LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJv b2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05T VFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25rZXkpOwog Ci0JCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25G b3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29ud2l0aG91dG92ZXJsYXBzLCAmYnVmKTsKKwkJ CQlrZXlhdHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0t PmNvbnJlbGlkLCBjb25Gb3JtLT5jb253aXRob3V0b3ZlcmxhcHMsIGZhbHNlLCAmYnVmKTsK IAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTI1NzUsNyAr MjU3OCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElk LCBib29sIGZ1bGxDb21tYW5kLAogICovCiBzdGF0aWMgaW50CiBkZWNvbXBpbGVfY29sdW1u X2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAotCQkJ CQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpCisJCQkJCQkJIGJv b2wgd2l0aG91dE92ZXJsYXBzLCBib29sIHdpdGhQZXJpb2QsIFN0cmluZ0luZm8gYnVmKQog ewogCURhdHVtCSAgICprZXlzOwogCWludAkJCW5LZXlzOwpAQCAtMjU5NCw3ICsyNTk3LDkg QEAgZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJy YXksIE9pZCByZWxJZCwKIAkJaWYgKGogPT0gMCkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAkJZWxzZQotCQkJYXBwZW5k U3RyaW5nSW5mbyhidWYsICIsICVzIiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CisJ CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMlcyIsCisJCQkJCQkJICh3aXRoUGVyaW9k ICYmIGogPT0gbktleXMgLSAxKSA/ICJQRVJJT0QgIiA6ICIiLAorCQkJCQkJCSBxdW90ZV9p ZGVudGlmaWVyKGNvbE5hbWUpKTsKIAl9CiAJaWYgKHdpdGhvdXRPdmVybGFwcykKIAkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgV0lUSE9VVCBPVkVSTEFQUyIpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCA4ZWM4MzU2MWJmYS4uNzEzYWU2MTkz MWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0xNjI3LDYgKzE2 MjcsMzcgQEAgZ2V0X2Z1bmNfbmFtZShPaWQgZnVuY2lkKQogCQlyZXR1cm4gTlVMTDsKIH0K IAorLyoKKyAqIGdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZQorICoJICByZXR1cm5zIHRo ZSBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVu IGZ1bmNpZAorICoKKyAqIE5vdGU6IHJldHVybnMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZSBz dHJpbmcsIG9yIE5VTEwgaWYgbm8gc3VjaCBmdW5jdGlvbi4KKyAqLworY2hhciAqCitnZXRf ZnVuY19uYW1lX2FuZF9uYW1lc3BhY2UoT2lkIGZ1bmNpZCkKK3sKKwlIZWFwVHVwbGUJdHA7 CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBPYmplY3RJZEdldERhdHVtKGZ1 bmNpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfcHJv YyBmdW5jdHVwID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHRwKTsKKwkJY2hhcgkgICAq bmFtZXNwID0gZ2V0X25hbWVzcGFjZV9uYW1lKGZ1bmN0dXAtPnByb25hbWVzcGFjZSk7CisJ CWNoYXIJICAgKmZ1bmMgPSBOYW1lU3RyKGZ1bmN0dXAtPnByb25hbWUpOworCQljaGFyCSAg ICpyZXN1bHQ7CisJCWludAkJCWxlbiA9IHN0cmxlbihuYW1lc3ApICsgc3RybGVuKGZ1bmMp ICsgMjsKKworCQlyZXN1bHQgPSBwYWxsb2MobGVuICogc2l6ZW9mKGNoYXIpKTsKKwkJc25w cmludGYocmVzdWx0LCBsZW4sICIlcy4lcyIsIG5hbWVzcCwgZnVuYyk7CisKKwkJcGZyZWUo bmFtZXNwKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9 CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KKwogLyoKICAqIGdldF9mdW5jX25hbWVzcGFj ZQogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKaW5kZXggOGZkNzZhOTRk NzguLjc1ODA0ZDY2ZWU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaApA QCAtMTI3LDE5ICsxMjcsMTkgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3Ry YWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNvbmZrZXlbMV07CiAKIAkvKgotCSAqIElmIGEg Zm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZLIGVxdWFsaXR5IG9wZXJhdG9y cyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9 IEZLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJICogY29sdW1uIG9mIHRoZSBj b25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFdIEJLSV9MT09LVVAocGdfb3Bl cmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUg UEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24g a2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3Ig ZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9y IHRoZSByZWZlcmVuY2VkIGNvbHVtbnMpCiAJICovCiAJT2lkCQkJY29ucHBlcW9wWzFdIEJL SV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0 aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkg KiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBjb21wYXJpc29u IG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5l LiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zKQogCSAqLwogCU9pZAkJ CWNvbmZmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKQEAgLTE4MSw3ICsxODEs NyBAQCBERUNMQVJFX0lOREVYKHBnX2NvbnN0cmFpbnRfY29ucGFyZW50aWRfaW5kZXgsIDI1 NzksIENvbnN0cmFpbnRQYXJlbnRJbmRleElkLCBwZwogCiAvKiBjb25rZXkgY2FuIGNvbnRh aW4gemVybyAoSW52YWxpZEF0dHJOdW1iZXIpIGlmIGEgd2hvbGUtcm93IFZhciBpcyB1c2Vk ICovCiBERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgoY29ucmVsaWQsIGNvbmtleSks IHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKLURFQ0xBUkVfQVJSQVlfRk9S RUlHTl9LRVkoKGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlk LCBhdHRudW0pKTsKK0RFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVlfT1BUKChjb25mcmVsaWQs IGNvbmZrZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwgYXR0bnVtKSk7CiAKICNpZmRl ZiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5k ZXggNTliMGE2OTc0OTYuLjg2ZmM3ZDI3ZDc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKQEAgLTM5NDUsNiArMzk0NSwzMCBAQAogICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywg cHJvYXJndHlwZXMgPT4gJycsCiAgIHByb3NyYyA9PiAnUklfRktleV9ub2FjdGlvbl91cGQn IH0sCiAKKyMgVGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IGNvbnN0cmFpbnQgdHJp Z2dlcnMKK3sgb2lkID0+ICc2MTIyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFs IGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHByb25hbWUgPT4g J1RSSV9GS2V5X2NoZWNrX2lucycsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9 PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5 X2NoZWNrX2lucycgfSwKK3sgb2lkID0+ICc2MTIzJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJl ZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHBy b25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJv cmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4g J1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lkID0+ICc2MTI2JywgZGVzY3IgPT4gJ3Rl bXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgUkVTVFJJQ1QnLAorICBw cm9uYW1lID0+ICdUUklfRktleV9yZXN0cmljdF9kZWwnLCBwcm92b2xhdGlsZSA9PiAndics CisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJv c3JjID0+ICdUUklfRktleV9yZXN0cmljdF9kZWwnIH0sCit7IG9pZCA9PiAnNjEyNycsIGRl c2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIFJFU1RS SUNUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJywgcHJvdm9sYXRp bGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4g JycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJyB9LAoreyBvaWQgPT4g JzYxMzInLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERF TEVURSBOTyBBQ1RJT04nLAorICBwcm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwn LCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9h cmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnIH0s Cit7IG9pZCA9PiAnNjEzMycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRl Z3JpdHkgT04gVVBEQVRFIE5PIEFDVElPTicsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X25v YWN0aW9uX3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJp Z2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X25vYWN0 aW9uX3VwZCcgfSwKKwogeyBvaWQgPT4gJzE2NjYnLAogICBwcm9uYW1lID0+ICd2YXJiaXRl cScsIHByb2xlYWtwcm9vZiA9PiAndCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAogICBwcm9h cmd0eXBlcyA9PiAndmFyYml0IHZhcmJpdCcsIHByb3NyYyA9PiAnYml0ZXEnIH0sCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2RlZnJlbS5oCmluZGV4IGIyNWZmMmE4NzczLi44YjYwNTYyZTI2ZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvZGVmcmVtLmgKQEAgLTUwLDggKzUwLDEwIEBAIGV4dGVybiBib29sIENoZWNr SW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIGV4dGVybiBPaWQJR2V0RGVmYXVsdE9wQ2xh c3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9pZCk7CiBleHRlcm4gT2lkCVJlc29sdmVPcENsYXNz KGNvbnN0IExpc3QgKm9wY2xhc3MsIE9pZCBhdHRyVHlwZSwKIAkJCQkJCSAgIGNvbnN0IGNo YXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9pZCBhY2Nlc3NNZXRob2RJZCk7Ci1leHRlcm4gdm9p ZCBHZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJhdGVneShPaWQgb3BjbGFzcywgT2lkIGF0 dHR5cGUsCi0JCQkJCQkJCQkJCSBjb25zdCBjaGFyICpvcG5hbWUsIE9pZCAqb3BpZCwKK2V4 dGVybiB2b2lkIEdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KE9pZCBvcGNsYXNz LCBPaWQgcmhzdHlwZSwKKwkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKm9wbmFtZSwKKwkJCQkJ CQkJCQkJIGNvbnN0IGNoYXIgKmNvbnRleHQsCisJCQkJCQkJCQkJCSBPaWQgKm9waWQsCiAJ CQkJCQkJCQkJCSBTdHJhdGVneU51bWJlciAqc3RyYXQpOwogCiAvKiBjb21tYW5kcy9mdW5j dGlvbmNtZHMuYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVj bWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaAppbmRleCA2MGQ5Yjhm NWI1Zi4uOTY3Njk0NzJiYmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Rh YmxlY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCkBAIC0x MDUsNSArMTA1LDggQEAgZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlv bihjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkJIE9pZCByZWxJZCwgT2lk IG9sZFJlbElkLCB2b2lkICphcmcpOwogZXh0ZXJuIGJvb2wgUGFydENvbnN0cmFpbnRJbXBs aWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCiAJCQkJCQkJCQkJCQkgTGlz dCAqcGFydENvbnN0cmFpbnQpOworZXh0ZXJuIHZvaWQgRmluZEZLUGVyaW9kT3BlcnNBbmRQ cm9jcyhPaWQgb3BjbGFzcywKKwkJCQkJCQkJCSAgT2lkICpwZXJpb2RvcGVyb2lkLAorCQkJ CQkJCQkJICBPaWQgKnBlcmlvZHByb2NvaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogVEFCTEVD TURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA0NzZkNTVkZDI0MC4uOGY0 ZjhjZTZhNzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTI1NjQsNiArMjU2NCwx MCBAQCB0eXBlZGVmIGVudW0gQ29uc3RyVHlwZQkJCS8qIHR5cGVzIG9mIGNvbnN0cmFpbnRz ICovCiAjZGVmaW5lIEZLQ09OU1RSX01BVENIX1BBUlRJQUwJCSdwJwogI2RlZmluZSBGS0NP TlNUUl9NQVRDSF9TSU1QTEUJCSdzJwogCisvKiBGb3JlaWduIGtleSB3aXRoIFBFUklPRCBw b3NpdGlvbnMgKi8KKyNkZWZpbmUgRktDT05TVFJfUEVSSU9EX09QX0NPTlRBSU5FRF9CWQkw CisjZGVmaW5lIEZLQ09OU1RSX1BFUklPRF9QUk9DX1JFRkVSRU5DRURfQUdHIDAKKwogdHlw ZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogewogCXBnX25vZGVfYXR0cihjdXN0b21fcmVhZF93 cml0ZSkKQEAgLTI2MTAsNyArMjYxNCw5IEBAIHR5cGVkZWYgc3RydWN0IENvbnN0cmFpbnQK IAkvKiBGaWVsZHMgdXNlZCBmb3IgRk9SRUlHTiBLRVkgY29uc3RyYWludHM6ICovCiAJUmFu Z2VWYXIgICAqcGt0YWJsZTsJCS8qIFByaW1hcnkga2V5IHRhYmxlICovCiAJTGlzdAkgICAq ZmtfYXR0cnM7CQkvKiBBdHRyaWJ1dGVzIG9mIGZvcmVpZ24ga2V5ICovCisJTm9kZQkgICAq ZmtfcGVyaW9kOwkJLyogU3RyaW5nIG5vZGUgbmFtaW5nIFBlcmlvZCBvciByYW5nZSBjb2x1 bW4gKi8KIAlMaXN0CSAgICpwa19hdHRyczsJCS8qIENvcnJlc3BvbmRpbmcgYXR0cnMgaW4g UEsgdGFibGUgKi8KKwlOb2RlCSAgICpwa19wZXJpb2Q7CQkvKiBTdHJpbmcgbm9kZSBuYW1p bmcgUGVyaW9kIG9yIHJhbmdlIGNvbHVtbiAqLwogCWNoYXIJCWZrX21hdGNodHlwZTsJLyog RlVMTCwgUEFSVElBTCwgU0lNUExFICovCiAJY2hhcgkJZmtfdXBkX2FjdGlvbjsJLyogT04g VVBEQVRFIGFjdGlvbiAqLwogCWNoYXIJCWZrX2RlbF9hY3Rpb247CS8qIE9OIERFTEVURSBh Y3Rpb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCAyMzMxYWNhYzA5MS4uMWQzZjdiZDM3 ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMyNiw2ICszMjYsNyBAQCBQR19LRVlXT1JE KCJwYXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09S RCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGVyaW9k IiwgUEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggYmU5ZWQ3MGU4NDEuLjYyYzI1 NjkxZWFkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTIwLDYgKzEyMCw3IEBAIGV4 dGVybiBPaWQJZ2V0X25lZ2F0b3IoT2lkIG9wbm8pOwogZXh0ZXJuIFJlZ1Byb2NlZHVyZSBn ZXRfb3BycmVzdChPaWQgb3Bubyk7CiBleHRlcm4gUmVnUHJvY2VkdXJlIGdldF9vcHJqb2lu KE9pZCBvcG5vKTsKIGV4dGVybiBjaGFyICpnZXRfZnVuY19uYW1lKE9pZCBmdW5jaWQpOwor ZXh0ZXJuIGNoYXIgKmdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZShPaWQgZnVuY2lkKTsK IGV4dGVybiBPaWQJZ2V0X2Z1bmNfbmFtZXNwYWNlKE9pZCBmdW5jaWQpOwogZXh0ZXJuIE9p ZAlnZXRfZnVuY19yZXR0eXBlKE9pZCBmdW5jaWQpOwogZXh0ZXJuIGludAlnZXRfZnVuY19u YXJncyhPaWQgZnVuY2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp dGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDcyNmU5NDEwMmJmLi5jNjMzNzM4YzJlYiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0 CkBAIC0zOTMsMyArMzkzLDU2NCBAQCBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CiAoMSByb3cpCiAKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7 CistLQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCistLSBjYW4ndCBkcm9wIGEgcmFu Z2UgcmVmZXJlbmNlZCBieSBhbiBGSywgdW5sZXNzIHdpdGggQ0FTQ0FERQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWwzIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0VSUk9SOiAgY2Fu bm90IGRyb3AgY29sdW1uIHZhbGlkX2F0IG9mIHRhYmxlIHRlbXBvcmFsMyBiZWNhdXNlIG90 aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBjb25zdHJhaW50IHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsgb24gdGFibGUgdGVtcG9yYWxfZmtfcm5nMnJuZyBkZXBlbmRzIG9u IGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB0ZW1wb3JhbDMKK0hJTlQ6ICBVc2UgRFJPUCAu Li4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitBTFRFUiBU QUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKK05PVElDRTog IGRyb3AgY2FzY2FkZXMgdG8gY29uc3RyYWludCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIG9u IHRhYmxlIHRlbXBvcmFsX2ZrX3JuZzJybmcKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRlc3QgRk9SRUlHTiBLRVks IHJhbmdlIHJlZmVyZW5jZXMgcmFuZ2UKKy0tCistLSBDYW4ndCBjcmVhdGUgYSBGSyB3aXRo IGEgbWlzbWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGludDRyYW5nZSwKKwlwYXJlbnRf aWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wazIgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFs aWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9m a19ybmcycm5nX2ZrMiIgY2Fubm90IGJlIGltcGxlbWVudGVkCitERVRBSUw6ICBLZXkgY29s dW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNvbXBhdGlibGUgdHlw ZXM6IGludDRyYW5nZSBhbmQgdHNyYW5nZS4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRf aWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlk X2F0KQorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKKy0tIHdpdGggbWlz bWF0Y2hlZCBQRVJJT0QgY29sdW1uczoKKy0tIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkgUkVGRVJFTkNFUyAoaWQsIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVu dF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkK Kyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2lu ZyB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2VkIHRhYmxlCistLSAocGFyZW50X2lkLCB2 YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJ T0QgdmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0 aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2luZyB0YWJsZQorLS0g KHBhcmVudF9pZCwgdmFsaWRfYXQpIFJFRkVSRU5DRVMgW2ltcGxpY2l0XQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChw YXJlbnRfaWQsIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworKTsKK0VS Uk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUg YnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUKKy0tIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQpCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lk IGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQpCispOworRVJST1I6ICBm b3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNpbmcgdGFibGUgYnV0IG5v dCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorLS0gKHBhcmVudF9pZCkgUkVGRVJFTkNFUyAoaWQs IFBFUklPRCB2YWxpZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24g a2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlIGJ1dCBub3QgdGhlIHJl ZmVyZW5jaW5nIHRhYmxlCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2Vk IHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7 CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVt bnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsg Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQpCispOworRVJST1I6ICBmb3JlaWduIGtl eSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZXMK Ky0tIFR3byBzY2FsYXIgY29sdW1ucworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcy cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQx IGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19mayBGT1JFSUdO IEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQpCispOwor XGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1w b3JhbF9mazJfcm5nMnJuZyIKKyAgIENvbHVtbiAgIHwgICBUeXBlICAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgICB8IGludDRyYW5nZSB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgICB8IHRzcmFuZ2UgICB8ICAg ICAgICAgICB8IG5vdCBudWxsIHwgCisgcGFyZW50X2lkMSB8IGludDRyYW5nZSB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lkMiB8IGludDRyYW5nZSB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9mazJfcm5nMnJuZ19w ayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorRm9yZWln bi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrIiBGT1JF SUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KSBSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZzIoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCkKKworRFJP UCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxF IEFERCBDT05TVFJBSU5UCistLQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0 cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CistLSBUd28gc2NhbGFy IGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZDEgaW50NHJhbmdlLAor CXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJy bmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmsyX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50 X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQx LCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0ZW1wb3JhbF9mazJfcm5nMnJuZworICAg ICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX2ZrMl9ybmcycm5nIgorICAgQ29sdW1u ICAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBpZCAgICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2 YWxpZF9hdCAgIHwgdHNyYW5nZSAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBwYXJl bnRfaWQxIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBwYXJlbnRf aWQyIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6Cisg ICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCitGb3JlaWduLWtleSBjb25zdHJhaW50czoKKyAgICAidGVt cG9yYWxfZmsyX3JuZzJybmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRf aWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMihpZDEsIGlk MiwgUEVSSU9EIHZhbGlkX2F0KQorCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZl cmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgZGF0ZXJhbmdlIFVTSU5HIGRhdGVy YW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVwcGVyKHZhbGlkX2F0KTo6ZGF0ZSk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0VSUk9SOiAgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgY2Fubm90IGJlIGltcGxlbWVu dGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFy ZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGRhdGVyYW5nZSBhbmQgdHNyYW5nZS4KK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQ RSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBlcih2YWxpZF9h dCkpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gc2hvdWxkIGZhaWwgYmVjYXVz ZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsy CisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7CitFUlJPUjogIGZvcmVpZ24ga2V5 IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcwor LS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0tCitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0w MScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9ybmc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBv cmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQp PShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAw OjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCist LSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0 cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBn X2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVm ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhpZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEg cm93KQorCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKK0VSUk9SOiAgaW5zZXJ0IG9y IHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIKK0RFVEFJTDogIEtl eSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAg MjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBub3QgcHJlc2VudCBpbiB0 YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tIG5vdyBpdCBzaG91bGQgd29yazoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDItMDMn LCAnMjAxOC0wMy0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sx LDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorVVBEQVRFIHRlbXBv cmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMicsICcy MDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERB VEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIGluc2Vy dCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6 ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAw OjAwIDIwMTgiLCJUdWUgTWF5IDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQg aW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBT RVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRB SUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbOCw5KSwgWyJUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNl bnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBBTFRFUiBGSyBERUZFUlJBQkxFCitC RUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAgICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSksCisgICAgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKyAgSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgICAoJ1szLDNdJywgdHNyYW5nZSgnMjAx OC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworICBBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisgICAgQUxURVIgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7CisgIERFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7IC0tc2hvdWxkIG5vdCBmYWls IHlldC4KK0NPTU1JVDsgLS0gc2hvdWxkIGZhaWwgaGVyZS4KK0VSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCist LQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCistLSBhIFBLIHVw ZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJl bmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcg U0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRo b3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlz bid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3Jhbmdl KCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0w MScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1 c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFuZ2luZyB0aGUgc2NhbGFyIHBhcnQgZmFp bHM6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQor CVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVMRVRFIFJFU1RSSUNUOworLS0gYSBQ SyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJl ZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxf cm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScp IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZl biB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5n ZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNy YW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYt MDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBi ZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFs X3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5n MnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRo dSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0 IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFs X3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5n MnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRo dSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGlu ZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksg cGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1 Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdo IHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNy YW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQg ZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0 YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIK K0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVy ZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0 ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2Nl ZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywz XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf Zms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNU UklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRz IGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUg cmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIw MTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsg ZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRF IEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCist LSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsg ZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorLS0gdGVz dCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsK K0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5 cworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb Niw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFU RSBTRVQgTlVMTDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFs IGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51 bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEs LTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJ T04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK0VSUk9SOiAg YWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gRksg YmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisg IG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9O IEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUs NV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScpOworQ1JFQVRFIFRBQkxFIHRwMiBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdb MiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0n KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKKyAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwK KyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdv bmUnKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAx JyksICd0d28nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCXBhcmVudF9p ZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispIFBBUlRJVElPTiBC WSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNd JywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJM RSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBG T1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEw LDEwXScsICdbMTIsMTJdJyk7CistLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNlcnRzCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUworICAo J1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFd JyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDEtMDEtMDEnLCAnMjAwMi0wMS0wMScp LCAnWzIsMl0nKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAw LTAyLTE1JyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJh bmdlKCcyMDEwLTAxLTAxJywgJzIwMTAtMDItMTUnKSwgJ1sxLDFdJyk7CitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRma3AxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIgorREVUQUlM OiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDEwLDAyLTE1 LTIwMTApKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIi4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScp LCAnWzMsM10nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGZrcDEi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShb Myw0KSwgWzAxLTAxLTIwMDAsMDItMTUtMjAwMCkpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxl ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmciLgorLS0gcGFydGl0aW9uZWQgRksgY2hpbGQg dXBkYXRlcworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZh bGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTMnKSBXSEVSRSBp ZCA9ICdbMiwyXSc7CistLSBtb3ZlIGEgcm93IGZyb20gdGhlIGZpcnN0IHBhcnRpdGlvbiB0 byB0aGUgc2Vjb25kCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBT RVQgaWQgPSAnWzQsNF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIG1vdmUgYSByb3cgZnJv bSB0aGUgc2Vjb25kIHBhcnRpdGlvbiB0byB0aGUgZmlyc3QKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbMSwxXScgV0hFUkUgaWQgPSAnWzQs NF0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0w NC0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZh bHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZmtwMV9wa2V5IgorREVUQUlM OiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkp IGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsw MS0wMS0yMDAwLDA0LTAxLTIwMDApKS4KKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRh dGVzIE5PIEFDVElPTgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7 CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywg ZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0w Mi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQg ZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0y MDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdb NSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9O CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19w YXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCww Mi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0n OworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2 LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRf YXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpIFdIRVJFIGlkID0g J1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywz XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOwor VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor LS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2 YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKKyAgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRw MSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRh YmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNsZWFuIHVwOgor REVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJl bnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVz IFJFU1RSSUNUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT ICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRh dGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxk IGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlv bGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEt MDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIHBhcnRpdGlvbmVkIEZLIHBh cmVudCB1cGRhdGVzIENBU0NBREUKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIENB U0NBREUgT04gVVBEQVRFIENBU0NBREU7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVk IGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBk ZWxldGVzIENBU0NBREUKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBO VUxMCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUg U0VUIE5VTEw7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBm b3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxM CistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorQUxURVIg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4g cGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsK K0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5 cworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0RST1Ag VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0 X292ZXJsYXBzLnNxbAppbmRleCBjOGU4YWI5OTRhMC4uNjQxY2RkNWIxOWYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0yODgsMyArMjg4 LDUzOCBAQCBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlk LCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK IFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIERST1AgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWQ7CisKKy0tCistLSB0ZXN0IEZLIGRlcGVuZGVuY2llcwor LS0KKworLS0gY2FuJ3QgZHJvcCBhIHJhbmdlIHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVz cyB3aXRoIENBU0NBREUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsMyAoaWQs IFBFUklPRCB2YWxpZF9hdCkKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xV TU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRf YXQgQ0FTQ0FERTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0RST1AgVEFC TEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgcmFuZ2UgcmVmZXJl bmNlcyByYW5nZQorLS0KKworLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1pc21hdGNo ZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsyIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsK KworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRFJPUCBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nOworCistLSB3aXRoIG1pc21hdGNoZWQgUEVSSU9EIGNvbHVtbnM6 CistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkLCB2YWxp ZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpCispOworLS0gKHBhcmVudF9pZCwgdmFs aWRfYXQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9E IHZhbGlkX2F0KQorKTsKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIFtp bXBsaWNpdF0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9ybmcKKyk7CistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVS RU5DRVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkKQorKTsKKy0tIChwYXJlbnRfaWQpIFJFRkVSRU5D RVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lk IGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworCistLSB3aXRo IGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitE Uk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1 c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwK KwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBF UklPRCBpZCkKKyk7CisKKy0tIFR3byBzY2FsYXIgY29sdW1ucworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQyLCBQRVJJT0Qg dmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKK0RST1AgVEFCTEUgdGVt cG9yYWxfZmsyX3JuZzJybmc7CisKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05T VFJBSU5UCistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVt cG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KTsKKy0tIFR3byBzY2FsYXIgY29sdW1u czoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkMSBpbnQ0cmFuZ2UsCisJcGFyZW50 X2lkMiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIg VEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m azJfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQ RVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyIChpZDEsIGlkMiwg UEVSSU9EIHZhbGlkX2F0KTsKK1xkIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisKKy0tIHdpdGgg aW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUsIGFuZCB3cm9uZyBjb2x1bW4g dHlwZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQ RSBkYXRlcmFuZ2UgVVNJTkcgZGF0ZXJhbmdlKGxvd2VyKHZhbGlkX2F0KTo6ZGF0ZSwgdXBw ZXIodmFsaWRfYXQpOjpkYXRlKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFMVEVSIENPTFVNTiB2YWxp ZF9hdCBUWVBFIHRzcmFuZ2UgVVNJTkcgdHNyYW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVy KHZhbGlkX2F0KSk7CisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQg dGFibGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKworLS0gc2hvdWxk IGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9p ZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7CisKKy0tCist LSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAx OC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScp LCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmc7CistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworCistLQorLS0gdGVz dCBwZ19nZXRfY29uc3RyYWludGRlZgorLS0KKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50 ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxf Zmtfcm5nMnJuZ19mayc7CisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCisK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQg ZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBu b3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAzJywgJzIwMTgtMDMtMDMnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAx OC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworCistLQorLS0gdGVzdCBGSyBj aGlsZCB1cGRhdGVzCistLQorCitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9 ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdI RVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCBwYXJl bnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gQUxURVIgRksgREVG RVJSQUJMRQorCitCRUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUwor ICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSksCisg ICAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKyAg SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgICAoJ1szLDNdJywg dHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworICBBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgQUxURVIgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7 CisKKyAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsgLS1z aG91bGQgbm90IGZhaWwgeWV0LgorQ09NTUlUOyAtLSBzaG91bGQgZmFpbCBoZXJlLgorCist LQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZl cmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4g dGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2Ug aXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAz LTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVj YXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVu IGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRl IHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVh biB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lk ID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCistLQorCitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwor CU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVj YXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBh IFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlz IHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0w MS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsK Ky0tIGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2Vk OgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAx LTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgdGhl IHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcs N10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2Vl ZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhl IG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3Jhbmdl KCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWls cyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyBy ZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRl bGV0ZXMgUkVTVFJJQ1QKKy0tCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhl IG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3Jhbmdl KCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWls cyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyBy ZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RF TEVURSBvcHRpb25zCistLQorCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBD QVNDQURFIE9OIFVQREFURSBDQVNDQURFOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVz IFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlP TiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworCistLSB0ZXN0IEZLIHBh cmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJd Jyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBE QVRFIFNFVCBERUZBVUxUOworCistLSBGSyBiZXR3ZWVuIHBhcnRpdGlvbmVkIHRhYmxlcwor CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFC TEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVF UyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sx MSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAn WzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEt MDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIw MDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzIsMl0nLCBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndHdvJyk7CisKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQ RVJJT0QgdmFsaWRfYXQpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFC TEUgdGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg Rk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5 LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAn WzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CisKKy0t IHBhcnRpdGlvbmVkIEZLIGNoaWxkIGluc2VydHMKKworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpLAorICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDAxLTAxLTAxJywgJzIwMDItMDEtMDEnKSwgJ1syLDJdJyksCisgICgnWzIs Ml0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzEsMV0nKTsK Ky0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxMC0wMS0wMScsICcy MDEwLTAyLTE1JyksICdbMSwxXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0w MScsICcyMDAwLTAyLTE1JyksICdbMywzXScpOworCistLSBwYXJ0aXRpb25lZCBGSyBjaGls ZCB1cGRhdGVzCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNF VCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTEzJykgV0hF UkUgaWQgPSAnWzIsMl0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBmaXJzdCBwYXJ0aXRp b24gdG8gdGhlIHNlY29uZAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgU0VUIGlkID0gJ1s0LDRdJyBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBtb3ZlIGEgcm93 IGZyb20gdGhlIHNlY29uZCBwYXJ0aXRpb24gdG8gdGhlIGZpcnN0CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQgPSAnWzEsMV0nIFdIRVJFIGlkID0g J1s0LDRdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MDAtMDQtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBh cmVudCB1cGRhdGVzIE5PIEFDVElPTgorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSBXSEVSRSBpZCA9 ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT ICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMs M10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsK Ky0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCisgIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor CistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAn MjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcy MDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xl YW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJl bnQgdXBkYXRlcyBSRVNUUklDVAorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m aworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRh dGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScs ICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0w MScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0w MS0wMScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1 cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUg cGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBk ZWxldGVzIFJFU1RSSUNUCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7Cist LSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMg Q0FTQ0FERQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmss CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawor CQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQ REFURSBDQVNDQURFOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVND QURFCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCisKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVM TDsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKworLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKKworQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFy ZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKwor LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKKworRFJPUCBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmc7Ci0tIAoyLjQyLjAKCg== --------------iqvziU4Z040MH3WdnoYY4mNT Content-Type: text/x-patch; charset=UTF-8; name="v22-0005-Add-multi-range_without_portion-proc-operator.patch" Content-Disposition: attachment; filename*0="v22-0005-Add-multi-range_without_portion-proc-operator.patch" Content-Transfer-Encoding: base64 RnJvbSBjNzk0NmFmNjliMDExMTY0NWJkNGExZmUzYWZkZWFmYTQ3MTkyNGM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMzAgRGVjIDIwMjMgMjM6MTA6NTkgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMiA1LzhdIEFkZCB7bXVsdGksfXJhbmdlX3dpdGhvdXRf cG9ydGlvbiBwcm9jICYgb3BlcmF0b3IKClRoZXNlIHJldHVybiBhbiBhcnJheSBvZiB0aGVp ciBpbnB1dCB0eXBlIGFyZSB3b3JrIGxpa2UgbWludXMgYnV0IGRvbid0CmZhaWwgb24gc3Bs aXRzLiBUaGV5IG5ldmVyIGNvbnRhaW4gZW1wdHkgZWxlbWVudHMuIFdlIHdpbGwgdXNlIHRo aXMgdG8Kc3VwcG9ydCBGT1IgUE9SVElPTiBPRi4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvbXVsdGlyYW5nZXR5cGVzLmMgICAgICAgfCAgNDkgKysrKysrKwogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3JhbmdldHlwZXMuYyAgICAgICAgICAgIHwgMTI0ICsrKysrKysrKysrKysr KysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGVyYXRvci5kYXQgICAgICAgICAgIHwg ICA2ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8 ICAgNiArCiBzcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmggICAgICAgICAgICAgICAg fCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tdWx0aXJhbmdldHlwZXMub3V0 IHwgMTIxICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jh bmdldHlwZXMub3V0ICAgICAgfCAgNTQgKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L211bHRpcmFuZ2V0eXBlcy5zcWwgICAgICB8ICAyMiArKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9yYW5nZXR5cGVzLnNxbCAgICAgICAgICAgfCAgMTAgKysKIDkgZmlsZXMgY2hhbmdl ZCwgMzk0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvbXVsdGlyYW5nZXR5cGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5n ZXR5cGVzLmMKaW5kZXggZjgyZTZmNDJkOTguLmI3MDVhZWU2YmU1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVzLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jCkBAIC0xMjI2LDYgKzEyMjYsNTUgQEAg bXVsdGlyYW5nZV9taW51c19pbnRlcm5hbChPaWQgbWx0cm5ndHlwb2lkLCBUeXBlQ2FjaGVF bnRyeSAqcmFuZ2V0eXAsCiAJcmV0dXJuIG1ha2VfbXVsdGlyYW5nZShtbHRybmd0eXBvaWQs IHJhbmdldHlwLCByYW5nZV9jb3VudDMsIHJhbmdlczMpOwogfQogCisvKgorICogbXVsdGly YW5nZSBtaW51cyBidXQgcmV0dXJuaW5nIGFuIGFycmF5IG9mIG9uZSwKKyAqIG9yIHplcm8g aWYgdGhlIHJlc3VsdCB3b3VsZCBiZSBlbXB0eS4KKyAqLworCitEYXR1bQorbXVsdGlyYW5n ZV93aXRob3V0X3BvcnRpb24oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlNdWx0aXJhbmdlVHlw ZSAqbXIxID0gUEdfR0VUQVJHX01VTFRJUkFOR0VfUCgwKTsKKwlNdWx0aXJhbmdlVHlwZSAq bXIyID0gUEdfR0VUQVJHX01VTFRJUkFOR0VfUCgxKTsKKwlPaWQJCQltbHRybmd0eXBvaWQg PSBNdWx0aXJhbmdlVHlwZUdldE9pZChtcjEpOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNo ZTsKKwlUeXBlQ2FjaGVFbnRyeSAqcmFuZ2V0eXA7CisJaW50MzIJCXJhbmdlX2NvdW50MTsK KwlpbnQzMgkJcmFuZ2VfY291bnQyOworCVJhbmdlVHlwZSAqKnJhbmdlczE7CisJUmFuZ2VU eXBlICoqcmFuZ2VzMjsKKwlNdWx0aXJhbmdlVHlwZSAqbXI7CisJRGF0dW0JZGF0dW1zWzFd OworCUFycmF5VHlwZSAqcmV0OworCisJdHlwY2FjaGUgPSBtdWx0aXJhbmdlX2dldF90eXBj YWNoZShmY2luZm8sIG1sdHJuZ3R5cG9pZCk7CisJcmFuZ2V0eXAgPSB0eXBjYWNoZS0+cm5n dHlwZTsKKworCWlmIChNdWx0aXJhbmdlSXNFbXB0eShtcjEpIHx8IE11bHRpcmFuZ2VJc0Vt cHR5KG1yMikpCisJCW1yID0gbXIxOworCWVsc2UKKwl7CisJCW11bHRpcmFuZ2VfZGVzZXJp YWxpemUodHlwY2FjaGUtPnJuZ3R5cGUsIG1yMSwgJnJhbmdlX2NvdW50MSwgJnJhbmdlczEp OworCQltdWx0aXJhbmdlX2Rlc2VyaWFsaXplKHR5cGNhY2hlLT5ybmd0eXBlLCBtcjIsICZy YW5nZV9jb3VudDIsICZyYW5nZXMyKTsKKworCQltciA9IG11bHRpcmFuZ2VfbWludXNfaW50 ZXJuYWwobWx0cm5ndHlwb2lkLAorCQkJCQkJCQkJICAgcmFuZ2V0eXAsCisJCQkJCQkJCQkg ICByYW5nZV9jb3VudDEsCisJCQkJCQkJCQkgICByYW5nZXMxLAorCQkJCQkJCQkJICAgcmFu Z2VfY291bnQyLAorCQkJCQkJCQkJICAgcmFuZ2VzMik7CisJfQorCisJaWYgKE11bHRpcmFu Z2VJc0VtcHR5KG1yKSkKKwkJUEdfUkVUVVJOX0FSUkFZVFlQRV9QKGNvbnN0cnVjdF9lbXB0 eV9hcnJheSh0eXBjYWNoZS0+dHlwZV9pZCkpOworCWVsc2UKKwl7CisJCWRhdHVtc1swXSA9 IE11bHRpcmFuZ2VUeXBlUEdldERhdHVtKG1yKTsKKwkJcmV0ID0gY29uc3RydWN0X2FycmF5 KGRhdHVtcywgMSwgdHlwY2FjaGUtPnR5cGVfaWQsIHR5cGNhY2hlLT50eXBsZW4sIHR5cGNh Y2hlLT50eXBieXZhbCwgdHlwY2FjaGUtPnR5cGFsaWduKTsKKwkJUEdfUkVUVVJOX0FSUkFZ VFlQRV9QKHJldCk7CisJfQorfQorCiAvKiBtdWx0aXJhbmdlIGludGVyc2VjdGlvbiAqLwog RGF0dW0KIG11bHRpcmFuZ2VfaW50ZXJzZWN0KFBHX0ZVTkNUSU9OX0FSR1MpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3JhbmdldHlwZXMuYwppbmRleCBkOTliMDBiNTkwOC4uYTBlYzQ2ODJhNWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYwpAQCAtMzcsNiArMzcsNyBAQAog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgog I2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheS5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpAQCAtMTIwNiw2ICsxMjA3LDEyOSBA QCByYW5nZV9zcGxpdF9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0 IFJhbmdlVHlwZSAqcjEsIGNvbnN0IFJhbmdlVAogCXJldHVybiBmYWxzZTsKIH0KIAorLyog c3VidHJhY3Rpb24gYnV0IHJldHVybmluZyBhbiBhcnJheSB0byBhY2NvbW1vZGF0ZSBzcGxp dHMgKi8KK0RhdHVtCityYW5nZV93aXRob3V0X3BvcnRpb24oUEdfRlVOQ1RJT05fQVJHUykK K3sKKwlSYW5nZVR5cGUgICpyMSA9IFBHX0dFVEFSR19SQU5HRV9QKDApOworCVJhbmdlVHlw ZSAgKnIyID0gUEdfR0VUQVJHX1JBTkdFX1AoMSk7CisJUmFuZ2VUeXBlICAqcnNbMl07CisJ aW50CQkJbjsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisKKwkvKiBEaWZmZXJlbnQg dHlwZXMgc2hvdWxkIGJlIHByZXZlbnRlZCBieSBBTllSQU5HRSBtYXRjaGluZyBydWxlcyAq LworCWlmIChSYW5nZVR5cGVHZXRPaWQocjEpICE9IFJhbmdlVHlwZUdldE9pZChyMikpCisJ CWVsb2coRVJST1IsICJyYW5nZSB0eXBlcyBkbyBub3QgbWF0Y2giKTsKKworCXR5cGNhY2hl ID0gcmFuZ2VfZ2V0X3R5cGNhY2hlKGZjaW5mbywgUmFuZ2VUeXBlR2V0T2lkKHIxKSk7CisK KwlyYW5nZV93aXRob3V0X3BvcnRpb25faW50ZXJuYWwodHlwY2FjaGUsIHIxLCByMiwgcnMs ICZuKTsKKworCWlmIChuID09IDApCisJCVBHX1JFVFVSTl9BUlJBWVRZUEVfUChjb25zdHJ1 Y3RfZW1wdHlfYXJyYXkodHlwY2FjaGUtPnR5cGVfaWQpKTsKKwllbHNlCisJeworCQlEYXR1 bQkJeHNbMl07CisJCWludAkJCWk7CisJCUFycmF5VHlwZQkqcmV0OworCisJCWZvciAoaSA9 IDA7IGkgPCBuOyBpKyspCisJCQl4c1tpXSA9IFJhbmdlVHlwZVBHZXREYXR1bShyc1tpXSk7 CisKKwkJcmV0ID0gY29uc3RydWN0X2FycmF5KHhzLCBuLCB0eXBjYWNoZS0+dHlwZV9pZCwg dHlwY2FjaGUtPnR5cGxlbiwgdHlwY2FjaGUtPnR5cGJ5dmFsLCB0eXBjYWNoZS0+dHlwYWxp Z24pOworCQlQR19SRVRVUk5fQVJSQVlUWVBFX1AocmV0KTsKKwl9Cit9CisKKy8qCisgKiBy YW5nZV93aXRob3V0X3BvcnRpb25faW50ZXJuYWwgLSBTZXRzIG91dHB1dHMgYW5kIG91dHB1 dG4gdG8gdGhlIHJhbmdlcworICogcmVtYWluaW5nIGFuZCB0aGVpciBjb3VudCAocmVzcGVj dGl2ZWx5KSBhZnRlciBzdWJ0cmFjdGluZyByMiBmcm9tIHIxLgorICogVGhlIGFycmF5IHNo b3VsZCBuZXZlciBjb250YWluIGVtcHR5IHJhbmdlcy4KKyAqIFRoZSBvdXRwdXRzIHdpbGwg YmUgb3JkZXJlZC4gV2UgZXhwZWN0IHRoYXQgb3V0cHV0cyBpcyBhbiBhcnJheSBvZgorICog UmFuZ2VUeXBlIHBvaW50ZXJzLCBhbHJlYWR5IGFsbG9jYXRlZCB3aXRoIHR3byBzbG90cy4K KyAqLwordm9pZAorcmFuZ2Vfd2l0aG91dF9wb3J0aW9uX2ludGVybmFsKFR5cGVDYWNoZUVu dHJ5ICp0eXBjYWNoZSwgUmFuZ2VUeXBlICpyMSwKKwkJCQkJCQkgICBSYW5nZVR5cGUgKnIy LCBSYW5nZVR5cGUgKipvdXRwdXRzLCBpbnQgKm91dHB1dG4pCit7CisJaW50CQkJY21wX2wx bDIsCisJCQkJY21wX2wxdTIsCisJCQkJY21wX3UxbDIsCisJCQkJY21wX3UxdTI7CisJUmFu Z2VCb3VuZAlsb3dlcjEsCisJCQkJbG93ZXIyOworCVJhbmdlQm91bmQJdXBwZXIxLAorCQkJ CXVwcGVyMjsKKwlib29sCQllbXB0eTEsCisJCQkJZW1wdHkyOworCisJcmFuZ2VfZGVzZXJp YWxpemUodHlwY2FjaGUsIHIxLCAmbG93ZXIxLCAmdXBwZXIxLCAmZW1wdHkxKTsKKwlyYW5n ZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZSwgcjIsICZsb3dlcjIsICZ1cHBlcjIsICZlbXB0eTIp OworCisJaWYgKGVtcHR5MSkKKwl7CisJCS8qIGlmIHIxIGlzIGVtcHR5IHRoZW4gcjEgLSBy MiBpcyBlbXB0eSwgc28gcmV0dXJuIHplcm8gcmVzdWx0cyAqLworCQkqb3V0cHV0biA9IDA7 CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAoZW1wdHkyKQorCXsKKwkJLyogcjIgaXMgZW1w dHkgc28gdGhlIHJlc3VsdCBpcyBqdXN0IHIxICh3aGljaCB3ZSBrbm93IGlzIG5vdCBlbXB0 eSkgKi8KKwkJb3V0cHV0c1swXSA9IHIxOworCQkqb3V0cHV0biA9IDE7CisJCXJldHVybjsK Kwl9CisKKwkvKgorCSAqIFVzZSB0aGUgc2FtZSBsb2dpYyBhcyByYW5nZV9taW51c19pbnRl cm5hbCwKKwkgKiBidXQgc3VwcG9ydCB0aGUgc3BsaXQgY2FzZQorCSAqLworCWNtcF9sMWwy ID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMik7CisJY21w X2wxdTIgPSByYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmdXBwZXIyKTsK KwljbXBfdTFsMiA9IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZ1cHBlcjEsICZsb3dl cjIpOworCWNtcF91MXUyID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJnVwcGVyMSwg JnVwcGVyMik7CisKKwlpZiAoY21wX2wxbDIgPCAwICYmIGNtcF91MXUyID4gMCkKKwl7CisJ CWxvd2VyMi5pbmNsdXNpdmUgPSAhbG93ZXIyLmluY2x1c2l2ZTsKKwkJbG93ZXIyLmxvd2Vy ID0gZmFsc2U7CS8qIGl0IHdpbGwgYmVjb21lIHRoZSB1cHBlciBib3VuZCAqLworCQlvdXRw dXRzWzBdID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMiwgZmFsc2Us IE5VTEwpOworCisJCXVwcGVyMi5pbmNsdXNpdmUgPSAhdXBwZXIyLmluY2x1c2l2ZTsKKwkJ dXBwZXIyLmxvd2VyID0gdHJ1ZTsJLyogaXQgd2lsbCBiZWNvbWUgdGhlIGxvd2VyIGJvdW5k ICovCisJCW91dHB1dHNbMV0gPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAmdXBwZXIyLCAmdXBw ZXIxLCBmYWxzZSwgTlVMTCk7CisKKwkJKm91dHB1dG4gPSAyOworCX0KKwllbHNlIGlmIChj bXBfbDF1MiA+IDAgfHwgY21wX3UxbDIgPCAwKQorCXsKKwkJb3V0cHV0c1swXSA9IHIxOwor CQkqb3V0cHV0biA9IDE7CisJfQorCWVsc2UgaWYgKGNtcF9sMWwyID49IDAgJiYgY21wX3Ux dTIgPD0gMCkKKwl7CisJCSpvdXRwdXRuID0gMDsKKwl9CisJZWxzZSBpZiAoY21wX2wxbDIg PD0gMCAmJiBjbXBfdTFsMiA+PSAwICYmIGNtcF91MXUyIDw9IDApCisJeworCQlsb3dlcjIu aW5jbHVzaXZlID0gIWxvd2VyMi5pbmNsdXNpdmU7CisJCWxvd2VyMi5sb3dlciA9IGZhbHNl OwkvKiBpdCB3aWxsIGJlY29tZSB0aGUgdXBwZXIgYm91bmQgKi8KKwkJb3V0cHV0c1swXSA9 IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIsIGZhbHNlLCBOVUxMKTsK KwkJKm91dHB1dG4gPSAxOworCX0KKwllbHNlIGlmIChjbXBfbDFsMiA+PSAwICYmIGNtcF91 MXUyID49IDAgJiYgY21wX2wxdTIgPD0gMCkKKwl7CisJCXVwcGVyMi5pbmNsdXNpdmUgPSAh dXBwZXIyLmluY2x1c2l2ZTsKKwkJdXBwZXIyLmxvd2VyID0gdHJ1ZTsJLyogaXQgd2lsbCBi ZWNvbWUgdGhlIGxvd2VyIGJvdW5kICovCisJCW91dHB1dHNbMF0gPSBtYWtlX3JhbmdlKHR5 cGNhY2hlLCAmdXBwZXIyLCAmdXBwZXIxLCBmYWxzZSwgTlVMTCk7CisJCSpvdXRwdXRuID0g MTsKKwl9CisJZWxzZQorCXsKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgY2FzZSBpbiBy YW5nZV93aXRob3V0X3BvcnRpb24iKTsKKwl9Cit9CisKIC8qIHJhbmdlIC0+IHJhbmdlIGFn Z3JlZ2F0ZSBmdW5jdGlvbnMgKi8KIAogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGVy YXRvci5kYXQKaW5kZXggMGU3NTExZGRlMWMuLmQyMjZjODRhYWIzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX29wZXJhdG9yLmRhdApAQCAtMzQ1Nyw1ICszNDU3LDExIEBACiAgIG9wcnJl c3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPDwoYW55bXVsdGlyYW5nZSxhbnltdWx0aXJh bmdlKScsCiAgIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2VfYWZ0ZXJfbXVsdGlyYW5nZScsIG9w cnJlc3QgPT4gJ211bHRpcmFuZ2VzZWwnLAogICBvcHJqb2luID0+ICdzY2FsYXJndGpvaW5z ZWwnIH0sCit7IG9pZCA9PiAnODQwOScsIGRlc2NyID0+ICdyYW5nZSB3aXRob3V0IHBvcnRp b24nLAorICBvcHJuYW1lID0+ICdALScsIG9wcmxlZnQgPT4gJ2FueXJhbmdlJywgb3Bycmln aHQgPT4gJ2FueXJhbmdlJywKKyAgb3BycmVzdWx0ID0+ICdhbnlhcnJheScsIG9wcmNvZGUg PT4gJ3JhbmdlX3dpdGhvdXRfcG9ydGlvbicgfSwKK3sgb2lkID0+ICc4NDA3JywgZGVzY3Ig PT4gJ211bHRpcmFuZ2Ugd2l0aG91dCBwb3J0aW9uJywKKyAgb3BybmFtZSA9PiAnQC0nLCBv cHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2FueW11bHRpcmFuZ2Un LAorICBvcHJyZXN1bHQgPT4gJ2FueWFycmF5Jywgb3ByY29kZSA9PiAnbXVsdGlyYW5nZV93 aXRob3V0X3BvcnRpb24nIH0sCiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4 IDg2ZmM3ZDI3ZDc5Li4yYjM2Y2VkNTUwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CkBAIC0xMDU3MCw2ICsxMDU3MCw5IEBACiB7IG9pZCA9PiAnMzg2OScsCiAgIHByb25hbWUg PT4gJ3JhbmdlX21pbnVzJywgcHJvcmV0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBwcm9hcmd0 eXBlcyA9PiAnYW55cmFuZ2UgYW55cmFuZ2UnLCBwcm9zcmMgPT4gJ3JhbmdlX21pbnVzJyB9 LAoreyBvaWQgPT4gJzg0MDgnLAorICBwcm9uYW1lID0+ICdyYW5nZV93aXRob3V0X3BvcnRp b24nLCBwcm9yZXR0eXBlID0+ICdhbnlhcnJheScsCisgIHByb2FyZ3R5cGVzID0+ICdhbnly YW5nZSBhbnlyYW5nZScsIHByb3NyYyA9PiAncmFuZ2Vfd2l0aG91dF9wb3J0aW9uJyB9LAog eyBvaWQgPT4gJzM4NzAnLCBkZXNjciA9PiAnbGVzcy1lcXVhbC1ncmVhdGVyJywKICAgcHJv bmFtZSA9PiAncmFuZ2VfY21wJywgcHJvcmV0dHlwZSA9PiAnaW50NCcsCiAgIHByb2FyZ3R5 cGVzID0+ICdhbnlyYW5nZSBhbnlyYW5nZScsIHByb3NyYyA9PiAncmFuZ2VfY21wJyB9LApA QCAtMTA4NTcsNiArMTA4NjAsOSBAQAogeyBvaWQgPT4gJzQyNzEnLAogICBwcm9uYW1lID0+ ICdtdWx0aXJhbmdlX21pbnVzJywgcHJvcmV0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCiAg IHByb2FyZ3R5cGVzID0+ICdhbnltdWx0aXJhbmdlIGFueW11bHRpcmFuZ2UnLCBwcm9zcmMg PT4gJ211bHRpcmFuZ2VfbWludXMnIH0sCit7IG9pZCA9PiAnODQwNicsCisgIHByb25hbWUg PT4gJ211bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uJywgcHJvcmV0dHlwZSA9PiAnYW55YXJy YXknLAorICBwcm9hcmd0eXBlcyA9PiAnYW55bXVsdGlyYW5nZSBhbnltdWx0aXJhbmdlJywg cHJvc3JjID0+ICdtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbicgfSwKIHsgb2lkID0+ICc0 MjcyJywKICAgcHJvbmFtZSA9PiAnbXVsdGlyYW5nZV9pbnRlcnNlY3QnLCBwcm9yZXR0eXBl ID0+ICdhbnltdWx0aXJhbmdlJywKICAgcHJvYXJndHlwZXMgPT4gJ2FueW11bHRpcmFuZ2Ug YW55bXVsdGlyYW5nZScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5 cGVzLmggYi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKaW5kZXggMmI1NzQ4NzNj ZWYuLmUxYjI1NmI2NWY0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5 cGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCkBAIC0xNjQsNSAr MTY0LDcgQEAgZXh0ZXJuIFJhbmdlVHlwZSAqbWFrZV9lbXB0eV9yYW5nZShUeXBlQ2FjaGVF bnRyeSAqdHlwY2FjaGUpOwogZXh0ZXJuIGJvb2wgcmFuZ2Vfc3BsaXRfaW50ZXJuYWwoVHlw ZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBjb25zdCBSYW5nZVR5cGUgKnIxLAogCQkJCQkJCQkg Y29uc3QgUmFuZ2VUeXBlICpyMiwgUmFuZ2VUeXBlICoqb3V0cHV0MSwKIAkJCQkJCQkJIFJh bmdlVHlwZSAqKm91dHB1dDIpOworZXh0ZXJuIHZvaWQgcmFuZ2Vfd2l0aG91dF9wb3J0aW9u X2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgUmFuZ2VUeXBlICpyMSwKKwkJ CQkJCQkJCVJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dHMsIGludCAqb3V0cHV0 bik7CiAKICNlbmRpZgkJCQkJCQkvKiBSQU5HRVRZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVzLm91dAppbmRleCBhMGNiODc1NDky OC4uMjk3YWEwY2M4NTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv bXVsdGlyYW5nZXR5cGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211 bHRpcmFuZ2V0eXBlcy5vdXQKQEAgLTIyMDAsNiArMjIwMCwxMjcgQEAgU0VMRUNUIG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0aXJhbmdl KG51bXJhbmdlKC0yLDAKICB7WzEsMiksWzQsNSl9CiAoMSByb3cpCiAKKy0tIHdpdGhvdXRf cG9ydGlvbgorU0VMRUNUIG51bW11bHRpcmFuZ2UoKSBALSBudW1tdWx0aXJhbmdlKCk7Cisg P2NvbHVtbj8gCistLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRp cmFuZ2UoKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpOworID9jb2x1bW4/IAor LS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDEsMikpIEAtIG51bW11bHRpcmFuZ2UoKTsKKyAgP2NvbHVtbj8gICAKKy0tLS0tLS0t LS0tLS0KKyB7IntbMSwyKX0ifQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShu dW1yYW5nZSgxLDIpLCBudW1yYW5nZSgzLDQpKSBALSBudW1tdWx0aXJhbmdlKCk7CisgICAg ID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzEsMiksWzMsNCl9 In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkgQC0g bnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0K KyB7fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSBA LSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsNCkpOworICA/Y29sdW1uPyAgIAorLS0tLS0t LS0tLS0tLQorIHsie1sxLDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMyw0KSk7CisgID9j b2x1bW4/ICAgCistLS0tLS0tLS0tLS0tCisgeyJ7WzEsMil9In0KKygxIHJvdykKKworU0VM RUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1y YW5nZSgxLDIpKTsKKyAgP2NvbHVtbj8gICAKKy0tLS0tLS0tLS0tLS0KKyB7IntbMiw0KX0i fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsMykpOworICAgICA/Y29sdW1uPyAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLQorIHsie1sxLDIpLFszLDQpfSJ9CisoMSByb3cpCisKK1NFTEVD VCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFu Z2UoMCw4KSk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VM RUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1y YW5nZSgwLDIpKTsKKyAgP2NvbHVtbj8gICAKKy0tLS0tLS0tLS0tLS0KKyB7IntbMiw0KX0i fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDgpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsMiksIG51bXJhbmdlKDMsNCkpOworICAgICA/Y29s dW1uPyAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsie1syLDMpLFs0LDgpfSJ9Ciso MSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsOCkpIEAtIG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMiwzKSwgbnVtcmFuZ2UoNSxudWxsKSk7CisgICAgID9jb2x1 bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzEsMiksWzMsNSl9In0KKygx IHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2Uo NCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgtMiwwKSk7CisgICAgID9jb2x1bW4/ ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzEsMiksWzQsNSl9In0KKygxIHJv dykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1 KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDQpKTsKKyAgICAgP2NvbHVtbj8gICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbNCw1KX0ifQorKDEgcm93KQor CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBA LSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDMsNSkpOworICA/Y29sdW1uPyAgIAorLS0tLS0t LS0tLS0tLQorIHsie1sxLDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFu Z2UoMCw5KSk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VM RUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwzKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVt bXVsdGlyYW5nZShudW1yYW5nZSgyLDkpKTsKKyAgP2NvbHVtbj8gICAKKy0tLS0tLS0tLS0t LS0KKyB7IntbMSwyKX0ifQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1y YW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDgs OSkpOworICAgICA/Y29sdW1uPyAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsie1sx LDIpLFs0LDUpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdl KDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoLTIsMCks IG51bXJhbmdlKDgsOSkpOworICAgICA/Y29sdW1uPyAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLQorIHsie1sxLDIpLFs0LDUpfSJ9CisoMSByb3cpCisKIC0tIGludGVyc2VjdGlvbgog U0VMRUNUIG51bW11bHRpcmFuZ2UoKSAqIG51bW11bHRpcmFuZ2UoKTsKICA/Y29sdW1uPyAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JhbmdldHlwZXMub3V0CmluZGV4IGVlMDJm ZjAxNjMxLi4xZjE0ZTk2ODAyYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9yYW5nZXR5cGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jh bmdldHlwZXMub3V0CkBAIC00ODEsNiArNDgxLDYwIEBAIHNlbGVjdCByYW5nZV9taW51cyhu dW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDAuMCwxMjAuMiwnKF0nKSk7CiAg ZW1wdHkKICgxIHJvdykKIAorc2VsZWN0ICdlbXB0eSc6Om51bXJhbmdlIEAtIG51bXJhbmdl KDIuMCwgMy4wKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitz ZWxlY3QgbnVtcmFuZ2UoMS4xLCAyLjIpIEAtICdlbXB0eSc6Om51bXJhbmdlOworICAgP2Nv bHVtbj8gICAgCistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4yKSJ9CisoMSByb3cpCisK K3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2UoMi4wLCAzLjApOworICAg P2NvbHVtbj8gICAgCistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4wKSJ9CisoMSByb3cp CisKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2UoMi4yLCAzLjApOwor ICAgP2NvbHVtbj8gICAgCistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4yKSJ9CisoMSBy b3cpCisKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMiwnW10nKSBALSBudW1yYW5nZSgyLjAs IDMuMCk7CisgICA/Y29sdW1uPyAgICAKKy0tLS0tLS0tLS0tLS0tLQorIHsiWzEuMSwyLjAp In0KKygxIHJvdykKKworc2VsZWN0IG51bXJhbmdlKDEuMCwgMy4wKSBALSBudW1yYW5nZSgx LjUsIDIuMCk7CisgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHsiWzEuMCwxLjUpIiwiWzIuMCwzLjApIn0KKygxIHJvdykKKwor c2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyks IG51bXJhbmdlKDExMC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiWzEwLjEsMTIuMl0ifQorKDEgcm93KQor CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEwLjEsMTIuMiwnW10n KSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK3NlbGVjdCByYW5n ZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4wLDMuMCwnW10nKSwgbnVtcmFuZ2UoMS41 LDIuMCwnKF0nKSk7CisgICByYW5nZV93aXRob3V0X3BvcnRpb24gICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHsiWzEuMCwxLjVdIiwiKDIuMCwzLjBdIn0KKygxIHJvdykK Kwogc2VsZWN0IG51bXJhbmdlKDQuNSwgNS41LCAnW10nKSAmJiBudW1yYW5nZSg1LjUsIDYu NSk7CiAgP2NvbHVtbj8gCiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9tdWx0aXJhbmdldHlwZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVs dGlyYW5nZXR5cGVzLnNxbAppbmRleCBmZWZiNGI0ZDQyMi4uNjU5MjcyNzkxYmYgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNxbApAQCAtNDE0LDYgKzQx NCwyOCBAQCBTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDMpLCBudW1yYW5nZSg0 LDUpKSAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiw5KQogU0VMRUNUIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDgsOSkpOwogU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFu Z2UoNCw1KSkgLSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDApLCBudW1yYW5nZSg4LDkp KTsKIAorLS0gd2l0aG91dF9wb3J0aW9uCitTRUxFQ1QgbnVtbXVsdGlyYW5nZSgpIEAtIG51 bW11bHRpcmFuZ2UoKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKCkgQC0gbnVtbXVsdGlyYW5n ZShudW1yYW5nZSgxLDIpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikp IEAtIG51bW11bHRpcmFuZ2UoKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEs MiksIG51bXJhbmdlKDMsNCkpIEAtIG51bW11bHRpcmFuZ2UoKTsKK1NFTEVDVCBudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSk7 CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSBALSBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDIsNCkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkg QC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgzLDQpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSk7CitTRUxF Q1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDIsMykpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVt bXVsdGlyYW5nZShudW1yYW5nZSgwLDgpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDEsNCkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMCwyKSk7CitTRUxFQ1QgbnVt bXVsdGlyYW5nZShudW1yYW5nZSgxLDgpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDAs MiksIG51bXJhbmdlKDMsNCkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw4 KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDMpLCBudW1yYW5nZSg1LG51bGwpKTsK K1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAt IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoLTIsMCkpOworU0VMRUNUIG51bW11bHRpcmFuZ2Uo bnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5n ZSgyLDQpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdl KDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMyw1KSk7CitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDAsOSkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwzKSwg bnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDkpKTsKK1NFTEVD VCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoOCw5KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5n ZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDAp LCBudW1yYW5nZSg4LDkpKTsKKwogLS0gaW50ZXJzZWN0aW9uCiBTRUxFQ1QgbnVtbXVsdGly YW5nZSgpICogbnVtbXVsdGlyYW5nZSgpOwogU0VMRUNUIG51bW11bHRpcmFuZ2UoKSAqIG51 bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9yYW5nZXR5cGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JhbmdldHlw ZXMuc3FsCmluZGV4IGMyM2JlOTI4YzMyLi41NjJkNDZjNWRhOSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcmFuZ2V0eXBlcy5zcWwKQEAgLTEwNyw2ICsxMDcsMTYgQEAgc2VsZWN0IG51bXJh bmdlKDEuMSwgMi4yLCdbXScpIC0gbnVtcmFuZ2UoMi4wLCAzLjApOwogc2VsZWN0IHJhbmdl X21pbnVzKG51bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwgbnVtcmFuZ2UoMTEwLjAsMTIwLjIs JyhdJykpOwogc2VsZWN0IHJhbmdlX21pbnVzKG51bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwg bnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKIAorc2VsZWN0ICdlbXB0eSc6Om51bXJhbmdl IEAtIG51bXJhbmdlKDIuMCwgMy4wKTsKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0g J2VtcHR5Jzo6bnVtcmFuZ2U7CitzZWxlY3QgbnVtcmFuZ2UoMS4xLCAyLjIpIEAtIG51bXJh bmdlKDIuMCwgMy4wKTsKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2Uo Mi4yLCAzLjApOworc2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yLCdbXScpIEAtIG51bXJhbmdl KDIuMCwgMy4wKTsKK3NlbGVjdCBudW1yYW5nZSgxLjAsIDMuMCkgQC0gbnVtcmFuZ2UoMS41 LCAyLjApOworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgxMC4xLDEy LjIsJ1tdJyksIG51bXJhbmdlKDExMC4wLDEyMC4yLCcoXScpKTsKK3NlbGVjdCByYW5nZV93 aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMTAuMSwxMi4yLCdbXScpLCBudW1yYW5nZSgwLjAs MTIwLjIsJyhdJykpOworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgx LjAsMy4wLCdbXScpLCBudW1yYW5nZSgxLjUsMi4wLCcoXScpKTsKKwogc2VsZWN0IG51bXJh bmdlKDQuNSwgNS41LCAnW10nKSAmJiBudW1yYW5nZSg1LjUsIDYuNSk7CiBzZWxlY3QgbnVt cmFuZ2UoMS4wLCAyLjApIDw8IG51bXJhbmdlKDMuMCwgNC4wKTsKIHNlbGVjdCBudW1yYW5n ZSgxLjAsIDMuMCwnW10nKSA8PCBudW1yYW5nZSgzLjAsIDQuMCwnW10nKTsKLS0gCjIuNDIu MAoK --------------iqvziU4Z040MH3WdnoYY4mNT Content-Type: text/x-patch; charset=UTF-8; name="v22-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v22-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSAxMDkxZjFlYWJiY2RhZWJkNTdiMDg0YTA0NWJlYjQyYWY2YTNhNzJiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMiA2LzhdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9z dGdyZXNfZmR3Lm91dCAgICB8ICAgNSArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbCAgICAgfCAgIDQgKwogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwg ICAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5z Z21sICAgICAgICAgICAgICAgICAgfCAgNzAgKysrCiBkb2Mvc3JjL3NnbWwvcmVmL3VwZGF0 ZS5zZ21sICAgICAgICAgICAgICAgICAgfCAgODggKysrCiBkb2Mvc3JjL3NnbWwvdHJpZ2dl ci5zZ21sICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWxpZGF0ZS5jICAgICAgICB8ICAzOSArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICA0OSArKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDI2MiArKysrKysrLQogc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDI0ICsKIHNy Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8ICAgOCArLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwgMjA5 ICsrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAg ICB8ICA1NiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAg ICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAg ICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5j ICAgICAgICAgIHwgIDQwICsrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMu YyAgICAgICAgICAgfCAgNzQgKysrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYyAgICAgICAgICAgfCAgNTMgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5o ICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9w LmRhdCAgICAgICAgICAgICAgIHwgIDE1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1v cC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90cmln Z2VyLmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggICAgICAgICAgICAgICAgIHwgIDI2ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCAgICAgICAgICAgICAgICB8ICA0NiArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMjYgKwogc3JjL2luY2x1ZGUvb3B0aW1p emVyL3BhdGhub2RlLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9wYXJz ZXIvYW5hbHl6ZS5oICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv dXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRl L3V0aWxzL3BlcmlvZC5oICAgICAgICAgICAgICAgICAgICB8ICAxOSArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCAgfCA1NjIgKysrKysrKysrKysr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0ICAgICAg fCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgICAg ICB8ICAxOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5v dXQgfCAgMzIgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQg ICAgIHwgMTQ0ICsrKystCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAg ICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29m LnNxbCAgICAgICB8IDQyMyArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9v cHJfc2FuaXR5LnNxbCAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHJpdmlsZWdlcy5zcWwgICAgICAgICAgIHwgIDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgOTMgKystCiA1MSBmaWxlcyBjaGFuZ2Vk LCAyNDgzIGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKCmRpZmYg LS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0 IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRl eCBkODNmNmFlOGNiYy4uMDA1OGY2YzdhNmMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtNjI5Myw2ICs2MjkzLDExIEBA IERFTEVURSBGUk9NIGZ0MgogCiBERUxFVEUgRlJPTSBmdDIgV0hFUkUgZnQyLmMxID4gMjAw MDsKIEFMVEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChBREQgZXh0ZW5zaW9ucyAncG9z dGdyZXNfZmR3Jyk7CistLSBUZXN0IFVQREFURS9ERUxFVEUgd2l0aCBGT1IgUE9SVElPTiBP RgorVVBEQVRFIGZ0MiBGT1IgUE9SVElPTiBPRiBjMyBGUk9NICdhJyBUTyAnYicgU0VUIGMx ID0gMTsKK0VSUk9SOiAgZm9yZWlnbiB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCBGT1IgUE9SVElP TiBPRgorREVMRVRFIEZST00gZnQyIEZPUiBQT1JUSU9OIE9GIGMzIEZST00gJ2EnIFRPICdi JzsKK0VSUk9SOiAgZm9yZWlnbiB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCBGT1IgUE9SVElPTiBP RgogLS0gVGVzdCB0aGF0IHRyaWdnZXIgb24gcmVtb3RlIHRhYmxlIHdvcmtzIGFzIGV4cGVj dGVkCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiAiUyAxIi5GX0JSVFJJRygpIFJFVFVS TlMgdHJpZ2dlciBBUyAkJAogQkVHSU4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bv c3RncmVzX2Zkdy5zcWwKaW5kZXggOTBjOGZhNGI3MDUuLjZjYjZmNjc0ZmYzIDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApAQCAtMTU0Niw2ICsx NTQ2LDEwIEBAIERFTEVURSBGUk9NIGZ0MgogREVMRVRFIEZST00gZnQyIFdIRVJFIGZ0Mi5j MSA+IDIwMDA7CiBBTFRFUiBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAoQUREIGV4dGVuc2lv bnMgJ3Bvc3RncmVzX2ZkdycpOwogCistLSBUZXN0IFVQREFURS9ERUxFVEUgd2l0aCBGT1Ig UE9SVElPTiBPRgorVVBEQVRFIGZ0MiBGT1IgUE9SVElPTiBPRiBjMyBGUk9NICdhJyBUTyAn YicgU0VUIGMxID0gMTsKK0RFTEVURSBGUk9NIGZ0MiBGT1IgUE9SVElPTiBPRiBjMyBGUk9N ICdhJyBUTyAnYic7CisKIC0tIFRlc3QgdGhhdCB0cmlnZ2VyIG9uIHJlbW90ZSB0YWJsZSB3 b3JrcyBhcyBleHBlY3RlZAogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gIlMgMSIuRl9C UlRSSUcoKSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKIEJFR0lOCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmlu ZGV4IDYxOGEwNWFjODk2Li40NjE3MGMwNzQ5OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc1 NywxMiArNzU3LDE0IEBACiAgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19hbW9wPC9z dHJ1Y3RuYW1lPiBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQKICAgIG9wZXJhdG9ycyBhc3Nv Y2lhdGVkIHdpdGggYWNjZXNzIG1ldGhvZCBvcGVyYXRvciBmYW1pbGllcy4gIFRoZXJlIGlz IG9uZQogICAgcm93IGZvciBlYWNoIG9wZXJhdG9yIHRoYXQgaXMgYSBtZW1iZXIgb2YgYW4g b3BlcmF0b3IgZmFtaWx5LiAgQSBmYW1pbHkKLSAgIG1lbWJlciBjYW4gYmUgZWl0aGVyIGEg PGZpcnN0dGVybT5zZWFyY2g8L2ZpcnN0dGVybT4gb3BlcmF0b3Igb3IgYW4KLSAgIDxmaXJz dHRlcm0+b3JkZXJpbmc8L2ZpcnN0dGVybT4gb3BlcmF0b3IuICBBbiBvcGVyYXRvcgotICAg Y2FuIGFwcGVhciBpbiBtb3JlIHRoYW4gb25lIGZhbWlseSwgYnV0IGNhbm5vdCBhcHBlYXIg aW4gbW9yZSB0aGFuIG9uZQotICAgc2VhcmNoIHBvc2l0aW9uIG5vciBtb3JlIHRoYW4gb25l IG9yZGVyaW5nIHBvc2l0aW9uIHdpdGhpbiBhIGZhbWlseS4KLSAgIChJdCBpcyBhbGxvd2Vk LCB0aG91Z2ggdW5saWtlbHksIGZvciBhbiBvcGVyYXRvciB0byBiZSB1c2VkIGZvciBib3Ro Ci0gICBzZWFyY2ggYW5kIG9yZGVyaW5nIHB1cnBvc2VzLikKKyAgIG1lbWJlciBjYW4gYmUg ZWl0aGVyIGEgPGZpcnN0dGVybT5zZWFyY2g8L2ZpcnN0dGVybT4gb3BlcmF0b3IsIGFuCisg ICA8Zmlyc3R0ZXJtPm9yZGVyaW5nPC9maXJzdHRlcm0+IG9wZXJhdG9yLCBvciBhCisgICA8 Zmlyc3R0ZXJtPnBvcnRpb248L2ZpcnN0dGVybT4gb3BlcmF0b3IuIEEKKyAgIDxmaXJzdHRl cm0+cG9ydGlvbjwvZmlyc3R0ZXJtPiBvcGVyYXRvciBpcyB1c2VkIGZvciBjb21wdXRpbmcK KyAgIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiByZXN1bHRzLiBBbiBvcGVy YXRvciBjYW4gYXBwZWFyIGluIG1vcmUKKyAgIHRoYW4gb25lIGZhbWlseSwgYnV0IGNhbm5v dCBhcHBlYXIgaW4gbW9yZSB0aGFuIG9uZSBzZWFyY2gsIG9yZGVyaW5nLCBvcgorICAgcG9y dGlvbiBwb3NpdGlvbiB3aXRoaW4gYSBmYW1pbHkuIChJdCBpcyBhbGxvd2VkLCB0aG91Z2gg dW5saWtlbHksIGZvciBhbgorICAgb3BlcmF0b3IgdG8gYmUgdXNlZCBmb3IgbW9yZSB0aGFu IG9uZSBwdXJwb3NlLikKICAgPC9wYXJhPgogCiAgIDx0YWJsZT4KQEAgLTgzMyw4ICs4MzUs OSBAQAogICAgICAgIDxzdHJ1Y3RmaWVsZD5hbW9wcHVycG9zZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPmNoYXI8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBP cGVyYXRvciBwdXJwb3NlLCBlaXRoZXIgPGxpdGVyYWw+czwvbGl0ZXJhbD4gZm9yIHNlYXJj aCBvcgotICAgICAgIDxsaXRlcmFsPm88L2xpdGVyYWw+IGZvciBvcmRlcmluZworICAgICAg IE9wZXJhdG9yIHB1cnBvc2UsIGVpdGhlciA8bGl0ZXJhbD5zPC9saXRlcmFsPiBmb3Igc2Vh cmNoLAorICAgICAgIDxsaXRlcmFsPm88L2xpdGVyYWw+IGZvciBvcmRlcmluZywKKyAgICAg ICBvciA8bGl0ZXJhbD5wPC9saXRlcmFsPiBmb3IgcG9ydGlvbgogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Rl bGV0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAppbmRleCAxYjgxYjRl N2Q3NC4uMzg5ZGU1YmMwNjggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRl LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbApAQCAtMjMsNiArMjMs NyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5vcHNpcz4KIFsgV0lUSCBbIFJF Q1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53aXRoX3F1ZXJ5PC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsg WyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFi bGU+IF0KKyAgICBbIEZPUiBQT1JUSU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+IEZST00gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPiBUTyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPiBdCiAg ICAgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBdCiAgICAgWyBXSEVSRSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gfCBXSEVSRSBDVVJSRU5UIE9G IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jdXJzb3JfbmFtZTwvcmVwbGFjZWFi bGU+IF0KICAgICBbIFJFVFVSTklORyAqIHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm91dHB1dF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gWyBbIEFTIF0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm91dHB1dF9uYW1lPC9yZXBsYWNlYWJsZT4gXSBbLCAu Li5dIF0KQEAgLTU0LDYgKzU1LDQwIEBAIERFTEVURSBGUk9NIFsgT05MWSBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqCiAg ICBjaXJjdW1zdGFuY2VzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBJZiB0aGUgdGFi bGUgaGFzIGEgcmFuZ2UgY29sdW1uIG9yCisgICA8bGluayBsaW5rZW5kPSJkZGwtcGVyaW9k cy1hcHBsaWNhdGlvbi1wZXJpb2RzIj48bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+PC9saW5r PiwKKyAgIHlvdSBtYXkgc3VwcGx5IGEgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVy YWw+IGNsYXVzZSwgYW5kIHlvdXIgZGVsZXRlIHdpbGwKKyAgIG9ubHkgYWZmZWN0IHJvd3Mg dGhhdCBvdmVybGFwIHRoZSBnaXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUsIGlmIGEgcm93 J3Mgc3BhbgorICAgZXh0ZW5kcyBvdXRzaWRlIHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBP RjwvbGl0ZXJhbD4gYm91bmRzLCB0aGVuIHlvdXIgZGVsZXRlCisgICB3aWxsIG9ubHkgY2hh bmdlIHRoZSBzcGFuIHdpdGhpbiB0aG9zZSBib3VuZHMuIEluIGVmZmVjdCB5b3UgYXJlIGRl bGV0aW5nIGFueQorICAgbW9tZW50IHRhcmdldGVkIGJ5IDxsaXRlcmFsPkZPUiBQT1JUSU9O IE9GPC9saXRlcmFsPiBhbmQgbm8gbW9tZW50cyBvdXRzaWRlLgorICA8L3BhcmE+CisKKyAg PHBhcmE+CisgICBTcGVjaWZpY2FsbHksIGFmdGVyIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FM PC9wcm9kdWN0bmFtZT4gZGVsZXRlcyB0aGUgZXhpc3Rpbmcgcm93LAorICAgaXQgd2lsbCA8 bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+CisgICBuZXcgcm93cyB3aG9zZSByYW5nZSBvciBz dGFydC9lbmQgY29sdW1uKHMpIHJlY2VpdmUgdGhlIHJlbWFpbmluZyBzcGFuIG91dHNpZGUK KyAgIHRoZSB0YXJnZXRlZCBib3VuZHMsIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIHZhbHVl cyBpbiBvdGhlciBjb2x1bW5zLgorICAgVGhlcmUgd2lsbCBiZSB6ZXJvIHRvIHR3byBpbnNl cnRlZCByZWNvcmRzLAorICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG9yaWdpbmFsIHNw YW4gZXh0ZW5kZWQgYmVmb3JlIHRoZSB0YXJnZXRlZAorICAgPGxpdGVyYWw+RlJPTTwvbGl0 ZXJhbD4sIGFmdGVyIHRoZSB0YXJnZXRlZCA8bGl0ZXJhbD5UTzwvbGl0ZXJhbD4sIGJvdGgs IG9yIG5laXRoZXIuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZXNlIHNlY29uZGFy eSBpbnNlcnRzIGZpcmUgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPiB0cmlnZ2Vycy4gRmly c3QKKyAgIDxsaXRlcmFsPkJFRk9SRSBERUxFVEU8L2xpdGVyYWw+IHRyaWdnZXJzIGZpcnN0 LCB0aGVuCisgICA8bGl0ZXJhbD5CRUZPUkUgSU5TRVJUPC9saXRlcmFsPiwgdGhlbiA8bGl0 ZXJhbD5BRlRFUiBJTlNFUlQ8L2xpdGVyYWw+LAorICAgdGhlbiA8bGl0ZXJhbD5BRlRFUiBE RUxFVEU8L2xpdGVyYWw+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVzZSBzZWNv bmRhcnkgaW5zZXJ0cyBkbyBub3QgcmVxdWlyZSA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+ IHByaXZpbGVnZSBvbiB0aGUgdGFibGUuCisgICBUaGlzIGlzIGJlY2F1c2UgY29uY2VwdHVh bGx5IG5vIG5ldyBpbmZvcm1hdGlvbiBoYXMgYmVlbiBhZGRlZC4gVGhlIGluc2VydGVkIHJv d3Mgb25seSBwcmVzZXJ2ZQorICAgZXhpc3RpbmcgZGF0YSBhYm91dCB0aGUgdW50YXJnZXRl ZCB0aW1lIHBlcmlvZC4gTm90ZSB0aGlzIG1heSByZXN1bHQgaW4gdXNlcnMgZmlyaW5nIDxs aXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4KKyAgIHRyaWdnZXJzIHdobyBkb24ndCBoYXZlIGlu c2VydCBwcml2aWxlZ2VzLCBzbyBiZSBjYXJlZnVsIGFib3V0IDxsaXRlcmFsPlNFQ1VSSVRZ IERFRklORVI8L2xpdGVyYWw+IHRyaWdnZXIgZnVuY3Rpb25zIQorICA8L3BhcmE+CisKICAg PHBhcmE+CiAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiBj bGF1c2UgY2F1c2VzIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4KICAgIHRvIGNvbXB1dGUg YW5kIHJldHVybiB2YWx1ZShzKSBiYXNlZCBvbiBlYWNoIHJvdyBhY3R1YWxseSBkZWxldGVk LgpAQCAtMTE2LDYgKzE1MSw0MSBAQCBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVy aW9kX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgVGhlIHJhbmdlIGNvbHVtbiBvciBwZXJpb2QgdG8gdXNlIHdoZW4gcGVy Zm9ybWluZyBhIHRlbXBvcmFsIGRlbGV0ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgZWFy bGllc3QgdGltZSAoaW5jbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCBkZWxldGUu CisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9m IHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEEKKyAgICAg IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGhlcmUgaW5kaWNhdGVzIGEgZGVsZXRlIHdob3Nl IGJlZ2lubmluZyBpcworICAgICAgdW5ib3VuZGVkIChhcyB3aXRoIHJhbmdlIHR5cGVzKS4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGhlIGxhdGVzdCB0aW1lIChleGNsdXNpdmUpIHRvIGNoYW5n ZSBpbiBhIHRlbXBvcmFsIGRlbGV0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1h dGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAg ICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8 L3JlcGxhY2VhYmxlPi4gQQorICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaGVyZSBp bmRpY2F0ZXMgYSBkZWxldGUgd2hvc2UgZW5kIGlzIHVuYm91bmRlZAorICAgICAgKGFzIHdp dGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPjwvdGVybT4K ICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbAppbmRleCAyYWIyNGIwNTIzZS4u YzUxYWVmMjE3NWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbApAQCAtMjMsNiArMjMsNyBAQCBQ b3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5vcHNpcz4KIFsgV0lUSCBbIFJFQ1VSU0lW RSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53aXRoX3F1ZXJ5PC9yZXBsYWNl YWJsZT4gWywgLi4uXSBdCiBVUERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbIFsgQVMgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWxpYXM8L3JlcGxhY2VhYmxlPiBdCisgICAg WyBGT1IgUE9SVElPTiBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vf b3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Zm9yX3BvcnRpb25fb2ZfdGFyZ2V0PC9yZXBsYWNlYWJsZT4gXQogICAgIFNFVCB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+ID0geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+IHwgREVGQVVMVCB9IHwKICAgICAgICAgICAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSA9IFsg Uk9XIF0gKCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSApIHwKICAgICAgICAgICAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gKSA9ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1Yi1TRUxFQ1Q8 L3JlcGxhY2VhYmxlPiApCkBAIC01MSw2ICs1Miw0MiBAQCBVUERBVEUgWyBPTkxZIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBb ICogXSBbCiAgICBjaXJjdW1zdGFuY2VzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBJ ZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2UgY29sdW1uIG9yCisgICA8bGluayBsaW5rZW5kPSJk ZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj48bGl0ZXJhbD5QRVJJT0Q8L2xpdGVy YWw+PC9saW5rPiwKKyAgIHlvdSBtYXkgc3VwcGx5IGEgPGxpdGVyYWw+Rk9SIFBPUlRJT04g T0Y8L2xpdGVyYWw+IGNsYXVzZSwgYW5kIHlvdXIgdXBkYXRlIHdpbGwKKyAgIG9ubHkgYWZm ZWN0IHJvd3MgdGhhdCBvdmVybGFwIHRoZSBnaXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUs IGlmIGEgcm93J3Mgc3BhbgorICAgZXh0ZW5kcyBvdXRzaWRlIHRoZSA8bGl0ZXJhbD5GT1Ig UE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzLCB0aGVuIHlvdXIgdXBkYXRlCisgICB3aWxs IG9ubHkgY2hhbmdlIHRoZSBzcGFuIHdpdGhpbiB0aG9zZSBib3VuZHMuIEluIGVmZmVjdCB5 b3UgYXJlIHVwZGF0aW5nIGFueQorICAgbW9tZW50IHRhcmdldGVkIGJ5IDxsaXRlcmFsPkZP UiBQT1JUSU9OIE9GPC9saXRlcmFsPiBhbmQgbm8gbW9tZW50cyBvdXRzaWRlLgorICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBTcGVjaWZpY2FsbHksIHdoZW4gPHByb2R1Y3RuYW1lPlBv c3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB1cGRhdGVzIHRoZSBleGlzdGluZyByb3csCisgICBp dCB3aWxsIGFsc28gY2hhbmdlIHRoZSByYW5nZSBvciBzdGFydC9lbmQgY29sdW1uKHMpIHNv IHRoYXQgdGhlaXIgaW50ZXJ2YWwKKyAgIG5vIGxvbmdlciBleHRlbmRzIGJleW9uZCB0aGUg dGFyZ2V0ZWQgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcy4KKyAg IFRoZW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB3aWxsIDxsaXRl cmFsPklOU0VSVDwvbGl0ZXJhbD4KKyAgIG5ldyByb3dzIHdob3NlIHJhbmdlIG9yIHN0YXJ0 L2VuZCBjb2x1bW4ocykgcmVjZWl2ZSB0aGUgcmVtYWluaW5nIHNwYW4gb3V0c2lkZQorICAg dGhlIHRhcmdldGVkIGJvdW5kcywgY29udGFpbmluZyB0aGUgdW4tdXBkYXRlZCB2YWx1ZXMg aW4gb3RoZXIgY29sdW1ucy4KKyAgIFRoZXJlIHdpbGwgYmUgemVybyB0byB0d28gaW5zZXJ0 ZWQgcmVjb3JkcywKKyAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBvcmlnaW5hbCBzcGFu IGV4dGVuZGVkIGJlZm9yZSB0aGUgdGFyZ2V0ZWQKKyAgIDxsaXRlcmFsPkZST008L2xpdGVy YWw+LCBhZnRlciB0aGUgdGFyZ2V0ZWQgPGxpdGVyYWw+VE88L2xpdGVyYWw+LCBib3RoLCBv ciBuZWl0aGVyLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVzZSBzZWNvbmRhcnkg aW5zZXJ0cyBmaXJlIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4gdHJpZ2dlcnMuIEZpcnN0 CisgICA8bGl0ZXJhbD5CRUZPUkUgVVBEQVRFPC9saXRlcmFsPiB0cmlnZ2VycyBmaXJzdCwg dGhlbgorICAgPGxpdGVyYWw+QkVGT1JFIElOU0VSVDwvbGl0ZXJhbD4sIHRoZW4gPGxpdGVy YWw+QUZURVIgSU5TRVJUPC9saXRlcmFsPiwKKyAgIHRoZW4gPGxpdGVyYWw+QUZURVIgVVBE QVRFPC9saXRlcmFsPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlc2Ugc2Vjb25k YXJ5IGluc2VydHMgZG8gbm90IHJlcXVpcmUgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPiBw cml2aWxlZ2Ugb24gdGhlIHRhYmxlLgorICAgVGhpcyBpcyBiZWNhdXNlIGNvbmNlcHR1YWxs eSBubyBuZXcgaW5mb3JtYXRpb24gaGFzIGJlZW4gYWRkZWQuIFRoZSBpbnNlcnRlZCByb3dz IG9ubHkgcHJlc2VydmUKKyAgIGV4aXN0aW5nIGRhdGEgYWJvdXQgdGhlIHVudGFyZ2V0ZWQg dGltZSBwZXJpb2QuIE5vdGUgdGhpcyBtYXkgcmVzdWx0IGluIHVzZXJzIGZpcmluZyA8bGl0 ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+CisgICB0cmlnZ2VycyB3aG8gZG9uJ3QgaGF2ZSBpbnNl cnQgcHJpdmlsZWdlcywgc28gYmUgY2FyZWZ1bCBhYm91dCA8bGl0ZXJhbD5TRUNVUklUWSBE RUZJTkVSPC9saXRlcmFsPiB0cmlnZ2VyIGZ1bmN0aW9ucyEKKyAgPC9wYXJhPgorCiAgIDxw YXJhPgogICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gY2xh dXNlIGNhdXNlcyA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+CiAgICB0byBjb21wdXRlIGFu ZCByZXR1cm4gdmFsdWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0dWFsbHkgdXBkYXRlZC4K QEAgLTExNCw2ICsxNTEsNTcgQEAgVVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWwogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9k X25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgVGhlIHJhbmdlIGNvbHVtbiBvciBwZXJpb2QgdG8gdXNlIHdoZW4gcGVyZm9y bWluZyBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Zm9yX3BvcnRpb25fb2ZfdGFyZ2V0PC9y ZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IFRoZSBpbnRlcnZhbCB0byB1cGRhdGUuIElmIHlvdSBhcmUgdGFyZ2V0aW5nIGEgcmFuZ2Ug Y29sdW1uIG9yIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4sCisgICAgICB5b3UgbWF5IGdp dmUgdGhpcyBpbiB0aGUgZm9ybSA8bGl0ZXJhbD5GUk9NPC9saXRlcmFsPgorICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPiA8 bGl0ZXJhbD5UTzwvbGl0ZXJhbD4KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+LgorICAgICAgT3RoZXJ3aXNlIHlvdSBtdXN0 IHVzZQorICAgICAgPGxpdGVyYWw+KDwvbGl0ZXJhbD48cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+PGxpdGVyYWw+KTwvbGl0ZXJhbD4K KyAgICAgIHdoZXJlIHRoZSBleHByZXNzaW9uIHlpZWxkcyBhIHZhbHVlIGZvciB0aGUgc2Ft ZSB0eXBlIGFzCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vf b3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwvcmVwbGFj ZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUg ZWFybGllc3QgdGltZSAoaW5jbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCB1cGRh dGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBl IG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEEKKyAg ICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGhlcmUgaW5kaWNhdGVzIGFuIHVwZGF0ZSB3 aG9zZSBiZWdpbm5pbmcgaXMKKyAgICAgIHVuYm91bmRlZCAoYXMgd2l0aCByYW5nZSB0eXBl cykuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBsYXRlc3QgdGltZSAoZXhjbHVzaXZlKSB0byBj aGFuZ2UgaW4gYSB0ZW1wb3JhbCB1cGRhdGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1 ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQor ICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9u YW1lPC9yZXBsYWNlYWJsZT4uIEEKKyAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGhl cmUgaW5kaWNhdGVzIGFuIHVwZGF0ZSB3aG9zZSBlbmQgaXMgdW5ib3VuZGVkCisgICAgICAo YXMgd2l0aCByYW5nZSB0eXBlcykuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3RyaWdn ZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwKaW5kZXggYTUzOTBmZjY0NDMu LjUzOGExZTA3OGRjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwKQEAgLTUzNSwxNyArNTM1LDE4IEBAIENB TExFRF9BU19UUklHR0VSKGZjaW5mbykKIDxwcm9ncmFtbGlzdGluZz4KIHR5cGVkZWYgc3Ry dWN0IFRyaWdnZXJEYXRhCiB7Ci0gICAgTm9kZVRhZyAgICAgICAgICB0eXBlOwotICAgIFRy aWdnZXJFdmVudCAgICAgdGdfZXZlbnQ7Ci0gICAgUmVsYXRpb24gICAgICAgICB0Z19yZWxh dGlvbjsKLSAgICBIZWFwVHVwbGUgICAgICAgIHRnX3RyaWd0dXBsZTsKLSAgICBIZWFwVHVw bGUgICAgICAgIHRnX25ld3R1cGxlOwotICAgIFRyaWdnZXIgICAgICAgICAqdGdfdHJpZ2dl cjsKLSAgICBUdXBsZVRhYmxlU2xvdCAgKnRnX3RyaWdzbG90OwotICAgIFR1cGxlVGFibGVT bG90ICAqdGdfbmV3c2xvdDsKLSAgICBUdXBsZXN0b3Jlc3RhdGUgKnRnX29sZHRhYmxlOwot ICAgIFR1cGxlc3RvcmVzdGF0ZSAqdGdfbmV3dGFibGU7Ci0gICAgY29uc3QgQml0bWFwc2V0 ICp0Z191cGRhdGVkY29sczsKKyAgICBOb2RlVGFnICAgICAgICAgICAgdHlwZTsKKyAgICBU cmlnZ2VyRXZlbnQgICAgICAgdGdfZXZlbnQ7CisgICAgUmVsYXRpb24gICAgICAgICAgIHRn X3JlbGF0aW9uOworICAgIEhlYXBUdXBsZSAgICAgICAgICB0Z190cmlndHVwbGU7CisgICAg SGVhcFR1cGxlICAgICAgICAgIHRnX25ld3R1cGxlOworICAgIFRyaWdnZXIgICAgICAgICAg ICp0Z190cmlnZ2VyOworICAgIFR1cGxlVGFibGVTbG90ICAgICp0Z190cmlnc2xvdDsKKyAg ICBUdXBsZVRhYmxlU2xvdCAgICAqdGdfbmV3c2xvdDsKKyAgICBUdXBsZXN0b3Jlc3RhdGUg ICAqdGdfb2xkdGFibGU7CisgICAgVHVwbGVzdG9yZXN0YXRlICAgKnRnX25ld3RhYmxlOwor ICAgIGNvbnN0IEJpdG1hcHNldCAgICp0Z191cGRhdGVkY29sczsKKyAgICBGb3JQb3J0aW9u T2ZTdGF0ZSAqdGdfdGVtcG9yYWw7CiB9IFRyaWdnZXJEYXRhOwogPC9wcm9ncmFtbGlzdGlu Zz4KIApAQCAtODEzLDYgKzgxNCw0MyBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VyCiAgICAg ICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CisK KyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxzdHJ1Y3RmaWVsZD50Z190ZW1w b3JhbDwvc3RydWN0ZmllbGQ+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxw YXJhPgorICAgICAgICBTZXQgZm9yIDxsaXRlcmFsPlVQREFURTwvbGl0ZXJhbD4gYW5kIDxs aXRlcmFsPkRFTEVURTwvbGl0ZXJhbD4gcXVlcmllcworICAgICAgICB0aGF0IHVzZSA8bGl0 ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4sIG90aGVyd2lzZSA8c3ltYm9sPk5VTEw8 L3N5bWJvbD4uCisgICAgICAgIENvbnRhaW5zIGEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBv ZiB0eXBlCisgICAgICAgIDxzdHJ1Y3RuYW1lPkZvclBvcnRpb25PZlN0YXRlPC9zdHJ1Y3Ru YW1lPiwgZGVmaW5lZCBpbgorICAgICAgICA8ZmlsZW5hbWU+bm9kZXMvZXhlY25vZGVzLmg8 L2ZpbGVuYW1lPjoKKworPHByb2dyYW1saXN0aW5nPgordHlwZWRlZiBzdHJ1Y3QgRm9yUG9y dGlvbk9mU3RhdGUKK3sKKyAgICBOb2RlVGFnIHR5cGU7CisKKyAgICBjaGFyICAgKmZwX3Jh bmdlTmFtZTsgICAgICAgLyogdGhlIGNvbHVtbi9QRVJJT0QgbmFtZWQgaW4gRk9SIFBPUlRJ T04gT0YgKi8KKyAgICBPaWQgICAgIGZwX3JhbmdlVHlwZTsgICAgICAgLyogdGhlIHR5cGUg b2YgdGhlIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24gKi8KKyAgICBib29sICAgIGZwX2hh c1BlcmlvZDsgICAgICAgLyogdHJ1ZSBpZmYgdGhpcyBpcyBhIFBFUklPRCBub3QgYSByYW5n ZSAqLworICAgIGNoYXIgICAqZnBfcGVyaW9kU3RhcnROYW1lOyAvKiB0aGUgUEVSSU9EJ3Mg c3RhcnQgY29sdW1uICovCisgICAgY2hhciAgICpmcF9wZXJpb2RFbmROYW1lOyAgIC8qIHRo ZSBQRVJJT0QncyBlbmQgY29sdW1uICovCisgICAgRGF0dW0gICBmcF90YXJnZXRSYW5nZTsg ICAgIC8qIHRoZSByYW5nZSBmcm9tIEZPUiBQT1JUSU9OIE9GICovCit9IEZvclBvcnRpb25P ZlN0YXRlOworPC9wcm9ncmFtbGlzdGluZz4KKworICAgICAgIHdoZXJlIDxzdHJ1Y3RmaWVs ZD5mcF9yYW5nZU5hbWU8L3N0cnVjdGZpZWxkPiBpcyB0aGUgcGVyaW9kIG9yIHJhbmdlCisg ICAgICAgY29sdW1uIG5hbWVkIGluIHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0 ZXJhbD4gY2xhdXNlLAorICAgICAgIDxzdHJ1Y3RmaWVsZD5mcF9yYW5nZVR5cGU8L3N0cnVj dGZpZWxkPiBpcyBpdHMgcmFuZ2UgdHlwZSwKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBfaGFz UGVyaW9kPC9zdHJ1Y3RmaWVsZD4gaW5kaWNhdGVzIHdoZXRoZXIgYSBwZXJpb2Qgd2FzIHVz ZWQKKyAgICAgICBvciBhIHJhbmdlIGNvbHVtbiwgPHN0cnVjdGZpZWxkPmZwX3BlcmlvZFN0 YXJ0TmFtZTwvc3RydWN0ZmllbGQ+IGFuZAorICAgICAgIDxzdHJ1Y3RmaWVsZD5mcF9wZXJp b2RFbmROYW1lPC9zdHJ1Y3RmaWVsZD4gYXJlIHRoZSBuYW1lcyBvZiB0aGUgcGVyaW9kJ3MK KyAgICAgICBzdGFydCBhbmQgZW5kIGNvbHVtbnMgKG9yIDxzeW1ib2w+TlVMTDwvc3ltYm9s PiBpZiBhIHJhbmdlIGNvbHVtbiB3YXMgdXNlZCksCisgICAgICAgYW5kIDxzdHJ1Y3RmaWVs ZD5mcF90YXJnZXRSYW5nZTwvc3RydWN0ZmllbGQ+IGlzIGEgcmFuZ2V0eXBlIHZhbHVlIGNy ZWF0ZWQKKyAgICAgICBieSBldmFsdWF0aW5nIHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBP RjwvbGl0ZXJhbD4gYm91bmRzLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+ CisgICAgIDwvdmFybGlzdGVudHJ5PgogICAgIDwvdmFyaWFibGVsaXN0PgogICAgPC9wYXJh PgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCmluZGV4IDRiZDJl NTMxZDcxLi45N2MxMzlhMTBkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdHZhbGlkYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZh bGlkYXRlLmMKQEAgLTE5OSw3ICsxOTksNyBAQCBnaXN0dmFsaWRhdGUoT2lkIG9wY2xhc3Nv aWQpCiAJCX0KIAogCQkvKiBHaVNUIHN1cHBvcnRzIE9SREVSIEJZIG9wZXJhdG9ycyAqLwot CQlpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgIT0gQU1PUF9TRUFSQ0gpCisJCWlmIChvcHJm b3JtLT5hbW9wcHVycG9zZSA9PSBBTU9QX09SREVSKQogCQl7CiAJCQkvKiAuLi4gYnV0IG11 c3QgaGF2ZSBtYXRjaGluZyBkaXN0YW5jZSBwcm9jICovCiAJCQlpZiAoIU9pZElzVmFsaWQo Z2V0X29wZmFtaWx5X3Byb2Mob3BmYW1pbHlvaWQsCkBAIC0yMjYsMjQgKzIyNiw0MyBAQCBn aXN0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQkJcmVzdWx0ID0gZmFsc2U7CiAJCQl9 CiAJCX0KLQkJZWxzZQorCQllbHNlIGlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSA9PSBBTU9Q X1NFQVJDSCkKIAkJewogCQkJLyogU2VhcmNoIG9wZXJhdG9ycyBtdXN0IGFsd2F5cyByZXR1 cm4gYm9vbCAqLwogCQkJb3BfcmV0dHlwZSA9IEJPT0xPSUQ7CiAJCX0KLQotCQkvKiBDaGVj ayBvcGVyYXRvciBzaWduYXR1cmUgKi8KLQkJaWYgKCFjaGVja19hbW9wX3NpZ25hdHVyZShv cHJmb3JtLT5hbW9wb3ByLCBvcF9yZXR0eXBlLAotCQkJCQkJCQkgIG9wcmZvcm0tPmFtb3Bs ZWZ0dHlwZSwKLQkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmlnaHR0eXBlKSkKKwkJZWxzZSBp ZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgPT0gQU1PUF9QT1JUSU9OKQogCQl7CisJCQkvKiBO byByZXN0cmljdGlvbnMgb24gUE9SVElPTiAqLworCQkJb3BfcmV0dHlwZSA9IEludmFsaWRP aWQ7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBOb3RoaW5nIGVsc2UgaXQgY291bGQgYmUg Ki8KIAkJCWVyZXBvcnQoSU5GTywKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKLQkJCQkJIGVycm1zZygib3BlcmF0b3IgZmFtaWx5IFwiJXNc IiBvZiBhY2Nlc3MgbWV0aG9kICVzIGNvbnRhaW5zIG9wZXJhdG9yICVzIHdpdGggd3Jvbmcg c2lnbmF0dXJlIiwKLQkJCQkJCQlvcGZhbWlseW5hbWUsICJnaXN0IiwKLQkJCQkJCQlmb3Jt YXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1vcG9wcikpKSk7CisJCQkJCSBlcnJtc2coIm9wZXJh dG9yIGZhbWlseSBcIiVzXCIgb2YgYWNjZXNzIG1ldGhvZCAlcyBjb250YWlucyB1bmtub3du IHB1cnBvc2UgJWMgZm9yIG9wZXJhdG9yICVzIiwKKwkJCQkJCSBvcGZhbWlseW5hbWUsICJn aXN0Iiwgb3ByZm9ybS0+YW1vcHB1cnBvc2UsCisJCQkJCQkgZm9ybWF0X29wZXJhdG9yKG9w cmZvcm0tPmFtb3BvcHIpKSkpOworCQkJb3BfcmV0dHlwZSA9IEludmFsaWRPaWQ7CiAJCQly ZXN1bHQgPSBmYWxzZTsKIAkJfQorCisJCS8qIENoZWNrIG9wZXJhdG9yIHNpZ25hdHVyZSAq LworCQlpZiAoT2lkSXNWYWxpZChvcF9yZXR0eXBlKSkKKwkJeworCQkJaWYgKCFjaGVja19h bW9wX3NpZ25hdHVyZShvcHJmb3JtLT5hbW9wb3ByLCBvcF9yZXR0eXBlLAorCQkJCQkJCQkJ ICBvcHJmb3JtLT5hbW9wbGVmdHR5cGUsCisJCQkJCQkJCQkgIG9wcmZvcm0tPmFtb3ByaWdo dHR5cGUpKQorCQkJeworCQkJCWVyZXBvcnQoSU5GTywKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkgZXJybXNnKCJvcGVyYXRv ciBmYW1pbHkgXCIlc1wiIG9mIGFjY2VzcyBtZXRob2QgJXMgY29udGFpbnMgb3BlcmF0b3Ig JXMgd2l0aCB3cm9uZyBzaWduYXR1cmUiLAorCQkJCQkJCQlvcGZhbWlseW5hbWUsICJnaXN0 IiwKKwkJCQkJCQkJZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkpOworCQkJ CXJlc3VsdCA9IGZhbHNlOworCQkJfQorCQl9CiAJfQogCiAJLyogTm93IGNoZWNrIGZvciBp bmNvbnNpc3RlbnQgZ3JvdXBzIG9mIG9wZXJhdG9ycy9mdW5jdGlvbnMgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZWEwNjk3MzhlOWQuLmU4NzhiNDFlY2IwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTI0OTgsNiArMTI0OTgsNyBAQCB2YWxp ZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJCXRyaWdkYXRhLnRn X3RyaWd0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgZmFsc2UsIE5VTEwp OwogCQl0cmlnZGF0YS50Z190cmlnc2xvdCA9IHNsb3Q7CiAJCXRyaWdkYXRhLnRnX3RyaWdn ZXIgPSAmdHJpZzsKKwkJdHJpZ2RhdGEudGdfdGVtcG9yYWwgPSBOVUxMOwogCiAJCWZjaW5m by0+Y29udGV4dCA9IChOb2RlICopICZ0cmlnZGF0YTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dl ci5jCmluZGV4IDM0ZWEzZDE5YzhjLi41OWVlMGZhZGUxOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Ry aWdnZXIuYwpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvYnl0ZWEuaCIKKyNp bmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAj aW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIK QEAgLTI2MzgsNiArMjYzOSw3IEBAIEV4ZWNCU0RlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0 YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvKQogCUxvY1RyaWdnZXJEYXRhLnRnX2V2ZW50 ID0gVFJJR0dFUl9FVkVOVF9ERUxFVEUgfAogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlM b2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsK KwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25P ZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCiAJewog CQlUcmlnZ2VyICAgICp0cmlnZ2VyID0gJnRyaWdkZXNjLT50cmlnZ2Vyc1tpXTsKQEAgLTI3 MzcsNiArMjczOSw3IEBAIEV4ZWNCUkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBF UFFTdGF0ZSAqZXBxc3RhdGUsCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9F VkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5y aV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZv LT5yaV9mb3JQb3J0aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmln Z2VyczsgaSsrKQogCXsKIAkJSGVhcFR1cGxlCW5ld3R1cGxlOwpAQCAtMjgyOCw2ICsyODMx LDcgQEAgRXhlY0lSRGVsZXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbElu Zm8gKnJlbGluZm8sCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9J TlNURUFEOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVs YXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlf Zm9yUG9ydGlvbk9mOwogCiAJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUodHJpZ3R1cGxlLCBz bG90LCBmYWxzZSk7CiAKQEAgLTI4OTEsNiArMjg5NSw3IEBAIEV4ZWNCU1VwZGF0ZVRyaWdn ZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvKQogCQlUUklHR0VS X0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8t PnJpX1JlbGF0aW9uRGVzYzsKIAlMb2NUcmlnZ2VyRGF0YS50Z191cGRhdGVkY29scyA9IHVw ZGF0ZWRDb2xzOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlf Zm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7 IGkrKykKIAl7CiAJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2MtPnRyaWdnZXJz W2ldOwpAQCAtMzAwOCw2ICszMDEzLDcgQEAgRXhlY0JSVXBkYXRlVHJpZ2dlcnMoRVN0YXRl ICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAog CQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9 IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3Jh bCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAl1cGRhdGVkQ29scyA9IEV4ZWNHZXRB bGxVcGRhdGVkQ29scyhyZWxpbmZvLCBlc3RhdGUpOwogCUxvY1RyaWdnZXJEYXRhLnRnX3Vw ZGF0ZWRjb2xzID0gdXBkYXRlZENvbHM7CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5u dW10cmlnZ2VyczsgaSsrKQpAQCAtMzE1Nyw2ICszMTYzLDcgQEAgRXhlY0lSVXBkYXRlVHJp Z2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCVRSSUdH RVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9JTlNURUFEOwogCUxvY1RyaWdnZXJE YXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdn ZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCiAJRXhl Y0ZvcmNlU3RvcmVIZWFwVHVwbGUodHJpZ3R1cGxlLCBvbGRzbG90LCBmYWxzZSk7CiAKQEAg LTM2MjMsNiArMzYzMCw3IEBAIHR5cGVkZWYgc3RydWN0IEFmdGVyVHJpZ2dlclNoYXJlZERh dGEKIAlPaWQJCQlhdHNfdGdvaWQ7CQkvKiB0aGUgdHJpZ2dlcidzIElEICovCiAJT2lkCQkJ YXRzX3JlbGlkOwkJLyogdGhlIHJlbGF0aW9uIGl0J3Mgb24gKi8KIAlDb21tYW5kSWQJYXRz X2ZpcmluZ19pZDsJLyogSUQgZm9yIGZpcmluZyBjeWNsZSAqLworCUZvclBvcnRpb25PZlN0 YXRlICpmb3JfcG9ydGlvbl9vZjsJLyogdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSAqLwog CXN0cnVjdCBBZnRlclRyaWdnZXJzVGFibGVEYXRhICphdHNfdGFibGU7CS8qIHRyYW5zaXRp b24gdGFibGUgYWNjZXNzICovCiAJQml0bWFwc2V0ICAqYXRzX21vZGlmaWVkY29sczsJLyog bW9kaWZpZWQgY29sdW1ucyAqLwogfSBBZnRlclRyaWdnZXJTaGFyZWREYXRhOwpAQCAtMzg5 Niw2ICszOTA0LDcgQEAgc3RhdGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50 U3RhdGVDcmVhdGUoaW50IG51bWFsbG9jKTsKIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUg U2V0Q29uc3RyYWludFN0YXRlQ29weShTZXRDb25zdHJhaW50U3RhdGUgb3JpZ3N0YXRlKTsK IHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUgU2V0Q29uc3RyYWludFN0YXRlQWRkSXRlbShT ZXRDb25zdHJhaW50U3RhdGUgc3RhdGUsCiAJCQkJCQkJCQkJCQkJT2lkIHRnb2lkLCBib29s IHRnaXNkZWZlcnJlZCk7CitzdGF0aWMgRm9yUG9ydGlvbk9mU3RhdGUgKkNvcHlGb3JQb3J0 aW9uT2ZTdGF0ZShGb3JQb3J0aW9uT2ZTdGF0ZSAqc3JjKTsKIHN0YXRpYyB2b2lkIGNhbmNl bF9wcmlvcl9zdG10X3RyaWdnZXJzKE9pZCByZWxpZCwgQ21kVHlwZSBjbWRUeXBlLCBpbnQg dGdldmVudCk7CiAKIApAQCAtNDEwNSw2ICs0MTE0LDcgQEAgYWZ0ZXJUcmlnZ2VyQWRkRXZl bnQoQWZ0ZXJUcmlnZ2VyRXZlbnRMaXN0ICpldmVudHMsCiAJCQluZXdzaGFyZWQtPmF0c19y ZWxpZCA9PSBldnRzaGFyZWQtPmF0c19yZWxpZCAmJgogCQkJbmV3c2hhcmVkLT5hdHNfZXZl bnQgPT0gZXZ0c2hhcmVkLT5hdHNfZXZlbnQgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX3RhYmxl ID09IGV2dHNoYXJlZC0+YXRzX3RhYmxlICYmCisJCQluZXdzaGFyZWQtPmZvcl9wb3J0aW9u X29mID09IGV2dHNoYXJlZC0+Zm9yX3BvcnRpb25fb2YgJiYKIAkJCW5ld3NoYXJlZC0+YXRz X2ZpcmluZ19pZCA9PSAwKQogCQkJYnJlYWs7CiAJfQpAQCAtNDQ2OSw2ICs0NDc5LDcgQEAg QWZ0ZXJUcmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAlMb2NUcmlnZ2VyRGF0YS50 Z19yZWxhdGlvbiA9IHJlbDsKIAlpZiAoVFJJR0dFUl9GT1JfVVBEQVRFKExvY1RyaWdnZXJE YXRhLnRnX3RyaWdnZXItPnRndHlwZSkpCiAJCUxvY1RyaWdnZXJEYXRhLnRnX3VwZGF0ZWRj b2xzID0gZXZ0c2hhcmVkLT5hdHNfbW9kaWZpZWRjb2xzOworCUxvY1RyaWdnZXJEYXRhLnRn X3RlbXBvcmFsID0gZXZ0c2hhcmVkLT5mb3JfcG9ydGlvbl9vZjsKIAogCU1lbW9yeUNvbnRl eHRSZXNldChwZXJfdHVwbGVfY29udGV4dCk7CiAKQEAgLTYwMDUsNiArNjAxNiw0MyBAQCBB ZnRlclRyaWdnZXJQZW5kaW5nT25SZWwoT2lkIHJlbGlkKQogCXJldHVybiBmYWxzZTsKIH0K IAorLyogLS0tLS0tLS0tLQorICogRm9yUG9ydGlvbk9mU3RhdGUoKQorICoKKyAqIENvcHlz IGEgRm9yUG9ydGlvbk9mU3RhdGUgaW50byB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4dC4K KyAqLworc3RhdGljIEZvclBvcnRpb25PZlN0YXRlICoKK0NvcHlGb3JQb3J0aW9uT2ZTdGF0 ZShGb3JQb3J0aW9uT2ZTdGF0ZSAqc3JjKQoreworCUZvclBvcnRpb25PZlN0YXRlICpkc3Qg PSBOVUxMOworCWlmIChzcmMpIHsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCVJhbmdl VHlwZSAqcjsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCisJCS8qCisJCSAqIE5l ZWQgdG8gbGlmdCB0aGUgRk9SIFBPUlRJT04gT0YgZGV0YWlscyBpbnRvIGEgaGlnaGVyIG1l bW9yeSBjb250ZXh0CisJCSAqIGJlY2F1c2UgY2FzY2FkaW5nIGZvcmVpZ24ga2V5IHVwZGF0 ZS9kZWxldGVzIGNhbiBjYXVzZSB0cmlnZ2VycyB0byBmaXJlCisJCSAqIHRyaWdnZXJzLCBh bmQgdGhlIEFmdGVyVHJpZ2dlckV2ZW50cyB3aWxsIG91dGxpdmUgdGhlIEZQTworCQkgKiBk ZXRhaWxzIG9mIHRoZSBvcmlnaW5hbCBxdWVyeS4KKwkJICovCisJCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOworCQlkc3QgPSBtYWtl Tm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7CisJCWRzdC0+ZnBfcmFuZ2VOYW1lID0gcHN0cmR1 cChzcmMtPmZwX3JhbmdlTmFtZSk7CisJCWRzdC0+ZnBfcmFuZ2VUeXBlID0gc3JjLT5mcF9y YW5nZVR5cGU7CisJCWRzdC0+ZnBfaGFzUGVyaW9kID0gc3JjLT5mcF9oYXNQZXJpb2Q7CisJ CWRzdC0+ZnBfcmFuZ2VBdHRubyA9IHNyYy0+ZnBfcmFuZ2VBdHRubzsKKwkJZHN0LT5mcF9w ZXJpb2RTdGFydEF0dG5vID0gc3JjLT5mcF9wZXJpb2RTdGFydEF0dG5vOworCQlkc3QtPmZw X3BlcmlvZEVuZEF0dG5vID0gc3JjLT5mcF9wZXJpb2RFbmRBdHRubzsKKworCQlyID0gRGF0 dW1HZXRSYW5nZVR5cGVQKHNyYy0+ZnBfdGFyZ2V0UmFuZ2UpOworCQl0eXBjYWNoZSA9IGxv b2t1cF90eXBlX2NhY2hlKFJhbmdlVHlwZUdldE9pZChyKSwgVFlQRUNBQ0hFX1JBTkdFX0lO Rk8pOworCQlkc3QtPmZwX3RhcmdldFJhbmdlID0gZGF0dW1Db3B5KHNyYy0+ZnBfdGFyZ2V0 UmFuZ2UsIHR5cGNhY2hlLT50eXBieXZhbCwgdHlwY2FjaGUtPnR5cGxlbik7CisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KKwlyZXR1cm4gZHN0OworfQorCiAvKiAt LS0tLS0tLS0tCiAgKiBBZnRlclRyaWdnZXJTYXZlRXZlbnQoKQogICoKQEAgLTY0MjAsNiAr NjQ2OCw3IEBAIEFmdGVyVHJpZ2dlclNhdmVFdmVudChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0 UmVsSW5mbyAqcmVsaW5mbywKIAkJZWxzZQogCQkJbmV3X3NoYXJlZC5hdHNfdGFibGUgPSBO VUxMOwogCQluZXdfc2hhcmVkLmF0c19tb2RpZmllZGNvbHMgPSBhZnRlclRyaWdnZXJDb3B5 Qml0bWFwKG1vZGlmaWVkQ29scyk7CisJCW5ld19zaGFyZWQuZm9yX3BvcnRpb25fb2YgPSBD b3B5Rm9yUG9ydGlvbk9mU3RhdGUocmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mKTsKIAogCQlh ZnRlclRyaWdnZXJBZGRFdmVudCgmYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9zdGFja1thZnRlclRy aWdnZXJzLnF1ZXJ5X2RlcHRoXS5ldmVudHMsCiAJCQkJCQkJICZuZXdfZXZlbnQsICZuZXdf c2hhcmVkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDEzYTliN2RhODNiLi5i MmViNWJkZTczNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xMjc0LDYgKzEy NzQsNyBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LAogCXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcgPSBOVUxMOwogCXJlc3Vs dFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcyA9IE5JTDsKIAlyZXN1bHRS ZWxJbmZvLT5yaV9vbkNvbmZsaWN0ID0gTlVMTDsKKwlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQ b3J0aW9uT2YgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1JldHVybmluZ1Nsb3QgPSBO VUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdPbGRTbG90ID0gTlVMTDsKIAlyZXN1bHRS ZWxJbmZvLT5yaV9UcmlnTmV3U2xvdCA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jCmluZGV4IDlmYzVhYmZmOGYwLi45NmMxOGVhYjk5MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTU4LDkgKzU4LDEyIEBA CiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5jbHVkZSAidXRp bHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9wZXJpb2QuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKIAogCkBAIC0xNDEsNiArMTQ0LDEwIEBAIHN0YXRpYyBib29sIEV4 ZWNPbkNvbmZsaWN0VXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJ CQkJIFR1cGxlVGFibGVTbG90ICpleGNsdWRlZFNsb3QsCiAJCQkJCQkJCSBib29sIGNhblNl dFRhZywKIAkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICoqcmV0dXJuaW5nKTsKK3N0YXRpYyB2 b2lkIEV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250 ZXh0LAorCQkJCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJCSAgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCk7 CiBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNQcmVwYXJlVHVwbGVSb3V0aW5nKE1vZGlm eVRhYmxlU3RhdGUgKm10c3RhdGUsCiAJCQkJCQkJCQkJCSAgIEVTdGF0ZSAqZXN0YXRlLAog CQkJCQkJCQkJCQkgICBQYXJ0aXRpb25UdXBsZVJvdXRpbmcgKnByb3V0ZSwKQEAgLTEyMDUs NiArMTIxMiwxMzEgQEAgRXhlY0luc2VydChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQs CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNGb3JQb3J0 aW9uT2ZMZWZ0b3ZlcnMKKyAqCisgKgkJSW5zZXJ0IHR1cGxlcyBmb3IgdGhlIHVudG91Y2hl ZCB0aW1lc3RhbXAgb2YgYSByb3cgaW4gYSBGT1IKKyAqCQlQT1JUSU9OIE9GIFVQREFURS9E RUxFVEUKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNGb3JQb3J0aW9u T2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJICBFU3Rh dGUgKmVzdGF0ZSwKKwkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJ CQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCkKK3sKKwlNb2RpZnlUYWJsZVN0YXRlICptdHN0 YXRlID0gY29udGV4dC0+bXRzdGF0ZTsKKwlNb2RpZnlUYWJsZSAqbm9kZSA9IChNb2RpZnlU YWJsZSAqKSBtdHN0YXRlLT5wcy5wbGFuOworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRp b25PZiA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsKKwlBdHRy TnVtYmVyCXJhbmdlQXR0bm87CisJRGF0dW0Jb2xkUmFuZ2U7CisJRGF0dW0JYWxsTGVmdG92 ZXJzOworCURhdHVtCSpsZWZ0b3ZlcnM7CisJaW50CQlubGVmdG92ZXJzOworCWJvb2wgaXNO dWxsID0gZmFsc2U7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCUZvclBvcnRpb25P ZlN0YXRlICpmcG9TdGF0ZSA9IHJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZjsKKwlU dXBsZVRhYmxlU2xvdCAqb2xkdHVwbGVTbG90ID0gZnBvU3RhdGUtPmZwX0V4aXN0aW5nOwor CVR1cGxlVGFibGVTbG90ICpsZWZ0b3ZlclNsb3QgPSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7 CisJVHVwbGVDb252ZXJzaW9uTWFwICptYXAgPSBOVUxMOworCUhlYXBUdXBsZSBvbGR0dXBs ZSA9IE5VTEw7CisKKwkvKgorCSAqIEdldCB0aGUgcmFuZ2Ugb2YgdGhlIG9sZCBwcmUtVVBE QVRFL0RFTEVURSB0dXBsZSwKKwkgKiBzbyB3ZSBjYW4gaW50ZXJzZWN0IGl0IHdpdGggdGhl IEZPUiBQT1JUSU9OIE9GIHRhcmdldAorCSAqIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSAi bGVmdG92ZXJzIiB0byBpbnNlcnQuCisJICoKKwkgKiBXZSBoYXZlIGFscmVhZHkgbG9ja2Vk IHRoZSB0dXBsZSBpbiBFeGVjVXBkYXRlL0V4ZWNEZWxldGUKKwkgKiAoVE9ETzogaWYgaXQg d2FzICpub3QqIGNvbmN1cnJlbnRseSB1cGRhdGVkLCBkb2VzIHRhYmxlX3R1cGxlX3VwZGF0 ZSBsb2NrIHRoZSB0dXBsZSBpdHNlbGY/CisJICogSSBkb24ndCBmb3VuZCB0aGUgY29kZSBm b3IgdGhhdCB5ZXQsIGFuZCBtYXliZSBpdCBkZXBlbmRzIG9uIHRoZSBBTT8pCisJICogYW5k IGl0IGhhcyBwYXNzZWQgRXZhbFBsYW5RdWFsLgorCSAqIE1ha2Ugc3VyZSB3ZSdyZSBsb29r aW5nIGF0IHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uLgorCSAqIE90aGVyd2lzZSBjb25jdXJy ZW50IHVwZGF0ZXMgb2YgdGhlIHNhbWUgdHVwbGUgaW4gUkVBRCBDT01NSVRURUQKKwkgKiBj b3VsZCBpbnNlcnQgY29uZmxpY3RpbmcgImxlZnRvdmVycyIuCisJICovCisJaWYgKCF0YWJs ZV90dXBsZV9mZXRjaF9yb3dfdmVyc2lvbihyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRl c2MsIHR1cGxlaWQsIFNuYXBzaG90QW55LCBvbGR0dXBsZVNsb3QpKQorCQllbG9nKEVSUk9S LCAiZmFpbGVkIHRvIGZldGNoIHR1cGxlIGZvciBGT1IgUE9SVElPTiBPRiIpOworCisJLyoK KwkgKiBHZXQgdGhlIG9sZCByYW5nZSBvZiB0aGUgcmVjb3JkIGJlaW5nIHVwZGF0ZWQuCisJ ICogTXVzdCByZWFkIHdpdGggdGhlIGF0dG5vIG9mIHRoZSBsZWFmIHBhcnRpdGlvbiBiZWlu ZyB1cGRhdGVkCisJICovCisKKwlyYW5nZUF0dG5vID0gZm9yUG9ydGlvbk9mLT5yYW5nZVZh ci0+dmFyYXR0bm87CisJaWYgKHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRSZWxJbmZv KQorCQltYXAgPSBFeGVjR2V0Q2hpbGRUb1Jvb3RNYXAocmVzdWx0UmVsSW5mbyk7CisJaWYg KG1hcCAhPSBOVUxMKQorCQlyYW5nZUF0dG5vID0gbWFwLT5hdHRyTWFwLT5hdHRudW1zW3Jh bmdlQXR0bm8gLSAxXTsKKwlvbGRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGR0dXBsZVNsb3Qs IHJhbmdlQXR0bm8sICZpc051bGwpOworCisJaWYgKGlzTnVsbCkKKwkJZWxvZyhFUlJPUiwg ImZvdW5kIGEgTlVMTCByYW5nZSBpbiBhIHRlbXBvcmFsIHRhYmxlIik7CisKKwkvKgorCSAq IEdldCB0aGUgcmFuZ2UncyB0eXBlIGNhY2hlIGVudHJ5LiBUaGlzIGlzIHdvcnRoIGNhY2hp bmcgZm9yIHRoZSB3aG9sZSBVUERBVEUKKwkgKiBhcyByYW5nZSBmdW5jdGlvbnMgZG8uCisJ ICovCisKKwl0eXBjYWNoZSA9IGZwb1N0YXRlLT5mcF9sZWZ0b3ZlcnN0eXBjYWNoZTsKKwlp ZiAodHlwY2FjaGUgPT0gTlVMTCkKKwl7CisJCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2Fj aGUoZm9yUG9ydGlvbk9mLT5yYW5nZVR5cGUsIDApOworCQlmcG9TdGF0ZS0+ZnBfbGVmdG92 ZXJzdHlwY2FjaGUgPSB0eXBjYWNoZTsKKwl9CisKKwkvKiBHZXQgdGhlIHJhbmdlcyB0byB0 aGUgbGVmdC9yaWdodCBvZiB0aGUgdGFyZ2V0ZWQgcmFuZ2UuICovCisKKwlhbGxMZWZ0b3Zl cnMgPSBPaWRGdW5jdGlvbkNhbGwyQ29sbChmb3JQb3J0aW9uT2YtPndpdGhvdXRQb3J0aW9u UHJvYywKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLCBvbGRSYW5nZSwgZnBvU3RhdGUtPmZwX3Rh cmdldFJhbmdlKTsKKworCWRlY29uc3RydWN0X2FycmF5KERhdHVtR2V0QXJyYXlUeXBlUChh bGxMZWZ0b3ZlcnMpLCB0eXBjYWNoZS0+dHlwZV9pZCwgdHlwY2FjaGUtPnR5cGxlbiwKKwkJ CQkJICB0eXBjYWNoZS0+dHlwYnl2YWwsIHR5cGNhY2hlLT50eXBhbGlnbiwgJmxlZnRvdmVy cywgTlVMTCwgJm5sZWZ0b3ZlcnMpOworCisJaWYgKG5sZWZ0b3ZlcnMgPiAwKQorCXsKKwkJ Ym9vbCBzaG91bGRGcmVlID0gZmFsc2U7CisJCWludCBpOworCisJCS8qCisJCSAqIE1ha2Ug YSBjb3B5IG9mIHRoZSBwcmUtVVBEQVRFIHJvdy4KKwkJICogVGhlbiB3ZSdsbCBvdmVyd3Jp dGUgdGhlIHJhbmdlIGNvbHVtbiBiZWxvdy4KKwkJICogQ29udmVydCBvbGR0dXBsZSB0byB0 aGUgYmFzZSB0YWJsZSdzIGZvcm1hdCBpZiBuZWNlc3NhcnkuCisJCSAqIFdlIG5lZWQgdG8g aW5zZXJ0IGxlZnRvdmVycyB0aHJvdWdoIHRoZSByb290IHBhcnRpdGlvbgorCQkgKiBzbyB0 aGV5IGdldCByb3V0ZWQgY29ycmVjdGx5LgorCQkgKi8KKwkJaWYgKG1hcCAhPSBOVUxMKQor CQkJbGVmdG92ZXJTbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KG1hcC0+YXR0ck1hcCwK KwkJCQkJCQkJCQkJCSBvbGR0dXBsZVNsb3QsCisJCQkJCQkJCQkJCQkgbGVmdG92ZXJTbG90 KTsKKwkJZWxzZQorCQl7CisJCQlvbGR0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUo b2xkdHVwbGVTbG90LCBmYWxzZSwgJnNob3VsZEZyZWUpOworCQkJRXhlY0ZvcmNlU3RvcmVI ZWFwVHVwbGUob2xkdHVwbGUsIGxlZnRvdmVyU2xvdCwgZmFsc2UpOworCQl9CisKKwkJZm9y IChpID0gMDsgaSA8IG5sZWZ0b3ZlcnM7IGkrKykKKwkJeworCQkJLyogc3RvcmUgdGhlIG5l dyByYW5nZSAqLworCQkJbGVmdG92ZXJTbG90LT50dHNfdmFsdWVzW2ZvclBvcnRpb25PZi0+ cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBsZWZ0b3ZlcnNbaV07CisJCQlsZWZ0b3ZlclNs b3QtPnR0c19pc251bGxbZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8gLSAxXSA9 IGZhbHNlOworCQkJRXhlY01hdGVyaWFsaXplU2xvdChsZWZ0b3ZlclNsb3QpOworCisJCQkv KgorCQkJICogSWYgdGhlcmUgYXJlIHBhcnRpdGlvbnMsIHdlIG11c3QgaW5zZXJ0IGludG8g dGhlIHJvb3QgdGFibGUsCisJCQkgKiBzbyB3ZSBnZXQgdHVwbGUgcm91dGluZy4gV2UgYWxy ZWFkeSBzZXQgdXAgbGVmdG92ZXJTbG90CisJCQkgKiB3aXRoIHRoZSByb290IHR1cGxlIGRl c2NyaXB0b3IuCisJCQkgKi8KKwkJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0 UmVsSW5mbykKKwkJCQlyZXN1bHRSZWxJbmZvID0gcmVzdWx0UmVsSW5mby0+cmlfUm9vdFJl c3VsdFJlbEluZm87CisJCQkvLyBUT0RPOiBOZWVkIHRvIHNhdmUgY29udGV4dC0+bXRzdGF0 ZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJlPyAoU2VlIGNvbW1lbnQgb24gRXhlY0luc2VydCkK KwkJCUV4ZWNJbnNlcnQoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgbGVmdG92ZXJTbG90LCBu b2RlLT5jYW5TZXRUYWcsIE5VTEwsIE5VTEwpOworCQl9CisKKwkJaWYgKHNob3VsZEZyZWUp CisJCQloZWFwX2ZyZWV0dXBsZShvbGR0dXBsZSk7CisJfQorfQorCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKgkJRXhlY0JhdGNoSW5zZXJ0CiAgKgpAQCAtMTM1Nyw3ICsxNDg5LDggQEAgRXhlY0Rl bGV0ZUFjdChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJl c3VsdFJlbEluZm8sCiAgKgogICogQ2xvc2luZyBzdGVwcyBvZiB0dXBsZSBkZWxldGlvbjsg dGhpcyBpbnZva2VzIEFGVEVSIEZPUiBFQUNIIFJPVyB0cmlnZ2VycywKICAqIGluY2x1ZGlu ZyB0aGUgVVBEQVRFIHRyaWdnZXJzIGlmIHRoZSBkZWxldGlvbiBpcyBiZWluZyBkb25lIGFz IHBhcnQgb2YgYQotICogY3Jvc3MtcGFydGl0aW9uIHR1cGxlIG1vdmUuCisgKiBjcm9zcy1w YXJ0aXRpb24gdHVwbGUgbW92ZS4gSXQgYWxzbyBpbnNlcnRzIGxlZnRvdmVycyBmcm9tIGEg Rk9SIFBPUlRJT04gT0YKKyAqIGRlbGV0ZS4KICAqLwogc3RhdGljIHZvaWQKIEV4ZWNEZWxl dGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCkBAIC0xMzkwLDYgKzE1MjMsMTEgQEAgRXhlY0RlbGV0ZUVwaWxv Z3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKIAkJYXJfZGVsZXRlX3RyaWdfdGNzID0gTlVMTDsKIAl9CiAKKwkvKiBDb21w dXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElPTiBPRiAqLworCS8vIFRPRE86IFNraXAgdGhp cyBmb3IgRkRXIGRlbGV0ZXM/CisJaWYgKCgoTW9kaWZ5VGFibGUgKikgY29udGV4dC0+bXRz dGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikKKwkJRXhlY0ZvclBvcnRpb25PZkxlZnRv dmVycyhjb250ZXh0LCBlc3RhdGUsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQpOworCiAJLyog QUZURVIgUk9XIERFTEVURSBUcmlnZ2VycyAqLwogCUV4ZWNBUkRlbGV0ZVRyaWdnZXJzKGVz dGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsCiAJCQkJCQkgYXJfZGVs ZXRlX3RyaWdfdGNzLCBjaGFuZ2luZ1BhcnQpOwpAQCAtMTc3MCw3ICsxOTA4LDExIEBAIEV4 ZWNDcm9zc1BhcnRpdGlvblVwZGF0ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJ aWYgKHJlc3VsdFJlbEluZm8gPT0gbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8pCiAJCUV4 ZWNQYXJ0aXRpb25DaGVja0VtaXRFcnJvcihyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUp OwogCi0JLyogSW5pdGlhbGl6ZSB0dXBsZSByb3V0aW5nIGluZm8gaWYgbm90IGFscmVhZHkg ZG9uZS4gKi8KKwkvKgorCSAqIEluaXRpYWxpemUgdHVwbGUgcm91dGluZyBpbmZvIGlmIG5v dCBhbHJlYWR5IGRvbmUuCisJICogTm90ZSB3aGF0ZXZlciB3ZSBkbyBoZXJlIG11c3QgYmUg ZG9uZSBpbiBFeGVjSW5pdE1vZGlmeVRhYmxlCisJICogZm9yIEZPUiBQT1JUSU9OIE9GIGFz IHdlbGwuCisJICovCiAJaWYgKG10c3RhdGUtPm10X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5n ID09IE5VTEwpCiAJewogCQlSZWxhdGlvbglyb290UmVsID0gbXRzdGF0ZS0+cm9vdFJlc3Vs dFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKQEAgLTIxMzksNiArMjI4MSwxMSBAQCBFeGVj VXBkYXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBVcGRhdGVDb250 ZXh0ICp1cGRhdGVDeHQsCiAJCQkJCQkJCQkJCSAgIE5VTEwsIE5JTCwKIAkJCQkJCQkJCQkJ ICAgKHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykpOwogCisJ LyogQ29tcHV0ZSBsZWZ0b3ZlcnMgaW4gRk9SIFBPUlRJT04gT0YgKi8KKwkvLyBUT0RPOiBT a2lwIHRoaXMgZm9yIEZEVyB1cGRhdGVzPworCWlmICgoKE1vZGlmeVRhYmxlICopIGNvbnRl eHQtPm10c3RhdGUtPnBzLnBsYW4pLT5mb3JQb3J0aW9uT2YpCisJCUV4ZWNGb3JQb3J0aW9u T2ZMZWZ0b3ZlcnMoY29udGV4dCwgY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0 dXBsZWlkKTsKKwogCS8qIEFGVEVSIFJPVyBVUERBVEUgVHJpZ2dlcnMgKi8KIAlFeGVjQVJV cGRhdGVUcmlnZ2Vycyhjb250ZXh0LT5lc3RhdGUsIHJlc3VsdFJlbEluZm8sCiAJCQkJCQkg TlVMTCwgTlVMTCwKQEAgLTQzMDMsNiArNDQ1MCwxMTcgQEAgRXhlY0luaXRNb2RpZnlUYWJs ZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCX0K IAl9CiAKKwkvKgorCSAqIElmIG5lZWRlZCwgaW5pdGlhbGl6ZSB0aGUgdGFyZ2V0IHJhbmdl IGZvciBGT1IgUE9SVElPTiBPRi4KKwkgKi8KKwlpZiAobm9kZS0+Zm9yUG9ydGlvbk9mKQor CXsKKwkJVHVwbGVEZXNjIHR1cERlc2M7CisJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRp b25PZjsKKwkJRGF0dW0JdGFyZ2V0UmFuZ2U7CisJCWJvb2wJaXNOdWxsOworCQlFeHByQ29u dGV4dCAqZWNvbnRleHQ7CisJCUV4cHJTdGF0ZSAqZXhwclN0YXRlOworCQlGb3JQb3J0aW9u T2ZTdGF0ZSAqZnBvU3RhdGU7CisKKwkJcmVzdWx0UmVsSW5mbyA9IG10c3RhdGUtPnJlc3Vs dFJlbEluZm87CisJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbykK KwkJCXJlc3VsdFJlbEluZm8gPSByZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5m bzsKKworCQl0dXBEZXNjID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9h dHQ7CisJCWZvclBvcnRpb25PZiA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGUtPmZvclBv cnRpb25PZjsKKworCQkvKiBFdmFsIHRoZSBGT1IgUE9SVElPTiBPRiB0YXJnZXQgKi8KKwkJ aWYgKG10c3RhdGUtPnBzLnBzX0V4cHJDb250ZXh0ID09IE5VTEwpCisJCQlFeGVjQXNzaWdu RXhwckNvbnRleHQoZXN0YXRlLCAmbXRzdGF0ZS0+cHMpOworCQllY29udGV4dCA9IG10c3Rh dGUtPnBzLnBzX0V4cHJDb250ZXh0OworCisJCWV4cHJTdGF0ZSA9IEV4ZWNQcmVwYXJlRXhw cigoRXhwciAqKSBmb3JQb3J0aW9uT2YtPnRhcmdldFJhbmdlLCBlc3RhdGUpOworCQl0YXJn ZXRSYW5nZSA9IEV4ZWNFdmFsRXhwcihleHByU3RhdGUsIGVjb250ZXh0LCAmaXNOdWxsKTsK KwkJaWYgKGlzTnVsbCkKKwkJCWVsb2coRVJST1IsICJHb3QgYSBOVUxMIEZPUiBQT1JUSU9O IE9GIHRhcmdldCByYW5nZSIpOworCisJCS8qIENyZWF0ZSBzdGF0ZSBmb3IgRk9SIFBPUlRJ T04gT0Ygb3BlcmF0aW9uICovCisKKwkJZnBvU3RhdGUgPSBtYWtlTm9kZShGb3JQb3J0aW9u T2ZTdGF0ZSk7CisJCWZwb1N0YXRlLT5mcF9yYW5nZU5hbWUgPSBmb3JQb3J0aW9uT2YtPnJh bmdlX25hbWU7CisJCWZwb1N0YXRlLT5mcF9yYW5nZVR5cGUgPSBmb3JQb3J0aW9uT2YtPnJh bmdlVHlwZTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdlQXR0bm8gPSBmb3JQb3J0aW9uT2YtPnJh bmdlVmFyLT52YXJhdHRubzsKKwkJZnBvU3RhdGUtPmZwX3RhcmdldFJhbmdlID0gdGFyZ2V0 UmFuZ2U7CisKKwkJLyogSW5pdGlhbGl6ZSBzbG90IGZvciB0aGUgZXhpc3RpbmcgdHVwbGUg Ki8KKworCQlmcG9TdGF0ZS0+ZnBfRXhpc3RpbmcgPQorCQkJdGFibGVfc2xvdF9jcmVhdGUo cmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCSAgJm10c3RhdGUtPnBz LnN0YXRlLT5lc190dXBsZVRhYmxlKTsKKworCQkvKiBDcmVhdGUgdGhlIHR1cGxlIHNsb3Qg Zm9yIElOU0VSVGluZyB0aGUgbGVmdG92ZXJzICovCisKKwkJZnBvU3RhdGUtPmZwX0xlZnRv dmVyID0KKwkJCUV4ZWNJbml0RXh0cmFUdXBsZVNsb3QobXRzdGF0ZS0+cHMuc3RhdGUsIHR1 cERlc2MsICZUVFNPcHNWaXJ0dWFsKTsKKworCQkvKgorCQkgKiBXZSBtdXN0IGF0dGFjaCB0 aGUgRm9yUG9ydGlvbk9mU3RhdGUgdG8gYWxsIHJlc3VsdCByZWxzLAorCQkgKiBpbiBjYXNl IG9mIGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0ZSBvciB0cmlnZ2VycyBmaXJpbmcKKwkJICog b24gcGFydGl0aW9ucy4KKwkJICovCisJCWZvciAoaSA9IDA7IGkgPCBucmVsczsgaSsrKQor CQl7CisJCQlGb3JQb3J0aW9uT2ZTdGF0ZQkqbGVhZlN0YXRlOworCQkJcmVzdWx0UmVsSW5m byA9ICZtdHN0YXRlLT5yZXN1bHRSZWxJbmZvW2ldOworCisJCQlsZWFmU3RhdGUgPSBtYWtl Tm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7CisJCQlsZWFmU3RhdGUtPmZwX3JhbmdlTmFtZSA9 IGZwb1N0YXRlLT5mcF9yYW5nZU5hbWU7CisJCQlsZWFmU3RhdGUtPmZwX3JhbmdlVHlwZSA9 IGZwb1N0YXRlLT5mcF9yYW5nZVR5cGU7CisJCQlsZWFmU3RhdGUtPmZwX3JhbmdlQXR0bm8g PSBmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubzsKKwkJCWxlYWZTdGF0ZS0+ZnBfdGFyZ2V0UmFu Z2UgPSBmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2U7CisJCQlsZWFmU3RhdGUtPmZwX0xlZnRv dmVyID0gZnBvU3RhdGUtPmZwX0xlZnRvdmVyOworCQkJLyogRWFjaCBwYXJ0aXRpb24gbmVl ZHMgYSBzbG90IG1hdGNoaW5nIGl0cyB0dXBsZSBkZXNjcmlwdG9yICovCisJCQlsZWFmU3Rh dGUtPmZwX0V4aXN0aW5nID0KKwkJCQl0YWJsZV9zbG90X2NyZWF0ZShyZXN1bHRSZWxJbmZv LT5yaV9SZWxhdGlvbkRlc2MsCisJCQkJCQkJCSAgJm10c3RhdGUtPnBzLnN0YXRlLT5lc190 dXBsZVRhYmxlKTsKKworCQkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gbGVh ZlN0YXRlOworCQl9CisKKwkJLyogTWFrZSBzdXJlIHRoZSByb290IHJlbGF0aW9uIGhhcyB0 aGUgRk9SIFBPUlRJT04gT0YgY2xhdXNlIHRvby4gKi8KKwkJaWYgKG5vZGUtPnJvb3RSZWxh dGlvbiA+IDApCisJCQltdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlv bk9mID0gZnBvU3RhdGU7CisKKwkJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUgJiYKKwkJCQltdHN0YXRlLT5tdF9wYXJ0aXRpb25fdHVw bGVfcm91dGluZyA9PSBOVUxMKQorCQl7CisJCQkvKgorCQkJICogV2Ugd2lsbCBuZWVkIHR1 cGxlIHJvdXRpbmcgdG8gaW5zZXJ0IGxlZnRvdmVycy4KKwkJCSAqIFNpbmNlIHdlIGFyZSBp bml0aWFsaXppbmcgdGhpbmdzIGJlZm9yZSBFeGVjQ3Jvc3NQYXJ0aXRpb25VcGRhdGUgcnVu cywKKwkJCSAqIHdlIG11c3QgZG8gZXZlcnl0aGluZyBpdCBuZWVkcyBhcyB3ZWxsLgorCQkJ ICovCisJCQlpZiAobXRzdGF0ZS0+bXRfcGFydGl0aW9uX3R1cGxlX3JvdXRpbmcgPT0gTlVM TCkKKwkJCXsKKwkJCQlSZWxhdGlvbglyb290UmVsID0gbXRzdGF0ZS0+cm9vdFJlc3VsdFJl bEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwkJCQlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwor CQkJCS8qIFRoaW5ncyBidWlsdCBoZXJlIGhhdmUgdG8gbGFzdCBmb3IgdGhlIHF1ZXJ5IGR1 cmF0aW9uLiAqLworCQkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUt PmVzX3F1ZXJ5X2N4dCk7CisKKwkJCQltdHN0YXRlLT5tdF9wYXJ0aXRpb25fdHVwbGVfcm91 dGluZyA9CisJCQkJCUV4ZWNTZXR1cFBhcnRpdGlvblR1cGxlUm91dGluZyhlc3RhdGUsIHJv b3RSZWwpOworCisJCQkJLyoKKwkJCQkgKiBCZWZvcmUgYSBwYXJ0aXRpb24ncyB0dXBsZSBj YW4gYmUgcmUtcm91dGVkLCBpdCBtdXN0IGZpcnN0IGJlCisJCQkJICogY29udmVydGVkIHRv IHRoZSByb290J3MgZm9ybWF0LCBzbyB3ZSdsbCBuZWVkIGEgc2xvdCBmb3Igc3RvcmluZwor CQkJCSAqIHN1Y2ggdHVwbGVzLgorCQkJCSAqLworCQkJCUFzc2VydChtdHN0YXRlLT5tdF9y b290X3R1cGxlX3Nsb3QgPT0gTlVMTCk7CisJCQkJbXRzdGF0ZS0+bXRfcm9vdF90dXBsZV9z bG90ID0gdGFibGVfc2xvdF9jcmVhdGUocm9vdFJlbCwgTlVMTCk7CisKKwkJCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwkJCX0KKwkJfQorCisJCS8qIERvbid0IGZyZWUg dGhlIEV4cHJDb250ZXh0IGhlcmUgYmVjYXVzZSB0aGUgcmVzdWx0IG11c3QgbGFzdCBmb3Ig dGhlIHdob2xlIHF1ZXJ5ICovCisJfQorCiAJLyoKIAkgKiBJZiB3ZSBoYXZlIGFueSBzZWNv bmRhcnkgcmVsYXRpb25zIGluIGFuIFVQREFURSBvciBERUxFVEUsIHRoZXkgbmVlZCB0bwog CSAqIGJlIHRyZWF0ZWQgbGlrZSBub24tbG9ja2VkIHJlbGF0aW9ucyBpbiBTRUxFQ1QgRk9S IFVQREFURSwgaS5lLiwgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IDAzMDQ2M2Ni NDI5Li5hMmUzMzUwZDFjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI0NDIsNiAr MjQ0MiwxNCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJ CQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0ZvclBvcnRpb25P ZkV4cHI6CisJCQl7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mID0gKEZv clBvcnRpb25PZkV4cHIgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGZvclBvcnRpb25PZi0+ dGFyZ2V0UmFuZ2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlj YXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7CiAJCQkJUGFydGl0aW9uUHJ1bmVT dGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0ZXBPcCAqKSBub2RlOwpAQCAtMjU4 Miw2ICsyNTkwLDggQEAgcXVlcnlfdHJlZV93YWxrZXJfaW1wbChRdWVyeSAqcXVlcnksCiAJ CXJldHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QpKQogCQly ZXR1cm4gdHJ1ZTsKKwlpZiAoV0FMSyhxdWVyeS0+Zm9yUG9ydGlvbk9mKSkKKwkJcmV0dXJu IHRydWU7CiAJaWYgKFdBTEsocXVlcnktPnJldHVybmluZ0xpc3QpKQogCQlyZXR1cm4gdHJ1 ZTsKIAlpZiAoV0FMSyhxdWVyeS0+am9pbnRyZWUpKQpAQCAtMzQyNSw2ICszNDM1LDE5IEBA IGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQlyZXR1cm4g KE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfRm9yUG9ydGlv bk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpmcG8gPSAoRm9yUG9ydGlv bk9mRXhwciAqKSBub2RlOworCQkJCUZvclBvcnRpb25PZkV4cHIgKm5ld25vZGU7CisKKwkJ CQlGTEFUQ09QWShuZXdub2RlLCBmcG8sIEZvclBvcnRpb25PZkV4cHIpOworCQkJCU1VVEFU RShuZXdub2RlLT5yYW5nZVZhciwgZnBvLT5yYW5nZVZhciwgVmFyICopOworCQkJCU1VVEFU RShuZXdub2RlLT50YXJnZXRSYW5nZSwgZnBvLT50YXJnZXRSYW5nZSwgTm9kZSAqKTsKKwkJ CQlNVVRBVEUobmV3bm9kZS0+cmFuZ2VTZXQsIGZwby0+cmFuZ2VTZXQsIExpc3QgKik7CisK KwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNl IFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7CiAJCQkJUGFydGl0aW9uUHJ1bmVTdGVw T3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0ZXBPcCAqKSBub2RlOwpAQCAtMzYwMyw2 ICszNjI2LDcgQEAgcXVlcnlfdHJlZV9tdXRhdG9yX2ltcGwoUXVlcnkgKnF1ZXJ5LAogCU1V VEFURShxdWVyeS0+d2l0aENoZWNrT3B0aW9ucywgcXVlcnktPndpdGhDaGVja09wdGlvbnMs IExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5vbkNvbmZsaWN0LCBxdWVyeS0+b25Db25mbGlj dCwgT25Db25mbGljdEV4cHIgKik7CiAJTVVUQVRFKHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3Qs IHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIExpc3QgKik7CisJTVVUQVRFKHF1ZXJ5LT5mb3JQ b3J0aW9uT2YsIHF1ZXJ5LT5mb3JQb3J0aW9uT2YsIEZvclBvcnRpb25PZkV4cHIgKik7CiAJ TVVUQVRFKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0LCBxdWVyeS0+cmV0dXJuaW5nTGlzdCwgTGlz dCAqKTsKIAlNVVRBVEUocXVlcnktPmpvaW50cmVlLCBxdWVyeS0+am9pbnRyZWUsIEZyb21F eHByICopOwogCU1VVEFURShxdWVyeS0+c2V0T3BlcmF0aW9ucywgcXVlcnktPnNldE9wZXJh dGlvbnMsIE5vZGUgKik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMKaW5kZXggY2E2MTllYWI5NDQuLjQxZjVmOGQyZjdiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0zMTEsNyArMzExLDggQEAgc3RhdGljIE1v ZGlmeVRhYmxlICptYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpz dWJwbGFuLAogCQkJCQkJCQkJIExpc3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJCQkJ IExpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJ CQkJCQkJCSBMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0J CQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBhcmFtKTsKKwkJCQkJ CQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0 aW9uT2YsCisJCQkJCQkJCQkgaW50IGVwcVBhcmFtKTsKIHN0YXRpYyBHYXRoZXJNZXJnZSAq Y3JlYXRlX2dhdGhlcl9tZXJnZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJ CQkgR2F0aGVyTWVyZ2VQYXRoICpiZXN0X3BhdGgpOwogCkBAIC0yODM1LDYgKzI4MzYsNyBA QCBjcmVhdGVfbW9kaWZ5dGFibGVfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTW9kaWZ5VGFi bGVQYXRoICpiZXN0X3BhdGgpCiAJCQkJCQkJYmVzdF9wYXRoLT5yb3dNYXJrcywKIAkJCQkJ CQliZXN0X3BhdGgtPm9uY29uZmxpY3QsCiAJCQkJCQkJYmVzdF9wYXRoLT5tZXJnZUFjdGlv bkxpc3RzLAorCQkJCQkJCWJlc3RfcGF0aC0+Zm9yUG9ydGlvbk9mLAogCQkJCQkJCWJlc3Rf cGF0aC0+ZXBxUGFyYW0pOwogCiAJY29weV9nZW5lcmljX3BhdGhfaW5mbygmcGxhbi0+cGxh biwgJmJlc3RfcGF0aC0+cGF0aCk7CkBAIC03MDA1LDcgKzcwMDcsOCBAQCBtYWtlX21vZGlm eXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQkJCSBMaXN0ICp1 cGRhdGVDb2xub3NMaXN0cywKIAkJCQkgTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExp c3QgKnJldHVybmluZ0xpc3RzLAogCQkJCSBMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4 cHIgKm9uY29uZmxpY3QsCi0JCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBlcHFQ YXJhbSkKKwkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9ydGlvbk9mRXhwciAq Zm9yUG9ydGlvbk9mLAorCQkJCSBpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGUgKm5v ZGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZSk7CiAJTGlzdAkgICAqZmR3X3ByaXZhdGVfbGlz dDsKQEAgLTcwNzEsNiArNzA3NCw3IEBAIG1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lckluZm8g KnJvb3QsIFBsYW4gKnN1YnBsYW4sCiAJCW5vZGUtPmV4Y2xSZWxUbGlzdCA9IG9uY29uZmxp Y3QtPmV4Y2xSZWxUbGlzdDsKIAl9CiAJbm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMgPSB1cGRh dGVDb2xub3NMaXN0czsKKwlub2RlLT5mb3JQb3J0aW9uT2YgPSAoTm9kZSAqKSBmb3JQb3J0 aW9uT2Y7CiAJbm9kZS0+d2l0aENoZWNrT3B0aW9uTGlzdHMgPSB3aXRoQ2hlY2tPcHRpb25M aXN0czsKIAlub2RlLT5yZXR1cm5pbmdMaXN0cyA9IHJldHVybmluZ0xpc3RzOwogCW5vZGUt PnJvd01hcmtzID0gcm93TWFya3M7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVy LmMKaW5kZXggNjY3NzIzYjY3NTMuLjA0NDM3OTNkM2FjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm5lci5jCkBAIC0xOTYzLDYgKzE5NjMsNyBAQCBncm91cGluZ19wbGFu bmVyKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCQkJCQkJ CQkJcm93TWFya3MsCiAJCQkJCQkJCQkJcGFyc2UtPm9uQ29uZmxpY3QsCiAJCQkJCQkJCQkJ bWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQkJCQlwYXJzZS0+Zm9yUG9ydGlvbk9mLAogCQkJ CQkJCQkJCWFzc2lnbl9zcGVjaWFsX2V4ZWNfcGFyYW0ocm9vdCkpOwogCQl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCmluZGV4IGY3YWM3MTA4N2E2Li41MzVi NTE1MGE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5v ZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCkBAIC0z Njg2LDcgKzM2ODYsOCBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMs CiAJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlz dHMsCiAJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3Qs Ci0JCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pCisJCQkJCQlM aXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Ys CisJCQkJCQlpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGVQYXRoICpwYXRobm9kZSA9 IG1ha2VOb2RlKE1vZGlmeVRhYmxlUGF0aCk7CiAKQEAgLTM3NTIsNiArMzc1Myw3IEBAIGNy ZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwsCiAJcGF0aG5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJuaW5nTGlzdHM7CiAJcGF0 aG5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CiAJcGF0aG5vZGUtPm9uY29uZmxpY3QgPSBv bmNvbmZsaWN0OworCXBhdGhub2RlLT5mb3JQb3J0aW9uT2YgPSBmb3JQb3J0aW9uT2Y7CiAJ cGF0aG5vZGUtPmVwcVBhcmFtID0gZXBxUGFyYW07CiAJcGF0aG5vZGUtPm1lcmdlQWN0aW9u TGlzdHMgPSBtZXJnZUFjdGlvbkxpc3RzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCAw NmZjOGNlOThiNS4uZjhjZDNjMTFiZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtMjQs NyArMjQsOSBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vz cy9zdHJhdG51bS5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgpA QCAtNDcsMTEgKzQ5LDEzIEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgi CiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV90eXBlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgog I2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNj YWNoZS5oIgogCkBAIC02MCwxMCArNjQsMTYgQEAKIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29r X3R5cGUgcG9zdF9wYXJzZV9hbmFseXplX2hvb2sgPSBOVUxMOwogCiBzdGF0aWMgUXVlcnkg KnRyYW5zZm9ybU9wdGlvbmFsU2VsZWN0SW50byhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUg KnBhcnNlVHJlZSk7CitzdGF0aWMgTm9kZSAqYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRp b25zKFF1ZXJ5ICpxcnksIEZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mLAorCQkJ CQkJCQkJCQlOb2RlICp3aGVyZUNsYXVzZSk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybURl bGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KTsKIHN0YXRp YyBRdWVyeSAqdHJhbnNmb3JtSW5zZXJ0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEluc2Vy dFN0bXQgKnN0bXQpOwogc3RhdGljIE9uQ29uZmxpY3RFeHByICp0cmFuc2Zvcm1PbkNvbmZs aWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJCSBPbkNvbmZsaWN0 Q2xhdXNlICpvbkNvbmZsaWN0Q2xhdXNlKTsKK3N0YXRpYyBGb3JQb3J0aW9uT2ZFeHByICp0 cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJ CQkJCQkJCSBpbnQgcnRpbmRleCwKKwkJCQkJCQkJCQkJCQkgRm9yUG9ydGlvbk9mQ2xhdXNl ICpmb3JQb3J0aW9uT2ZDbGF1c2UsCisJCQkJCQkJCQkJCQkJIGJvb2wgaXNVcGRhdGUpOwog c3RhdGljIGludAljb3VudF9yb3dleHByX2NvbHVtbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpleHByKTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtU2VsZWN0U3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zv cm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KTsK QEAgLTQ3OSw2ICs0ODksMjAgQEAgc3RtdF9yZXF1aXJlc19wYXJzZV9hbmFseXNpcyhSYXdT dG10ICpwYXJzZVRyZWUpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIE5vZGUgKgor YWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRpb25zKFF1ZXJ5ICpxcnksIEZvclBvcnRpb25P ZkNsYXVzZSAqZm9yUG9ydGlvbk9mLCBOb2RlICp3aGVyZUNsYXVzZSkKK3sKKwlpZiAoZm9y UG9ydGlvbk9mKQorCXsKKwkJaWYgKHdoZXJlQ2xhdXNlKQorCQkJcmV0dXJuIChOb2RlICop IG1ha2VCb29sRXhwcihBTkRfRVhQUiwgbGlzdF9tYWtlMihxcnktPmZvclBvcnRpb25PZi0+ b3ZlcmxhcHNFeHByLCB3aGVyZUNsYXVzZSksIC0xKTsKKwkJZWxzZQorCQkJcmV0dXJuIHFy eS0+Zm9yUG9ydGlvbk9mLT5vdmVybGFwc0V4cHI7CisJfQorCWVsc2UKKwkJcmV0dXJuIHdo ZXJlQ2xhdXNlOworfQorCiAvKgogICogYW5hbHl6ZV9yZXF1aXJlc19zbmFwc2hvdAogICoJ CVJldHVybnMgdHJ1ZSBpZiBhIHNuYXBzaG90IG11c3QgYmUgc2V0IGJlZm9yZSBkb2luZyBw YXJzZSBhbmFseXNpcwpAQCAtNTEyLDYgKzUzNiw3IEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KQogewogCVF1ZXJ5CSAgICpx cnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07CisJ Tm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTm9kZQkgICAqcXVhbDsKIAogCXFyeS0+Y29tbWFu ZFR5cGUgPSBDTURfREVMRVRFOwpAQCAtNTUwLDcgKzU3NSwxMSBAQCB0cmFuc2Zvcm1EZWxl dGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0t PnBfbGF0ZXJhbF9vbmx5ID0gZmFsc2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVl OwogCi0JcXVhbCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVD bGF1c2UsCisJaWYgKHN0bXQtPmZvclBvcnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2Yg PSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0 aW9uLCBzdG10LT5mb3JQb3J0aW9uT2YsIGZhbHNlKTsKKworCXdoZXJlQ2xhdXNlID0gYWRk Rm9yUG9ydGlvbk9mV2hlcmVDb25kaXRpb25zKHFyeSwgc3RtdC0+Zm9yUG9ydGlvbk9mLCBz dG10LT53aGVyZUNsYXVzZSk7CisJcXVhbCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0 ZSwgd2hlcmVDbGF1c2UsCiAJCQkJCQkJCUVYUFJfS0lORF9XSEVSRSwgIldIRVJFIik7CiAK IAlxcnktPnJldHVybmluZ0xpc3QgPSB0cmFuc2Zvcm1SZXR1cm5pbmdMaXN0KHBzdGF0ZSwg c3RtdC0+cmV0dXJuaW5nTGlzdCk7CkBAIC0xMTczLDcgKzEyMDIsNyBAQCB0cmFuc2Zvcm1P bkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJICogTm93IHRyYW5zZm9y bSB0aGUgVVBEQVRFIHN1YmV4cHJlc3Npb25zLgogCQkgKi8KIAkJb25Db25mbGljdFNldCA9 Ci0JCQl0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBzdGF0ZSwgb25Db25mbGljdENsYXVz ZS0+dGFyZ2V0TGlzdCk7CisJCQl0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBzdGF0ZSwg b25Db25mbGljdENsYXVzZS0+dGFyZ2V0TGlzdCwgTlVMTCk7CiAKIAkJb25Db25mbGljdFdo ZXJlID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLAogCQkJCQkJCQkJCQkgICBvbkNv bmZsaWN0Q2xhdXNlLT53aGVyZUNsYXVzZSwKQEAgLTEyMDMsNiArMTIzMiwxNTUgQEAgdHJh bnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAorLyoKKyAqIHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZQorICoKKyAq CSAgVHJhbnNmb3JtcyBhIEZvclBvcnRpb25PZkNsYXVzZSBpbiBhbiBVUERBVEUvREVMRVRF IHN0YXRlbWVudC4KKyAqCisgKgkgIC0gTG9vayB1cCB0aGUgcmFuZ2UvcGVyaW9kIHJlcXVl c3RlZC4KKyAqCSAgLSBCdWlsZCBhIGNvbXBhdGlibGUgcmFuZ2UgdmFsdWUgZnJvbSB0aGUg RlJPTSBhbmQgVE8gZXhwcmVzc2lvbnMuCisgKgkgIC0gQnVpbGQgYW4gIm92ZXJsYXBzIiBl eHByZXNzaW9uIGZvciBmaWx0ZXJpbmcuCisgKgkgIC0gRm9yIFVQREFURXMsIGJ1aWxkIGFu ICJpbnRlcnNlY3RzIiBleHByZXNzaW9uIHRoZSByZXdyaXRlciBjYW4gYWRkCisgKgkJdG8g dGhlIHRhcmdldExpc3QgdG8gY2hhbmdlIHRoZSB0ZW1wb3JhbCBib3VuZHMuCisgKi8KK3N0 YXRpYyBGb3JQb3J0aW9uT2ZFeHByICoKK3RyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQ YXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJaW50IHJ0aW5kZXgsCisJCQkJCQkJRm9yUG9y dGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJYm9vbCBpc1VwZGF0ZSkKK3sK KwlSZWxhdGlvbiB0YXJnZXRyZWwgPSBwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uOworCVJU RVBlcm1pc3Npb25JbmZvICp0YXJnZXRfcGVybWluZm8gPSBwc3RhdGUtPnBfdGFyZ2V0X25z aXRlbS0+cF9wZXJtaW5mbzsKKwljaGFyICpyYW5nZV9uYW1lID0gZm9yUG9ydGlvbk9mLT5y YW5nZV9uYW1lOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZXNwYWNlID0gTlVMTDsKKwljaGFy ICpyYW5nZV90eXBlX25hbWUgPSBOVUxMOworCWludCByYW5nZV9hdHRubyA9IEludmFsaWRB dHRyTnVtYmVyOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHI7CisJT2lkCW9wY2xhc3M7CisJ U3RyYXRlZ3lOdW1iZXIgc3RyYXQ7CisJT2lkCW9waWQ7CisJRm9yUG9ydGlvbk9mRXhwciAq cmVzdWx0OworCVZhciAqcmFuZ2VWYXI7CisJTm9kZSAqdGFyZ2V0RXhwcjsKKworCS8qIFdl IGRvbid0IHN1cHBvcnQgRk9SIFBPUlRJT04gT0YgRkRXIHF1ZXJpZXMuICovCisJaWYgKHRh cmdldHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkJIGVycm1zZygiZm9yZWlnbiB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCBGT1Ig UE9SVElPTiBPRiIpKSk7CisKKwlyZXN1bHQgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZFeHBy KTsKKworCS8qIExvb2sgdXAgdGhlIEZPUiBQT1JUSU9OIE9GIG5hbWUgcmVxdWVzdGVkLiAq LworCXJhbmdlX2F0dG5vID0gYXR0bmFtZUF0dE51bSh0YXJnZXRyZWwsIHJhbmdlX25hbWUs IGZhbHNlKTsKKwlpZiAocmFuZ2VfYXR0bm8gPT0gSW52YWxpZEF0dHJOdW1iZXIpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwK KwkJCQkgZXJybXNnKCJjb2x1bW4gb3IgcGVyaW9kIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVz XCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJcmFuZ2VfbmFtZSwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pKSk7CisJYXR0ciA9 IFR1cGxlRGVzY0F0dHIodGFyZ2V0cmVsLT5yZF9hdHQsIHJhbmdlX2F0dG5vIC0gMSk7CisK KwkvKiBNYWtlIHN1cmUgaXQncyBhIHJhbmdlIGNvbHVtbiAqLworCWlmICghdHlwZV9pc19y YW5nZShhdHRyLT5hdHR0eXBpZCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJCSBlcnJtc2coImNvbHVt biBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGlzIG5vdCBhIHJhbmdlIHR5cGUiLAorCQkJ CQkJcmFuZ2VfbmFtZSwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJl bCkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmb3JQb3J0aW9uT2YtPnJh bmdlX25hbWVfbG9jYXRpb24pKSk7CisKKwlyYW5nZVZhciA9IG1ha2VWYXIoCisJCQlydGlu ZGV4LAorCQkJcmFuZ2VfYXR0bm8sCisJCQlhdHRyLT5hdHR0eXBpZCwKKwkJCWF0dHItPmF0 dHR5cG1vZCwKKwkJCWF0dHItPmF0dGNvbGxhdGlvbiwKKwkJCTApOworCXJhbmdlVmFyLT5s b2NhdGlvbiA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbjsKKwlyZXN1bHQt PnJhbmdlVmFyID0gcmFuZ2VWYXI7CisJcmVzdWx0LT5yYW5nZVR5cGUgPSBhdHRyLT5hdHR0 eXBpZDsKKwlpZiAoIWdldF90eXBuYW1lX2FuZF9uYW1lc3BhY2UoYXR0ci0+YXR0dHlwaWQs ICZyYW5nZV90eXBlX25hbWUsICZyYW5nZV90eXBlX25hbWVzcGFjZSkpCisJCWVsb2coRVJS T1IsICJtaXNzaW5nIHJhbmdlIHR5cGUgJWQiLCBhdHRyLT5hdHR0eXBpZCk7CisKKworCWlm IChmb3JQb3J0aW9uT2YtPnRhcmdldCkKKwkJLyoKKwkJICogV2Ugd2VyZSBhbHJlYWR5IGdp dmVuIGFuIGV4cHJlc3Npb24gZm9yIHRoZSB0YXJnZXQsCisJCSAqIHNvIHdlIGRvbid0IGhh dmUgdG8gYnVpbGQgYW55dGhpbmcuCisJCSAqLworCQl0YXJnZXRFeHByID0gZm9yUG9ydGlv bk9mLT50YXJnZXQ7CisJZWxzZQorCXsKKwkJLyoKKwkJICogQnVpbGQgYSByYW5nZSBmcm9t IHRoZSBGUk9NIC4uLiBUTyAuLi4uIGJvdW5kcy4KKwkJICogVGhpcyBzaG91bGQgZ2l2ZSBh IGNvbnN0YW50IHJlc3VsdCwgc28gd2UgYWNjZXB0IGZ1bmN0aW9ucyBsaWtlIE5PVygpCisJ CSAqIGJ1dCBub3QgY29sdW1uIHJlZmVyZW5jZXMsIHN1YnF1ZXJpZXMsIGV0Yy4KKwkJICoK KwkJICogSXQgYWxzbyBwZXJtaXRzIFVOQk9VTkRFRCBpbiBlaXRoZXIgcGxhY2UuCisJCSAq LworCQl0YXJnZXRFeHByID0gKE5vZGUgKikgbWFrZUZ1bmNDYWxsKAorCQkJCWxpc3RfbWFr ZTIobWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWVzcGFjZSksIG1ha2VTdHJpbmcocmFuZ2Vf dHlwZV9uYW1lKSksCisJCQkJbGlzdF9tYWtlMihmb3JQb3J0aW9uT2YtPnRhcmdldF9zdGFy dCwgZm9yUG9ydGlvbk9mLT50YXJnZXRfZW5kKSwKKwkJCQlDT0VSQ0VfRVhQTElDSVRfQ0FM TCwKKwkJCQlmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pOworCX0KKwlyZXN1 bHQtPnRhcmdldFJhbmdlID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHRhcmdldEV4cHIsIEVY UFJfS0lORF9VUERBVEVfUE9SVElPTik7CisKKwkvKgorCSAqIEJ1aWxkIG92ZXJsYXBzRXhw ciB0byB1c2UgaW4gdGhlIHdoZXJlQ2xhdXNlLgorCSAqIFRoaXMgbWVhbnMgd2Ugb25seSBo aXQgcm93cyBtYXRjaGluZyB0aGUgRlJPTSAmIFRPIGJvdW5kcy4KKwkgKiBXZSBtdXN0IGxv b2sgdXAgdGhlIG92ZXJsYXBzIG9wZXJhdG9yICh1c3VhbGx5ICImJiIpLgorCSAqLworCW9w Y2xhc3MgPSBHZXREZWZhdWx0T3BDbGFzcyhhdHRyLT5hdHR0eXBpZCwgR0lTVF9BTV9PSUQp OworCXN0cmF0ID0gUlRPdmVybGFwU3RyYXRlZ3lOdW1iZXI7CisJR2V0T3BlcmF0b3JGcm9t Q2Fub25pY2FsU3RyYXRlZ3kob3BjbGFzcywgSW52YWxpZE9pZCwgIm92ZXJsYXBzIiwgIkZP UiBQT1JUSU9OIE9GIiwgJm9waWQsICZzdHJhdCk7CisJcmVzdWx0LT5vdmVybGFwc0V4cHIg PSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCBnZXRfb3BuYW1lKG9waWQp LAorCQkJKE5vZGUgKikgY29weU9iamVjdChyYW5nZVZhciksIHRhcmdldEV4cHIsCisJCQlm b3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pOworCisJLyoKKwkgKiBMb29rIHVw IHRoZSB3aXRob3V0UG9ydGlvbk9wZXIgc28gd2UgY2FuIGNvbXB1dGUgdGhlIGxlZnRvdmVy cy4KKwkgKiBMZWZ0b3ZlcnMgd2lsbCBiZSBvbGRfcmFuZ2UgQC0gdGFyZ2V0X3JhbmdlCisJ ICogKG9uZSBwZXIgZWxlbWVudCBvZiB0aGUgcmVzdWx0KS4KKwkgKi8KKwlzdHJhdCA9IFJU V2l0aG91dFBvcnRpb25TdHJhdGVneU51bWJlcjsKKwlHZXRPcGVyYXRvckZyb21DYW5vbmlj YWxTdHJhdGVneShvcGNsYXNzLCBJbnZhbGlkT2lkLCAid2l0aG91dCBwb3J0aW9uIiwgIkZP UiBQT1JUSU9OIE9GIiwgJm9waWQsICZzdHJhdCk7CisJcmVzdWx0LT53aXRob3V0UG9ydGlv blByb2MgPSBnZXRfb3Bjb2RlKG9waWQpOworCisJaWYgKGlzVXBkYXRlKQorCXsKKwkJLyoK KwkJICogTm93IG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHN0YXJ0L2VuZCB0aW1lIG9mIHRo ZSByZWNvcmQuCisJCSAqIEZvciBhIHJhbmdlIGNvbCAocikgdGhpcyBpcyBgciA9IHIgKiB0 YXJnZXRSYW5nZWAuCisJCSAqLworCQlFeHByICpyYW5nZVNldEV4cHI7CisJCVRhcmdldEVu dHJ5ICp0bGU7CisKKwkJc3RyYXQgPSBSVEludGVyc2VjdFN0cmF0ZWd5TnVtYmVyOworCQlH ZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJhdGVneShvcGNsYXNzLCBJbnZhbGlkT2lkLCAi aW50ZXJzZWN0cyIsICJGT1IgUE9SVElPTiBPRiIsICZvcGlkLCAmc3RyYXQpOworCQlyYW5n ZVNldEV4cHIgPSAoRXhwciAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCBnZXRfb3Bu YW1lKG9waWQpLAorCQkJCShOb2RlICopIGNvcHlPYmplY3QocmFuZ2VWYXIpLCB0YXJnZXRF eHByLAorCQkJCWZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbik7CisJCXJhbmdl U2V0RXhwciA9IChFeHByICopIHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSByYW5n ZVNldEV4cHIsIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTik7CisKKwkJLyogTWFrZSBhIFRM RSB0byBzZXQgdGhlIHJhbmdlIGNvbHVtbiAqLworCQlyZXN1bHQtPnJhbmdlU2V0ID0gTklM OworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkocmFuZ2VTZXRFeHByLCByYW5nZV9hdHRubywg cmFuZ2VfbmFtZSwgZmFsc2UpOworCQlyZXN1bHQtPnJhbmdlU2V0ID0gbGFwcGVuZChyZXN1 bHQtPnJhbmdlU2V0LCB0bGUpOworCisJCS8qIE1hcmsgdGhlIHJhbmdlIGNvbHVtbiBhcyBy ZXF1aXJpbmcgdXBkYXRlIHBlcm1pc3Npb25zICovCisJCXRhcmdldF9wZXJtaW5mby0+dXBk YXRlZENvbHMgPSBibXNfYWRkX21lbWJlcih0YXJnZXRfcGVybWluZm8tPnVwZGF0ZWRDb2xz LAorCQkJCQkJCQkJCQkJCSAgcmFuZ2VfYXR0bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyKTsKKwl9CisJZWxzZQorCQlyZXN1bHQtPnJhbmdlU2V0ID0gTklMOwor CisJcmVzdWx0LT5yYW5nZV9uYW1lID0gcmFuZ2VfbmFtZTsKKworCXJldHVybiByZXN1bHQ7 Cit9CiAKIC8qCiAgKiBCdWlsZE9uQ29uZmxpY3RFeGNsdWRlZFRhcmdldGxpc3QKQEAgLTI0 MDksNiArMjU4Nyw3IEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBVcGRhdGVTdG10ICpzdG10KQogewogCVF1ZXJ5CSAgICpxcnkgPSBtYWtlTm9kZShRdWVy eSk7CiAJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07CisJTm9kZQkgICAqd2hlcmVDbGF1 c2U7CiAJTm9kZQkgICAqcXVhbDsKIAogCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfVVBEQVRF OwpAQCAtMjQyNiw2ICsyNjA1LDEwIEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQogCQkJCQkJCQkJCSBzdG10LT5yZWxhdGlv bi0+aW5oLAogCQkJCQkJCQkJCSB0cnVlLAogCQkJCQkJCQkJCSBBQ0xfVVBEQVRFKTsKKwor CWlmIChzdG10LT5mb3JQb3J0aW9uT2YpCisJCXFyeS0+Zm9yUG9ydGlvbk9mID0gdHJhbnNm b3JtRm9yUG9ydGlvbk9mQ2xhdXNlKHBzdGF0ZSwgcXJ5LT5yZXN1bHRSZWxhdGlvbiwgc3Rt dC0+Zm9yUG9ydGlvbk9mLCB0cnVlKTsKKwogCW5zaXRlbSA9IHBzdGF0ZS0+cF90YXJnZXRf bnNpdGVtOwogCiAJLyogc3VicXVlcmllcyBpbiBGUk9NIGNhbm5vdCBhY2Nlc3MgdGhlIHJl c3VsdCByZWxhdGlvbiAqLwpAQCAtMjQ0Miw3ICsyNjI1LDggQEAgdHJhbnNmb3JtVXBkYXRl U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJbnNpdGVtLT5w X2xhdGVyYWxfb25seSA9IGZhbHNlOwogCW5zaXRlbS0+cF9sYXRlcmFsX29rID0gdHJ1ZTsK IAotCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsIHN0bXQtPndoZXJlQ2xh dXNlLAorCXdoZXJlQ2xhdXNlID0gYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRpb25zKHFy eSwgc3RtdC0+Zm9yUG9ydGlvbk9mLCBzdG10LT53aGVyZUNsYXVzZSk7CisJcXVhbCA9IHRy YW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgd2hlcmVDbGF1c2UsCiAJCQkJCQkJCUVYUFJf S0lORF9XSEVSRSwgIldIRVJFIik7CiAKIAlxcnktPnJldHVybmluZ0xpc3QgPSB0cmFuc2Zv cm1SZXR1cm5pbmdMaXN0KHBzdGF0ZSwgc3RtdC0+cmV0dXJuaW5nTGlzdCk7CkBAIC0yNDUx LDcgKzI2MzUsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwg VXBkYXRlU3RtdCAqc3RtdCkKIAkgKiBOb3cgd2UgYXJlIGRvbmUgd2l0aCBTRUxFQ1QtbGlr ZSBwcm9jZXNzaW5nLCBhbmQgY2FuIGdldCBvbiB3aXRoCiAJICogdHJhbnNmb3JtaW5nIHRo ZSB0YXJnZXQgbGlzdCB0byBtYXRjaCB0aGUgVVBEQVRFIHRhcmdldCBjb2x1bW5zLgogCSAq LwotCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRl LCBzdG10LT50YXJnZXRMaXN0KTsKKwlxcnktPnRhcmdldExpc3QgPSB0cmFuc2Zvcm1VcGRh dGVUYXJnZXRMaXN0KHBzdGF0ZSwgc3RtdC0+dGFyZ2V0TGlzdCwgcXJ5LT5mb3JQb3J0aW9u T2YpOwogCiAJcXJ5LT5ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOwogCXFyeS0+cnRlcGVy bWluZm9zID0gcHN0YXRlLT5wX3J0ZXBlcm1pbmZvczsKQEAgLTI0NzAsNyArMjY1NCw3IEBA IHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpz dG10KQogICoJaGFuZGxlIFNFVCBjbGF1c2UgaW4gVVBEQVRFL01FUkdFL0lOU0VSVCAuLi4g T04gQ09ORkxJQ1QgVVBEQVRFCiAgKi8KIExpc3QgKgotdHJhbnNmb3JtVXBkYXRlVGFyZ2V0 TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCkKK3RyYW5zZm9ybVVw ZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcmlnVGxpc3QsIEZv clBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZikKIHsKIAlMaXN0CSAgICp0bGlzdCA9IE5J TDsKIAlSVEVQZXJtaXNzaW9uSW5mbyAqdGFyZ2V0X3Blcm1pbmZvOwpAQCAtMjUyMCw2ICsy NzA0LDIxIEBAIHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICpvcmlnVGxpc3QpCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocHN0 YXRlLT5wX3RhcmdldF9yZWxhdGlvbikpLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgb3JpZ1RhcmdldC0+bG9jYXRpb24pKSk7CiAKKwkJLyoKKwkJICogSWYgdGhpcyBp cyBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZSwKKwkJICogZm9yYmlkIGRpcmVjdGx5IHNldHRp bmcgdGhlIHJhbmdlIGNvbHVtbiwKKwkJICogc2luY2UgdGhhdCB3b3VsZCBjb25mbGljdCB3 aXRoIHRoZSBpbXBsaWNpdCB1cGRhdGVzLgorCQkgKi8KKwkJaWYgKGZvclBvcnRpb25PZiAh PSBOVUxMKQorCQl7CisJCQlpZiAoYXR0cm5vID09IGZvclBvcnRpb25PZi0+cmFuZ2VWYXIt PnZhcmF0dG5vKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJjYW4ndCBkaXJlY3RseSBhc3NpZ24g dG8gXCIlc1wiIGluIGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlIiwKKwkJCQkJCQkJb3JpZ1Rh cmdldC0+bmFtZSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3JpZ1Rh cmdldC0+bG9jYXRpb24pKSk7CisJCX0KKwogCQl1cGRhdGVUYXJnZXRMaXN0RW50cnkocHN0 YXRlLCB0bGUsIG9yaWdUYXJnZXQtPm5hbWUsCiAJCQkJCQkJICBhdHRybm8sCiAJCQkJCQkJ ICBvcmlnVGFyZ2V0LT5pbmRpcmVjdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDU4ZGNiNDdj MjE4Li4yOGQyN2E3YzNjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTgsNiArMjU4LDcgQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlSYW5nZVZhciAgICpyYW5nZTsKIAlJbnRv Q2xhdXNlICppbnRvOwogCVdpdGhDbGF1c2UgKndpdGg7CisJRm9yUG9ydGlvbk9mQ2xhdXNl ICpmb3Jwb3J0aW9ub2Y7CiAJSW5mZXJDbGF1c2UJKmluZmVyOwogCU9uQ29uZmxpY3RDbGF1 c2UgKm9uY29uZmxpY3Q7CiAJQV9JbmRpY2VzICAqYWluZDsKQEAgLTU1MCw2ICs1NTEsNyBA QCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwg TGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9l eHByCiAldHlwZSA8cmFuZ2U+CWV4dGVuZGVkX3JlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5n ZT4JcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMKKyV0eXBlIDxmb3Jwb3J0aW9ub2Y+IGZvcl9w b3J0aW9uX29mX2NsYXVzZQogJXR5cGUgPG5vZGU+CXRhYmxlc2FtcGxlX2NsYXVzZSBvcHRf cmVwZWF0YWJsZV9jbGF1c2UKICV0eXBlIDx0YXJnZXQ+CXRhcmdldF9lbCBzZXRfdGFyZ2V0 IGluc2VydF9jb2x1bW5faXRlbQogCkBAIC03NDYsNyArNzQ4LDcgQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAogCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQ QVJUSVRJT04gUEFTU0lORyBQQVNTV09SRAogCVBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElD WQotCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQ QVJFRCBQUklNQVJZCisJUE9SVElPTiBQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBS RVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJP Q0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKIAlR VU9URQpAQCAtODY0LDYgKzg2NiwxNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog ICoganNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50IGFuZCBqc29uX2tleV91bmlxdWVu ZXNzX2NvbnN0cmFpbnRfb3B0CiAgKiBwcm9kdWN0aW9ucyAoc2VlIGNvbW1lbnRzIHRoZXJl KS4KICAqLworLyoKKyAqIFdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgc2hpZnQvcmVkdWNlIGNv bmZsaWN0OgorICogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBJTlRFUlZBTCBZRUFS IFRPIE1PTlRIIFRPIGZvby4KKyAqIFRoaXMgaXMgYmFzaWNhbGx5IHRoZSBjbGFzc2ljICJk YW5nbGluZyBlbHNlIiBwcm9ibGVtLCBhbmQgd2Ugd2FudCBhCisgKiBzaW1pbGFyIHJlc29s dXRpb246IHRyZWF0IHRoZSBUTyBhcyBwYXJ0IG9mIHRoZSBJTlRFUlZBTCwgbm90IGFzIHBh cnQgb2YKKyAqIHRoZSBGUk9NIC4uLiBUTyAuLi4uIFVzZXJzIGNhbiBhZGQgcGFyZW50aGVz ZXMgaWYgdGhhdCdzIGEgcHJvYmxlbS4KKyAqIFRPIGp1c3QgbmVlZHMgdG8gYmUgaGlnaGVy IHByZWNlZGVuY2UgdGhhbiBZRUFSX1AgZXRjLgorICogVE9ETzogSSBuZWVkIHRvIGZpZ3Vy ZSBvdXQgYSAlcHJlYyBzb2x1dGlvbiBiZWZvcmUgdGhpcyBnZXRzIGNvbW1pdHRlZCEKKyAq LworJW5vbmFzc29jIFlFQVJfUCBNT05USF9QIERBWV9QIEhPVVJfUCBNSU5VVEVfUAorJW5v bmFzc29jIFRPCiAlbm9uYXNzb2MJVU5CT1VOREVECQkvKiBpZGVhbGx5IHdvdWxkIGhhdmUg c2FtZSBwcmVjZWRlbmNlIGFzIElERU5UICovCiAlbm9uYXNzb2MJSURFTlQgUEFSVElUSU9O IFJBTkdFIFJPV1MgR1JPVVBTIFBSRUNFRElORyBGT0xMT1dJTkcgQ1VCRSBST0xMVVAKIAkJ CVNFVCBLRVlTIE9CSkVDVF9QIFNDQUxBUiBWQUxVRV9QIFdJVEggV0lUSE9VVApAQCAtMTIy MjUsMTQgKzEyMjM4LDE2IEBAIHJldHVybmluZ19jbGF1c2U6CiAgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCiAKIERlbGV0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBERUxFVEVfUCBGUk9N IHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCisJCQlmb3JfcG9ydGlvbl9vZl9jbGF1c2UKIAkJ CXVzaW5nX2NsYXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZSByZXR1cm5pbmdfY2xhdXNl CiAJCQkJewogCQkJCQlEZWxldGVTdG10ICpuID0gbWFrZU5vZGUoRGVsZXRlU3RtdCk7CiAK IAkJCQkJbi0+cmVsYXRpb24gPSAkNDsKLQkJCQkJbi0+dXNpbmdDbGF1c2UgPSAkNTsKLQkJ CQkJbi0+d2hlcmVDbGF1c2UgPSAkNjsKLQkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ3Owor CQkJCQluLT5mb3JQb3J0aW9uT2YgPSAkNTsKKwkJCQkJbi0+dXNpbmdDbGF1c2UgPSAkNjsK KwkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkNzsKKwkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ4 OwogCQkJCQluLT53aXRoQ2xhdXNlID0gJDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJ CQl9CkBAIC0xMjI5NSw2ICsxMjMxMCw3IEBAIG9wdF9ub3dhaXRfb3Jfc2tpcDoKICAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KIAogVXBkYXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIFVQ REFURSByZWxhdGlvbl9leHByX29wdF9hbGlhcworCQkJZm9yX3BvcnRpb25fb2ZfY2xhdXNl CiAJCQlTRVQgc2V0X2NsYXVzZV9saXN0CiAJCQlmcm9tX2NsYXVzZQogCQkJd2hlcmVfb3Jf Y3VycmVudF9jbGF1c2UKQEAgLTEyMzAzLDEwICsxMjMxOSwxMSBAQCBVcGRhdGVTdG10OiBv cHRfd2l0aF9jbGF1c2UgVVBEQVRFIHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCiAJCQkJCVVw ZGF0ZVN0bXQgKm4gPSBtYWtlTm9kZShVcGRhdGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlv biA9ICQzOwotCQkJCQluLT50YXJnZXRMaXN0ID0gJDU7Ci0JCQkJCW4tPmZyb21DbGF1c2Ug PSAkNjsKLQkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkNzsKLQkJCQkJbi0+cmV0dXJuaW5nTGlz dCA9ICQ4OworCQkJCQluLT5mb3JQb3J0aW9uT2YgPSAkNDsKKwkJCQkJbi0+dGFyZ2V0TGlz dCA9ICQ2OworCQkJCQluLT5mcm9tQ2xhdXNlID0gJDc7CisJCQkJCW4tPndoZXJlQ2xhdXNl ID0gJDg7CisJCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkOTsKIAkJCQkJbi0+d2l0aENsYXVz ZSA9ICQxOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTM3NDIsNiArMTM3 NTksMjcgQEAgcmVsYXRpb25fZXhwcl9vcHRfYWxpYXM6IHJlbGF0aW9uX2V4cHIJCQkJCSVw cmVjIFVNSU5VUwogCQkJCX0KIAkJOwogCitmb3JfcG9ydGlvbl9vZl9jbGF1c2U6CisJCQlG T1IgUE9SVElPTiBPRiBDb2xJZCAnKCcgYV9leHByICcpJworCQkJCXsKKwkJCQkJRm9yUG9y dGlvbk9mQ2xhdXNlICpuID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mQ2xhdXNlKTsKKwkJCQkJ bi0+cmFuZ2VfbmFtZSA9ICQ0OworCQkJCQluLT5yYW5nZV9uYW1lX2xvY2F0aW9uID0gQDQ7 CisJCQkJCW4tPnRhcmdldCA9ICQ2OworCQkJCQkkJCA9IG47CisJCQkJfQorCQkJfCBGT1Ig UE9SVElPTiBPRiBDb2xJZCBGUk9NIGFfZXhwciBUTyBhX2V4cHIKKwkJCQl7CisJCQkJCUZv clBvcnRpb25PZkNsYXVzZSAqbiA9IG1ha2VOb2RlKEZvclBvcnRpb25PZkNsYXVzZSk7CisJ CQkJCW4tPnJhbmdlX25hbWUgPSAkNDsKKwkJCQkJbi0+cmFuZ2VfbmFtZV9sb2NhdGlvbiA9 IEA0OworCQkJCQluLT50YXJnZXRfc3RhcnQgPSAkNjsKKwkJCQkJbi0+dGFyZ2V0X2VuZCA9 ICQ4OworCQkJCQkkJCA9IG47CisJCQkJfQorCQkJfCAvKkVNUFRZKi8JCQkJCXsgJCQgPSBO VUxMOyB9CisJCTsKKwogLyoKICAqIFRBQkxFU0FNUExFIGRlY29yYXRpb24gaW4gYSBGUk9N IGl0ZW0KICAqLwpAQCAtMTczMzUsNiArMTczNzMsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6 CiAJCQl8IFBBU1NXT1JECiAJCQl8IFBMQU5TCiAJCQl8IFBPTElDWQorCQkJfCBQT1JUSU9O CiAJCQl8IFBSRUNFRElORwogCQkJfCBQUkVQQVJFCiAJCQl8IFBSRVBBUkVECkBAIC0xNzkz OSw2ICsxNzk3OCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUExBQ0lORwogCQkJ fCBQTEFOUwogCQkJfCBQT0xJQ1kKKwkJCXwgUE9SVElPTgogCQkJfCBQT1NJVElPTgogCQkJ fCBQUkVDRURJTkcKIAkJCXwgUFJFUEFSRQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4 IDdiMjExYTc3NDNmLi4xNWI1YzBkZWRjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpA QCAtNTc0LDYgKzU3NCwxMyBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVf TUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5E X1VQREFURV9QT1JUSU9OOgorCQkJaWYgKGlzQWdnKQorCQkJCWVyciA9IF8oImFnZ3JlZ2F0 ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Np b25zIik7CisJCQllbHNlCisJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKworCQkJYnJl YWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6 IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTk2NCw2ICs5NzEsOSBAQCB0cmFuc2Zvcm1X aW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAog CQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9IHRydWU7CiAJCQli cmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQllcnIgPSBfKCJ3 aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9SVElPTiBPRiBleHBy ZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRp b25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfY29sbGF0ZS5jCmluZGV4IDQ0NTI5YmI0OWU2Li4xNGZmYjdiYTY0OSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jCkBAIC00ODQsNiArNDg0LDcgQEAgYXNz aWduX2NvbGxhdGlvbnNfd2Fsa2VyKE5vZGUgKm5vZGUsIGFzc2lnbl9jb2xsYXRpb25zX2Nv bnRleHQgKmNvbnRleHQpCiAJCWNhc2UgVF9Kb2luRXhwcjoKIAkJY2FzZSBUX0Zyb21FeHBy OgogCQljYXNlIFRfT25Db25mbGljdEV4cHI6CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZFeHBy OgogCQljYXNlIFRfU29ydEdyb3VwQ2xhdXNlOgogCQljYXNlIFRfTWVyZ2VBY3Rpb246CiAJ CQkodm9pZCkgZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMKaW5kZXggOTMwMGM3YjlhYmMuLmYzYzQ5ZGU4MDk5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMKQEAgLTU2Niw2ICs1NjYsOSBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYo UGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCWNhc2UgRVhQUl9LSU5E X1BBUlRJVElPTl9CT1VORDoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2UgY29sdW1uIHJlZmVy ZW5jZSBpbiBwYXJ0aXRpb24gYm91bmQgZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNh c2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBj b2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24iKTsKKwkJCWJy ZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0 OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC0xODEzLDYgKzE4MTYsOSBAQCB0cmFuc2Zv cm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2Fz ZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ug c3VicXVlcnkgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7 CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OOgorCQkJZXJyID0gXygiY2Fubm90 IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uIik7CisJCQlicmVh azsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDog Y2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtMzEwNCw2ICszMTEwLDggQEAgUGFyc2VFeHBy S2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJCXJldHVybiAiVVBEQVRFIjsK IAkJY2FzZSBFWFBSX0tJTkRfTUVSR0VfV0hFTjoKIAkJCXJldHVybiAiTUVSR0UgV0hFTiI7 CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OOgorCQkJcmV0dXJuICJGT1IgUE9S VElPTiBPRiI7CiAJCWNhc2UgRVhQUl9LSU5EX0dST1VQX0JZOgogCQkJcmV0dXJuICJHUk9V UCBCWSI7CiAJCWNhc2UgRVhQUl9LSU5EX09SREVSX0JZOgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9m dW5jLmMKaW5kZXggZmRiM2U2ZGYzMzguLmZjMTdkZDdlZGY4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9mdW5jLmMKQEAgLTI2NTYsNiArMjY1Niw5IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNl bWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24p CiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJ CWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWVyciA9IF8o InNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9SVElP TiBPRiBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBp cyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKaW5kZXggNWY2YTY4M2FiOTQuLjA3MzM2MTZmMDM2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYwpAQCAtMzcyLDcgKzM3Miw3IEBAIHRy YW5zZm9ybU1lcmdlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE1lcmdlU3RtdCAqc3RtdCkK IAkJCQkJcHN0YXRlLT5wX2lzX2luc2VydCA9IGZhbHNlOwogCQkJCQlhY3Rpb24tPnRhcmdl dExpc3QgPQogCQkJCQkJdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsCi0JCQkJ CQkJCQkJCQkgIG1lcmdlV2hlbkNsYXVzZS0+dGFyZ2V0TGlzdCk7CisJCQkJCQkJCQkJCQkg IG1lcmdlV2hlbkNsYXVzZS0+dGFyZ2V0TGlzdCwgTlVMTCk7CiAJCQkJfQogCQkJCWJyZWFr OwogCQkJY2FzZSBDTURfREVMRVRFOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0 ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxl ci5jCmluZGV4IDVlNWMxYzllMmQzLi5lNTkwMjU4MTA4NiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMzQ1OSw2ICszNDU5LDMwIEBAIHJld3JpdGVUYXJn ZXRWaWV3KFF1ZXJ5ICpwYXJzZXRyZWUsIFJlbGF0aW9uIHZpZXcpCiAJCQkJCQkJCQkgICZw YXJzZXRyZWUtPmhhc1N1YkxpbmtzKTsKIAl9CiAKKwlpZiAocGFyc2V0cmVlLT5mb3JQb3J0 aW9uT2YgJiYgcGFyc2V0cmVlLT5jb21tYW5kVHlwZSA9PSBDTURfVVBEQVRFKQorCXsKKwkJ LyoKKwkJICogTGlrZSB0aGUgSU5TRVJUL1VQREFURSBjb2RlIGFib3ZlLCB1cGRhdGUgdGhl IHJlc25vcyBpbiB0aGUKKwkJICogYXV4aWxpYXJ5IFVQREFURSB0YXJnZXRsaXN0IHRvIHJl ZmVyIHRvIGNvbHVtbnMgb2YgdGhlIGJhc2UKKwkJICogcmVsYXRpb24uCisJCSAqLworCQlm b3JlYWNoKGxjLCBwYXJzZXRyZWUtPmZvclBvcnRpb25PZi0+cmFuZ2VTZXQpCisJCXsKKwkJ CVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKTsKKwkJCVRh cmdldEVudHJ5ICp2aWV3X3RsZTsKKworCQkJaWYgKHRsZS0+cmVzanVuaykKKwkJCQljb250 aW51ZTsKKworCQkJdmlld190bGUgPSBnZXRfdGxlX2J5X3Jlc25vKHZpZXdfdGFyZ2V0bGlz dCwgdGxlLT5yZXNubyk7CisJCQlpZiAodmlld190bGUgIT0gTlVMTCAmJiAhdmlld190bGUt PnJlc2p1bmsgJiYgSXNBKHZpZXdfdGxlLT5leHByLCBWYXIpKQorCQkJCXRsZS0+cmVzbm8g PSAoKFZhciAqKSB2aWV3X3RsZS0+ZXhwciktPnZhcmF0dG5vOworCQkJZWxzZQorCQkJCWVs b2coRVJST1IsICJhdHRyaWJ1dGUgbnVtYmVyICVkIG5vdCBmb3VuZCBpbiB2aWV3IHRhcmdl dGxpc3QiLAorCQkJCQkgdGxlLT5yZXNubyk7CisJCX0KKwl9CisKIAkvKgogCSAqIEZvciBV UERBVEUvREVMRVRFLCBwdWxsIHVwIGFueSBXSEVSRSBxdWFscyBmcm9tIHRoZSB2aWV3LiAg V2Uga25vdyB0aGF0CiAJICogYW55IFZhcnMgaW4gdGhlIHF1YWxzIG11c3QgcmVmZXJlbmNl IHRoZSBvbmUgYmFzZSByZWxhdGlvbiwgc28gd2UgbmVlZApAQCAtMzc5Nyw2ICszODIxLDIy IEBAIFJld3JpdGVRdWVyeShRdWVyeSAqcGFyc2V0cmVlLCBMaXN0ICpyZXdyaXRlX2V2ZW50 cywgaW50IG9yaWdfcnRfbGVuZ3RoKQogCQllbHNlIGlmIChldmVudCA9PSBDTURfVVBEQVRF KQogCQl7CiAJCQlBc3NlcnQocGFyc2V0cmVlLT5vdmVycmlkZSA9PSBPVkVSUklESU5HX05P VF9TRVQpOworCQkJLyoKKwkJCSAqIFVwZGF0ZSBGT1IgUE9SVElPTiBPRiBjb2x1bW4ocykg YXV0b21hdGljYWxseS4gRG9uJ3QKKwkJCSAqIGRvIHRoaXMgdW50aWwgd2UncmUgZG9uZSBy ZXdyaXRpbmcgYSB2aWV3IHVwZGF0ZSwgc28KKwkJCSAqIHRoYXQgd2UgZG9uJ3QgYWRkIHRo ZSBzYW1lIHVwZGF0ZSBvbiB0aGUgcmVjdXJzaW9uLgorCQkJICovCisJCQlpZiAocGFyc2V0 cmVlLT5mb3JQb3J0aW9uT2YgJiYKKwkJCQlydF9lbnRyeV9yZWxhdGlvbi0+cmRfcmVsLT5y ZWxraW5kICE9IFJFTEtJTkRfVklFVykKKwkJCXsKKwkJCQlMaXN0Q2VsbCAqdGw7CisJCQkJ Zm9yZWFjaCh0bCwgcGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YtPnJhbmdlU2V0KQorCQkJCXsK KwkJCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QodGwpOwor CQkJCQlwYXJzZXRyZWUtPnRhcmdldExpc3QgPSBsYXBwZW5kKHBhcnNldHJlZS0+dGFyZ2V0 TGlzdCwgdGxlKTsKKwkJCQl9CisJCQl9CisKIAkJCXBhcnNldHJlZS0+dGFyZ2V0TGlzdCA9 CiAJCQkJcmV3cml0ZVRhcmdldExpc3RJVShwYXJzZXRyZWUtPnRhcmdldExpc3QsCiAJCQkJ CQkJCQlwYXJzZXRyZWUtPmNvbW1hbmRUeXBlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJp Z2dlcnMuYwppbmRleCAwZGFkZjJhY2IyZC4uNGQxN2IzODc3YmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0yMzAsNiArMjMwLDcgQEAgc3RhdGljIGJvb2wg cmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJ CQkJUklfUXVlcnlLZXkgKnFrZXksIFNQSVBsYW5QdHIgcXBsYW4sCiAJCQkJCQkJUmVsYXRp b24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwsCiAJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm9s ZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAorCQkJCQkJCWludCBmb3JQb3J0aW9u T2ZQYXJhbSwgRGF0dW0gZm9yUG9ydGlvbk9mLAogCQkJCQkJCWJvb2wgZGV0ZWN0TmV3Um93 cywgaW50IGV4cGVjdF9PSyk7CiBzdGF0aWMgdm9pZCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0 aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8sIGJvb2wgcmVsX2lzX3BrLApAQCAtMjQwLDYgKzI0MSwxMSBA QCBzdGF0aWMgdm9pZCByaV9SZXBvcnRWaW9sYXRpb24oY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbywKIAkJCQkJCQkgICBpbnQgcXVlcnlubywgYm9vbCBwYXJ0Z29uZSkgcGdf YXR0cmlidXRlX25vcmV0dXJuKCk7CiBzdGF0aWMgdm9pZCBsb29rdXBUUklPcGVyQW5kUHJv Yyhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCQkgY2hhciAqKm9w bmFtZSwgY2hhciAqKmFnZ25hbWUpOworc3RhdGljIGJvb2wgZnBvX3RhcmdldHNfcGtfcmFu Z2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLAorCQkJCQkJCQkgY29u c3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbyk7CitzdGF0aWMgRGF0dW0gcmVzdHJpY3Rf Y2FzY2FkaW5nX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwK KwkJCQkJCQkJCSAgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKKwkJCQkJCQkJ CSAgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QpOwogCiAKIC8qCkBAIC00NTYsNiArNDYyLDcg QEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJcmlfUGVyZm9ybUNo ZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJ TlVMTCwgbmV3c2xvdCwKKwkJCQkJLTEsIChEYXR1bSkgMCwKIAkJCQkJcGtfcmVsLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSwKIAkJCQkJU1BJX09L X1NFTEVDVCk7CiAKQEAgLTYyMCw2ICs2MjcsNyBAQCByaV9DaGVja19Qa19NYXRjaChSZWxh dGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAlyZXN1bHQgPSByaV9QZXJmb3JtQ2hl Y2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCQkJIGZrX3JlbCwgcGtfcmVsLAogCQkJ CQkJCSBvbGRzbG90LCBOVUxMLAorCQkJCQkJCSAtMSwgKERhdHVtKSAwLAogCQkJCQkJCSB0 cnVlLAkvKiB0cmVhdCBsaWtlIHVwZGF0ZSAqLwogCQkJCQkJCSBTUElfT0tfU0VMRUNUKTsK IApAQCAtNzE5LDYgKzcyNyw4IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Q7CiAJUklf UXVlcnlLZXkgcWtleTsKIAlTUElQbGFuUHRyCXFwbGFuOworCWludAkJCXRhcmdldFJhbmdl UGFyYW0gPSAtMTsKKwlEYXR1bQkJdGFyZ2V0UmFuZ2UgPSAoRGF0dW0pIDA7CiAKIAlyaWlu Zm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAogCQkJ CQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKQEAgLTgxNSw5ICs4MjUsMTYg QEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlv bikKIAkvKgogCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIGNoZWNrIGZvciBl eGlzdGluZyByZWZlcmVuY2VzLgogCSAqLworCWlmICh0cmlnZGF0YS0+dGdfdGVtcG9yYWwp CisJeworCQl0YXJnZXRSYW5nZVBhcmFtID0gcmlpbmZvLT5ua2V5cyAtIDE7CisJCXRhcmdl dFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50Z190ZW1wb3Jh bCwgcmlpbmZvLCBvbGRzbG90KTsKKwl9CisKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAm cWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlvbGRzbG90LCBOVUxM LAorCQkJCQl0YXJnZXRSYW5nZVBhcmFtLCB0YXJnZXRSYW5nZSwKIAkJCQkJdHJ1ZSwJCS8q IG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19TRUxFQ1QpOwogCkBAIC05 MjQsNiArOTQxLDcgQEAgUklfRktleV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQog CXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBw a19yZWwsCiAJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCS0xLCAoRGF0dW0pIDAsCiAJCQkJ CXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfREVMRVRF KTsKIApAQCAtMTA0NSw2ICsxMDYzLDcgQEAgUklfRktleV9jYXNjYWRlX3VwZChQR19GVU5D VElPTl9BUkdTKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJ CQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIG5ld3Nsb3QsCisJCQkJCS0xLCAo RGF0dW0pIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJ CQlTUElfT0tfVVBEQVRFKTsKIApAQCAtMTI3Nyw2ICsxMjk2LDcgQEAgcmlfc2V0KFRyaWdn ZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCkKIAlyaV9Q ZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVs LAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQktMSwgKERhdHVtKSAwLAogCQkJCQl0cnVl LAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJU1BJX09LX1VQREFURSk7CiAK QEAgLTI1NTEsNiArMjU3MSw3IEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJh aW50SW5mbyAqcmlpbmZvLAogCQkJCVJJX1F1ZXJ5S2V5ICpxa2V5LCBTUElQbGFuUHRyIHFw bGFuLAogCQkJCVJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsLAogCQkJCVR1cGxl VGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKKwkJCQlpbnQg Zm9yUG9ydGlvbk9mUGFyYW0sIERhdHVtIGZvclBvcnRpb25PZiwKIAkJCQlib29sIGRldGVj dE5ld1Jvd3MsIGludCBleHBlY3RfT0spCiB7CiAJUmVsYXRpb24JcXVlcnlfcmVsLApAQCAt MjYwNiw2ICsyNjI3LDEyIEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50 SW5mbyAqcmlpbmZvLAogCQlyaV9FeHRyYWN0VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3Qs IHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJCQkJIHZhbHMsIG51bGxzKTsKIAl9CisJLyog QWRkIG9uZSBtb3JlIHF1ZXJ5IHBhcmFtIGlmIHdlIGFyZSB1c2luZyBGT1IgUE9SVElPTiBP RiAqLworCWlmIChmb3JQb3J0aW9uT2YpCisJeworCQl2YWxzW2ZvclBvcnRpb25PZlBhcmFt XSA9IGZvclBvcnRpb25PZjsKKwkJbnVsbHNbZm9yUG9ydGlvbk9mUGFyYW1dID0gJyAnOwor CX0KIAogCS8qCiAJICogSW4gUkVBRCBDT01NSVRURUQgbW9kZSwgd2UganVzdCBuZWVkIHRv IHVzZSBhbiB1cC10by1kYXRlIHJlZ3VsYXIKQEAgLTMzNTAsMyArMzM3Nyw1MCBAQCBsb29r dXBUUklPcGVyQW5kUHJvYyhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBjaGFy ICoqb3BuYW1lLCBjaGFyICoqYWdnbgogCQkJCSBlcnJoaW50KCJZb3UgbXVzdCB1c2UgYW4g b3BlcmF0b3IgY2xhc3Mgd2l0aCBhIHJlZmVyZW5jZWRhZ2cgc3VwcG9ydCBmdW5jdGlvbi4i KSkpOwogCSphZ2duYW1lID0gZ2V0X2Z1bmNfbmFtZV9hbmRfbmFtZXNwYWNlKG9pZCk7CiB9 CisKKy8qCisgKiBmcG9fdGFyZ2V0c19wa19yYW5nZQorICoKKyAqIFJldHVybnMgdHJ1ZSBp ZmYgdGhlIHByaW1hcnkga2V5IHJlZmVyZW5jZWQgYnkgcmlpbmZvIGluY2x1ZGVzIHRoZSBy YW5nZQorICogY29sdW1uIHRhcmdldGVkIGJ5IHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2Ug KGFjY29yZGluZyB0byB0Z190ZW1wb3JhbCkuCisgKi8KK3N0YXRpYyBib29sCitmcG9fdGFy Z2V0c19wa19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsIGNv bnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pCit7CisJaWYgKHRnX3RlbXBvcmFsID09 IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiByaWluZm8tPnBrX2F0dG51bXNb cmlpbmZvLT5ua2V5cyAtIDFdID09IHRnX3RlbXBvcmFsLT5mcF9yYW5nZUF0dG5vOworfQor CisvKgorICogcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlIC0KKyAqCisgKiBSZXR1cm5zIGEg RGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRoZSBhcHByb3ByaWF0ZSB0aW1lc3Bhbgor ICogdG8gdGFyZ2V0IGNoaWxkIHJlY29yZHMgd2hlbiB3ZSBDQVNDQURFL1NFVCBOVUxML1NF VCBERUZBVUxULgorICoKKyAqIEluIGEgbm9ybWFsIFVQREFURS9ERUxFVEUgdGhpcyBzaG91 bGQgYmUgdGhlIHBhcmVudCdzIG93biB2YWxpZCB0aW1lLAorICogYnV0IGlmIHRoZXJlIHdh cyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSwgdGhlbiB3ZSBzaG91bGQgdXNlIHRoYXQgdG8K KyAqIHRyaW0gZG93biB0aGUgcGFyZW50J3Mgc3BhbiBmdXJ0aGVyLgorICovCitzdGF0aWMg RGF0dW0KK3Jlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0 ZSAqdGdfdGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIFR1cGxl VGFibGVTbG90ICpvbGRzbG90KQoreworCURhdHVtCXBrUmVjb3JkUmFuZ2U7CisJYm9vbAlp c251bGw7CisKKwlwa1JlY29yZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9sZHNsb3QsIHJpaW5m by0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0sICZpc251bGwpOworCWlmIChpc251 bGwpCisJCWVsb2coRVJST1IsICJhcHBsaWNhdGlvbiB0aW1lIHNob3VsZCBub3QgYmUgbnVs bCIpOworCisJaWYgKGZwb190YXJnZXRzX3BrX3JhbmdlKHRnX3RlbXBvcmFsLCByaWluZm8p KQorCXsKKwkJUmFuZ2VUeXBlICpyMSA9IERhdHVtR2V0UmFuZ2VUeXBlUChwa1JlY29yZFJh bmdlKTsKKwkJUmFuZ2VUeXBlICpyMiA9IERhdHVtR2V0UmFuZ2VUeXBlUCh0Z190ZW1wb3Jh bC0+ZnBfdGFyZ2V0UmFuZ2UpOworCQlPaWQgcm5ndHlwaWQgPSBSYW5nZVR5cGVHZXRPaWQo cjEpOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShy bmd0eXBpZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlyZXR1cm4gUmFuZ2VUeXBlUEdl dERhdHVtKHJhbmdlX2ludGVyc2VjdF9pbnRlcm5hbCh0eXBjYWNoZSwgcjEsIHIyKSk7CisJ fQorCWVsc2UKKwkJcmV0dXJuIHBrUmVjb3JkUmFuZ2U7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jCmluZGV4IDcxM2FlNjE5MzFjLi5iYjE5N2Q5NTRiNiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTIyMDEsNiArMjIwMSw1OSBAQCBn ZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBpZCkKIAkJcmV0dXJuIGZhbHNlOwogfQogCisvKgor ICogZ2V0X3R5cG5hbWUKKyAqCisgKgkgIFJldHVybnMgdGhlIG5hbWUgb2YgYSBnaXZlbiB0 eXBlCisgKgorICogUmV0dXJucyBhIHBhbGxvYydkIGNvcHkgb2YgdGhlIHN0cmluZywgb3Ig TlVMTCBpZiBubyBzdWNoIHR5cGUuCisgKi8KK2NoYXIgKgorZ2V0X3R5cG5hbWUoT2lkIHR5 cGlkKQoreworCUhlYXBUdXBsZSAgIHRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQ RU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0eXBpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlk KHRwKSkKKwl7CisJCUZvcm1fcGdfdHlwZSB0eXB0dXAgPSAoRm9ybV9wZ190eXBlKSBHRVRT VFJVQ1QodHApOworCQljaGFyCSAgICpyZXN1bHQ7CisKKwkJcmVzdWx0ID0gcHN0cmR1cChO YW1lU3RyKHR5cHR1cC0+dHlwbmFtZSkpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQly ZXR1cm4gcmVzdWx0OworCX0KKwllbHNlCisJCXJldHVybiBOVUxMOworfQorCisvKgorICog Z2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZQorICoKKyAqCSAgUmV0dXJucyB0aGUgbmFtZSBh bmQgbmFtZXNwYWNlIG9mIGEgZ2l2ZW4gdHlwZQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBv bmUgZm91bmQsIG9yIGZhbHNlIGlmIG5vdC4KKyAqLworYm9vbAorZ2V0X3R5cG5hbWVfYW5k X25hbWVzcGFjZShPaWQgdHlwaWQsIGNoYXIgKip0eXBuYW1lLCBjaGFyICoqdHlwbmFtZXNw YWNlKQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVP SUQsIE9iamVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0 cCkpCisJeworCQlGb3JtX3BnX3R5cGUgdHlwdHVwID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RS VUNUKHRwKTsKKworCQkqdHlwbmFtZSA9IHBzdHJkdXAoTmFtZVN0cih0eXB0dXAtPnR5cG5h bWUpKTsKKwkJKnR5cG5hbWVzcGFjZSA9IGdldF9uYW1lc3BhY2VfbmFtZSh0eXB0dXAtPnR5 cG5hbWVzcGFjZSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCS8qICp0eXBuYW1lc3Bh Y2UgaXMgTlVMTCBpZiBpdCB3YXNuJ3QgZm91bmQ6ICovCisJCXJldHVybiAqdHlwbmFtZXNw YWNlOworCX0KKwllbHNlCisJCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqIGdldF90eXBs ZW4KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oCmluZGV4IGVhZjNiYjAyNzY0Li40Yjk4MjQz YzM3NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmgKQEAgLTc5LDggKzc5LDEwIEBAIHR5cGVk ZWYgdWludDE2IFN0cmF0ZWd5TnVtYmVyOwogI2RlZmluZSBSVFByZWZpeFN0cmF0ZWd5TnVt YmVyCQkJMjgJLyogZm9yIHRleHQgXkAgKi8KICNkZWZpbmUgUlRPbGRCZWxvd1N0cmF0ZWd5 TnVtYmVyCQkyOQkvKiBmb3Igb2xkIHNwZWxsaW5nIG9mIDw8fCAqLwogI2RlZmluZSBSVE9s ZEFib3ZlU3RyYXRlZ3lOdW1iZXIJCTMwCS8qIGZvciBvbGQgc3BlbGxpbmcgb2YgfD4+ICov CisjZGVmaW5lIFJUSW50ZXJzZWN0U3RyYXRlZ3lOdW1iZXIJCTMxCS8qIGZvciAqICovCisj ZGVmaW5lIFJUV2l0aG91dFBvcnRpb25TdHJhdGVneU51bWJlcgkzMgkvKiBmb3IgQC0gKi8K IAotI2RlZmluZSBSVE1heFN0cmF0ZWd5TnVtYmVyCQkJCTMwCisjZGVmaW5lIFJUTWF4U3Ry YXRlZ3lOdW1iZXIJCQkJMzIKIAogCiAjZW5kaWYJCQkJCQkJLyogU1RSQVROVU1fSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmRhdCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQKaW5kZXggZDhhMDUyMTRiMTEuLmE1NjVkMzM3ZGVj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQKQEAgLTExMDgsNiArMTEwOCw5IEBACiB7 IGFtb3BmYW1pbHkgPT4gJ2dpc3QvYm94X29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYm94Jywg YW1vcHJpZ2h0dHlwZSA9PiAncG9pbnQnLAogICBhbW9wc3RyYXRlZ3kgPT4gJzE1JywgYW1v cHB1cnBvc2UgPT4gJ28nLCBhbW9wb3ByID0+ICc8LT4oYm94LHBvaW50KScsCiAgIGFtb3Bt ZXRob2QgPT4gJ2dpc3QnLCBhbW9wc29ydGZhbWlseSA9PiAnYnRyZWUvZmxvYXRfb3BzJyB9 LAoreyBhbW9wZmFtaWx5ID0+ICdnaXN0L2JveF9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2Jv eCcsIGFtb3ByaWdodHR5cGUgPT4gJ2JveCcsCisgIGFtb3BzdHJhdGVneSA9PiAnMzEnLCBh bW9wcHVycG9zZSA9PiAncCcsIGFtb3BvcHIgPT4gJyMoYm94LGJveCknLAorICBhbW9wbWV0 aG9kID0+ICdnaXN0JyB9LAogCiAjIGdpc3QgcG9pbnRfb3BzCiB7IGFtb3BmYW1pbHkgPT4g J2dpc3QvcG9pbnRfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdwb2ludCcsCkBAIC0xMzk3LDYg KzE0MDAsMTIgQEAKIHsgYW1vcGZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbW9wbGVm dHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1vcHJpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBh bW9wc3RyYXRlZ3kgPT4gJzE4JywKICAgYW1vcG9wciA9PiAnPShhbnlyYW5nZSxhbnlyYW5n ZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0JyB9LAoreyBhbW9wZmFtaWx5ID0+ICdnaXN0L3Jh bmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbW9wcmlnaHR0eXBl ID0+ICdhbnlyYW5nZScsIGFtb3BzdHJhdGVneSA9PiAnMzEnLCBhbW9wcHVycG9zZSA9PiAn cCcsCisgIGFtb3BvcHIgPT4gJyooYW55cmFuZ2UsYW55cmFuZ2UpJywgYW1vcG1ldGhvZCA9 PiAnZ2lzdCcgfSwKK3sgYW1vcGZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbW9wbGVm dHR5cGUgPT4gJ2FueXJhbmdlJywKKyAgYW1vcHJpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBh bW9wc3RyYXRlZ3kgPT4gJzMyJywgYW1vcHB1cnBvc2UgPT4gJ3AnLAorICBhbW9wb3ByID0+ ICdALShhbnlyYW5nZSxhbnlyYW5nZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0JyB9LAogCiAj IEdpU1QgbXVsdGlyYW5nZV9vcHMKIHsgYW1vcGZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdl X29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCkBAIC0xNDUzLDYgKzE0 NjIsMTIgQEAKIHsgYW1vcGZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtb3Bs ZWZ0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCiAgIGFtb3ByaWdodHR5cGUgPT4gJ2FueW11 bHRpcmFuZ2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzE4JywKICAgYW1vcG9wciA9PiAnPShhbnlt dWx0aXJhbmdlLGFueW11bHRpcmFuZ2UpJywgYW1vcG1ldGhvZCA9PiAnZ2lzdCcgfSwKK3sg YW1vcGZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAn YW55bXVsdGlyYW5nZScsCisgIGFtb3ByaWdodHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBh bW9wc3RyYXRlZ3kgPT4gJzMxJywgYW1vcHB1cnBvc2UgPT4gJ3AnLAorICBhbW9wb3ByID0+ ICcqKGFueW11bHRpcmFuZ2UsYW55bXVsdGlyYW5nZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0 JyB9LAoreyBhbW9wZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3BzJywgYW1vcGxlZnR0 eXBlID0+ICdhbnltdWx0aXJhbmdlJywKKyAgYW1vcHJpZ2h0dHlwZSA9PiAnYW55bXVsdGly YW5nZScsIGFtb3BzdHJhdGVneSA9PiAnMzInLCBhbW9wcHVycG9zZSA9PiAncCcsCisgIGFt b3BvcHIgPT4gJ0AtKGFueW11bHRpcmFuZ2UsYW55bXVsdGlyYW5nZSknLCBhbW9wbWV0aG9k ID0+ICdnaXN0JyB9LAogCiAjIGJ0cmVlIG11bHRpcmFuZ2Vfb3BzCiB7IGFtb3BmYW1pbHkg PT4gJ2J0cmVlL211bHRpcmFuZ2Vfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdhbnltdWx0aXJh bmdlJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmgKaW5kZXggOGVhMThhMmZlMWIuLmY1NjFhMTFm N2ZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuaApAQCAtOTYsNiArOTYsNyBAQCBERUNMQVJF X1VOSVFVRV9JTkRFWF9QS0VZKHBnX2Ftb3Bfb2lkX2luZGV4LCAyNzU2LCBBY2Nlc3NNZXRo b2RPcGVyYXRvck9pZEluZGV4SQogLyogYWxsb3dlZCB2YWx1ZXMgb2YgYW1vcHB1cnBvc2U6 ICovCiAjZGVmaW5lIEFNT1BfU0VBUkNICQkncycJCS8qIG9wZXJhdG9yIGlzIGZvciBzZWFy Y2ggKi8KICNkZWZpbmUgQU1PUF9PUkRFUgkJJ28nCQkvKiBvcGVyYXRvciBpcyBmb3Igb3Jk ZXJpbmcgKi8KKyNkZWZpbmUgQU1PUF9QT1JUSU9OCSdwJwkJLyogb3BlcmF0b3IgaXMgZm9y IEZPUiBQT1JUSU9OIE9GICovCiAKICNlbmRpZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJRU5U X0NPREUgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IDhhNWE5ZmU2NDIyLi4z ZDE1NjQ4MzMyNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5o CisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaApAQCAtNDEsNiArNDEsNyBA QCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VyRGF0YQogCVR1cGxlc3RvcmVzdGF0ZSAqdGdfb2xk dGFibGU7CiAJVHVwbGVzdG9yZXN0YXRlICp0Z19uZXd0YWJsZTsKIAljb25zdCBCaXRtYXBz ZXQgKnRnX3VwZGF0ZWRjb2xzOworCUZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsK IH0gVHJpZ2dlckRhdGE7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDU2MWZk ZDk4ZjFiLi4yZGNiNzM3OWEyMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTQxLDEy ICs0MSwxNCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAj aW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJv bm1lbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsdHJpZ2dlci5oIgogI2luY2x1ZGUgInV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIK ICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBw b3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMv dHVwbGVzdG9yZS5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKIHN0cnVjdCBQ bGFuU3RhdGU7CQkJCS8qIGZvcndhcmQgcmVmZXJlbmNlcyBpbiB0aGlzIGZpbGUgKi8KIHN0 cnVjdCBQYXJhbGxlbEhhc2hKb2luU3RhdGU7CkBAIC00MjEsNiArNDIzLDI3IEBAIHR5cGVk ZWYgc3RydWN0IE1lcmdlQWN0aW9uU3RhdGUKIAlFeHByU3RhdGUgICptYXNfd2hlbnF1YWw7 CS8qIFdIRU4gW05PVF0gTUFUQ0hFRCBBTkQgY29uZGl0aW9ucyAqLwogfSBNZXJnZUFjdGlv blN0YXRlOwogCisvKgorICogRm9yUG9ydGlvbk9mU3RhdGUKKyAqCisgKiBFeGVjdXRvciBz dGF0ZSBvZiBhIEZPUiBQT1JUSU9OIE9GIG9wZXJhdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1 Y3QgRm9yUG9ydGlvbk9mU3RhdGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJY2hhciAgICpm cF9yYW5nZU5hbWU7CQkvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1lZCBpbiBGT1IgUE9SVElP TiBPRiAqLworCU9pZAkJZnBfcmFuZ2VUeXBlOwkJLyogdGhlIHR5cGUgb2YgdGhlIEZPUiBQ T1JUSU9OIE9GIGV4cHJlc3Npb24gKi8KKwlib29sCWZwX2hhc1BlcmlvZDsJCS8qIHRydWUg aWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEgcmFuZ2UgKi8KKwlpbnQJCWZwX3JhbmdlQXR0 bm87CQkvKiB0aGUgYXR0bm8gb2YgdGhlIHJhbmdlIGNvbHVtbiAob3IgMCBmb3IgYSBQRVJJ T0QpICovCisJaW50CQlmcF9wZXJpb2RTdGFydEF0dG5vOwkvKiB0aGUgYXR0bm8gb2YgdGhl IFBFUklPRCBzdGFydCBjb2x1bW4gKG9yIDAgZm9yIGEgcmFuZ2UpICovCisJaW50CQlmcF9w ZXJpb2RFbmRBdHRubzsJCS8qIHRoZSBhdHRubyBvZiB0aGUgUEVSSU9EIGVuZCBjb2x1bW4g KG9yIDAgZm9yIGEgcmFuZ2UpICovCisJRGF0dW0JZnBfdGFyZ2V0UmFuZ2U7CQkvKiB0aGUg cmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBPRiAqLworCVR5cGVDYWNoZUVudHJ5ICpmcF9sZWZ0 b3ZlcnN0eXBjYWNoZTsJLyogdHlwZSBjYWNoZSBlbnRyeSBvZiB0aGUgcmFuZ2UgKi8KKwlU dXBsZVRhYmxlU2xvdCAqZnBfRXhpc3Rpbmc7CQkvKiBzbG90IHRvIHN0b3JlIGV4aXN0aW5n IHRhcmdldCB0dXBsZSBpbiAqLworCVR1cGxlVGFibGVTbG90ICpmcF9MZWZ0b3ZlcjsJCS8q IHNsb3QgdG8gc3RvcmUgbGVmdG92ZXIgKi8KK30gRm9yUG9ydGlvbk9mU3RhdGU7CisKIC8q CiAgKiBSZXN1bHRSZWxJbmZvCiAgKgpAQCAtNTQxLDYgKzU2NCw5IEBAIHR5cGVkZWYgc3Ry dWN0IFJlc3VsdFJlbEluZm8KIAlMaXN0CSAgICpyaV9tYXRjaGVkTWVyZ2VBY3Rpb247CiAJ TGlzdAkgICAqcmlfbm90TWF0Y2hlZE1lcmdlQWN0aW9uOwogCisJLyogRk9SIFBPUlRJT04g T0YgZXZhbHVhdGlvbiBzdGF0ZSAqLworCUZvclBvcnRpb25PZlN0YXRlICpyaV9mb3JQb3J0 aW9uT2Y7CisKIAkvKiBwYXJ0aXRpb24gY2hlY2sgZXhwcmVzc2lvbiBzdGF0ZSAoTlVMTCBp ZiBub3Qgc2V0IHVwIHlldCkgKi8KIAlFeHByU3RhdGUgICpyaV9QYXJ0aXRpb25DaGVja0V4 cHI7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA4ZjRmOGNlNmE3Ny4uYzkzNjgz MTEyMzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE0MSw2ICsxNDEsOSBAQCB0 eXBlZGVmIHN0cnVjdCBRdWVyeQogCSAqLwogCWludAkJCXJlc3VsdFJlbGF0aW9uIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAorCS8qIEZPUiBQT1JUSU9OIE9GIGNs YXVzZSBmb3IgVVBEQVRFL0RFTEVURSAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRp b25PZjsKKwogCS8qIGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8K IAlib29sCQloYXNBZ2dzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkv KiBoYXMgd2luZG93IGZ1bmN0aW9ucyBpbiB0bGlzdCAqLwpAQCAtMTUzMCw2ICsxNTMzLDIx IEBAIHR5cGVkZWYgc3RydWN0IFJvd01hcmtDbGF1c2UKIAlib29sCQlwdXNoZWREb3duOwkJ LyogcHVzaGVkIGRvd24gZnJvbSBoaWdoZXIgcXVlcnkgbGV2ZWw/ICovCiB9IFJvd01hcmtD bGF1c2U7CiAKKy8qCisgKiBGb3JQb3J0aW9uT2ZDbGF1c2UKKyAqCQlyZXByZXNlbnRhdGlv biBvZiBGT1IgUE9SVElPTiBPRiA8cGVyaW9kLW5hbWU+IEZST00gPHRzPiBUTyA8dGU+Cisg KgkJb3IgRk9SIFBPUlRJT04gT0YgPHBlcmlvZC1uYW1lPiAoPHRhcmdldD4pCisgKi8KK3R5 cGVkZWYgc3RydWN0IEZvclBvcnRpb25PZkNsYXVzZQoreworCU5vZGVUYWcJCXR5cGU7CisJ Y2hhcgkgICAqcmFuZ2VfbmFtZTsKKwlpbnQJCQlyYW5nZV9uYW1lX2xvY2F0aW9uOworCU5v ZGUJICAgKnRhcmdldDsKKwlOb2RlCSAgICp0YXJnZXRfc3RhcnQ7CisJTm9kZQkgICAqdGFy Z2V0X2VuZDsKK30gRm9yUG9ydGlvbk9mQ2xhdXNlOworCiAvKgogICogV2l0aENsYXVzZSAt CiAgKgkgICByZXByZXNlbnRhdGlvbiBvZiBXSVRIIGNsYXVzZQpAQCAtMTg5MywxMiArMTkx MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBJbnNlcnRTdG10CiAgKi8KIHR5cGVkZWYgc3RydWN0 IERlbGV0ZVN0bXQKIHsKLQlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9u OwkJLyogcmVsYXRpb24gdG8gZGVsZXRlIGZyb20gKi8KLQlMaXN0CSAgICp1c2luZ0NsYXVz ZTsJLyogb3B0aW9uYWwgdXNpbmcgY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCU5vZGUJ ICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwotCUxpc3QJICAgKnJldHVy bmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENs YXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBl OworCVJhbmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBkZWxldGUgZnJv bSAqLworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBGT1IgUE9SVElP TiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnVzaW5nQ2xhdXNlOwkvKiBvcHRpb25hbCB1 c2luZyBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVz ZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8q IGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndp dGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBEZWxldGVTdG10OwogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTA3LDEzICsxOTI2LDE0IEBAIHR5cGVkZWYgc3Ry dWN0IERlbGV0ZVN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlU3RtdAogewotCU5v ZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1 cGRhdGUgKi8KLQlMaXN0CSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChv ZiBSZXNUYXJnZXQpICovCi0JTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRp b25zICovCi0JTGlzdAkgICAqZnJvbUNsYXVzZTsJCS8qIG9wdGlvbmFsIGZyb20gY2xhdXNl IGZvciBtb3JlIHRhYmxlcyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qg b2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJ CS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAq cmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUgKi8KKwlGb3JQb3J0aW9uT2ZDbGF1 c2UgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlICovCisJTGlzdAkJ CSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNUYXJnZXQpICov CisJTm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0 CQkJICAgKmZyb21DbGF1c2U7CQkvKiBvcHRpb25hbCBmcm9tIGNsYXVzZSBmb3IgbW9yZSB0 YWJsZXMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVz c2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1c2U7CQkvKiBX SVRIIGNsYXVzZSAqLwogfSBVcGRhdGVTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9p bmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGJiMzRjZmI4NDNmLi4zMzk0NGI3NGIz ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTIzNTIsNiArMjM1Miw3IEBAIHR5cGVk ZWYgc3RydWN0IE1vZGlmeVRhYmxlUGF0aAogCUxpc3QJICAgKnJldHVybmluZ0xpc3RzOyAv KiBwZXItdGFyZ2V0LXRhYmxlIFJFVFVSTklORyB0bGlzdHMgKi8KIAlMaXN0CSAgICpyb3dN YXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9uLWxvY2tpbmcgb25seSkgKi8KIAlPbkNvbmZs aWN0RXhwciAqb25jb25mbGljdDsgLyogT04gQ09ORkxJQ1QgY2xhdXNlLCBvciBOVUxMICov CisJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBj bGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KIAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9m IFBhcmFtIGZvciBFdmFsUGxhblF1YWwgcmUtZXZhbCAqLwogCUxpc3QJICAgKm1lcmdlQWN0 aW9uTGlzdHM7CS8qIHBlci10YXJnZXQtdGFibGUgbGlzdHMgb2YgYWN0aW9ucyBmb3IKIAkJ CQkJCQkJCSAqIE1FUkdFICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGI0ZWY2YmM0 NGM5Li45Y2I5YjE4YTRjMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTI0Myw2ICsy NDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZQogCUxpc3QJICAgKnJvd01hcmtz OwkJLyogUGxhblJvd01hcmtzIChub24tbG9ja2luZyBvbmx5KSAqLwogCWludAkJCWVwcVBh cmFtOwkJLyogSUQgb2YgUGFyYW0gZm9yIEV2YWxQbGFuUXVhbCByZS1ldmFsICovCiAJT25D b25mbGljdEFjdGlvbiBvbkNvbmZsaWN0QWN0aW9uOwkvKiBPTiBDT05GTElDVCBhY3Rpb24g Ki8KKwlOb2RlCSAgICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSBm b3IgVVBEQVRFL0RFTEVURSAqLwogCUxpc3QJICAgKmFyYml0ZXJJbmRleGVzOyAvKiBMaXN0 IG9mIE9OIENPTkZMSUNUIGFyYml0ZXIgaW5kZXggT0lEcyAgKi8KIAlMaXN0CSAgICpvbkNv bmZsaWN0U2V0OwkvKiBJTlNFUlQgT04gQ09ORkxJQ1QgRE8gVVBEQVRFIHRhcmdldGxpc3Qg Ki8KIAlMaXN0CSAgICpvbkNvbmZsaWN0Q29sczsgLyogdGFyZ2V0IGNvbHVtbiBudW1iZXJz IGZvciBvbkNvbmZsaWN0U2V0ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDRhMTU0 NjA2ZDJiLi44NTliYjg2MGI2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJp bW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIwNjgs NCArMjA2OCwzMCBAQCB0eXBlZGVmIHN0cnVjdCBPbkNvbmZsaWN0RXhwcgogCUxpc3QJICAg KmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhlIEVYQ0xVREVEIHBzZXVkbyByZWxhdGlv biAqLwogfSBPbkNvbmZsaWN0RXhwcjsKIAorLyotLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9u T2ZFeHByIC0gcmVwcmVzZW50cyBhIEZPUiBQT1JUSU9OIE9GIC4uLiBleHByZXNzaW9uCisg KgorICogV2Ugc2V0IHVwIGFuIGV4cHJlc3Npb24gdG8gbWFrZSBhIHJhbmdlIGZyb20gdGhl IEZST00vVE8gYm91bmRzLAorICogc28gdGhhdCB3ZSBjYW4gdXNlIHJhbmdlIG9wZXJhdG9y cyB3aXRoIGl0LgorICoKKyAqIFRoZW4gd2Ugc2V0IHVwIGFuIG92ZXJsYXBzIGV4cHJlc3Np b24gYmV0d2VlbiB0aGF0IGFuZCB0aGUgcmFuZ2UgY29sdW1uLAorICogc28gdGhhdCB3ZSBj YW4gZmluZCB0aGUgcm93cyB3ZSBuZWVkIHRvIHVwZGF0ZS9kZWxldGUuCisgKgorICogSW4g dGhlIGV4ZWN1dG9yIHdlJ2xsIGFsc28gYnVpbGQgYW4gaW50ZXJzZWN0IGV4cHJlc3Npb24g YmV0d2VlbiB0aGUKKyAqIHRhcmdldGVkIHJhbmdlIGFuZCB0aGUgcmFuZ2UgY29sdW1uLCBz byB0aGF0IHdlIGNhbiB1cGRhdGUgdGhlIHN0YXJ0L2VuZAorICogYm91bmRzIG9mIHRoZSBV UERBVEUnZCByZWNvcmQuCisgKi0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9y UG9ydGlvbk9mRXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJVmFyCQkgICAqcmFuZ2VWYXI7 CQkJLyogUmFuZ2UgY29sdW1uICovCisJY2hhcgkgICAqcmFuZ2VfbmFtZTsJCQkvKiBSYW5n ZSBuYW1lICovCisJTm9kZQkgICAqdGFyZ2V0UmFuZ2U7CQkvKiBGT1IgUE9SVElPTiBPRiBi b3VuZHMgYXMgYSByYW5nZSAqLworCU9pZAkJCXJhbmdlVHlwZTsJCQkvKiB0eXBlIG9mIHRh cmdldFJhbmdlICovCisJTm9kZQkgICAqb3ZlcmxhcHNFeHByOwkJLyogcmFuZ2UgJiYgdGFy Z2V0UmFuZ2UgKi8KKwlMaXN0CSAgICpyYW5nZVNldDsJCQkvKiBMaXN0IG9mIFRhcmdldEVu dHJ5cyB0byBzZXQgdGhlIHRpbWUgY29sdW1uKHMpICovCisJT2lkCQkJd2l0aG91dFBvcnRp b25Qcm9jOwkvKiBwcm9jIGZvciBvbGRfcmFuZ2UgQC0gdGFyZ2V0X3JhbmdlICovCit9IEZv clBvcnRpb25PZkV4cHI7CisKICNlbmRpZgkJCQkJCQkvKiBQUklNTk9ERVNfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggYi9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAppbmRleCAwM2EwZTQ2ZTcwNi4uNjI1NzU1NTI1NjAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCkBAIC0yODMsNyArMjgzLDggQEAgZXh0 ZXJuIE1vZGlmeVRhYmxlUGF0aCAqY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxhbm5lcklu Zm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkJ CQkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0 cywKIAkJCQkJCQkJCQkJCUxpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAqb25jb25m bGljdCwKLQkJCQkJCQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBlcHFQYXJh bSk7CisJCQkJCQkJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJCQkJCQkJ Rm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLCBpbnQgZXBxUGFyYW0pOwogZXh0ZXJu IExpbWl0UGF0aCAqY3JlYXRlX2xpbWl0X3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwKIAkJCQkJCQkJCVBhdGggKnN1YnBhdGgsCiAJCQkJCQkJCQlOb2RlICps aW1pdE9mZnNldCwgTm9kZSAqbGltaXRDb3VudCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BhcnNlci9hbmFseXplLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCmluZGV4 IDVlY2RkMTA5NDY2Li5lNTEyZjRiMjRlYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFy c2VyL2FuYWx5emUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCkBAIC00 Myw3ICs0Myw4IEBAIGV4dGVybiBMaXN0ICp0cmFuc2Zvcm1JbnNlcnRSb3coUGFyc2VTdGF0 ZSAqcHN0YXRlLCBMaXN0ICpleHBybGlzdCwKIAkJCQkJCQkJTGlzdCAqc3RtdGNvbHMsIExp c3QgKmljb2x1bW5zLCBMaXN0ICphdHRybm9zLAogCQkJCQkJCQlib29sIHN0cmlwX2luZGly ZWN0aW9uKTsKIGV4dGVybiBMaXN0ICp0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNl U3RhdGUgKnBzdGF0ZSwKLQkJCQkJCQkJCSAgIExpc3QgKm9yaWdUbGlzdCk7CisJCQkJCQkJ CQkgICBMaXN0ICpvcmlnVGxpc3QsCisJCQkJCQkJCQkgICBGb3JQb3J0aW9uT2ZFeHByICpm b3JQb3J0aW9uT2YpOwogZXh0ZXJuIFF1ZXJ5ICp0cmFuc2Zvcm1Ub3BMZXZlbFN0bXQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBSYXdTdG10ICpwYXJzZVRyZWUpOwogZXh0ZXJuIFF1ZXJ5ICp0 cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCmluZGV4IDFkM2Y3YmQzN2YyLi43MDdhNTE3MzM5YSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaApAQCAtMzMwLDYgKzMzMCw3IEBAIFBHX0tFWVdPUkQoInBlcmlvZCIs IFBFUklPRCwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBs YWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJwb3J0aW9uIiwgUE9SVElPTiwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9zaXRpb24iLCBQT1NJVElPTiwgQ09M X05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByZWNlZGluZyIsIFBS RUNFRElORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cHJlY2lzaW9uIiwgUFJFQ0lTSU9OLCBDT0xfTkFNRV9LRVlXT1JELCBBU19MQUJFTCkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDk5ZDY1MTU3MzY1Li41ZTc0MGZlZjg4MSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC01Niw2ICs1Niw3IEBAIHR5cGVkZWYg ZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQUl9LSU5EX1VQREFURV9TT1VSQ0UsCS8qIFVQREFU RSBhc3NpZ25tZW50IHNvdXJjZSBpdGVtICovCiAJRVhQUl9LSU5EX1VQREFURV9UQVJHRVQs CS8qIFVQREFURSBhc3NpZ25tZW50IHRhcmdldCBpdGVtICovCiAJRVhQUl9LSU5EX01FUkdF X1dIRU4sCQkvKiBNRVJHRSBXSEVOIFtOT1RdIE1BVENIRUQgY29uZGl0aW9uICovCisJRVhQ Ul9LSU5EX1VQREFURV9QT1JUSU9OLAkvKiBVUERBVEUgRk9SIFBPUlRJT04gT0YgaXRlbSAq LwogCUVYUFJfS0lORF9HUk9VUF9CWSwJCQkvKiBHUk9VUCBCWSAqLwogCUVYUFJfS0lORF9P UkRFUl9CWSwJCQkvKiBPUkRFUiBCWSAqLwogCUVYUFJfS0lORF9ESVNUSU5DVF9PTiwJCS8q IERJU1RJTkNUIE9OICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDYyYzI1NjkxZWFk Li4yMTQzNmQ1YTQwMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hl LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTE0NCw2ICsxNDQs OCBAQCBleHRlcm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxpZCk7CiBleHRl cm4gT2lkCWdldF90cmFuc2Zvcm1fZnJvbXNxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExp c3QgKnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlw aWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBib29sIGdldF90eXBp c2RlZmluZWQoT2lkIHR5cGlkKTsKK2V4dGVybiBjaGFyICpnZXRfdHlwbmFtZShPaWQgdHlw aWQpOworZXh0ZXJuIGJvb2wgZ2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZShPaWQgdHlwaWQs IGNoYXIgKip0eXBuYW1lLCBjaGFyICoqdHlwbmFtZXNwYWNlKTsKIGV4dGVybiBpbnQxNiBn ZXRfdHlwbGVuKE9pZCB0eXBpZCk7CiBleHRlcm4gYm9vbCBnZXRfdHlwYnl2YWwoT2lkIHR5 cGlkKTsKIGV4dGVybiB2b2lkIGdldF90eXBsZW5ieXZhbChPaWQgdHlwaWQsIGludDE2ICp0 eXBsZW4sIGJvb2wgKnR5cGJ5dmFsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3BlcmlvZC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBhOGFmM2VkYjAxCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKQEAgLTAsMCArMSwxOSBAQAorLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogcGVyaW9kLmgKKyAqCSAgc3VwcG9ydCBmb3IgUG9z dGdyZXMgcGVyaW9kcy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2 LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCisgKgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEVSSU9EX0gKKyNkZWZpbmUgUEVSSU9E X0gKKworZXh0ZXJuIERhdHVtIHBlcmlvZF90b19yYW5nZShUdXBsZVRhYmxlU2xvdCAqc2xv dCwgaW50IHN0YXJ0YXR0bm8sIGludCBlbmRhdHRubywgT2lkIHJhbmdldHlwZSk7CisKKyNl bmRpZgkJCQkJCQkvKiBQRVJJT0RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2Zvcl9wb3J0aW9uX29mLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uNDM3NmJjZWQ0ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dApAQCAtMCwwICsxLDU2MiBAQAorLS0g VGVzdHMgZm9yIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0YKKy0tIFdvcmtzIG9uIG5v bi1QSyBjb2x1bW5zCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlk IGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxM CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0n LCAnWzIwMTgtMDEtMDIsMjAyMC0wMS0wMSknLCAnb25lJyk7CitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScg VE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdmb28nOworREVMRVRFIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0x NScgVE8gTlVMTDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAg ICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIk1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgZm9vCisg WzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6 MDAgMjAxOCIpIHwgb25lCisgWzEsMikgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIs IlR1ZSBKYW4gMTUgMDA6MDA6MDAgMjAxOSIpIHwgb25lCisoMyByb3dzKQorCistLSBXb3Jr cyBvbiBtb3JlIHRoYW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSwKKyAgdmFsaWQxX2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0c3JhbmdlLAorICBuYW1l IHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZB TFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdbMjAxNS0wMS0w MSwyMDI1LTAxLTAxKScsICdvbmUnKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTlVMTAorU0VU IG5hbWUgPSAnZm9vJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAg aWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAg ICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8 IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4 IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyNSIpIHwgZm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUi LCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IG9uZQorKDIgcm93cykKKworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMl9hdCBGUk9NICcy MDE4LTAxLTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdiYXInOworU0VMRUNUICogRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJT YXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiTW9uIEph biAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIlRo dSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg Zm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUg MDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAw OjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAw MDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyg0IHJv d3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIlRo dSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg b25lCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAg MDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAw OjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAw MDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyg0IHJv d3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1 IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyBbMSwyKSB8IFsiTW9uIEph biAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBbIlRo dSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg Zm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUg MDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFu IDIwIDAwOjAwOjAwIDIwMTgiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAw OjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAw MDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBiYXIKKyg0IHJv d3MpCisKKy0tIFRlc3Qgd2l0aCBOVUxMcyBpbiB0aGUgc2NhbGFyL3JhbmdlIGtleSBjb2x1 bW5zLgorLS0gVGhpcyB3b24ndCBoYXBwZW4gaWYgdGhlcmUgaXMgYSBQUklNQVJZIEtFWSBv ciBVTklRVUUgY29uc3RyYWludAorLS0gYnV0IEZPUiBQT1JUSU9OIE9GIHNob3VsZG4ndCBy ZXF1aXJlIHRoYXQuCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUg VU5MT0dHRUQgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwK KyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworSU5TRVJUIElOVE8gZm9y X3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKyAgKCdbMSwxXScsIE5VTEwsICcxIG51bGwnKSwK KyAgKCdbMSwxXScsICcoLCknLCAnMSB1bmJvdW5kZWQnKSwKKyAgKCdbMSwxXScsICdlbXB0 eScsICcxIGVtcHR5JyksCisgIChOVUxMLCBOVUxMLCBOVUxMKSwKKyAgKE5VTEwsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOS0wMS0wMScpLCAnbnVsbCBrZXknKTsKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVM TCBUTyBOVUxMCisgIFNFVCBuYW1lID0gJ05VTEwgdG8gTlVMTCc7CitTRUxFQ1QgKiBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIG5hbWUgICAgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBbMSwyKSB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxIG51bGwKKyBbMSwyKSB8 IGVtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxIGVtcHR5CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisgWzEsMikgfCAoLCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTlVMTCB0byBOVUxM CisgICAgICAgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgTlVMTCB0byBOVUxMCisoNSByb3dzKQorCitEUk9QIFRBQkxFIGZv cl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAo CisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVM TCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2Zf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lO U0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1ZBTFVFUworKCdbMSwxXScsICdbMjAx OC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDItMDMs MjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQt MDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTAxLTA1KScsICd0 d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpLAorKCdbNCw0XScs ICcoLDIwMTgtMDQtMDEpJywgJ2ZvdXInKSwKKygnWzUsNV0nLCAnKCwpJywgJ2ZpdmUnKQor OworLS0KKy0tIFVQREFURSB0ZXN0cworLS0KKy0tIFNldHRpbmcgd2l0aCBhIG1pc3Npbmcg Y29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICdm b28nCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjogIGNvbHVtbiBvciBwZXJpb2QgImlu dmFsaWRfYXQiIG9mIHJlbGF0aW9uICJmb3JfcG9ydGlvbl9vZl90ZXN0IiBkb2VzIG5vdCBl eGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPIE5VTEwKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gU2V0dGluZyB0aGUg cmFuZ2UgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQgdmFsaWRfYXQgPSAn WzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjog IGNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byAidmFsaWRfYXQiIGluIGEgRk9SIFBPUlRJT04g T0YgdXBkYXRlCitMSU5FIDM6IFNFVCB2YWxpZF9hdCA9ICdbMTk5MC0wMS0wMSwxOTk5LTAx LTAxKScKKyAgICAgICAgICAgIF4KKy0tIFRoZSB3cm9uZyB0eXBlIGZhaWxzCitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRP IDQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIGZ1 bmN0aW9uIHBnX2NhdGFsb2cudHNyYW5nZShpbnRlZ2VyLCBpbnRlZ2VyKSBkb2VzIG5vdCBl eGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorICAg ICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgTm8gZnVuY3Rpb24gbWF0Y2hlcyB0aGUg Z2l2ZW4gbmFtZSBhbmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBl eHBsaWNpdCB0eXBlIGNhc3RzLgorLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJz ZWQgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1NFVCBuYW1lID0g J3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJv dW5kIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCist LSBTZXR0aW5nIHdpdGggYSBzdWJxdWVyeSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0w MScpIFRPICcyMDE4LTA2LTAxJworU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1sz LDNdJzsKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9SVElPTiBPRiBl eHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVD VCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBmYWlscworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gbG93 ZXIodmFsaWRfYXQpIFRPIE5VTEwKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdb MywzXSc7CitFUlJPUjogIGNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1IgUE9S VElPTiBPRiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gbG93ZXIodmFsaWRfYXQpIFRPIE5VTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBk b2VzIG5vdGhpbmcKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1NFVCBuYW1l ID0gJ3RocmVlXjAnCitXSEVSRSBpZCA9ICdbMywzXSc7CistLSBVcGRhdGluZyBhIGZpbml0 ZS9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMywzXSc7 CistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0 ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4y JworV0hFUkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9y dGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0w MScKK1NFVCBuYW1lID0gJ2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKy0tIFVwZGF0 aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdldAor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTctMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ2ZvdXJeMicKK1dIRVJFIGlk ID0gJ1s0LDRdJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdpdGgg YW4gZXhhY3QgZml0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFt ZSA9ICdmb3VyXjMnCitXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBVcGRhdGluZyBhbiBlbmNs b3NlZCBzcGFuCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3R3b14yJworV0hFUkUg aWQgPSAnWzIsMl0nOworLS0gVXBkYXRpbmcgYW4gb3Blbi9vcGVuIHBvcnRpb24gd2l0aCBh IGZpbml0ZS9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMScgVE8gJzIwMTktMDEtMDEn CitTRVQgbmFtZSA9ICdmaXZlXjInCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBVcGRhdGlu ZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGluZyBzcGFucworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4zJworV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gVXBkYXRpbmcgbXVsdGlwbGUgZW5jbG9zZWQgc3BhbnMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25lXjInCitXSEVSRSBpZCA9ICdbMSwx XSc7CistLSBVcGRhdGluZyB3aXRoIGEgc2hpZnQvcmVkdWNlIGNvbmZsaWN0CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAn MjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcxJyBIT1VSIFRPIE1JTlVURQor ICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV4zJworV0hFUkUgaWQgPSAnWzEs MV0nOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMicgSE9V UgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQgPSAn WzEsMV0nOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiJzIwMTktMDEtMDEn IgorTElORSA0OiAgIFRPICcyMDE5LTAxLTAxJworICAgICAgICAgICAgIF4KK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICgn MjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSKQorICBUTyAnMjAx OS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQgPSAnWzEsMV0nOworLS0g V2l0aCBhIGRpcmVjdCB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCAodHNyYW5nZSgnMjAxOC0wMy0xMCcsICcyMDE4LTAzLTE3 JykpCitTRVQgbmFtZSA9ICdvbmVeNScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIFVwZGF0 aW5nIHRoZSBub24tcmFuZ2UgcGFydCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScgVE8g TlVMTAorU0VUIGlkID0gJ1s2LDZdJworV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gVVBEQVRF IHdpdGggbm8gV0hFUkUgY2xhdXNlCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAzMC0wMS0wMScgVE8gTlVMTAorU0VUIG5h bWUgPSBuYW1lIHx8ICcqJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBuYW1lICAgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIs IlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMSwyKSB8IFsiU2F0IEZl YiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVe MgorIFsyLDMpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAw OjAwOjAwIDIwMTgiKSB8IHR3b14yCisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwg WyJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgi KSB8IHRocmVlCisgWzMsNCkgfCBbIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgdGhyZWVeMQorIFszLDQpIHwgWyJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMzAiLCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRocmVlXjEq CisgWzQsNSkgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgZm91cl4xCisgWzQsNSkgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAg MjAxNyIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4zCisgWzQsNSkgfCBb IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIp IHwgZm91cl4yCisgWzUsNikgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgZml2ZQorIFs1LDYpIHwgWyJTdW4gSmFuIDAxIDAw OjAwOjAwIDIwMTciLCJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1 LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTki LCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IGZp dmUKKyBbNSw2KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwpICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBmaXZlKgorIFs2LDcpIHwgWyJUaHUgRmViIDE1IDAwOjAwOjAw IDIwMTgiLCJUaHUgTWFyIDAxIDA4OjAxOjAwIDIwMTgiKSB8IG9uZV4yCisgWzYsNykgfCBb IlRodSBNYXIgMDEgMDg6MDE6MDAgMjAxOCIsIlRodSBNYXIgMDEgMTA6MDA6MDAgMjAxOCIp IHwgb25lXjMKKyBbNiw3KSB8IFsiVGh1IE1hciAwMSAxMDowMDowMCAyMDE4IiwiU2F0IE1h ciAwMyAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorIFs2LDcpIHwgWyJTYXQgTWFyIDAzIDAw OjAwOjAwIDIwMTgiLCJTYXQgTWFyIDEwIDAwOjAwOjAwIDIwMTgiKSB8IG9uZV40CisgWzYs NykgfCBbIlNhdCBNYXIgMTAgMDA6MDA6MDAgMjAxOCIsIlNhdCBNYXIgMTcgMDA6MDA6MDAg MjAxOCIpIHwgb25lXjUKKyBbNiw3KSB8IFsiU2F0IE1hciAxNyAwMDowMDowMCAyMDE4Iiwi V2VkIEFwciAwNCAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorKDIyIHJvd3MpCisKKy0tCist LSBERUxFVEUgdGVzdHMKKy0tCistLSBEZWxldGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4g ZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzUs NV0nOworRVJST1I6ICBjb2x1bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlv biAiZm9yX3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBP UlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCisgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNl ZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitXSEVSRSBp ZCA9ICdbMywzXSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5kIG11c3QgYmUgbGVzcyB0 aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBEZWxldGluZyB3aXRoIHRp bWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAn MjAxOC0wNC0wMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIERlbGV0aW5nIHdpdGggYSBj bG9zZWQvY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMjAtMDYt MDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29w ZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdb MywzXSc7CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRF IEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSBOVUxMIFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gRGVsZXRp bmcgd2l0aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorV0hF UkUgaWQgPSAnWzYsNl0nOworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitERUxF VEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAgIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbIlRodSBGZWIgMDggMDA6MDA6MDAg MjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4Iikg fCB0d29eMgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFy IDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAw MDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFs0 LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTci LCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUg RmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZv dXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDow MCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4 IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiV2Vk IEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTEgcm93cykKKworLS0gVVBEQVRF IC4uLiBSRVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90IHRo ZSBpbnNlcnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0wMi0x NScKK1NFVCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMywzXScKK1JFVFVSTklO RyAqOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBb Myw0KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDow MCAyMDE4IikgfCB0aHJlZV4zCisoMSByb3cpCisKKy0tIHRlc3QgdGhhdCB3ZSBydW4gdHJp Z2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBhbmQgdGhlIElOU0VSVGVkIHJvd3MK K0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCkKK1JFVFVSTlMgdHJp Z2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUgJSAlIG9mICUnLCBUR19X SEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRfYXQ7CisgIElGIFRHX09QID0g J0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBSRVRVUk4gTkVX OworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBUUklH R0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmUKKyAgQkVGT1JFIElOU0VSVCBPUiBVUERB VEUgT1IgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRS SUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyCisgIEFGVEVSIElOU0VSVCBPUiBVUERB VEUgT1IgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjEt MDEtMDEnIFRPICcyMDIyLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV40JworV0hFUkUgaWQg PSAnWzUsNV0nOworTk9USUNFOiAgQkVGT1JFIFVQREFURSBbIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIsIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIpIG9mIFsiTW9uIEp1biAwMSAw MDowMDowMCAyMDIwIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikKK05PVElDRTogIEJF Rk9SRSBJTlNFUlQgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAw OjAwOjAwIDIwMjEiKSBvZiA8TlVMTD4KK05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJTYXQg SmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8 TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZU RVIgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBVUERBVEUgWyJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSBvZiBbIk1v biBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDIzLTAxLTAxJyBUTyAnMjAyNC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1LDVd JzsKK05PVElDRTogIEJFRk9SRSBERUxFVEUgPE5VTEw+IG9mIFsiU2F0IEphbiAwMSAwMDow MDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikKK05PVElDRTogIEJFRk9S RSBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAw OjAwIDIwMjMiKSBvZiA8TlVMTD4KK05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVM TD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIs IlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIg SU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBERUxFVEUgPE5VTEw+IG9mIFsi U2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikK K1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFsx LDIpIHwgWyJUaHUgRmViIDA4IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAw IDIwMTgiKSB8IG9uZV4yCisgWzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJl ZV4yCisgWzMsNCkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUg MDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMworIFszLDQpIHwgWyJUaHUgRmViIDE1IDAwOjAw OjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0 KSB8IFsiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAy MDE4IikgfCB0aHJlZQorIFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3Iikg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFu IDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJe MworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAw OjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDow MCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsi U3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iikg fCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1 biAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBmaXZlCisgWzUs NikgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBKYW4gMDEgMDA6MDA6MDAg MjAyMiIpIHwgZml2ZV40CisgWzUsNikgfCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIs IlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIpIHwgZml2ZQorIFs1LDYpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGZpdmUK KygxNiByb3dzKQorCistLSBUZXN0IHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQorQ1JFQVRF IFRZUEUgbXlkYXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKK0NSRUFURSBUQUJM RSBmb3JfcG9ydGlvbl9vZl90ZXN0MiAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAg dmFsaWRfYXQgbXlkYXRlcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwK KwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3Rlc3QyX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlv bl9vZl90ZXN0MgorVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMp JywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAzKScsICdvbmUn KSwKKygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25lJyksCisoJ1sy LDJdJywgJ1syMDE4LTAxLTAxLDIwMTgtMDUtMDEpJywgJ3R3bycpLAorKCdbMywzXScsICdb MjAxOC0wMS0wMSwpJywgJ3RocmVlJyk7Cis7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTAnIFRPICcyMDE4 LTAyLTEwJworU0VUIG5hbWUgPSAnb25lXjEnCitXSEVSRSBpZCA9ICdbMSwxXSc7CitERUxF VEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTgtMDItMTUnCitXSEVSRSBpZCA9ICdbMiwyXSc7 CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QyIE9SREVSIEJZIGlkLCB2YWxp ZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCistLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAy LTIwMTgsMDEtMTAtMjAxOCkgfCBvbmUKKyBbMSwyKSB8IFswMS0xMC0yMDE4LDAyLTAzLTIw MTgpIHwgb25lXjEKKyBbMSwyKSB8IFswMi0wMy0yMDE4LDAyLTEwLTIwMTgpIHwgb25lXjEK KyBbMSwyKSB8IFswMi0xMC0yMDE4LDAzLTAzLTIwMTgpIHwgb25lCisgWzEsMikgfCBbMDMt MDMtMjAxOCwwNC0wNC0yMDE4KSB8IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMTgsMDEtMTUt MjAxOCkgfCB0d28KKyBbMiwzKSB8IFswMi0xNS0yMDE4LDA1LTAxLTIwMTgpIHwgdHdvCisg WzMsNCkgfCBbMDEtMDEtMjAxOCwpICAgICAgICAgICB8IHRocmVlCisoOCByb3dzKQorCitE Uk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdl OworLS0gVGVzdCBGT1IgUE9SVElPTiBPRiBhZ2FpbnN0IGEgcGFydGl0aW9uZWQgdGFibGUu CistLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIGhhcyB0aGUgc2FtZSBhdHRudW1zIGFzIHRo ZSByb290CistLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIGhhcyB0aGUgZGlmZmVyZW50IGF0 dG51bXMgZnJvbSB0aGUgcm9vdAorLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBoYXMgdGhl IGRpZmZlcmVudCBhdHRudW1zIHRvbywgYnV0IHJldmVyc2VkCitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFu Z2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEg VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZ IExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIFBBUlRJ VElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAn WzIsMl0nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIFBBUlRJVElP TiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzMsM10nLCAnWzQs NF0nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IFBBUlRJVElPTiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzUsNV0nLCAnWzYsNl0n KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJT04g dGVtcG9yYWxfcGFydGl0aW9uZWRfMzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzMgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBBREQgQ09MVU1OIGlkIGludDRyYW5nZSBOT1Qg TlVMTCwgQUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEw7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzMgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IERST1Ag Q09MVU1OIGlkLCBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzUgQUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEws IEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81 IEZPUiBWQUxVRVMgSU4gKCdbNSw1XScsICdbNiw2XScpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEt MDEnLCAnMjAxMC0wMS0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKSwKKyAgKCdbNSw1XScsIGRhdGVy YW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdmaXZlJyk7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8IG9uZQorIFszLDQpIHwg WzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs1LDYpIHwgWzAxLTAxLTIwMDAs MDEtMDEtMjAxMCkgfCBmaXZlCisoMyByb3dzKQorCistLSBVcGRhdGUgd2l0aG91dCBtb3Zp bmcgd2l0aGluIHBhcnRpdGlvbiAxCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0wMScgVE8gJzIwMDAtMDQtMDEn CisgIFNFVCBuYW1lID0gJ29uZV4xJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBVcGRh dGUgd2l0aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAzCitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0wMScg VE8gJzIwMDAtMDQtMDEnCisgIFNFVCBuYW1lID0gJ3RocmVlXjEnCisgIFdIRVJFIGlkID0g J1szLDNdJzsKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRoaW4gcGFydGl0aW9uIDUK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VUIG5hbWUgPSAnZml2ZV4x JworICBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBNb3ZlIGZyb20gcGFydGl0aW9uIDEgdG8g cGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5h bWUgPSAnb25lXjInLAorICAgICAgaWQgPSAnWzQsNF0nCisgIFdIRVJFIGlkID0gJ1sxLDFd JzsKKy0tIE1vdmUgZnJvbSBwYXJ0aXRpb24gMyB0byBwYXJ0aXRpb24gMQorVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAt MDYtMDEnIFRPICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9ICd0aHJlZV4yJywKKyAgICAg IGlkID0gJ1syLDJdJworICBXSEVSRSBpZCA9ICdbMywzXSc7CistLSBNb3ZlIGZyb20gcGFy dGl0aW9uIDUgdG8gcGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wNy0w MScKKyAgU0VUIG5hbWUgPSAnZml2ZV4yJywKKyAgICAgIGlkID0gJ1szLDNdJworICBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBVcGRhdGUgYWxsIHBhcnRpdGlvbnMgYXQgb25jZSAoZWFj aCB3aXRoIGxlZnRvdmVycykKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQg T1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8 IFswMy0wMS0yMDAwLDA0LTAxLTIwMDApIHwgb25lXjEKKyBbMSwyKSB8IFswNC0wMS0yMDAw LDA2LTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8 IG9uZQorIFsyLDMpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCB0aHJlZV4yCisgWzMs NCkgfCBbMDEtMDEtMjAwMCwwMy0wMS0yMDAwKSB8IHRocmVlCisgWzMsNCkgfCBbMDMtMDEt MjAwMCwwNC0wMS0yMDAwKSB8IHRocmVlXjEKKyBbMyw0KSB8IFswNC0wMS0yMDAwLDA2LTAx LTIwMDApIHwgdGhyZWUKKyBbMyw0KSB8IFswNi0wMS0yMDAwLDA3LTAxLTIwMDApIHwgZml2 ZV4yCisgWzMsNCkgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQsNSkg fCBbMDYtMDEtMjAwMCwwNy0wMS0yMDAwKSB8IG9uZV4yCisgWzUsNikgfCBbMDEtMDEtMjAw MCwwMy0wMS0yMDAwKSB8IGZpdmUKKyBbNSw2KSB8IFswMy0wMS0yMDAwLDA0LTAxLTIwMDAp IHwgZml2ZV4xCisgWzUsNikgfCBbMDQtMDEtMjAwMCwwNi0wMS0yMDAwKSB8IGZpdmUKKyBb NSw2KSB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTApIHwgZml2ZQorKDE1IHJvd3MpCisKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBuYW1lICAgCistLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbMDEt MDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAzLTAxLTIwMDAsMDQtMDEt MjAwMCkgfCBvbmVeMQorIFsxLDIpIHwgWzA0LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBvbmUK KyBbMSwyKSB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTApIHwgb25lCisgWzIsMykgfCBbMDYt MDEtMjAwMCwwNy0wMS0yMDAwKSB8IHRocmVlXjIKKyg1IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIG5h bWUgICB8ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgCistLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdGhyZWUgICB8IFszLDQpIHwgWzAx LTAxLTIwMDAsMDMtMDEtMjAwMCkKKyB0aHJlZV4xIHwgWzMsNCkgfCBbMDMtMDEtMjAwMCww NC0wMS0yMDAwKQorIHRocmVlICAgfCBbMyw0KSB8IFswNC0wMS0yMDAwLDA2LTAxLTIwMDAp CisgZml2ZV4yICB8IFszLDQpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkKKyB0aHJlZSAg IHwgWzMsNCkgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKQorIG9uZV4yICAgfCBbNCw1KSB8 IFswNi0wMS0yMDAwLDA3LTAxLTIwMDApCisoNiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkXzUgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBuYW1lICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIGlkICAgCistLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBmaXZlICAgfCBbMDEtMDEtMjAwMCwwMy0wMS0y MDAwKSB8IFs1LDYpCisgZml2ZV4xIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCBbNSw2 KQorIGZpdmUgICB8IFswNC0wMS0yMDAwLDA2LTAxLTIwMDApIHwgWzUsNikKKyBmaXZlICAg fCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IFs1LDYpCisoNCByb3dzKQorCitEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b3ByX3Nhbml0eS5vdXQKaW5kZXggNzYxMGIwMTFkNjguLmRhMDc5Y2ZjNThhIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKQEAgLTE5NDIsNiArMTk0 Miw3IEBAIFdIRVJFIGExLmFtb3BmYW1pbHkgPSAwIE9SIGExLmFtb3BsZWZ0dHlwZSA9IDAg T1IgYTEuYW1vcHJpZ2h0dHlwZSA9IDAKIFNFTEVDVCBhMS5hbW9wZmFtaWx5LCBhMS5hbW9w c3RyYXRlZ3kKIEZST00gcGdfYW1vcCBhcyBhMQogV0hFUkUgTk9UICgoYTEuYW1vcHB1cnBv c2UgPSAncycgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5ID0gMCkgT1IKKyAgICAgICAgICAgKGEx LmFtb3BwdXJwb3NlID0gJ3AnIEFORCBhMS5hbW9wc29ydGZhbWlseSA9IDApIE9SCiAgICAg ICAgICAgIChhMS5hbW9wcHVycG9zZSA9ICdvJyBBTkQgYTEuYW1vcHNvcnRmYW1pbHkgPD4g MCkpOwogIGFtb3BmYW1pbHkgfCBhbW9wc3RyYXRlZ3kgCiAtLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0KQEAgLTIwMDgsNiArMjAwOSw5IEBAIE9SREVSIEJZIDEsIDIsIDM7CiAgICAg ICAgIDc4MyB8ICAgICAgICAgICAyOCB8IDxACiAgICAgICAgIDc4MyB8ICAgICAgICAgICAy OSB8IDxeCiAgICAgICAgIDc4MyB8ICAgICAgICAgICAzMCB8ID5eCisgICAgICAgIDc4MyB8 ICAgICAgICAgICAzMSB8ICMKKyAgICAgICAgNzgzIHwgICAgICAgICAgIDMxIHwgKgorICAg ICAgICA3ODMgfCAgICAgICAgICAgMzIgfCBALQogICAgICAgICA3ODMgfCAgICAgICAgICAg NDggfCA8QAogICAgICAgICA3ODMgfCAgICAgICAgICAgNjggfCA8QAogICAgICAgIDI3NDIg fCAgICAgICAgICAgIDEgfCAmJgpAQCAtMjA4OCw3ICsyMDkyLDcgQEAgT1JERVIgQlkgMSwg MiwgMzsKICAgICAgICA0MDAwIHwgICAgICAgICAgIDI4IHwgXkAKICAgICAgICA0MDAwIHwg ICAgICAgICAgIDI5IHwgPF4KICAgICAgICA0MDAwIHwgICAgICAgICAgIDMwIHwgPl4KLSgx MjQgcm93cykKKygxMjcgcm93cykKIAogLS0gQ2hlY2sgdGhhdCBhbGwgb3BjbGFzcyBzZWFy Y2ggb3BlcmF0b3JzIGhhdmUgc2VsZWN0aXZpdHkgZXN0aW1hdG9ycy4KIC0tIFRoaXMgaXMg bm90IGFic29sdXRlbHkgcmVxdWlyZWQsIGJ1dCBpdCBzZWVtcyBhIHJlYXNvbmFibGUgdGhp bmcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0CmluZGV4IGZi YjA0ODlhNGZmLi4zMzk1ZDIxNTBmZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wcml2aWxlZ2VzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3ByaXZpbGVnZXMub3V0CkBAIC05ODUsNiArOTg1LDI0IEBAIEVSUk9SOiAgbnVsbCB2YWx1 ZSBpbiBjb2x1bW4gImIiIG9mIHJlbGF0aW9uICJlcnJ0c3RfcGFydF8yIiB2aW9sYXRlcyBu b3QtbnVsbCBjCiBERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoYSwgYiwgYykgPSAo YWFhYSwgbnVsbCwgY2NjKS4KIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w cml2X3VzZXIxOwogRFJPUCBUQUJMRSBlcnJ0c3Q7CistLSB0ZXN0IGNvbHVtbi1sZXZlbCBw cml2aWxlZ2VzIG9uIHRoZSByYW5nZS9QRVJJT0QgdXNlZCBpbiBGT1IgUE9SVElPTiBPRgor U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitDUkVBVEUg VEFCTEUgdDEgKAorICBjMSBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisJQ09O U1RSQUlOVCB0MXBrIFBSSU1BUlkgS0VZIChjMSwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOworR1JB TlQgU0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK0dSQU5UIFVQREFURSAo YzEpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFVQREFURSAoYzEsIHZh bGlkX2F0KSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0g J1syLDMpJzsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlIHQxCitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0MSBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0w MScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wcml2X3VzZXIxOworRFJPUCBUQUJMRSB0MTsKIC0tIHRlc3QgY29sdW1uLWxldmVsIHBy aXZpbGVnZXMgd2hlbiBpbnZvbHZlZCB3aXRoIERFTEVURQogU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBBTFRFUiBUQUJMRSBhdGVzdDYgQUREIENP TFVNTiB0aHJlZSBpbnRlZ2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC91cGRhdGFibGVfdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91 cGRhdGFibGVfdmlld3Mub3V0CmluZGV4IGE3M2MxZjkwYzRhLi43MjdhZDA4ZTA4MiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dApA QCAtMzAyMCw2ICszMDIwLDM4IEBAIHNlbGVjdCAqIGZyb20gdXZfaW9jdV90YWI7CiAKIGRy b3AgdmlldyB1dl9pb2N1X3ZpZXc7CiBkcm9wIHRhYmxlIHV2X2lvY3VfdGFiOworLS0gQ2hl Y2sgVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdvcmtzIGNvcnJlY3RseQorY3JlYXRlIHRhYmxl IHV2X2Zwb190YWIgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQgdHNyYW5nZSwgYiBmbG9hdCwK KyAgICBjb25zdHJhaW50IHBrX3V2X2Zwb190YWIgcHJpbWFyeSBrZXkgKGlkLCB2YWxpZF9h dCB3aXRob3V0IG92ZXJsYXBzKSk7CitpbnNlcnQgaW50byB1dl9mcG9fdGFiIHZhbHVlcyAo J1sxLDFdJywgJ1syMDIwLTAxLTAxLCAyMDMwLTAxLTAxKScsIDApOworY3JlYXRlIHZpZXcg dXZfZnBvX3ZpZXcgYXMKKyAgICBzZWxlY3QgYiwgYisxIGFzIGMsIHZhbGlkX2F0LCBpZCwg JzIuMCc6OnRleHQgYXMgdHdvIGZyb20gdXZfZnBvX3RhYjsKK2luc2VydCBpbnRvIHV2X2Zw b192aWV3IChpZCwgdmFsaWRfYXQsIGIpIHZhbHVlcyAoJ1sxLDFdJywgJ1syMDEwLTAxLTAx LCAyMDIwLTAxLTAxKScsIDEpOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKKyBiIHwg YyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0KKyAwIHwg MSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiVHVlIEphbiAwMSAwMDowMDowMCAy MDMwIikgfCBbMSwyKSB8IDIuMAorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MTAiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFsxLDIpIHwgMi4wCisoMiByb3dz KQorCit1cGRhdGUgdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24gb2YgdmFsaWRfYXQgZnJvbSAn MjAxNS0wMS0wMScgdG8gJzIwMjAtMDEtMDEnIHNldCBiID0gMiB3aGVyZSBpZCA9ICdbMSwx XSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwg dHdvIAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLQorIDAgfCAxIHwgWyJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwg Mi4wCisgMiB8IDMgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWzEsMikgfCAyLjAKKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAw MDowMDowMCAyMDEwIiwiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IikgfCBbMSwyKSB8IDIu MAorKDMgcm93cykKKworZGVsZXRlIGZyb20gdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24gb2Yg dmFsaWRfYXQgZnJvbSAnMjAxNy0wMS0wMScgdG8gJzIwMjItMDEtMDEnIHdoZXJlIGlkID0g J1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7CisgYiB8IGMgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGlk ICAgfCB0d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tCisgMSB8IDIgfCBbIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAxMCIsIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIpIHwgWzEs MikgfCAyLjAKKyAwIHwgMSB8IFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiVHVlIEph biAwMSAwMDowMDowMCAyMDMwIikgfCBbMSwyKSB8IDIuMAorIDIgfCAzIHwgWyJUaHUgSmFu IDAxIDAwOjAwOjAwIDIwMTUiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSB8IFsxLDIp IHwgMi4wCisoMyByb3dzKQorCiAtLSBUZXN0IHdob2xlLXJvdyByZWZlcmVuY2VzIHRvIHRo ZSB2aWV3CiBjcmVhdGUgdGFibGUgdXZfaW9jdV90YWIgKGEgaW50IHVuaXF1ZSwgYiB0ZXh0 KTsKIGNyZWF0ZSB2aWV3IHV2X2lvY3VfdmlldyBhcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKaW5kZXggYzYzMzczOGMyZWIuLjYw YzllZWRhZWU4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91 dF9vdmVybGFwcy5vdXQKQEAgLTMwNSw2ICszMDUsMzYgQEAgSU5TRVJUIElOVE8gdGVtcG9y YWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAgKCdbMSwxXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKICAgKCdbMiwy XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdi YXInKQogOworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcx JzsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAw MC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMicKKyAg V0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCAgaWQy ICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwNS0wMS0yMDAwKSB8IFs3LDgpICB8 IGZvbworIFsxLDIpIHwgWzA1LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBbNyw4KSAgfCBmb28x CisgWzEsMikgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IFs3LDgpICB8IGZvbworIFsy LDMpIHwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIKKyBbMiwzKSB8 IFswNC0wMS0yMDAwLDA1LTAxLTIwMDApIHwgWzksMTApIHwgYmFyMgorIFsyLDMpIHwgWzA1 LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIxMgorIFsyLDMpIHwgWzA2LTAx LTIwMDAsMDctMDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIxCisgWzIsMykgfCBbMDctMDEtMjAw MCwwMS0wMS0yMDEwKSB8IFs5LDEwKSB8IGJhcgorKDggcm93cykKKworLS0gY29uZmxpY3Rp bmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIs IG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywg JzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcg a2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbDNfcGsi CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMDEtMDEtMjAwNSwwMS0w MS0yMDA2KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShb MSwyKSwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkpLgorLS0gY29uZmxpY3RpbmcgaWQyIG9u bHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQor ICBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDEwLTAx LTAxJyksICdbOSw5XScsICdiYXIzJyk7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1 ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9yYWwzX3VuaXEiCitERVRB SUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCksIFswMS0wMS0yMDA1LDAxLTAxLTIw MTApKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwx MCksIFswNy0wMS0yMDAwLDAxLTAxLTIwMTApKS4KIERST1AgVEFCTEUgdGVtcG9yYWwzOwog LS0KIC0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVwZW5kZW5jaWVzCkBAIC0zNTcsNiAr Mzg3LDM2IEBAIFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKICBb Myw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKICgxIHJvdykKIAorVVBE QVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25lMicK KyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAor ICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0w Mi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitVUERB VEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0nCisg IFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIw MDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAg IHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8IG9u ZQorIFsxLDIpIHwgWzAxLTE1LTIwMDAsMDItMDEtMjAwMCkgfCBvbmUyCisgWzEsMikgfCBb MDItMDEtMjAwMCwwMi0xNS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0xNS0yMDAwLDAy LTIwLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMjUtMjAwMCwwMy0wMS0yMDAwKSB8IG9u ZQorIFsyLDMpIHwgWzAxLTAxLTIwMDIsMDEtMDEtMjAwMykgfCB0aHJlZQorIFszLDQpIHwg WzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCB0aHJlZQorIFszLDQpIHwgWzAyLTE1LTIwMDAs MDEtMDEtMjAwMikgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDMsMDEtMDEtMjAxMCkg fCB0aHJlZQorIFs0LDUpIHwgWzAyLTIwLTIwMDAsMDItMjUtMjAwMCkgfCBvbmUKKygxMCBy b3dzKQorCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogLS0gdGVtcG9yYWwg VU5JUVVFOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKQEAgLTM5Miw2 ICs0NTIsMzYgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owog IFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQogKDEgcm93KQogCitV UERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUy JworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVk CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAw LTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQ REFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScK KyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAn MjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAg ICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAxLTE1LTIwMDApIHwg b25lCisgWzEsMikgfCBbMDEtMTUtMjAwMCwwMi0wMS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8 IFswMi0wMS0yMDAwLDAyLTE1LTIwMDApIHwgb25lMgorIFsxLDIpIHwgWzAyLTE1LTIwMDAs MDItMjAtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0yNS0yMDAwLDAzLTAxLTIwMDApIHwg b25lCisgWzIsMykgfCBbMDEtMDEtMjAwMiwwMS0wMS0yMDAzKSB8IHRocmVlCisgWzMsNCkg fCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8IHRocmVlCisgWzMsNCkgfCBbMDItMTUtMjAw MCwwMS0wMS0yMDAyKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMywwMS0wMS0yMDEw KSB8IHRocmVlCisgWzQsNSkgfCBbMDItMjAtMjAwMCwwMi0yNS0yMDAwKSB8IG9uZQorKDEw IHJvd3MpCisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CiAtLQogLS0gdGVz dCBGSyBkZXBlbmRlbmNpZXMKQEAgLTY5MiwxMyArNzgyLDI1IEBAIFVQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1cGRh dGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1w b3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgi KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n Ii4KKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUg dGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAy JyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVd JzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3Ju ZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgt MDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1 LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAg MjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciLgogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRo ZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQogV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOwogLS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk IElOICgnWzUsNV0nLCAnWzcsN10nKTsKIC0tCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVz IFJFU1RSSUNUCiAtLQpAQCAtNzI5LDEzICs4MzEsMjUgQEAgVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBv ciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFs X2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBp cyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgor LS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1w b3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRP ICcyMDE4LTAxLTAzJworU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOwor LS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0x MCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBk YXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVt cG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiks IFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJu ZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNh bWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx Jyk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4g KCdbNSw1XScsICdbNyw3XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8g QUNUSU9OCiAtLQpAQCAtNzU3LDkgKzg3MSwyMiBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDIt MDEnLAogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9S OiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJs ZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0o WzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIuCistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5Ogor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0t IGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0w MS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBv biB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJu ZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAw MDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJl ZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRl bGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1 Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g Y2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVu dF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4g KCdbNSw1XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKIC0t CkBAIC03ODEsOSArOTA4LDIyIEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsCiBERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1cGRhdGUg b3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3Jh bF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkg aXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4K Ky0tIGRlbGV0aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEt MDInIFRPICcyMDE4LTAxLTAzJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcg anVzdCBhIHBhcnQgZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworV0hF UkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlM OiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAwOjAwIDIw MTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBm cm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4gZGVsZXRlIHRoZSBv YmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1 LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7 CiAtLQogLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBiMDhhYWFlNDRiOC4uY2MyZjZiNDZlMGMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtNDgsNyArNDgsNyBAQCB0ZXN0 OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9p bmNsdWRpbmcgaW5kZXhfaW5jbHVkaQogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAg b2YgcGFyYWxsZWwgdGVzdHMKICMgLS0tLS0tLS0tLQotdGVzdDogY3JlYXRlX2FnZ3JlZ2F0 ZSBjcmVhdGVfZnVuY3Rpb25fc3FsIGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJz IHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRh dGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMg aW5maW5pdGVfcmVjdXJzZQordGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rp b25fc3FsIGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0 IHR5cGVkX3RhYmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9s ZWF0dHJpYnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJz ZSBmb3JfcG9ydGlvbl9vZgogCiAjIC0tLS0tLS0tLS0KICMgc2FuaXR5X2NoZWNrIGRvZXMg YSB2YWN1dW0sIGFmZmVjdGluZyB0aGUgc29ydCBvcmRlciBvZiBTRUxFQ1QgKgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi42MDEwYzVkOTRmNQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbApAQCAtMCwwICsxLDQyMyBA QAorLS0gVGVzdHMgZm9yIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0YKKworLS0gV29y a3Mgb24gbm9uLVBLIGNvbHVtbnMKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0 ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBuYW1lIHRleHQg Tk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUwor KCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDIwLTAxLTAxKScsICdvbmUnKTsKKworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZm9vJzsKKworREVMRVRF IEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0xNScgVE8gTlVMTDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0OworCistLSBXb3JrcyBvbiBtb3JlIHRoYW4gb25lIHJhbmdlCitEUk9QIFRBQkxF IGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVz dCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWQxX2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9h dCB0c3JhbmdlLAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3Jf cG9ydGlvbl9vZl90ZXN0IFZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAy LTAzKScsICdbMjAxNS0wMS0wMSwyMDI1LTAxLTAxKScsICdvbmUnKTsKKworVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcyMDE4 LTAxLTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb28nOworU0VMRUNUICogRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0OworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE5VTEwKK1NFVCBuYW1l ID0gJ2Jhcic7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKK0RFTEVU RSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBG Uk9NICcyMDE4LTAxLTIwJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gTlVMTDsKK1NFTEVDVCAqIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworLS0gVGVzdCB3aXRoIE5VTExzIGluIHRoZSBz Y2FsYXIvcmFuZ2Uga2V5IGNvbHVtbnMuCistLSBUaGlzIHdvbid0IGhhcHBlbiBpZiB0aGVy ZSBpcyBhIFBSSU1BUlkgS0VZIG9yIFVOSVFVRSBjb25zdHJhaW50CistLSBidXQgRk9SIFBP UlRJT04gT0Ygc2hvdWxkbid0IHJlcXVpcmUgdGhhdC4KK0RST1AgVEFCTEUgZm9yX3BvcnRp b25fb2ZfdGVzdDsKK0NSRUFURSBVTkxPR0dFRCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0 ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBuYW1lIHRleHQK Kyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUworICAoJ1sxLDFd JywgTlVMTCwgJzEgbnVsbCcpLAorICAoJ1sxLDFdJywgJygsKScsICcxIHVuYm91bmRlZCcp LAorICAoJ1sxLDFdJywgJ2VtcHR5JywgJzEgZW1wdHknKSwKKyAgKE5VTEwsIE5VTEwsIE5V TEwpLAorICAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE5LTAxLTAxJyksICdu dWxsIGtleScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKKyAgU0VUIG5hbWUgPSAnTlVMTCB0byBO VUxMJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworRFJPUCBUQUJM RSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IHRzcmFuZ2UgTk9U IE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5UIGZvcl9wb3J0aW9u X29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0CitWQUxVRVMKKygnWzEsMV0nLCAn WzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAy LTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMy0wMywyMDE4 LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIwMTgtMDEtMDEsMjAxOC0wMS0wNSkn LCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUnKSwKKygnWzQs NF0nLCAnKCwyMDE4LTA0LTAxKScsICdmb3VyJyksCisoJ1s1LDVdJywgJygsKScsICdmaXZl JykKKzsKKworLS0KKy0tIFVQREFURSB0ZXN0cworLS0KKworLS0gU2V0dGluZyB3aXRoIGEg bWlzc2luZyBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1NFVCBu YW1lID0gJ2ZvbycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gU2V0dGluZyB0aGUgcmFu Z2UgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQgdmFsaWRfYXQgPSAnWzE5 OTAtMDEtMDEsMTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIFRoZSB3 cm9uZyB0eXBlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAxIFRPIDQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBp ZCA9ICdbMywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZh aWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0aHJl ZV4xJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBTZXR0aW5nIHdpdGggYSBzdWJxdWVy eSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LTA2LTAxJworU0VU IG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gU2V0dGluZyB3aXRo IGEgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSBsb3dlcih2YWxpZF9hdCkgVE8gTlVMTAorU0VUIG5hbWUg PSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gU2V0dGluZyB3aXRoIHRpbWVz dGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQt MDEnCitTRVQgbmFtZSA9ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBV cGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdl dAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVS RSBpZCA9ICdbMywzXSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3 aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMy0wMScKK1NF VCBuYW1lID0gJ3RocmVlXjInCitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFVwZGF0aW5n IGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IE5VTEwgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitXSEVSRSBpZCA9 ICdbNCw0XSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBh IGZpbml0ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1l ID0gJ2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKworLS0gVXBkYXRpbmcgYSBmaW5p dGUvZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBmaXQKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBU TyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMycKK1dIRVJFIGlkID0gJ1s0LDRd JzsKKworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitT RVQgbmFtZSA9ICd0d29eMicKK1dIRVJFIGlkID0gJ1syLDJdJzsKKworLS0gVXBkYXRpbmcg YW4gb3Blbi9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9maW5pdGUgdGFyZ2V0CitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wMScgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjInCitXSEVS RSBpZCA9ICdbNSw1XSc7CisKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0aCBz ZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAtMDEt MDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIFVw ZGF0aW5nIG11bHRpcGxlIGVuY2xvc2VkIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBu YW1lID0gJ29uZV4yJworV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBVcGRhdGluZyB3aXRo IGEgc2hpZnQvcmVkdWNlIGNvbmZsaWN0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBa T05FIElOVEVSVkFMICcxJyBIT1VSIFRPIE1JTlVURQorICBUTyAnMjAxOS0wMS0wMScKK1NF VCBuYW1lID0gJ29uZV4zJworV0hFUkUgaWQgPSAnWzEsMV0nOworCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0w My0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSCisgIFRPICcyMDE5LTAxLTAx JworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICgn MjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSKQorICBUTyAnMjAx OS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQgPSAnWzEsMV0nOworCist LSBXaXRoIGEgZGlyZWN0IHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0ICh0c3JhbmdlKCcyMDE4LTAzLTEwJywgJzIwMTgtMDMt MTcnKSkKK1NFVCBuYW1lID0gJ29uZV41JworV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBV cGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBLOgorVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMTUn IFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw2XScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0g VVBEQVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAzMC0wMS0wMScgVE8gTlVMTAor U0VUIG5hbWUgPSBuYW1lIHx8ICcqJzsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0KKy0tIERFTEVURSB0ZXN0cwor LS0KKworLS0gRGVsZXRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitERUxFVEUg RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZS T00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gRGVs ZXRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitERUxFVEUgRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2 LTAxJyBUTyAnMjAxOC0wMS0wMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gRGVsZXRp bmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w NC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIERlbGV0 aW5nIHdpdGggYSBjbG9zZWQvY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScg VE8gJzIwMjAtMDYtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIERlbGV0aW5nIHdp dGggYSBjbG9zZWQvb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPIE5VTEwK K1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL2Nsb3Nl ZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wOCcKK1dIRVJFIGlkID0gJ1sx LDFdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxFVEUg RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IE5VTEwgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzYsNl0nOworCistLSBERUxFVEUgd2l0aCBu byBXSEVSRSBjbGF1c2UKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjUtMDEtMDEnIFRPIE5VTEw7CisKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisK Ky0tIFVQREFURSAuLi4gUkVUVVJOSU5HIHJldHVybnMgb25seSB0aGUgdXBkYXRlZCB2YWx1 ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lkZSB2YWx1ZXMpCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0wMScgVE8g JzIwMTgtMDItMTUnCitTRVQgbmFtZSA9ICd0aHJlZV4zJworV0hFUkUgaWQgPSAnWzMsM10n CitSRVRVUk5JTkcgKjsKKworLS0gdGVzdCB0aGF0IHdlIHJ1biB0cmlnZ2VycyBvbiB0aGUg VVBEQVRFL0RFTEVURWQgcm93IGFuZCB0aGUgSU5TRVJUZWQgcm93cworCitDUkVBVEUgRlVO Q1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpCitSRVRVUk5TIHRyaWdnZXIKK0FTCisk JAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICclICUgJSBvZiAlJywgVEdfV0hFTiwgVEdfT1As IE5FVy52YWxpZF9hdCwgT0xELnZhbGlkX2F0OworICBJRiBUR19PUCA9ICdERUxFVEUnIFRI RU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNFCisgICAgUkVUVVJOIE5FVzsKKyAgRU5EIElG OworRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBUUklHR0VSIHRyZ19m b3JfcG9ydGlvbl9vZl9iZWZvcmUKKyAgQkVGT1JFIElOU0VSVCBPUiBVUERBVEUgT1IgREVM RVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUg RlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJn X2Zvcl9wb3J0aW9uX29mX2FmdGVyCisgIEFGVEVSIElOU0VSVCBPUiBVUERBVEUgT1IgREVM RVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUg RlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworCitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMS0wMS0wMScg VE8gJzIwMjItMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjQnCitXSEVSRSBpZCA9ICdbNSw1 XSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMjMtMDEtMDEnIFRPICcyMDI0LTAxLTAxJworV0hFUkUgaWQg PSAnWzUsNV0nOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIg QlkgaWQsIHZhbGlkX2F0OworCistLSBUZXN0IHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQor CitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBlPWRhdGUpOworCitD UkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIgKAorICBpZCBpbnQ0cmFuZ2UgTk9U IE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQg Tk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl90ZXN0Ml9wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8g Zm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwy MDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0w MyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29u ZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTA1LTAxKScsICd0d28nKSwKKygn WzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpOworOworCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEt MTAnIFRPICcyMDE4LTAyLTEwJworU0VUIG5hbWUgPSAnb25lXjEnCitXSEVSRSBpZCA9ICdb MSwxXSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOC0wMi0xNScKK1dIRVJF IGlkID0gJ1syLDJdJzsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0MiBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVz dDI7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CisKKy0tIFRlc3QgRk9SIFBPUlRJT04gT0Yg YWdhaW5zdCBhIHBhcnRpdGlvbmVkIHRhYmxlLgorLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRf MSBoYXMgdGhlIHNhbWUgYXR0bnVtcyBhcyB0aGUgcm9vdAorLS0gdGVtcG9yYWxfcGFydGl0 aW9uZWRfMyBoYXMgdGhlIGRpZmZlcmVudCBhdHRudW1zIGZyb20gdGhlIHJvb3QKKy0tIHRl bXBvcmFsX3BhcnRpdGlvbmVkXzUgaGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyB0b28sIGJ1 dCByZXZlcnNlZAorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRp b25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzIsMl0nKTsKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBGT1IgVkFMVUVTIElOICgnWzMsM10nLCAnWzQsNF0nKTsKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF81IFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBG T1IgVkFMVUVTIElOICgnWzUsNV0nLCAnWzYsNl0nKTsKKworQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWQgREVUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8z OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwg RFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF8zIEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxMLCBBREQgQ09MVU1OIHZhbGlk X2F0IGRhdGVyYW5nZSBOT1QgTlVMTDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkIEFUVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBGT1IgVkFMVUVT IElOICgnWzMsM10nLCAnWzQsNF0nKTsKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWQgREVUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81OworQUxURVIg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xV TU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFERCBD T0xVTU4gdmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMLCBBREQgQ09MVU1OIGlkIGludDRy YW5nZSBOT1QgTlVMTDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEFUVEFD SCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBGT1IgVkFMVUVTIElOICgnWzUs NV0nLCAnWzYsNl0nKTsKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWQgVkFM VUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScp LCAnb25lJyksCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0w MS0wMScpLCAndGhyZWUnKSwKKyAgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScs ICcyMDEwLTAxLTAxJyksICdmaXZlJyk7CisKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWQ7CisKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRoaW4gcGFydGl0aW9u IDEKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VUIG5hbWUgPSAnb25l XjEnCisgIFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gVXBkYXRlIHdpdGhvdXQgbW92aW5n IHdpdGhpbiBwYXJ0aXRpb24gMworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDMtMDEnIFRPICcyMDAwLTA0LTAxJwor ICBTRVQgbmFtZSA9ICd0aHJlZV4xJworICBXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFVw ZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRoaW4gcGFydGl0aW9uIDUKK1VQREFURSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAzLTAx JyBUTyAnMjAwMC0wNC0wMScKKyAgU0VUIG5hbWUgPSAnZml2ZV4xJworICBXSEVSRSBpZCA9 ICdbNSw1XSc7CisKKy0tIE1vdmUgZnJvbSBwYXJ0aXRpb24gMSB0byBwYXJ0aXRpb24gMwor VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMDAtMDYtMDEnIFRPICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9ICdvbmVeMics CisgICAgICBpZCA9ICdbNCw0XScKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBNb3Zl IGZyb20gcGFydGl0aW9uIDMgdG8gcGFydGl0aW9uIDEKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAn MjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSAndGhyZWVeMicsCisgICAgICBpZCA9ICdbMiwy XScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBNb3ZlIGZyb20gcGFydGl0aW9uIDUg dG8gcGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VU IG5hbWUgPSAnZml2ZV4yJywKKyAgICAgIGlkID0gJ1szLDNdJworICBXSEVSRSBpZCA9ICdb NSw1XSc7CisKKy0tIFVwZGF0ZSBhbGwgcGFydGl0aW9ucyBhdCBvbmNlIChlYWNoIHdpdGgg bGVmdG92ZXJzKQorCitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf MSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkXzMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF81IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworRFJPUCBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L29wcl9zYW5pdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwK aW5kZXggMmZlN2I2ZGNjNDkuLjJkZmZlN2M1YjZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9v cHJfc2FuaXR5LnNxbApAQCAtMTI0MSw2ICsxMjQxLDcgQEAgV0hFUkUgYTEuYW1vcGZhbWls eSA9IDAgT1IgYTEuYW1vcGxlZnR0eXBlID0gMCBPUiBhMS5hbW9wcmlnaHR0eXBlID0gMAog U0VMRUNUIGExLmFtb3BmYW1pbHksIGExLmFtb3BzdHJhdGVneQogRlJPTSBwZ19hbW9wIGFz IGExCiBXSEVSRSBOT1QgKChhMS5hbW9wcHVycG9zZSA9ICdzJyBBTkQgYTEuYW1vcHNvcnRm YW1pbHkgPSAwKSBPUgorICAgICAgICAgICAoYTEuYW1vcHB1cnBvc2UgPSAncCcgQU5EIGEx LmFtb3Bzb3J0ZmFtaWx5ID0gMCkgT1IKICAgICAgICAgICAgKGExLmFtb3BwdXJwb3NlID0g J28nIEFORCBhMS5hbW9wc29ydGZhbWlseSA8PiAwKSk7CiAKIC0tIGFtb3BtZXRob2QgbXVz dCBtYXRjaCBvd25pbmcgb3BmYW1pbHkncyBvcGZtZXRob2QKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHJpdmlsZWdlcy5zcWwKaW5kZXggM2Y2OGNhZmNkMWUuLmUxMGFkZGVkOWQ5IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbApAQCAtNzEzLDYgKzcxMywyNCBAQCBVUERB VEUgZXJydHN0IFNFVCBhID0gJ2FhYWEnLCBiID0gTlVMTCBXSEVSRSBhID0gJ2FhYSc7CiBT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1AgVEFC TEUgZXJydHN0OwogCistLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIG9uIHRoZSBy YW5nZS9QRVJJT0QgdXNlZCBpbiBGT1IgUE9SVElPTiBPRgorU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitDUkVBVEUgVEFCTEUgdDEgKAorICBjMSBp bnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0MXBrIFBSSU1B UlkgS0VZIChjMSwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitHUkFOVCBTRUxF Q1QgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOworR1JBTlQgU0VMRUNUIE9OIHQxIFRP IHJlZ3Jlc3NfcHJpdl91c2VyMzsKK0dSQU5UIFVQREFURSAoYzEpIE9OIHQxIFRPIHJlZ3Jl c3NfcHJpdl91c2VyMjsKK0dSQU5UIFVQREFURSAoYzEsIHZhbGlkX2F0KSBPTiB0MSBUTyBy ZWdyZXNzX3ByaXZfdXNlcjM7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cHJpdl91c2VyMjsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIzOworVVBEQVRFIHQxIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBT RVQgYzEgPSAnWzIsMyknOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3By aXZfdXNlcjE7CitEUk9QIFRBQkxFIHQxOworCiAtLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2 aWxlZ2VzIHdoZW4gaW52b2x2ZWQgd2l0aCBERUxFVEUKIFNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wcml2X3VzZXIxOwogQUxURVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xV TU4gdGhyZWUgaW50ZWdlcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Vw ZGF0YWJsZV92aWV3cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmll d3Muc3FsCmluZGV4IGVhZWUwYjdlMWQ3Li5mODE0NzAxYTQzYSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCkBAIC0xNTQxLDYgKzE1NDEsMjAgQEAg c2VsZWN0ICogZnJvbSB1dl9pb2N1X3RhYjsKIGRyb3AgdmlldyB1dl9pb2N1X3ZpZXc7CiBk cm9wIHRhYmxlIHV2X2lvY3VfdGFiOwogCistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJT04g T0Ygd29ya3MgY29ycmVjdGx5CitjcmVhdGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50NHJh bmdlLCB2YWxpZF9hdCB0c3JhbmdlLCBiIGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtfdXZf ZnBvX3RhYiBwcmltYXJ5IGtleSAoaWQsIHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMpKTsK K2luc2VydCBpbnRvIHV2X2Zwb190YWIgdmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEtMDEs IDIwMzAtMDEtMDEpJywgMCk7CitjcmVhdGUgdmlldyB1dl9mcG9fdmlldyBhcworICAgIHNl bGVjdCBiLCBiKzEgYXMgYywgdmFsaWRfYXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28gZnJv bSB1dl9mcG9fdGFiOworCitpbnNlcnQgaW50byB1dl9mcG9fdmlldyAoaWQsIHZhbGlkX2F0 LCBiKSB2YWx1ZXMgKCdbMSwxXScsICdbMjAxMC0wMS0wMSwgMjAyMC0wMS0wMSknLCAxKTsK K3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7Cit1cGRhdGUgdXZfZnBvX3ZpZXcgZm9yIHBv cnRpb24gb2YgdmFsaWRfYXQgZnJvbSAnMjAxNS0wMS0wMScgdG8gJzIwMjAtMDEtMDEnIHNl dCBiID0gMiB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3 OworZGVsZXRlIGZyb20gdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24gb2YgdmFsaWRfYXQgZnJv bSAnMjAxNy0wMS0wMScgdG8gJzIwMjItMDEtMDEnIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3Nl bGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7CisKIC0tIFRlc3Qgd2hvbGUtcm93IHJlZmVyZW5j ZXMgdG8gdGhlIHZpZXcKIGNyZWF0ZSB0YWJsZSB1dl9pb2N1X3RhYiAoYSBpbnQgdW5pcXVl LCBiIHRleHQpOwogY3JlYXRlIHZpZXcgdXZfaW9jdV92aWV3IGFzCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IDY0MWNkZDViMTlmLi45NWI2 ZGE0YzA3NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwKQEAgLTIzMSw2ICsyMzEsMjAgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFs aWRfYXQsIGlkMiwgbmFtZSkKICAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScs ICcyMDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5n ZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBE QVRFIHRlbXBvcmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAx JyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0 ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8g JzIwMDAtMDYtMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAn WzIsMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQs IHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsKKy0tIGNv bmZsaWN0aW5nIGlkMiBvbmx5OgorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRf YXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDUt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyMycpOwogRFJPUCBUQUJMRSB0 ZW1wb3JhbDM7CiAKIC0tCkBAIC0yNjksNiArMjgzLDIyIEBAIElOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkIFZBTFVFUwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9 ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRp dGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRP ICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25l JzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdb MiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1 JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogCiAtLSB0ZW1wb3JhbCBVTklRVUU6CkBAIC0y ODcsNiArMzE3LDIyIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVF UwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxF Q1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitVUERBVEUgIHRlbXBvcmFs X3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEt MTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9 ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQg aWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxf cGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0w MScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9 ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAg V0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkOwogCiAtLQpAQCAtNTU2LDEzICs2MDIsMjMgQEAgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0g Y2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgogVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjaGFuZ2luZyBhbiB1bnJl ZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitTRVQg aWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBjaGFuZ2luZyBqdXN0IGEg cGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworU0VUIGlkID0gJ1s3LDdd JworV0hFUkUgaWQgPSAnWzUsNV0nOwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDIt MDEnKQogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7Ci1ERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10nKTsKIAogLS0KIC0tIHRlc3Qg RksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKQEAgLTU5MSwxMyArNjQ3LDIzIEBAIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKTsKIC0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKIFVQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g Y2hhbmdpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1wb3Jh bF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcy MDE4LTAxLTAzJworU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0g Y2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcK K1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRl IHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2Vl ZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNd JzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0w MS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFuIHVwOgog REVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUs NV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7 CiAtLQogLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KIC0tCkBAIC02MTcs MTQgKzY4MywyNCBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLQogREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKIC0tIGEgUEsgZGVsZXRlIHRoYXQgZmFp bHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgogREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGRlbGV0aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0 IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworV0hFUkUgaWQgPSAn WzUsNV0nOworLS0gZGVsZXRpbmcganVzdCBhIHBhcnQgZmFpbHM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUn IFRPICcyMDE4LTAxLTEwJworV0hFUkUgaWQgPSAnWzUsNV0nOwogLS0gdGhlbiBkZWxldGUg dGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVk czoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10n OwogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFu IHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQg PSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUs NV0nKTsKIAogLS0KIC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKIC0tCi0K IEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mazsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK QEAgLTY0MSw5ICs3MTcsMjAgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0KIERFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CiAtLSBhIFBLIGRlbGV0ZSB0 aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKIERFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5j ZWQgcGFydCBpcyBva2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJF IGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRF IEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4g ZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUg c3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1szLDNdJzsKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Cist LSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFy ZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJ TiAoJ1s1LDVdJyk7CiAKIC0tCiAtLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucwot LSAKMi40Mi4wCgo= --------------iqvziU4Z040MH3WdnoYY4mNT Content-Type: text/x-patch; charset=UTF-8; name="v22-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v22-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NDFlZTlmYjM2ZmE1ZDEwNGZhYmI2NjUyZDk1ZGE5YTZjYjc3NDFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjIyIDcvOF0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDQyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKystCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjAgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgODI3ICsr KysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgICAgIHwgNDM4ICsrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTgzNiBpbnNl cnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IGU4NzhiNDFlY2IwLi4xNDIyNjYzMmRlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTUxNSw3ICs1MTUsNyBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBhZGRG a1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3Ry YQogCQkJCQkJCQkJCQlib29sIG9sZF9jaGVja19vaywKIAkJCQkJCQkJCQkJT2lkIHBhcmVu dERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAogCQkJCQkJCQkJCQlib29sIGlz X3RlbXBvcmFsKTsKLXN0YXRpYyB2b2lkIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMo aW50IG51bWZrcywgY29uc3QgaW50MTYgKmZrYXR0bnVtcywKK3N0YXRpYyB2b2lkIHZhbGlk YXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51bWZrcywgY29uc3QgaW50MTYgKmZrYXR0 bnVtcywgY29uc3QgaW50MTYgZmtwZXJpb2RhdHRudW0sCiAJCQkJCQkJCQkJIGludCBudW1m a3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJCQkJCQkJCSBM aXN0ICpma3NldGNvbHMpOwogc3RhdGljIHZvaWQgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmco TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LApAQCAtOTc5Miw3ICs5 NzkyLDcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAludW1ma2RlbHNldGNvbHMgPSB0 cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJ CQkJCSAgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMsCiAJCQkJCQkJCQkJCSAgZmtk ZWxzZXRjb2xzLCBOVUxMKTsKLQl2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKG51bWZr cywgZmthdHRudW0sCisJdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhudW1ma3MsIGZr YXR0bnVtLCBma3BlcmlvZGF0dG51bSwKIAkJCQkJCQkJIG51bWZrZGVsc2V0Y29scywgZmtk ZWxzZXRjb2xzLAogCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMpOwog CkBAIC05OTgxLDEyICs5OTgxLDE1IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAgKi8K IHZvaWQKIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51bWZrcywgY29uc3Qg aW50MTYgKmZrYXR0bnVtcywKKwkJCQkJCQkgY29uc3QgaW50MTYgZmtwZXJpb2RhdHRudW0s CiAJCQkJCQkJIGludCBudW1ma3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRu dW1zLAogCQkJCQkJCSBMaXN0ICpma3NldGNvbHMpCiB7CiAJZm9yIChpbnQgaSA9IDA7IGkg PCBudW1ma3NldGNvbHM7IGkrKykKIAl7CiAJCWludDE2CQlzZXRjb2xfYXR0bnVtID0gZmtz ZXRjb2xzYXR0bnVtc1tpXTsKKwkJLyogYXNzdW1lIG9ubHkgb25lIFBFUklPRCBrZXkgY29s dW1uIGluIGEgZm9yZWlnbiBrZXkgKi8KKwkJaW50MTYJCWZrcGVyaW9kX2F0dG51bSA9IGZr cGVyaW9kYXR0bnVtOwogCQlib29sCQlzZWVuID0gZmFsc2U7CiAKIAkJZm9yIChpbnQgaiA9 IDA7IGogPCBudW1ma3M7IGorKykKQEAgLTk5OTYsNiArOTk5OSwxMyBAQCB2YWxpZGF0ZUZr T25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51bXMs CiAJCQkJc2VlbiA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoZmtwZXJpb2Rf YXR0bnVtID09IHNldGNvbF9hdHRudW0pCisJCQl7CisJCQkJY2hhcgkgICAqY29sID0gc3Ry VmFsKGxpc3RfbnRoKGZrc2V0Y29scywgaSkpOworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCisJCQkJCQkg ZXJybXNnKCJjb2x1bW4gXCIlc1wiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRFIFNFVCBhY3Rp b24gY2Fubm90IGJlIFBFUklPRCIsIGNvbCkpKTsKKwkJCX0KIAkJfQogCiAJCWlmICghc2Vl bikKQEAgLTEyNjMzLDExICsxMjY0MywxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJp Z2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0 cgogCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X3Jlc3RyaWN0X2RlbCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f Q0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtf dHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV9kZWwiKTsKKwkJCQlicmVh azsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZh bHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9G S2V5X3NldG51bGxfZGVsIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElP Tl9TRVRERUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90 IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi VFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJ CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApAQCAt MTI3MjQsMTEgKzEyNzQyLDE5IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25UcmlnZ2VycyhS ZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyCiAJCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfcmVzdHJp Y3RfdXBkIik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURF OgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJUUklfRktleV9jYXNjYWRlX3VwZCIpOworCQkJCWJyZWFrOwogCQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJh YmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJ CQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfc2V0 bnVsbF91cGQiKTsKKwkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERF RkFVTFQ6Ci0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJCSBlcnJtc2coImFjdGlvbiBub3Qgc3VwcG9y dGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKSkpOworCQkJCWZrX3RyaWdnZXItPmRl ZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktl eV9zZXRkZWZhdWx0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDRkMTdiMzg3N2JkLi4wMDFmNmVkNGQ3ZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTg0LDYgKzg0LDEyIEBA CiAjZGVmaW5lIFJJX1BMQU5fU0VUTlVMTF9PTlVQREFURQkJNwogI2RlZmluZSBSSV9QTEFO X1NFVERFRkFVTFRfT05ERUxFVEUJCTgKICNkZWZpbmUgUklfUExBTl9TRVRERUZBVUxUX09O VVBEQVRFCQk5CisjZGVmaW5lIFRSSV9QTEFOX0NBU0NBREVfT05ERUxFVEUJCTEwCisjZGVm aW5lIFRSSV9QTEFOX0NBU0NBREVfT05VUERBVEUJCTExCisjZGVmaW5lIFRSSV9QTEFOX1NF VE5VTExfT05VUERBVEUJCTEyCisjZGVmaW5lIFRSSV9QTEFOX1NFVE5VTExfT05ERUxFVEUJ CTEzCisjZGVmaW5lIFRSSV9QTEFOX1NFVERFRkFVTFRfT05VUERBVEUJMTQKKyNkZWZpbmUg VFJJX1BMQU5fU0VUREVGQVVMVF9PTkRFTEVURQkxNQogCiAjZGVmaW5lIE1BWF9RVU9URURf TkFNRV9MRU4gIChOQU1FREFUQUxFTioyKzMpCiAjZGVmaW5lIE1BWF9RVU9URURfUkVMX05B TUVfTEVOICAoTUFYX1FVT1RFRF9OQU1FX0xFTioyKQpAQCAtMTkzLDYgKzE5OSw3IEBAIHN0 YXRpYyBib29sIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24g ZmtfcmVsLAogCQkJCQkJCSAgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbyk7CiBz dGF0aWMgRGF0dW0gcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlz X25vX2FjdGlvbik7CiBzdGF0aWMgRGF0dW0gcmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCk7CitzdGF0aWMgRGF0dW0gdHJpX3Nl dChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQp Owogc3RhdGljIHZvaWQgcXVvdGVPbmVOYW1lKGNoYXIgKmJ1ZmZlciwgY29uc3QgY2hhciAq bmFtZSk7CiBzdGF0aWMgdm9pZCBxdW90ZVJlbGF0aW9uTmFtZShjaGFyICpidWZmZXIsIFJl bGF0aW9uIHJlbCk7CiBzdGF0aWMgdm9pZCByaV9HZW5lcmF0ZVF1YWwoU3RyaW5nSW5mbyBi dWYsCkBAIC0xNDEwLDYgKzE0MTcsMTI3IEBAIFRSSV9GS2V5X3Jlc3RyaWN0X2RlbChQR19G VU5DVElPTl9BUkdTKQogCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNp bmZvLT5jb250ZXh0LCBmYWxzZSk7CiB9CiAKKy8qCisgKiBUUklfRktleV9jYXNjYWRlX2Rl bCAtCisgKgorICogQ2FzY2FkZWQgZGVsZXRlIGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMgYXQg ZGVsZXRlIGV2ZW50IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitEYXR1bQorVFJJX0ZL ZXlfY2FzY2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCWNvbnN0IFJJX0Nv bnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOworCVJlbGF0aW9uCXBr X3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5Owor CVNQSVBsYW5QdHIgIHFwbGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sg dGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFu ZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2Fk ZV9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25z dHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50 Z19yZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3Jp cHRvcnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoK KwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0 aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBERUxFVEUgd2lsbCBnZXQgb24gaXQuCisJ ICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9 IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogRG9uJ3QgZGVsZXRlIHRoYW4g bW9yZSB0aGFuIHRoZSBQSydzIGR1cmF0aW9uLAorCSAqIHRyaW1tZWQgYnkgYW4gb3JpZ2lu YWwgRk9SIFBPUlRJT04gT0YgaWYgbmVjZXNzYXJ5LgorCSAqLworCXRhcmdldFJhbmdlID0g cmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50Z190ZW1wb3JhbCwgcmlpbmZv LCBvbGRzbG90KTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9PS19DT05ORUNUKQor CQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisKKwkvKiBGZXRjaCBvciBw cmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIGNhc2NhZGVkIGRlbGV0ZSAqLworCXJpX0J1 aWxkUXVlcnlLZXkoJnFrZXksIHJpaW5mbywgVFJJX1BMQU5fQ0FTQ0FERV9PTkRFTEVURSk7 CisKKwlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxM KQorCXsKKwkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtN QVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9O QU1FX0xFTl07CisJCWNoYXIJCXBhcmFtbmFtZVsxNl07CisJCWNvbnN0IGNoYXIgKnF1ZXJ5 c2VwOworCQlPaWQJCQlxdWVyeW9pZHNbUklfTUFYX05VTUtFWVMgKyAxXTsKKwkJY29uc3Qg Y2hhciAqZmtfb25seTsKKworCQkvKiAtLS0tLS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJp bmcgYnVpbHQgaXMKKwkJICogIERFTEVURSBGUk9NIFtPTkxZXSA8Zmt0YWJsZT4KKwkJICog IEZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxvd2VyKCR7bisxfSkgVE8gdXBwZXIoJHtu KzF9KQorCQkgKiAgV0hFUkUgJDEgPSBma2F0dDEgW0FORCAuLi5dCisJCSAqIFRoZSB0eXBl IGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQorCQkgKiBjb3Jy ZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuCisJCSAqIC0tLS0tLS0tLS0KKwkJICovCisJCWlu aXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+ cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkg IjsKKwkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9u ZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3Jp aW5mby0+bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAi REVMRVRFIEZST00gJXMlcyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8g dXBwZXIoJCVkKSIsCisJCQkJCQkgZmtfb25seSwgZmtyZWxuYW1lLCBhdHRuYW1lLCByaWlu Zm8tPm5rZXlzICsgMSwgcmlpbmZvLT5ua2V5cyArIDEpOworCQlxdWVyeXNlcCA9ICJXSEVS RSI7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQorCQl7CisJ CQlPaWQgcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tp XSk7CisJCQlPaWQgcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW2ldKTsKKwkJCU9pZCBma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlp bmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZCBma19jb2xsID0gUklBdHRDb2xsYXRpb24o ZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCisJCQlxdW90ZU9uZU5hbWUoYXR0 bmFtZSwKKwkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0p KTsKKwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2VuZXJh dGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCisJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBl LAorCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKKwkJCQkJCQlhdHRuYW1lLCBma190 eXBlKTsKKwkJCWlmIChwa19jb2xsICE9IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNk ZXRlcm1pbmlzdGljKHBrX2NvbGwpKQorCQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigm cXVlcnlidWYsIHBrX2NvbGwpOworCQkJcXVlcnlzZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lk c1tpXSA9IHBrX3R5cGU7CisJCX0KKworCQkvKiBTZXQgYSBwYXJhbSBmb3IgRk9SIFBPUlRJ T04gT0YgVE8vRlJPTSAqLworCQlxdWVyeW9pZHNbcmlpbmZvLT5ua2V5c10gPSBSSUF0dFR5 cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKKwor CQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCisJCXFwbGFuID0gcmlfUGxhbkNo ZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMgKyAxLCBxdWVyeW9pZHMsCisJCQkJ CQkJICZxa2V5LCBma19yZWwsIHBrX3JlbCk7CisJfQorCisJLyoKKwkgKiBXZSBoYXZlIGEg cGxhbiBub3cuIEJ1aWxkIHVwIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUga2V5IHZhbHVlcyBp biB0aGUKKwkgKiBkZWxldGVkIFBLIHR1cGxlIGFuZCBkZWxldGUgdGhlIHJlZmVyZW5jaW5n IHJvd3MKKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCisJ CQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQlyaWluZm8t Pm5rZXlzLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJICAgLyogbXVzdCBkZXRlY3QgbmV3 IHJvd3MgKi8KKwkJCQkJU1BJX09LX0RFTEVURSk7CisKKwlpZiAoU1BJX2ZpbmlzaCgpICE9 IFNQSV9PS19GSU5JU0gpCisJCWVsb2coRVJST1IsICJTUElfZmluaXNoIGZhaWxlZCIpOwor CisJdGFibGVfY2xvc2UoZmtfcmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBQ b2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CisKKwogLyoKICAqIFRSSV9GS2V5X25vYWN0aW9u X3VwZCAtCiAgKgpAQCAtMTQ0Nyw2ICsxNTc1LDQxNSBAQCBUUklfRktleV9yZXN0cmljdF91 cGQoUEdfRlVOQ1RJT05fQVJHUykKIAlyZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRh ICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOwogfQogCisvKgorICogVFJJX0ZLZXlfY2Fz Y2FkZV91cGQgLQorICoKKyAqIENhc2NhZGVkIHVwZGF0ZSBmb3JlaWduIGtleSByZWZlcmVu Y2VzIGF0IHVwZGF0ZSBldmVudCBvbiB0ZW1wb3JhbCBQSyB0YWJsZS4KKyAqLworRGF0dW0K K1RSSV9GS2V5X2Nhc2NhZGVfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJVHJpZ2dlckRh dGEgKnRyaWdkYXRhID0gKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dDsKKwljb25z dCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvOworCVJlbGF0aW9uCWZrX3JlbDsKKwlSZWxh dGlvbglwa19yZWw7CisJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Q7CisJVHVwbGVUYWJsZVNs b3QgKm5ld3Nsb3Q7CisJUklfUXVlcnlLZXkgcWtleTsKKwlTUElQbGFuUHRyICBxcGxhbjsK KwlEYXR1bSB0YXJnZXRSYW5nZTsKKworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlk IHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hl Y2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X2Nhc2NhZGVfdXBkIiwgUklfVFJJR1RZUEVf VVBEQVRFKTsKKworCXJpaW5mbyA9IHJpX0ZldGNoQ29uc3RyYWludEluZm8odHJpZ2RhdGEt PnRnX3RyaWdnZXIsCisJCQkJCQkJCQl0cmlnZGF0YS0+dGdfcmVsYXRpb24sIHRydWUpOwor CisJLyoKKwkgKiBHZXQgdGhlIHJlbGF0aW9uIGRlc2NyaXB0b3JzIG9mIHRoZSBGSyBhbmQg UEsgdGFibGVzIGFuZCB0aGUgbmV3IGFuZAorCSAqIG9sZCB0dXBsZS4KKwkgKgorCSAqIGZr X3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNlIHRoYXQncyB3 aGF0IG91cgorCSAqIGV2ZW50dWFsIFVQREFURSB3aWxsIGdldCBvbiBpdC4KKwkgKi8KKwlm a19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwluZXdzbG90ID0gdHJpZ2Rh dGEtPnRnX25ld3Nsb3Q7CisJb2xkc2xvdCA9IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKwor CS8qCisJICogRG9uJ3QgZGVsZXRlIHRoYW4gbW9yZSB0aGFuIHRoZSBQSydzIGR1cmF0aW9u LAorCSAqIHRyaW1tZWQgYnkgYW4gb3JpZ2luYWwgRk9SIFBPUlRJT04gT0YgaWYgbmVjZXNz YXJ5LgorCSAqLworCXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRy aWdkYXRhLT50Z190ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKworCWlmIChTUElfY29u bmVjdCgpICE9IFNQSV9PS19DT05ORUNUKQorCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3Qg ZmFpbGVkIik7CisKKwkvKiBGZXRjaCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhl IGNhc2NhZGVkIHVwZGF0ZSAqLworCXJpX0J1aWxkUXVlcnlLZXkoJnFrZXksIHJpaW5mbywg VFJJX1BMQU5fQ0FTQ0FERV9PTlVQREFURSk7CisKKwlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQ cmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJU3RyaW5nSW5mb0RhdGEgcXVl cnlidWY7CisJCVN0cmluZ0luZm9EYXRhIHF1YWxidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtN QVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9O QU1FX0xFTl07CisJCWNoYXIJCXBhcmFtbmFtZVsxNl07CisJCWNvbnN0IGNoYXIgKnF1ZXJ5 c2VwOworCQljb25zdCBjaGFyICpxdWFsc2VwOworCQlPaWQJCSBxdWVyeW9pZHNbMiAqIFJJ X01BWF9OVU1LRVlTICsgMV07CisJCWNvbnN0IGNoYXIgKmZrX29ubHk7CisKKwkJLyogLS0t LS0tLS0tLQorCQkgKiBUaGUgcXVlcnkgc3RyaW5nIGJ1aWx0IGlzCisJCSAqICBVUERBVEUg W09OTFldIDxma3RhYmxlPgorCQkgKgkJICBGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJPTSBs b3dlcigkezJuKzF9KSBUTyB1cHBlcigkezJuKzF9KQorCQkgKgkJICBTRVQgZmthdHQxID0g JDEsIFssIC4uLl0KKwkJICoJCSAgV0hFUkUgJG4gPSBma2F0dDEgW0FORCAuLi5dCisJCSAq IFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQor CQkgKiBjb3JyZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuICBOb3RlIHRoYXQgd2UgYXJlIGFz c3VtaW5nCisJCSAqIHRoZXJlIGlzIGFuIGFzc2lnbm1lbnQgY2FzdCBmcm9tIHRoZSBQSyB0 byB0aGUgRksgdHlwZTsKKwkJICogZWxzZSB0aGUgcGFyc2VyIHdpbGwgZmFpbC4KKwkJICog LS0tLS0tLS0tLQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJaW5p dFN0cmluZ0luZm8oJnF1YWxidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZICI7 CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJcXVvdGVPbmVO YW1lKGF0dG5hbWUsIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tyaWlu Zm8tPm5rZXlzIC0gMV0pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlVQ REFURSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00gbG93ZXIoJCVkKSBUTyB1cHBlcigk JWQpIFNFVCIsCisJCQkJCQkgZmtfb25seSwgZmtyZWxuYW1lLCBhdHRuYW1lLCAyICogcmlp bmZvLT5ua2V5cyArIDEsIDIgKiByaWluZm8tPm5rZXlzICsgMSk7CisKKwkJcXVlcnlzZXAg PSAiIjsKKwkJcXVhbHNlcCA9ICJXSEVSRSI7CisJCWZvciAoaW50IGkgPSAwLCBqID0gcmlp bmZvLT5ua2V5czsgaSA8IHJpaW5mby0+bmtleXM7IGkrKywgaisrKQorCQl7CisJCQlPaWQg cGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJ CQlPaWQgcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKKwkJCU9pZCBma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5m a19hdHRudW1zW2ldKTsKKwkJCU9pZCBma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwK KwkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKwkJ CS8qCisJCQkgKiBEb24ndCBzZXQgdGhlIHRlbXBvcmFsIGNvbHVtbihzKS4KKwkJCSAqIEZP UiBQT1JUSU9OIE9GIHdpbGwgdGFrZSBjYXJlIG9mIHRoYXQuCisJCQkgKi8KKwkJCWlmIChp IDwgcmlpbmZvLT5ua2V5cyAtIDEpCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYs CisJCQkJCQkJCSAiJXMgJXMgPSAkJWQiLAorCQkJCQkJCQkgcXVlcnlzZXAsIGF0dG5hbWUs IGkgKyAxKTsKKworCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBqICsgMSk7CisJCQly aV9HZW5lcmF0ZVF1YWwoJnF1YWxidWYsIHF1YWxzZXAsCisJCQkJCQkJcGFyYW1uYW1lLCBw a190eXBlLAorCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKKwkJCQkJCQlhdHRuYW1l LCBma190eXBlKTsKKwkJCWlmIChwa19jb2xsICE9IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRp b25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwpKQorCQkJCXJpX0dlbmVyYXRlUXVhbENvbGxh dGlvbigmcXVlcnlidWYsIHBrX2NvbGwpOworCQkJcXVlcnlzZXAgPSAiLCI7CisJCQlxdWFs c2VwID0gIkFORCI7CisJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOworCQkJcXVlcnlvaWRz W2pdID0gcGtfdHlwZTsKKwkJfQorCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZxdWVyeWJ1 ZiwgcXVhbGJ1Zi5kYXRhLCBxdWFsYnVmLmxlbik7CisKKwkJLyogU2V0IGEgcGFyYW0gZm9y IEZPUiBQT1JUSU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlvaWRzWzIgKiByaWluZm8tPm5r ZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5r ZXlzIC0gMV0pOworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KKwkJcXBs YW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgMiAqIHJpaW5mby0+bmtleXMgKyAx LCBxdWVyeW9pZHMsCisJCQkJCQkJICZxa2V5LCBma19yZWwsIHBrX3JlbCk7CisJfQorCisJ LyoKKwkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIFJ1biBpdCB0byB1cGRhdGUgdGhlIGV4aXN0 aW5nIHJlZmVyZW5jZXMuCisJICovCisJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXks IHFwbGFuLAorCQkJCQlma19yZWwsIHBrX3JlbCwKKwkJCQkJb2xkc2xvdCwgbmV3c2xvdCwK KwkJCQkJcmlpbmZvLT5ua2V5cyAqIDIsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkJLyog bXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KKwkJCQkJU1BJX09LX1VQREFURSk7CisKKwlpZiAo U1BJX2ZpbmlzaCgpICE9IFNQSV9PS19GSU5JU0gpCisJCWVsb2coRVJST1IsICJTUElfZmlu aXNoIGZhaWxlZCIpOworCisJdGFibGVfY2xvc2UoZmtfcmVsLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKworCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CisKKy8qCisgKiBUUklf RktleV9zZXRudWxsX2RlbCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMg dG8gTlVMTCB2YWx1ZXMgYXQgZGVsZXRlIGV2ZW50IG9uIFBLIHRhYmxlLgorICovCitEYXR1 bQorVFJJX0ZLZXlfc2V0bnVsbF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVj ayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUg YW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9zZXRu dWxsX2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGgg VVBEQVRFIGNhc2UgKi8KKwlyZXR1cm4gdHJpX3NldCgoVHJpZ2dlckRhdGEgKikgZmNpbmZv LT5jb250ZXh0LCB0cnVlLCBSSV9UUklHVFlQRV9ERUxFVEUpOworfQorCisvKgorICogVFJJ X0ZLZXlfc2V0bnVsbF91cGQgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZlcmVuY2Vz IHRvIE5VTEwgYXQgdXBkYXRlIGV2ZW50IG9uIFBLIHRhYmxlLgorICovCitEYXR1bQorVFJJ X0ZLZXlfc2V0bnVsbF91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0 IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2 ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9zZXRudWxsX3Vw ZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggREVMRVRF IGNhc2UgKi8KKwlyZXR1cm4gdHJpX3NldCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250 ZXh0LCB0cnVlLCBSSV9UUklHVFlQRV9VUERBVEUpOworfQorCisvKgorICogVFJJX0ZLZXlf c2V0ZGVmYXVsdF9kZWwgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRv IGRlZmF1bHRzIGF0IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1RS SV9GS2V5X3NldGRlZmF1bHRfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sg dGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFu ZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0ZGVm YXVsdF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRo IFVQREFURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5m by0+Y29udGV4dCwgZmFsc2UsIFJJX1RSSUdUWVBFX0RFTEVURSk7Cit9CisKKy8qCisgKiBU UklfRktleV9zZXRkZWZhdWx0X3VwZCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVy ZW5jZXMgdG8gZGVmYXVsdHMgYXQgdXBkYXRlIGV2ZW50IG9uIFBLIHRhYmxlLgorICovCitE YXR1bQorVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkv KiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0 IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktl eV9zZXRkZWZhdWx0X3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFyZSBj b2RlIHdpdGggREVMRVRFIGNhc2UgKi8KKwlyZXR1cm4gdHJpX3NldCgoVHJpZ2dlckRhdGEg KikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSwgUklfVFJJR1RZUEVfVVBEQVRFKTsKK30KKwor LyoKKyAqIHRyaV9zZXQgLQorICoKKyAqIENvbW1vbiBjb2RlIGZvciB0ZW1wb3JhbCBPTiBE RUxFVEUgU0VUIE5VTEwsIE9OIERFTEVURSBTRVQgREVGQVVMVCwgT04KKyAqIFVQREFURSBT RVQgTlVMTCwgYW5kIE9OIFVQREFURSBTRVQgREVGQVVMVC4KKyAqLworc3RhdGljIERhdHVt Cit0cmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50 IHRna2luZCkKK3sKKwljb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvOworCVJlbGF0 aW9uCWZrX3JlbDsKKwlSZWxhdGlvbglwa19yZWw7CisJVHVwbGVUYWJsZVNsb3QgKm9sZHNs b3Q7CisJUklfUXVlcnlLZXkgcWtleTsKKwlTUElQbGFuUHRyCXFwbGFuOworCURhdHVtCQl0 YXJnZXRSYW5nZTsKKwlpbnQzMgkJcXVlcnlubzsKKworCXJpaW5mbyA9IHJpX0ZldGNoQ29u c3RyYWludEluZm8odHJpZ2RhdGEtPnRnX3RyaWdnZXIsCisJCQkJCQkJCQl0cmlnZGF0YS0+ dGdfcmVsYXRpb24sIHRydWUpOworCisJLyoKKwkgKiBHZXQgdGhlIHJlbGF0aW9uIGRlc2Ny aXB0b3JzIG9mIHRoZSBGSyBhbmQgUEsgdGFibGVzIGFuZCB0aGUgb2xkIHR1cGxlLgorCSAq CisJICogZmtfcmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2Ug dGhhdCdzIHdoYXQgb3VyCisJICogZXZlbnR1YWwgVVBEQVRFIHdpbGwgZ2V0IG9uIGl0Lgor CSAqLworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhjbHVz aXZlTG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW9sZHNsb3Qg PSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisKKwkvKgorCSAqIERvbid0IFNFVCBOVUxML0RF RkFVTFQgdGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24sCisJICogdHJpbW1lZCBi eSBhbiBvcmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3NhcnkuCisJICovCisJdGFy Z2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBv cmFsLCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09L X0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8q CisJICogRmV0Y2ggb3IgcHJlcGFyZSBhIHNhdmVkIHBsYW4gZm9yIHRoZSB0cmlnZ2VyLgor CSAqLworCXN3aXRjaCAodGdraW5kKQorCXsKKwkJY2FzZSBSSV9UUklHVFlQRV9VUERBVEU6 CisJCQlxdWVyeW5vID0gaXNfc2V0X251bGwKKwkJCQk/IFRSSV9QTEFOX1NFVE5VTExfT05V UERBVEUKKwkJCQk6IFRSSV9QTEFOX1NFVERFRkFVTFRfT05VUERBVEU7CisJCQlicmVhazsK KwkJY2FzZSBSSV9UUklHVFlQRV9ERUxFVEU6CisJCQlxdWVyeW5vID0gaXNfc2V0X251bGwK KwkJCQk/IFRSSV9QTEFOX1NFVE5VTExfT05ERUxFVEUKKwkJCQk6IFRSSV9QTEFOX1NFVERF RkFVTFRfT05ERUxFVEU7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1Is ICJpbnZhbGlkIHRna2luZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJfQorCisJcmlfQnVpbGRR dWVyeUtleSgmcWtleSwgcmlpbmZvLCBxdWVyeW5vKTsKKworCWlmICgocXBsYW4gPSByaV9G ZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0 YSBxdWVyeWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJY2hhcgkJZmtyZWxu YW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAq cXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tS SV9NQVhfTlVNS0VZUyArIDFdOyAvKiArMSBmb3IgRk9SIFBPUlRJT04gT0YgKi8KKwkJY29u c3QgY2hhciAqZmtfb25seTsKKwkJaW50CQkJbnVtX2NvbHNfdG9fc2V0OworCQljb25zdCBp bnQxNiAqc2V0X2NvbHM7CisKKwkJc3dpdGNoICh0Z2tpbmQpCisJCXsKKwkJCWNhc2UgUklf VFJJR1RZUEVfVVBEQVRFOgorCQkJCS8qIC0xIHNvIHdlIGxldCBGT1IgUE9SVElPTiBPRiBz ZXQgdGhlIHJhbmdlLiAqLworCQkJCW51bV9jb2xzX3RvX3NldCA9IHJpaW5mby0+bmtleXMg LSAxOworCQkJCXNldF9jb2xzID0gcmlpbmZvLT5ma19hdHRudW1zOworCQkJCWJyZWFrOwor CQkJY2FzZSBSSV9UUklHVFlQRV9ERUxFVEU6CisJCQkJLyoKKwkJCQkgKiBJZiBjb25mZGVs c2V0Y29scyBhcmUgcHJlc2VudCwgdGhlbiB3ZSBvbmx5IHVwZGF0ZSB0aGUKKwkJCQkgKiBj b2x1bW5zIHNwZWNpZmllZCBpbiB0aGF0IGFycmF5LCBvdGhlcndpc2Ugd2UgdXBkYXRlIGFs bAorCQkJCSAqIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zLgorCQkJCSAqLworCQkJCWlmIChy aWluZm8tPm5kZWxzZXRjb2xzICE9IDApCisJCQkJeworCQkJCQludW1fY29sc190b19zZXQg PSByaWluZm8tPm5kZWxzZXRjb2xzOworCQkJCQlzZXRfY29scyA9IHJpaW5mby0+Y29uZmRl bHNldGNvbHM7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qIC0xIHNvIHdlIGxl dCBGT1IgUE9SVElPTiBPRiBzZXQgdGhlIHJhbmdlLiAqLworCQkJCQludW1fY29sc190b19z ZXQgPSByaWluZm8tPm5rZXlzIC0gMTsKKwkJCQkJc2V0X2NvbHMgPSByaWluZm8tPmZrX2F0 dG51bXM7CisJCQkJfQorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9S LCAiaW52YWxpZCB0Z2tpbmQgcGFzc2VkIHRvIHJpX3NldCIpOworCQl9CisKKwkJLyogLS0t LS0tLS0tLQorCQkgKiBUaGUgcXVlcnkgc3RyaW5nIGJ1aWx0IGlzCisJCSAqCVVQREFURSBb T05MWV0gPGZrdGFibGU+CisJCSAqCQkJRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00gbG93 ZXIoJHtuKzF9KSBUTyB1cHBlcigke24rMX0pCisJCSAqCQkJU0VUIGZrYXR0MSA9IHtOVUxM fERFRkFVTFR9IFssIC4uLl0KKwkJICoJCQlXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0K KwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2Yg dGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0t LQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJaW5pdFN0cmluZ0lu Zm8oJnF1YWxidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0g UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZICI7CisJCXF1b3Rl UmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tyaWluZm8tPm5rZXlz IC0gMV0pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlVQREFURSAlcyVz IEZPUiBQT1JUSU9OIE9GICVzIEZST00gbG93ZXIoJCVkKSBUTyB1cHBlcigkJWQpIFNFVCIs CisJCQkJCQkgZmtfb25seSwgZmtyZWxuYW1lLCBhdHRuYW1lLCByaWluZm8tPm5rZXlzICsg MSwgcmlpbmZvLT5ua2V5cyArIDEpOworCisJCS8qCisJCSAqIEFkZCBhc3NpZ25tZW50IGNs YXVzZXMKKwkJICovCisJCXF1ZXJ5c2VwID0gIiI7CisJCWZvciAoaW50IGkgPSAwOyBpIDwg bnVtX2NvbHNfdG9fc2V0OyBpKyspCisJCXsKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBS SUF0dE5hbWUoZmtfcmVsLCBzZXRfY29sc1tpXSkpOworCQkJYXBwZW5kU3RyaW5nSW5mbygm cXVlcnlidWYsCisJCQkJCQkJICIlcyAlcyA9ICVzIiwKKwkJCQkJCQkgcXVlcnlzZXAsIGF0 dG5hbWUsCisJCQkJCQkJIGlzX3NldF9udWxsID8gIk5VTEwiIDogIkRFRkFVTFQiKTsKKwkJ CXF1ZXJ5c2VwID0gIiwiOworCQl9CisKKwkJLyoKKwkJICogQWRkIFdIRVJFIGNsYXVzZQor CQkgKi8KKwkJcXVhbHNlcCA9ICJXSEVSRSI7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlp bmZvLT5ua2V5czsgaSsrKQorCQl7CisJCQlPaWQJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQJZmtfdHlwZSA9IFJJQXR0VHlw ZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQJcGtfY29sbCA9IFJJ QXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAlm a19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0p OworCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCSBSSUF0dE5hbWUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKworCQkJc3ByaW50ZihwYXJhbW5hbWUsICIk JWQiLCBpICsgMSk7CisJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWFsc2VwLAor CQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNb aV0sCisJCQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19j b2xsICYmICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQly aV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1YWxz ZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CisJCX0KKworCQkvKiBT ZXQgYSBwYXJhbSBmb3IgRk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLworCQlxdWVyeW9pZHNb cmlpbmZvLT5ua2V5c10gPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb cmlpbmZvLT5ua2V5cyAtIDFdKTsKKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFu ICovCisJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtl eXMgKyAxLCBxdWVyeW9pZHMsCisJCQkJCQkJICZxa2V5LCBma19yZWwsIHBrX3JlbCk7CisJ fQorCisJLyoKKwkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIFJ1biBpdCB0byB1cGRhdGUgdGhl IGV4aXN0aW5nIHJlZmVyZW5jZXMuCisJICovCisJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywg JnFrZXksIHFwbGFuLAorCQkJCQlma19yZWwsIHBrX3JlbCwKKwkJCQkJb2xkc2xvdCwgTlVM TCwKKwkJCQkJcmlpbmZvLT5ua2V5cywgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUsCQkvKiBt dXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfVVBEQVRFKTsKKworCWlmIChT UElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5p c2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJaWYgKGlzX3NldF9udWxsKQorCQlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwp OworCWVsc2UKKwl7CisJCS8qCisJCSAqIElmIHdlIGp1c3QgZGVsZXRlZCBvciB1cGRhdGVk IHRoZSBQSyByb3cgd2hvc2Uga2V5IHdhcyBlcXVhbCB0byB0aGUKKwkJICogRksgY29sdW1u cycgZGVmYXVsdCB2YWx1ZXMsIGFuZCBhIHJlZmVyZW5jaW5nIHJvdyBleGlzdHMgaW4gdGhl IEZLCisJCSAqIHRhYmxlLCB3ZSB3b3VsZCBoYXZlIHVwZGF0ZWQgdGhhdCByb3cgdG8gdGhl IHNhbWUgdmFsdWVzIGl0IGFscmVhZHkKKwkJICogaGFkIC0tLSBhbmQgUklfRktleV9ma191 cGRfY2hlY2tfcmVxdWlyZWQgd291bGQgaGVuY2UgYmVsaWV2ZSBubworCQkgKiBjaGVjayBp cyBuZWNlc3NhcnkuICBTbyB3ZSBuZWVkIHRvIGRvIGFub3RoZXIgbG9va3VwIG5vdyBhbmQg aW4KKwkJICogY2FzZSBhIHJlZmVyZW5jZSBzdGlsbCBleGlzdHMsIGFib3J0IHRoZSBvcGVy YXRpb24uICBUaGF0IGlzCisJCSAqIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gdGhlIE5PIEFD VElPTiB0cmlnZ2VyLCBzbyBqdXN0IHJ1biBpdC4gKFRoaXMKKwkJICogcmVjaGVjayBpcyBv bmx5IG5lZWRlZCBpbiB0aGUgU0VUIERFRkFVTFQgY2FzZSwgc2luY2UgQ0FTQ0FERSB3b3Vs ZAorCQkgKiByZW1vdmUgc3VjaCByb3dzIGluIGNhc2Ugb2YgYSBERUxFVEUgb3BlcmF0aW9u IG9yIHdvdWxkIGNoYW5nZSB0aGUKKwkJICogRksga2V5IHZhbHVlcyBpbiBjYXNlIG9mIGFu IFVQREFURSwgd2hpbGUgU0VUIE5VTEwgaXMgY2VydGFpbiB0bworCQkgKiByZXN1bHQgaW4g cm93cyB0aGF0IHNhdGlzZnkgdGhlIEZLIGNvbnN0cmFpbnQuKQorCQkgKi8KKwkJcmV0dXJu IHJpX3Jlc3RyaWN0KHRyaWdkYXRhLCB0cnVlKTsKKwl9Cit9CisKIC8qCiAgKiBSSV9GS2V5 X3BrX3VwZF9jaGVja19yZXF1aXJlZCAtCiAgKgpAQCAtMjU4Myw4ICszMTIwLDggQEAgcmlf UGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJaW50CQkJ c3BpX3Jlc3VsdDsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19jb250 ZXh0OwotCURhdHVtCQl2YWxzW1JJX01BWF9OVU1LRVlTICogMl07Ci0JY2hhcgkJbnVsbHNb UklfTUFYX05VTUtFWVMgKiAyXTsKKwlEYXR1bQkJdmFsc1tSSV9NQVhfTlVNS0VZUyAqIDIg KyAxXTsKKwljaGFyCQludWxsc1tSSV9NQVhfTlVNS0VZUyAqIDIgKyAxXTsKIAogCS8qCiAJ ICogVXNlIHRoZSBxdWVyeSB0eXBlIGNvZGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHF1 ZXJ5IGlzIHJ1biBhZ2FpbnN0CkBAIC0yNjE5LDggKzMxNTYsMTAgQEAgcmlfUGVyZm9ybUNo ZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCXJpX0V4dHJhY3RWYWx1 ZXMoc291cmNlX3JlbCwgbmV3c2xvdCwgcmlpbmZvLCBzb3VyY2VfaXNfcGssCiAJCQkJCQkg dmFscywgbnVsbHMpOwogCQlpZiAob2xkc2xvdCkKKwkJewogCQkJcmlfRXh0cmFjdFZhbHVl cyhzb3VyY2VfcmVsLCBvbGRzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywKIAkJCQkJCQkg dmFscyArIHJpaW5mby0+bmtleXMsIG51bGxzICsgcmlpbmZvLT5ua2V5cyk7CisJCX0KIAl9 CiAJZWxzZQogCXsKQEAgLTMzMzEsOCArMzg3MCwxNCBAQCBSSV9GS2V5X3RyaWdnZXJfdHlw ZShPaWQgdGdmb2lkKQogCQljYXNlIEZfUklfRktFWV9TRVRERUZBVUxUX1VQRDoKIAkJY2Fz ZSBGX1JJX0ZLRVlfTk9BQ1RJT05fREVMOgogCQljYXNlIEZfUklfRktFWV9OT0FDVElPTl9V UEQ6CisJCWNhc2UgRl9UUklfRktFWV9DQVNDQURFX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZ X0NBU0NBREVfVVBEOgogCQljYXNlIEZfVFJJX0ZLRVlfUkVTVFJJQ1RfREVMOgogCQljYXNl IEZfVFJJX0ZLRVlfUkVTVFJJQ1RfVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfU0VUTlVMTF9E RUw6CisJCWNhc2UgRl9UUklfRktFWV9TRVROVUxMX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZ X1NFVERFRkFVTFRfREVMOgorCQljYXNlIEZfVFJJX0ZLRVlfU0VUREVGQVVMVF9VUEQ6CiAJ CWNhc2UgRl9UUklfRktFWV9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9UUklfRktFWV9OT0FD VElPTl9VUEQ6CiAJCQlyZXR1cm4gUklfVFJJR0dFUl9QSzsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDJiMzZjZWQ1NTA1Li41Y2I0YjI2ZjYyMCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC0zOTUyLDYgKzM5NTIsMTIgQEAKIHsgb2lkID0+ICc2MTIzJywg ZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAu Li4gUkVGRVJFTkNFUycsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHBy b3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCiAgIHByb2FyZ3R5 cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lkID0+ ICc2MTI0JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBE RUxFVEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfZGVsJywg cHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJn dHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwnIH0sCit7IG9p ZCA9PiAnNjEyNScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkg T04gVVBEQVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRlX3Vw ZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHBy b2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJyB9LAog eyBvaWQgPT4gJzYxMjYnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdy aXR5IE9OIERFTEVURSBSRVNUUklDVCcsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3Ry aWN0X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dl cicsIHByb2FyZ3R5cGVzID0+ICcnLApAQCAtMzk2MCw2ICszOTY2LDIwIEBACiAgIHByb25h bWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAg cHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMg PT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ICc2MTI4JywgZGVzY3Ig PT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgU0VUIE5VTEwn LAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcsIHByb3ZvbGF0aWxlID0+ ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBw cm9zcmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjknLCBk ZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBTRVQg TlVMTCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJywgcHJvdm9sYXRp bGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4g JycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91cGQnIH0sCit7IG9pZCA9PiAnNjEz MCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRF IFNFVCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwn LCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9h cmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9zZXRkZWZhdWx0X2RlbCcg fSwKK3sgb2lkID0+ICc2MTMxJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGlu dGVncml0eSBPTiBVUERBVEUgU0VUIERFRkFVTFQnLAorICBwcm9uYW1lID0+ICdUUklfRktl eV9zZXRkZWZhdWx0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9 PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5 X3NldGRlZmF1bHRfdXBkJyB9LAogeyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAndGVtcG9y YWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAogICBwcm9u YW1lID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCiAg IHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDYw YzllZWRhZWU4Li40ZjhiMDhjNGNlMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC05MjcsMzAgKzkyNywxODQgQEAgREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIC0tCiAtLSB0 ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucwogLS0KKy0tIFRPQzoKKy0tIHBhcmVudCB1 cGRhdGVzIENBU0NBREUKKy0tIHBhcmVudCBkZWxldGVzIENBU0NBREUKKy0tIHBhcmVudCB1 cGRhdGVzIFNFVCBOVUxMCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorLS0gcGFyZW50 IHVwZGF0ZXMgU0VUIERFRkFVTFQKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCist LSBwYXJlbnQgdXBkYXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQg ZGVsZXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgdXBkYXRlcyBT RVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwg KHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2Nh bGFyIGNvbHMsIFNFVCBOVUxMIHN1YnNldCkKKy0tIHBhcmVudCB1cGRhdGVzIFNFVCBERUZB VUxUICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAo dHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBz Y2FsYXIgY29scywgU0VUIERFRkFVTFQgc3Vic2V0KQogLS0gdGVzdCBGSyBwYXJlbnQgdXBk YXRlcyBDQVNDQURFCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERF TEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwotRVJST1I6ICBhY3Rpb24gbm90IHN1 cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBsZWZ0b3ZlcnMgb24gYm90 aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hF UkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbNyw4KQorIFsx MDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDow MDowMCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykK KworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdb Nyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBb Nyw4KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IikgfCBbNyw4KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNyw4KQor KDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIGlkID0gJ1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0 IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCBbOSwxMCkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFu IHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEw MCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CistLSBsZWZ0 b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsx MDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbNiw3KQorKDIgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgaWQg fCB2YWxpZF9hdCB8IHBhcmVudF9pZCAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor KDAgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KQorKDEg cm93KQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5 LDldJyk7CiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCi1JTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5 XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCiAJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9O IERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7Ci1FUlJPUjogIGFjdGlvbiBu b3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIGxlZnRvdmVycyBv biBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDdd JyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsx MDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDow MDowMCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykK KworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdb Nyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IAorKDMgcm93cykKKworLS0g RksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0g J1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAx Jzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMjAwLDIwMSkg fCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcs N10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VU IE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0n OworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpCisgWzEw MCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEiKSB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIGRlbGV0ZToKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBp ZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAKKyBbMTAwLDEwMSkgfCBbIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwg CisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsyMDAs MjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScs ICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOwogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRl cyBTRVQgREVGQVVMVAogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwt MV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OwotSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAgIEFMVEVS IENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAogCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLApAQCAtOTU4LDcgKzExMTIsNDYxIEBAIEFM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBE RUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOwotRVJST1I6ICBhY3Rp b24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBsZWZ0b3Zl cnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdb Nyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBb LTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykK KygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCBy b3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIw MF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0n IEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlk ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb MjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dz KQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDld Jyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8 IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IFstMSwwKQorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBb LTEsMCkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVw CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwx MDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk IElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksg cGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9y bmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChw YXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMg dGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsK Ky0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkgICAgICB8 IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAx KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAy MDIxIikgfCBbNiw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBk YXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQx ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVu dF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsx MDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCBbNyw4KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcs OCkgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs3LDgpICAgICAgfCBbNiw3KQor KDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAo J1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgs OF0nLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzksOV0n IFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGlt ZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lk MiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwy MDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiKSB8IFs5LDEwKSAgICAgfCBbOCw5KQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KSAg ICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAn WzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMg Q0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sx MDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0n LCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwg WzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMiByb3dzKQor CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUg aWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKyBpZCB8IHZhbGlkX2F0IHwgcGFyZW50X2lkMSB8IHBh cmVudF9pZDIgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor KDAgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAo J1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgs OF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0g J1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7 CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAg ICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgs OSkgICAgICB8IFs4LDkpCisoMSByb3cpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIw MF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0n LCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwg cGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEg PSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAorIFsxMDAs MTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykg ICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0 ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAw XSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg ICAgICAgICAgICB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAgICAgICAgICAgIHwgCisgWzEwMCwx MDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiKSB8ICAgICAgICAgICAgfCAKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28g cmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdb OCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0 c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9y YWxfcm5nMiBTRVQgaWQxID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxp ZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzIw MCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEw MCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVS RSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVz dCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3Ro IHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2 LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAx KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIikgfCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBb Niw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEph biAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisK Ky0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBp ZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFy ZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg WzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgICAgICAg ICAgICB8IAorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJp IEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAgICAgICAgICAgIHwgCisoMyByb3dzKQorCist LSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4 LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisg WzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAw OjAwOjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xl YW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgn WzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBX SEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0g dGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzLCBTRVQg TlVMTCBzdWJzZXQpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZd JywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOwor LS0gZmFpbHMgYmVjYXVzZSB5b3UgY2FuJ3Qgc2V0IHRoZSBQRVJJT0QgY29sdW1uOgorQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJy bmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBTRVQg TlVMTCAodmFsaWRfYXQpIE9OIFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAgY29sdW1uICJ2 YWxpZF9hdCIgcmVmZXJlbmNlZCBpbiBPTiBERUxFVEUgU0VUIGFjdGlvbiBjYW5ub3QgYmUg UEVSSU9ECistLSBvazoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBw YXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n MgorCQlPTiBERUxFVEUgU0VUIE5VTEwgKHBhcmVudF9pZDEpIE9OIFVQREFURSBTRVQgTlVM TDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxf cm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf ZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgWzYsNykKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2 LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAg aWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAg ICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8ICAgICAgICAgICAgfCBbNiw3KQorIFsxMDAs MTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCAgICAgICAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9z cyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCBbOCw5KQorIFsyMDAs MjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVw CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAs MTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUg aWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3Qg RksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29scykKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWy0xLC0xXScsICdbLTEsLTFdJywgdHNy YW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAo J1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2 XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgQUxURVIgQ09MVU1O IHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFy ZW50X2lkMiBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VU IERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworLS0gbGVmdG92ZXJzIG9uIGJvdGgg c2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkMSA9ICdbNyw3XScsIGlk MiA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDAp CisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbNiw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgor VVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbNyw3XScsIGlkMiA9ICdbNyw3XScg V0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lk MSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEp IHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDApICAg ICB8IFstMSwwKQorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJv d3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBp ZDEgPSAnWzksOV0nLCBpZDIgPSAnWzksOV0nIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEs MCkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCist LSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQg SU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7 CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNv bHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworLS0gbGVmdG92 ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVS RSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwg cGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIp IHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBb Niw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQor IFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IFstMSwwKSAgICAgfCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVm ZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4 XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwg cGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkKKyBbMjAwLDIwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRF IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAn WzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAo J1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVu dCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1 YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWy0xLC0xXScsICdb Niw2XScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAo J1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYs Nl0nLCAnWzYsNl0nKTsKKy0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVS SU9EIGNvbHVtbjoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVS IENPTFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9p ZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9O IERFTEVURSBTRVQgREVGQVVMVCAodmFsaWRfYXQpIE9OIFVQREFURSBTRVQgREVGQVVMVDsK K0VSUk9SOiAgY29sdW1uICJ2YWxpZF9hdCIgcmVmZXJlbmNlZCBpbiBPTiBERUxFVEUgU0VU IGFjdGlvbiBjYW5ub3QgYmUgUEVSSU9ECistLSBvazoKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdb LTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCAocGFyZW50X2lkMSkg T04gVVBEQVRFIFNFVCBERUZBVUxUOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0n OworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFst MSwwKSAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykK KyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBu b24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0g J1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZh bGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9p ZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAs MTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0xLDAp ICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSwwKSAgICAgfCBbNiw3KQorKDMg cm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWy0xLC0xXScs ICdbOCw4XScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf ZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hF UkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBh cmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWzgsOSkKKyBbMjAwLDIwMSkgfCBbIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwg WzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIw MCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2 LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSBGSyB3aXRoIGEgY3VzdG9t IHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdlKHN1YnR5cGU9 ZGF0ZSk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgbXlkYXRlcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrM19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazNfcm5nMnJuZ19mayBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVt cG9yYWxfcm5nMyAoaWQsIFBFUklPRCB2YWxpZF9hdCkgT04gREVMRVRFIENBU0NBREUKKyk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmczIFZBTFVFUyAoJ1s4LDhdJywgbXlkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrM19ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgbXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzMg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEt MDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmszX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyBbNSw2KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzgsOSkK KyBbNSw2KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzgsOSkKKygyIHJvd3MpCisK K0RST1AgVEFCTEUgdGVtcG9yYWxfZmszX3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFs X3JuZzM7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CiAtLSBGSyBiZXR3ZWVuIHBhcnRpdGlv bmVkIHRhYmxlcwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAJ aWQgaW50NHJhbmdlLApAQCAtOTY2LDggKzE1NzQsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nICgKICAgbmFtZSB0ZXh0LAogCUNPTlNUUkFJTlQgdGVtcG9y YWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRw MSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4g KCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFd Jyk7Ci1DUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhd JywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04g T0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdb MywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywgJ1sxMywxM10n LCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScsICdbMjMsMjNd Jyk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZd JywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdbMTQsMTRdJywgJ1sxNiwxNl0n LCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAnWzI0LDI0XScpOwogSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUwogICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAogICAoJ1sxLDFd JywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLApAQCAt OTgwLDggKzE1ODgsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyAoCiAJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCiAp IFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0aW9u IE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sx LDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsK LUNSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAn WzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDEgUEFS VElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJ TiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwx MV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5XScsICdbMjEs MjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBQQVJUSVRJT04gT0YgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzAsMF0nLCAn WzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJd JywgJ1sxNCwxNF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0nLCAnWzIyLDIy XScsICdbMjQsMjRdJyk7CiAtLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNlcnRzCiBJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUwogICAoJ1sx LDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyks CkBAIC0xMDE2LDcgKzE2MjQsNyBAQCBVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLQogLS0g c2hvdWxkIGZhaWw6CiBVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKICAgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmciCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRw MSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoK IERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFy ZW50X2lkID0gJ1s1LDVdJzsKQEAgLTEwMjgsNyArMTYzNiw3IEBAIElOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJyk7CiAtLSBzaG91bGQgZmFpbDoKIERFTEVURSBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0 YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5MSIg b24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMg c3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwpAQCAtMTA1MCw3ICsx NjU4LDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0KIC0tIHNob3VsZCBmYWlsOgog VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwot RVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFy ZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdf cGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4 LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1 XSc7CkBAIC0xMDYyLDM1ICsxNjcwLDIxNCBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAx LQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUg b24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleTEiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFs aWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVy ZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCiAt LSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzYsNl0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQsNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKIAkJT04g REVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7Ci1FUlJPUjogIGFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1s0LDRdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzQsNSkgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFs3LDgpCisgWzQsNSkgfCBb MDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs2LDcpCisgWzQsNSkgfCBbMDEtMDEtMjAyMCww MS0wMS0yMDIxKSB8IFs2LDcpCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s0 LDRdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQsNSkg fCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFs3LDgpCisgWzQsNSkgfCBbMDEtMDEtMjAx OCwwMS0wMS0yMDE5KSB8IFs3LDgpCisgWzQsNSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIx KSB8IFs3LDgpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgn WzEwLDEwXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUs MTVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTYs MTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEn OjpkYXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1sxMCwxMF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzEwLDExKSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzE2 LDE3KQorIFsxMCwxMSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxNSwxNikKKygy IHJvd3MpCisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOCw4XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNSw2 KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzgsOSkKKyBbNSw2KSB8IFswMS0wMS0y MDIwLDAxLTAxLTIwMjEpIHwgWzgsOSkKKygyIHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor IGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKygwIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE3 LDE3XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTEsMTFd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNywxN10nKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMTcs MTddJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0n OworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzExLDEy KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE3LDE4KQorKDEgcm93KQorCiAtLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s5LDldJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERF TEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7Ci1FUlJPUjogIGFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5 XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzYsNl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbNiw3KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzYsNykgfCBbMDEt MDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs5LDEwKQorIFs2LDcpIHwgWzAxLTAxLTIwMjAsMDEt MDEtMjAyMSkgfCBbOSwxMCkKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb Niw2XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcp IHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCAKKyBbNiw3KSB8IFswMS0wMS0yMDE4LDAx LTAxLTIwMTkpIHwgCisgWzYsNykgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IAorKDMg cm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThdJywg ZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQg PSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MTIsMTJdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFsxMiwxMykgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IAorIFsxMiwxMykgfCBbMDEt MDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxOCwxOSkKKygyIHJvd3MpCisKIC0tIHBhcnRpdGlv bmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbNyw3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTEsMTFdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBbMDEtMDEtMjAx OSwwMS0wMS0yMDIwKSB8IAorIFs3LDgpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBb MTEsMTIpCisgWzcsOCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxMSwxMikKKygz IHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBp ZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQg ICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCAKKyBb Nyw4KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgCisgWzcsOCkgfCBbMDEtMDEtMjAy MCwwMS0wMS0yMDIxKSB8IAorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZB TFVFUyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp LCAnWzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEzLDEzXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbMTMsMTQpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCAKKyBbMTMsMTQp IHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjAsMjEpCisoMiByb3dzKQorCiAtLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1swLDBdJywgZGF0ZXJhbmdlKG51 bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMTIsMTJdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1s4LDhdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwx Ml0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKLSAg QUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisgIEFMVEVS IENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1swLDBdJywKIAlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcKIAkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVG QVVMVDsKLUVSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVp Z24ga2V5cworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0g J1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbMDEtMDEtMjAxOSww MS0wMS0yMDIwKSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8 IFsxMiwxMykKKyBbOCw5KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzEyLDEzKQor KDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAn WzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworICBpZCAgIHwg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFswMS0wMS0yMDE5LDAx LTAxLTIwMjApIHwgWzAsMSkKKyBbOCw5KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwg WzAsMSkKKyBbOCw5KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzAsMSkKKygzIHJv d3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdb MjIsMjJdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIyLDIyXScsIGRh dGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTQsMTRdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syMiwyMl0nKTsKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1syMywyM10nIFdIRVJFIGlkID0g J1syMiwyMl0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzE0 LDE0XSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb MTQsMTUpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCBbMCwxKQorIFsxNCwxNSkgfCBb MDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsyMiwyMykKKygyIHJvd3MpCisKIC0tIHBhcnRp dGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE0LDE0XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsK KyAgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBb MDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIwMTgs MDEtMDEtMjAxOSkgfCBbMTQsMTUpCisgWzksMTApIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAy MSkgfCBbMTQsMTUpCisoMyByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzksOV0nOworICAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEwKSB8IFswMS0wMS0yMDE5 LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5 KSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMCwxKQor KDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRd JywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzI0LDI0XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1syNCwyNF0n IEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzE1LDE1XSc7Cisg ICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTUsMTYpIHwg WzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCBbMCwxKQorIFsxNSwxNikgfCBbMDEtMDEtMjAy MCwwMS0wMS0yMDIxKSB8IFsyNCwyNSkKKygyIHJvd3MpCisKIERST1AgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9v dmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNx bAppbmRleCA5NWI2ZGE0YzA3Ni4uOGFlYjI0NWNiZTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC03MzUsMzEgKzczNSwxMTQgQEAgREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIC0tCiAtLSB0 ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucwogLS0KKy0tIFRPQzoKKy0tIHBhcmVudCB1 cGRhdGVzIENBU0NBREUKKy0tIHBhcmVudCBkZWxldGVzIENBU0NBREUKKy0tIHBhcmVudCB1 cGRhdGVzIFNFVCBOVUxMCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorLS0gcGFyZW50 IHVwZGF0ZXMgU0VUIERFRkFVTFQKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCist LSBwYXJlbnQgdXBkYXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQg ZGVsZXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgdXBkYXRlcyBT RVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwg KHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2Nh bGFyIGNvbHMsIFNFVCBOVUxMIHN1YnNldCkKKy0tIHBhcmVudCB1cGRhdGVzIFNFVCBERUZB VUxUICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAo dHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBz Y2FsYXIgY29scywgU0VUIERFRkFVTFQgc3Vic2V0KQogCiAtLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIENBU0NBREUKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKLUlOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKIAlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04g REVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CistLSBsZWZ0b3ZlcnMgb24gYm90 aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hF UkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0t IEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5n ZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9 ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFs X2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScs ICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NB REUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOwor LS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAw XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAn WzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIAogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRl cyBTRVQgTlVMTAotSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsK IAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBO VUxMOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5n IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9u LUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScgV0hF UkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93 czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4LDhdJyBB TkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFu IHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEw MCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVz dCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CistLSBs ZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScg V0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9z cyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOwor LS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQg SU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOwog CiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCiBJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOwot SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMTIsMTJdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKICAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVM VCAnWy0xLC0xXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmss CkBAIC03NjcsNiArODUwLDI3MSBAQCBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBT RVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsK Ky0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcs N10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVu Y2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sy MDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0n KTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5LDldJyBXSEVSRSBpZCA9ICdb OCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7Cist LSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJ TiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisK Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2 XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFu Z2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3Rh bXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIw MCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAn WzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFICh0d28gc2Nh bGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywg J1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJy bmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBDQVND QURFIE9OIFVQREFURSBDQVNDQURFOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitV UERBVEUgdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0g J1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3Ju ZzIgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZL IGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0n LCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitV UERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgs OF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0t IGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJ TiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsK KworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMp CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworLS0gbGVmdG92ZXJz IG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBp ZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3Mg dHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhd JywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAn MjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAw LDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYs Nl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQg dXBkYXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZB TFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp LCAnWzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nMgorCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworLS0g bGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VU IGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8g dXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUg aWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dz OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQx ID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAn WzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRl cyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAo J1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYs Nl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5v bi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAn WzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVF UyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQx ID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAw XSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hF UkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5 LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2Fs YXIgY29scywgU0VUIE5VTEwgc3Vic2V0KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sx MDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0n LCAnWzYsNl0nKTsKKy0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVSSU9E IGNvbHVtbjoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRf aWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlP TiBERUxFVEUgU0VUIE5VTEwgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBv azoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr Ml9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxF VEUgU0VUIE5VTEwgKHBhcmVudF9pZDEpIE9OIFVQREFURSBTRVQgTlVMTDsKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNy b3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZB TFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdb OCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRF IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAn WzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAo J1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFy ZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWy0xLC0xXScsICdbLTEsLTFdJywgdHNyYW5nZShu dWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZd JywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVu dF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lk MiBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr Ml9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2Zr CisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRf YXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VUIERFRkFV TFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6 CitVUERBVEUgdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkMSA9ICdbNyw3XScsIGlkMiA9ICdb Nyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgor VVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbNyw3XScsIGlkMiA9ICdbNyw3XScg V0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNl ZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdb OCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJf cm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBT RVQgaWQxID0gJ1s5LDldJywgaWQyID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFu IHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hF UkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0g dGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBv biBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQx ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3 byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAo J1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScs IHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRl bGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29scywgU0VUIERFRkFVTFQgc3Vic2V0 KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywgJ1s2LDZd JywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZB TFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEw MCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScs ICdbNiw2XScpOworLS0gZmFpbHMgYmVjYXVzZSB5b3UgY2FuJ3Qgc2V0IHRoZSBQRVJJT0Qg Y29sdW1uOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgQUxURVIgQ09M VU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m azJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVM RVRFIFNFVCBERUZBVUxUICh2YWxpZF9hdCkgT04gVVBEQVRFIFNFVCBERUZBVUxUOworLS0g b2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xVTU4g cGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9y bmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUg U0VUIERFRkFVTFQgKHBhcmVudF9pZDEpIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxl ZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScg V0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRF IEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksg YWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcy IFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScs ICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWy0xLC0xXScsICdbOCw4XScsIHRzcmFu Z2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFM VUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBp ZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwy MDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAn WzksOV0nKTsKKworLS0gRksgd2l0aCBhIGN1c3RvbSByYW5nZSB0eXBlCisKK0NSRUFURSBU WVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CisKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgbXlkYXRlcmFu Z2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsz X3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmszX3JuZzJybmdf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrM19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmczIChpZCwgUEVS SU9EIHZhbGlkX2F0KSBPTiBERUxFVEUgQ0FTQ0FERQorKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZzMgVkFMVUVTICgnWzgsOF0nLCBteWRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmszX3JuZzJybmcgVkFMVUVT ICgnWzUsNV0nLCBteWRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMyBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgs OF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazNfcm5nMnJuZyBXSEVSRSBpZCA9ICdb NSw1XSc7CisKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmszX3JuZzJybmc7CitEUk9QIFRBQkxF IHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CiAKIC0tIEZLIGJldHdl ZW4gcGFydGl0aW9uZWQgdGFibGVzCiAKQEAgLTc3Niw4ICsxMTI0LDggQEAgQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAgIG5hbWUgdGV4dCwKIAlDT05TVFJB SU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFU RSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1Ig VkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0n LCAnWzExLDExXScpOwotQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2 XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0cDEg UEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgn WzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScs ICdbMTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTldJywgJ1syMSwyMV0n LCAnWzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0 XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScs ICdbMTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0n KTsKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKICAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwK ICAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdv bmUnKSwKQEAgLTc5MSw4ICsxMTM5LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZh bGlkX2F0KQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3Ax IHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxV RVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdb MTEsMTFdJyk7Ci1DUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywg J1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxF IHRma3AxIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZP UiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5 XScsICdbMTEsMTFdJywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwx OV0nLCAnWzIxLDIxXScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgUEFSVElU SU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAo J1swLDBdJywgJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0n LCAnWzEyLDEyXScsICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBd JywgJ1syMiwyMl0nLCAnWzI0LDI0XScpOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBp bnNlcnRzCiAKQEAgLTg3NiwzNyArMTIyNCwxMDcgQEAgREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRl cmFuZ2UKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQogCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzYsNl0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQsNF0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFMVEVSIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcKIAkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5n ZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAsMTBdJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwx NV0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7 CiAKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKIAorSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s4LDhdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT ICgnWzE3LDE3XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MTEsMTFdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNywx N10nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9 ICdbMTcsMTddJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx MSwxMV0nOworCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAog CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzksOV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKIEFMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcKIAkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTAsMTBdJyBX SEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1s2LDZdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTgsMThdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE4LDE4XScs IGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTIsMTJdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlk ID0gJ1sxOCwxOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEyLDEyXSc7CiAKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxM CiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTEs MTFdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s3LDddJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzEx LDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMTMsMTNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBXSEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjpkYXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMywxM10nOworCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQg dXBkYXRlcyBTRVQgREVGQVVMVAogCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgVkFMVUVTICgnWzAsMF0nLCBkYXRlcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOwogQUxURVIgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwotICBBTFRFUiBDT0xVTU4gcGFyZW50 X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBT RVQgREVGQVVMVCAnWzAsMF0nLAogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBE RUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0g J1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhd JzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIs MjJdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIyLDIyXScsIGRhdGVy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTQsMTRdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syMiwyMl0nKTsKK1VQREFURSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1syMywyM10nIFdIRVJFIGlkID0gJ1sy MiwyMl0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzE0LDE0 XSc7CiAKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCiAK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTQsMTRd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNCwxNF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0LDE0 XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzksOV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1syNCwyNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBXSEVSRSBpZCA9ICdbMjQsMjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEn OjpkYXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1sxNSwxNV0nOworCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmc7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZzsK LS0gCjIuNDIuMAoK --------------iqvziU4Z040MH3WdnoYY4mNT Content-Type: text/x-patch; charset=UTF-8; name="v22-0008-Add-PERIODs.patch" Content-Disposition: attachment; filename="v22-0008-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSBmM2M4YmJhYzQxZTc3Y2UzMmFkM2QzM2NlZmYzMDQ2ZTkyMTYxNTdmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjIyIDgvOF0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NDAgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgICAg fCAgIDkgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAg IHwgIDc2ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwg ICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyAgICAg ICAgICAgfCAgNzMgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgICAgICAg ICAgICAgICB8IDEzMiArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4 dCAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYyAg ICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5j ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVs LmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyAgICAgICAgICAgICAgfCA3NDkgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92aWV3LmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8ICAxMCArCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxNDUgKysrLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyAgICAgICAgICAgICAgICB8ICA1NiAr Kwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDg3 ICsrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgICAgfCAg MjEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwg ICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8 IDE3MyArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAg ICAgfCAgMTQgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAg ICAgIHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAg ICAgICB8ICAzNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAg ICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAgICAg ICAgICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAgICAg ICAgICAgICAgIHwgIDU0ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgg ICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgg ICAgICAgICAgICAgICAgfCAgMzkgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGls Y21kLmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aCAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUu aCAgICAgICAgICAgICAgICAgIHwgICAzICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3Rf ZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BlcmlvZHMub3V0ICAgICAgICAgfCAxNzcgKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvcGVyaW9kcy5zcWwgICAgICAgICAgICAgIHwgMTE5ICsrKwogNTAgZmlsZXMgY2hhbmdl ZCwgMjM2NiBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BlcmlvZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5k ZXggNDYxNzBjMDc0OTkuLjZlOGNmNWU5ODNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjMw LDYgKzIzMCwxMSBAQAogICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlv biBrZXkgb2YgdGFibGVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5h bWU+cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5 PnBlcmlvZHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVu dHJ5PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcG9saWN5Ij48c3RydWN0bmFtZT5wZ19w b2xpY3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cm93LXNl Y3VyaXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU3MjYsNiArNTczMSwxMTMgQEAgU0NSQU0t U0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2Vh YmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJlZmVyZW5jZXMuCiAg ICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAg PC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlkPSJjYXRh bG9nLXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9k Ij4KKyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisK KyAgPHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNh dGlvbiB0aW1lIHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMg YXJlIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9w YXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0 cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAg IDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1u IFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9u CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKwor ICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50 ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9k IG5hbWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0 cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsg bGlua2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVj dG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVs b25ncyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwv c3RydWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxp bmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBnX2F0dHJp YnV0ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVjdGZp ZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBudW1iZXIg b2YgdGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD5wZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZl cmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFt ZT5wZ19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVt PC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU aGUgbnVtYmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnBlcnJhbmdlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAg ICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+ PHN0cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZp ZWxkPmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhlIG51bWJlciBvZiB0aGUgPGxpdGVyYWw+R0VORVJBVEVEPC9saXRlcmFs PiBjb2x1bW4gdGhhdCBpbXBsZW1lbnRzIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+ LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJjb25zdHJhaW50PC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3Ry YWludDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhl IHBlcmlvZCdzIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICA8L3Rib2R5PgogICAgPC90Z3Jv dXA+CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9k b2Mvc3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggMjJkMDQwMDZhZGUuLjhlYTBiZWQ0MmY2IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Rk bC5zZ21sCkBAIC0xMjYzLDYgKzEyNjMsNjQgQEAgQ1JFQVRFIFRBQkxFIGNpcmNsZXMgKAog ICA8L3NlY3QyPgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImRkbC1wZXJpb2RzIj4KKyAg PHRpdGxlPlBlcmlvZHM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgUGVyaW9kcyBhcmUgZGVm aW5pdGlvbnMgb24gYSB0YWJsZSB0aGF0IGFzc29jaWF0ZSBhIHBlcmlvZCBuYW1lIHdpdGgg YSBzdGFydAorICAgY29sdW1uIGFuZCBhbiBlbmQgY29sdW1uLiAgQm90aCBjb2x1bW5zIG11 c3QgYmUgb2YgZXhhY3RseSB0aGUgc2FtZSB0eXBlCisgICAoaW5jbHVkaW5nIGNvbGxhdGlv biksIGhhdmUgYSBidHJlZSBvcGVyYXRvciBjbGFzcywgYW5kIHRoZSBzdGFydCBjb2x1bW4K KyAgIHZhbHVlIG11c3QgYmUgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uIHZh bHVlLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9m IHBlcmlvZHM6IGFwcGxpY2F0aW9uIGFuZCBzeXN0ZW0uICBTeXN0ZW0gcGVyaW9kcyBhcmUK KyAgIGRpc3Rpbmd1aXNoZWQgYnkgdGhlaXIgbmFtZSB3aGljaCBtdXN0IGJlIDxsaXRlcmFs PlNZU1RFTV9USU1FPC9saXRlcmFsPi4gIEFueQorICAgb3RoZXIgbmFtZSBpcyBhbiBhcHBs aWNhdGlvbiBwZXJpb2QuCisgIDwvcGFyYT4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2Rz LWFwcGxpY2F0aW9uLXBlcmlvZHMiPgorICA8dGl0bGU+QXBwbGljYXRpb24gUGVyaW9kczwv dGl0bGU+CisKKyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5 PgorICAgIDxzZWNvbmRhcnk+YXBwbGljYXRpb248L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0 ZXJtPgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGFyZSBkZWZpbmVk IG9uIGEgdGFibGUgdXNpbmcgdGhlIGZvbGxvd2luZyBzeW50YXg6CisgICA8L3BhcmE+CisK Kzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBUQUJMRSBiaWxsaW5nX2FkZHJlc3NlcyAoCisg IGN1c3RvbWVyX2lkIGludGVnZXIsCisgIGFkZHJlc3NfaWQgaW50ZWdlciwKKyAgdmFsaWRf ZnJvbSBkYXRlLAorICB2YWxpZF90byBkYXRlLAorICA8ZW1waGFzaXM+UEVSSU9EIEZPUiB2 YWxpZGl0eSAodmFsaWRfZnJvbSwgdmFsaWRfdG8pPC9lbXBoYXNpcz4KKyk7Cis8L3Byb2dy YW1saXN0aW5nPgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGNhbiBi ZSB1c2VkIHRvIGRlZmluZSB0ZW1wb3JhbCBwcmltYXJ5IGFuZCBmb3JlaWduIGtleXMuCisg ICAgQW55IHRhYmxlIHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBpcyBhIHRlbXBvcmFs IHRhYmxlIGFuZCBzdXBwb3J0cyB0ZW1wb3JhbCB1cGRhdGUgYW5kIGRlbGV0ZSBjb21tYW5k cy4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2Rz LXN5c3RlbS1wZXJpb2RzIj4KKyAgIDx0aXRsZT5TeXN0ZW0gUGVyaW9kczwvdGl0bGU+CisK KyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxz ZWNvbmRhcnk+c3lzdGVtPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4KKworICAgPHBh cmE+CisgICAgUGVyaW9kcyBmb3IgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGFy ZSBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkLgorICAgPC9wYXJhPgorICA8L3NlY3QyPgor IDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9ImRkbC1zeXN0ZW0tY29sdW1ucyI+CiAgIDx0aXRs ZT5TeXN0ZW0gQ29sdW1uczwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9p bmZvcm1hdGlvbl9zY2hlbWEuc2dtbCBiL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hl bWEuc2dtbAppbmRleCAwY2E3ZDVhOWUwYi4uNTZhNDQ2NGFiNzUgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv aW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKQEAgLTQxNzEsNiArNDE3MSw2OSBAQCBPUkRFUiBC WSBjLm9yZGluYWxfcG9zaXRpb247CiAgIDwvdGFibGU+CiAgPC9zZWN0MT4KIAorIDxzZWN0 MSBpZD0iaW5mb3NjaGVtYS1wZXJpb2RzIj4KKyAgPHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8 L2xpdGVyYWw+PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxsaXRlcmFsPnBh cmFtZXRlcnM8L2xpdGVyYWw+IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAg cGVyaW9kcyBvZiBhbGwgdGFibGVzIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLiAgVGhlIHN0 YXJ0IGFuZCBlbmQgY29sdW1uCisgICBuYW1lcyBhcmUgb25seSBzaG93biBpZiB0aGUgY3Vy cmVudCB1c2VyIGhhcyBhY2Nlc3MgdG8gdGhlbSAoYnkgd2F5IG9mIGJlaW5nCisgICB0aGUg b3duZXIgb3IgaGF2aW5nIHNvbWUgcHJpdmlsZWdlKS4KKyAgPC9wYXJhPgorCisgIDx0YWJs ZT4KKyAgIDx0aXRsZT48bGl0ZXJhbD5wZXJpb2RzPC9saXRlcmFsPiBDb2x1bW5zPC90aXRs ZT4KKworICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnk+TmFtZTwvZW50cnk+CisgICAgICA8ZW50cnk+RGF0YSBUeXBlPC9lbnRy eT4KKyAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgIDwvcm93PgorICAg IDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxp dGVyYWw+dGFibGVfY2F0YWxvZzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0 eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBv ZiB0aGUgZGF0YWJhc2UgY29udGFpbmluZyB0aGUgcGVyaW9kIChhbHdheXMgdGhlIGN1cnJl bnQgZGF0YWJhc2UpPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD50YWJsZV9zY2hlbWE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVu dHJ5Pk5hbWUgb2YgdGhlIHNjaGVtYSBjb250YWluaW5nIHRoZSBwZXJpb2Q8L2VudHJ5Pgor ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxl X25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRp ZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHRhYmxlIGNv bnRhaW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PGxpdGVyYWw+cGVyaW9kX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAg ICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+c3RhcnRfY29sdW1uX25hbWU8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHN0YXJ0IGNvbHVtbiBmb3Ig dGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnk+PGxpdGVyYWw+ZW5kX2NvbHVtbl9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT5OYW1lIG9mIHRoZSBlbmQgY29sdW1uIGZvciB0aGUgcGVyaW9kPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwv c2VjdDE+CisKICA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtcmVmZXJlbnRpYWwtY29uc3RyYWlu dHMiPgogICA8dGl0bGU+PGxpdGVyYWw+cmVmZXJlbnRpYWxfY29uc3RyYWludHM8L2xpdGVy YWw+PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IGVhYWRh MjMwMjQ4Li5jMDYxZGNjMGEzYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApA QCAtNjEsNiArNjEsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBDT05T VFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8 L3JlcGxhY2VhYmxlPiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElB TExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAgICAgVkFMSURBVEUgQ09O U1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1l PC9yZXBsYWNlYWJsZT4KICAgICBEUk9QIENPTlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFi bGU+IFsgUkVTVFJJQ1QgfCBDQVNDQURFIF0KKyAgICBBREQgUEVSSU9EIEZPUiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF9jb2x1bW48L3JlcGxhY2VhYmxl PiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF9jb2x1bW48L3JlcGxhY2Vh YmxlPiApIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rf b3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgICBEUk9QIFBFUklPRCBGT1Ig PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJs ZT4gWyBSRVNUUklDVCB8IENBU0NBREUgXQogICAgIERJU0FCTEUgVFJJR0dFUiBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8 IEFMTCB8IFVTRVIgXQogICAgIEVOQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBd CiAgICAgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTU4Myw2ICs1ODUsMjkgQEAg V0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNf bGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2Mt YWRkLXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+QUREIFBFUklPRCBGT1I8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZv cm0gYWRkcyBhIG5ldyBwZXJpb2QgdG8gYSB0YWJsZSB1c2luZyB0aGUgc2FtZSBzeW50YXgg YXMKKyAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSIvPi4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxp c3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kcm9wLXBlcmlvZCI+CisgICAgPHRl cm0+PGxpdGVyYWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZp ZWQgcGVyaW9kIG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1u cyB3aWxsIG5vdCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8 bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwg bmVlZCB0byBzYXkKKyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRo aW5nIG91dHNpZGUgdGhlIHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAg IDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZGlzYWJsZS1lbmFibGUt dHJpZ2dlciI+CiAgICAgPHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVy YWw+RU5BQkxFIFsgUkVQTElDQSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJt PgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVu dC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggNWI0M2M1NmIx MzMuLjQ5YzJkZjk5NDQ5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbApAQCAtNDQsNiArNDQs NyBAQCBDT01NRU5UIE9OCiAgIE9QRVJBVE9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5vcGVyYXRvcl9uYW1lPC9yZXBsYWNlYWJsZT4gKDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5sZWZ0X3R5cGU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJpZ2h0X3R5cGU8L3JlcGxhY2VhYmxlPikgfAogICBPUEVSQVRPUiBD TEFTUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxh Y2VhYmxlPiBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0 aG9kPC9yZXBsYWNlYWJsZT4gfAogICBPUEVSQVRPUiBGQU1JTFkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJTkcgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IHwK KyAgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWxhdGlvbl9uYW1l PC9yZXBsYWNlYWJsZT4uPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9u YW1lPC9yZXBsYWNlYWJsZT4gfAogICBQT0xJQ1kgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBvbGljeV9uYW1lPC9yZXBsYWNlYWJsZT4gT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFsgUFJPQ0VEVVJB TCBdIExBTkdVQUdFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFt ZTwvcmVwbGFjZWFibGU+IHwKICAgUFJPQ0VEVVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wcm9jZWR1cmVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCBbIFsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmd0eXBlPC9yZXBsYWNlYWJsZT4gWywgLi4u XSBdICkgXSB8CkBAIC0zNDEsNiArMzQyLDcgQEAgQ09NTUVOVCBPTiBPUEVSQVRPUiBeICh0 ZXh0LCB0ZXh0KSBJUyAnUGVyZm9ybXMgaW50ZXJzZWN0aW9uIG9mIHR3byB0ZXh0cyc7CiBD T01NRU5UIE9OIE9QRVJBVE9SIC0gKE5PTkUsIGludGVnZXIpIElTICdVbmFyeSBtaW51cyc7 CiBDT01NRU5UIE9OIE9QRVJBVE9SIENMQVNTIGludDRvcHMgVVNJTkcgYnRyZWUgSVMgJzQg Ynl0ZSBpbnRlZ2VyIG9wZXJhdG9ycyBmb3IgYnRyZWVzJzsKIENPTU1FTlQgT04gT1BFUkFU T1IgRkFNSUxZIGludGVnZXJfb3BzIFVTSU5HIGJ0cmVlIElTICdhbGwgaW50ZWdlciBvcGVy YXRvcnMgZm9yIGJ0cmVlcyc7CitDT01NRU5UIE9OIFBFUklPRCBteV90YWJsZS5teV9jb2x1 bW4gSVMgJ1NhbGVzIHByb21vdGlvbiB2YWxpZGl0eSc7CiBDT01NRU5UIE9OIFBPTElDWSBt eV9wb2xpY3kgT04gbXl0YWJsZSBJUyAnRmlsdGVyIHJvd3MgYnkgdXNlcnMnOwogQ09NTUVO VCBPTiBQUk9DRURVUkUgbXlfcHJvYyAoaW50ZWdlciwgaW50ZWdlcikgSVMgJ1J1bnMgYSBy ZXBvcnQnOwogQ09NTUVOVCBPTiBQVUJMSUNBVElPTiBhbGx0YWJsZXMgSVMgJ1B1Ymxpc2hl cyBhbGwgb3BlcmF0aW9ucyBvbiBhbGwgdGFibGVzJzsKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sCmluZGV4IGI1ZjQ4NTI1ZGVkLi5iMDBiZDgwY2Y1OCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9j dW1lbnRhdGlvbgogPHN5bm9wc2lzPgogQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsg VEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWElTVFMg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+ICggWwogICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5 cGU8L3JlcGxhY2VhYmxlPiBbIFNUT1JBR0UgeyBQTEFJTiB8IEVYVEVSTkFMIHwgRVhURU5E RUQgfCBNQUlOIHwgREVGQVVMVCB9IF0gWyBDT01QUkVTU0lPTiA8cmVwbGFjZWFibGU+Y29t cHJlc3Npb25fbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSBbIENPTExBVEUgPHJlcGxhY2VhYmxl PmNvbGxhdGlvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8 IDxyZXBsYWNlYWJsZT5wZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8 cmVwbGFjZWFibGU+dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+CiAgICAgfCBMSUtF IDxyZXBsYWNlYWJsZT5zb3VyY2VfdGFibGU8L3JlcGxhY2VhYmxlPiBbIDxyZXBsYWNlYWJs ZT5saWtlX29wdGlvbjwvcmVwbGFjZWFibGU+IC4uLiBdIH0KICAgICBbLCAuLi4gXQpAQCAt MzcsNiArMzgsNyBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkg fCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogQ1JFQVRFIFsgWyBH TE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJM RSBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfbmFtZTwvcmVwbGFjZWFibGU+CiAgICAgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lUSCBPUFRJ T05TIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFp bnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5wZXJpb2Rf ZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFibGVfY29u c3RyYWludDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdCkBAIC00OSw2ICs1 MSw3IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAg fSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8 IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYg Tk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4KICAgICBQQVJUSVRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcmVudF90YWJsZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lU SCBPUFRJT05TIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2Nv bnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5w ZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFi bGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdIHsgRk9S IFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5k X3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQpAQCAtNzMsNiArNzYsMTEgQEAgQ1JF QVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dH RUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBb IE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxf YWN0aW9uPC9yZXBsYWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJM RSBdIFsgSU5JVElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAKKzxw aHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfZGVmaW5p dGlvbjwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCitQRVJJT0QgRk9SIHsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfCBT WVNURU1fVElNRSB9ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+ICkKK1sgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwog PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2NvbnN0 cmFpbnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogWyBDT05TVFJBSU5UIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxl PiBdCkBAIC0xNDAsNiArMTQ4LDE0IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAg ICBuYW1lIGFzIGFueSBleGlzdGluZyBkYXRhIHR5cGUgaW4gdGhlIHNhbWUgc2NoZW1hLgog ICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBQZXJpb2RzIG15IGJlIGRlZmluZWQgb24gdGFi bGVzLCBzcGVjaWZ5aW5nIHRoYXQgdHdvIGV4aXN0aW5nIGNvbHVtbnMKKyAgIHJlcHJlc2Vu dCBzdGFydCBhbmQgZW5kIHZhbHVlcyBmb3IgdGhlIHBlcmlvZC4gIFBlcmlvZHMgbWF5IGhh dmUgYW55IG5hbWUKKyAgIHRoYXQgZG9lc24ndCBjb25mbGljdCB3aXRoIGEgY29sdW1uIG5h bWUsIGJ1dCB0aGUgbmFtZQorICAgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGlz IHNwZWNpYWwsIHVzZWQgZm9yIHZlcnNpb25pbmcgdGFibGVzLgorICAgU3lzdGVtIHBlcmlv ZHMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQuICBTZWUgPHhyZWYgbGlua2VuZD0iZGRsLXBl cmlvZHMiLz4gZm9yIG1vcmUgZGV0YWlscy4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAg VGhlIG9wdGlvbmFsIGNvbnN0cmFpbnQgY2xhdXNlcyBzcGVjaWZ5IGNvbnN0cmFpbnRzICh0 ZXN0cykgdGhhdAogICAgbmV3IG9yIHVwZGF0ZWQgcm93cyBtdXN0IHNhdGlzZnkgZm9yIGFu IGluc2VydCBvciB1cGRhdGUgb3BlcmF0aW9uCkBAIC04MDAsNiArODE2LDMwIEBAIFdJVEgg KCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVy YWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtcGVy aW9kIj4KKyAgICA8dGVybT48bGl0ZXJhbD5QRVJJT0QgRk9SIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ICkgWyBX SVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3Jl cGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgXTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIEEgcGVyaW9kIGRlZmluaXRpb24gZ2l2ZXMgc2VtYW50 aWMgbWVhbmluZyB0byB0d28gZXhpc3RpbmcgY29sdW1ucyBvZgorICAgICAgdGhlIHRhYmxl LiAgSXQgZGVmaW5lcyBhICJzdGFydCBjb2x1bW4iIGFuZCBhbiAiZW5kIGNvbHVtbiIgd2hl cmUgdGhlCisgICAgICBzdGFydCB2YWx1ZSBpcyBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGVu ZCB2YWx1ZS4gIEEKKyAgICAgIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50 IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0byBlbmZvcmNlCisgICAgICB0aGlzLiBZb3Ug Y2FuIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhhdCBjb25zdHJhaW50IHdpdGggdGhlCisgICAg ICA8bGl0ZXJhbD5jaGVja19jb25zdHJhaW50X25hbWU8L2xpdGVyYWw+IDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4uCisgICAg IDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEJvdGggY29sdW1ucyBtdXN0IGhhdmUg ZXhhY3RseSB0aGUgc2FtZSB0eXBlIGFuZCBtdXN0IGhhdmUgYSByYW5nZSB0eXBlCisgICAg ICBkZWZpbmVkIGZyb20gdGhlaXIgYmFzZSB0eXBlLiAgSWYgdGhlcmUgYXJlIHNldmVyYWwg cmFuZ2UgdHlwZXMgZm9yIHRoYXQKKyAgICAgIGJhc2UgdHlwZSwgeW91IG11c3Qgc3BlY2lm eSB3aGljaCBvbmUgeW91IHdhbnQgYnkgdXNpbmcgdGhlCisgICAgICA8bGl0ZXJhbD5yYW5n ZXR5cGU8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rf b3B0aW9uPC9yZXBsYWNlYWJsZT4uCisgICAgICBBbnkgYmFzZSB0eXBlIGlzIGFsbG93ZWQs IGFzIGxvbmcgYXMgaXQgaGFzIGEgcmFuZ2UgdHlwZSwgYWx0aG91Z2ggaXQgaXMKKyAgICAg IGV4cGVjdGVkIHRoYXQgbW9zdCBwZXJpb2RzIHdpbGwgdXNlIHRlbXBvcmFsIHR5cGVzIGxp a2UgPGxpdGVyYWw+dGltZXN0YW1wdHo8L2xpdGVyYWw+CisgICAgICBvciA8bGl0ZXJhbD5k YXRlPC9saXRlcmFsPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBh cm1zLWNvbnN0cmFpbnQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkNPTlNUUkFJTlQgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+ PC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpp bmRleCBkNmIyM2I0YmZkNS4uYjNiNTE5ZDllNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpA QCAtMzksNiArMzksNyBAQCBPQkpTID0gXAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVy YXRvci5vIFwKIAlwZ19wYXJhbWV0ZXJfYWNsLm8gXAorCXBnX3BlcmlvZC5vIFwKIAlwZ19w cm9jLm8gXAogCXBnX3B1YmxpY2F0aW9uLm8gXAogCXBnX3JhbmdlLm8gXApAQCAtMTExLDYg KzExMiw3IEBAIENBVEFMT0dfSEVBREVSUyA6PSBcCiAJcGdfY29sbGF0aW9uLmggXAogCXBn X3BhcmFtZXRlcl9hY2wuaCBcCiAJcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCisJcGdfcGVy aW9kLmggXAogCXBnX3JhbmdlLmggXAogCXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5j ZS5oIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4IDU5MGFmZmI3OWE1Li41MGNhNzA2YTE2 MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCkBAIC0yODE3LDYgKzI4MTcsNyBAQCBhY2xjaGVj a19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNh c2UgT0JKRUNUX0RFRkFVTFQ6CiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2Fz ZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJ CQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2UgT0JKRUNU X1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKQEAgLTI5NTgsNiAr Mjk1OSw3IEBAIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUg b2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpFQ1RfREVGQUNMOgogCQkJCQljYXNlIE9CSkVDVF9E T01DT05TVFJBSU5UOgogCQkJCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQkJCQlj YXNlIE9CSkVDVF9QRVJJT0Q6CiAJCQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVT UEFDRToKIAkJCQkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVMOgogCQkJCQljYXNlIE9C SkVDVF9ST0xFOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5 LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCBlNzQyYzc4ZWEz NS4uM2UxZDJjYmM2OTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5k ZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC00OCw2 ICs0OCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BhcmFtZXRl cl9hY2wuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcG9saWN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgpAQCAtMTU0LDYgKzE1NSw3IEBAIHN0 YXRpYyBjb25zdCBPaWQgb2JqZWN0X2NsYXNzZXNbXSA9IHsKIAlDYXN0UmVsYXRpb25JZCwJ CQkJLyogT0NMQVNTX0NBU1QgKi8KIAlDb2xsYXRpb25SZWxhdGlvbklkLAkJLyogT0NMQVNT X0NPTExBVElPTiAqLwogCUNvbnN0cmFpbnRSZWxhdGlvbklkLAkJLyogT0NMQVNTX0NPTlNU UkFJTlQgKi8KKwlQZXJpb2RSZWxhdGlvbklkLAkJCS8qIE9DTEFTU19QRVJJT0QgKi8KIAlD b252ZXJzaW9uUmVsYXRpb25JZCwJCS8qIE9DTEFTU19DT05WRVJTSU9OICovCiAJQXR0ckRl ZmF1bHRSZWxhdGlvbklkLAkJLyogT0NMQVNTX0RFRkFVTFQgKi8KIAlMYW5ndWFnZVJlbGF0 aW9uSWQsCQkJLyogT0NMQVNTX0xBTkdVQUdFICovCkBAIC0xNDQzLDYgKzE0NDUsMTAgQEAg ZG9EZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGludCBmbGFncykKIAkJ CVJlbW92ZUNvbnN0cmFpbnRCeUlkKG9iamVjdC0+b2JqZWN0SWQpOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgorCQkJUmVtb3ZlUGVyaW9kQnlJZChvYmplY3QtPm9i amVjdElkKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCQlSZW1v dmVBdHRyRGVmYXVsdEJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKQEAgLTI4 NjIsNiArMjg2OCw5IEBAIGdldE9iamVjdENsYXNzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9i amVjdCkKIAkJY2FzZSBDb25zdHJhaW50UmVsYXRpb25JZDoKIAkJCXJldHVybiBPQ0xBU1Nf Q09OU1RSQUlOVDsKIAorCQljYXNlIFBlcmlvZFJlbGF0aW9uSWQ6CisJCQlyZXR1cm4gT0NM QVNTX1BFUklPRDsKKwogCQljYXNlIENvbnZlcnNpb25SZWxhdGlvbklkOgogCQkJcmV0dXJu IE9DTEFTU19DT05WRVJTSU9OOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDdhYmMyZTBkMjJk Li4zMmE1MGE3YjNjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf b3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf c3RhdGlzdGljLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCkBAIC0yMDQyLDYgKzIwNDMs ODEgQEAgU2V0QXR0ck1pc3NpbmcoT2lkIHJlbGlkLCBjaGFyICphdHRuYW1lLCBjaGFyICp2 YWx1ZSkKIAl0YWJsZV9jbG9zZSh0YWJsZXJlbCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiB9 CiAKKy8qCisgKiBTdG9yZSBhIHBlcmlvZCBvZiByZWxhdGlvbiByZWwuCisgKgorICogUmV0 dXJucyB0aGUgT0lEIG9mIHRoZSBuZXcgcGdfcGVyaW9kIHR1cGxlLgorICovCitPaWQKK1N0 b3JlUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgQXR0ck51 bWJlciBzdGFydG51bSwKKwkJCUF0dHJOdW1iZXIgZW5kbnVtLCBBdHRyTnVtYmVyIHJhbmdl bnVtLCBPaWQgY29ub2lkKQoreworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcGVyaW9kXTsK Kwlib29sCQludWxsc1tOYXR0c19wZ19wZXJpb2RdOworCVJlbGF0aW9uCXBnX3BlcmlvZDsK KwlIZWFwVHVwbGUJdHVwbGU7CisJT2lkCQkJb2lkOworCU5hbWVEYXRhCXBlcm5hbWU7CisJ T2JqZWN0QWRkcmVzcwlteXNlbGYsIHJlZmVyZW5jZWQ7CisKKwlBc3NlcnQocmFuZ2VudW0g IT0gSW52YWxpZEF0dHJOdW1iZXIpOworCisJbmFtZXN0cmNweSgmcGVybmFtZSwgcGVyaW9k bmFtZSk7CisKKwlNZW1TZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJTWVtU2V0 KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9v cGVuKFBlcmlvZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJb2lkID0gR2V0 TmV3T2lkV2l0aEluZGV4KHBnX3BlcmlvZCwgQXR0ckRlZmF1bHRPaWRJbmRleElkLCBBbnVt X3BnX3BlcmlvZF9vaWQpOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9vaWQgLSAxXSA9IE9i amVjdElkR2V0RGF0dW0ob2lkKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVybmFtZSAt IDFdID0gTmFtZUdldERhdHVtKCZwZXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2Rf cGVycmVsaWQgLSAxXSA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwl2YWx1ZXNbQW51bV9w Z19wZXJpb2RfcGVyc3RhcnQgLSAxXSA9IHN0YXJ0bnVtOworCXZhbHVlc1tBbnVtX3BnX3Bl cmlvZF9wZXJlbmQgLSAxXSA9IGVuZG51bTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVy cmFuZ2UgLSAxXSA9IHJhbmdlbnVtOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJjb25z dHJhaW50IC0gMV0gPSBjb25vaWQ7CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZShSZWxh dGlvbkdldERlc2NyKHBnX3BlcmlvZCksIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBs ZUluc2VydChwZ19wZXJpb2QsIHR1cGxlKTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxm LCBQZXJpb2RSZWxhdGlvbklkLCBvaWQpOworCisJLyogRHJvcCB0aGUgcGVyaW9kIHdoZW4g dGhlIHRhYmxlIGlzIGRyb3BwZWQuICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2Vk LCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJcmVjb3Jk RGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOwor CisJLyogRm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1bW5zIG9mIHRoZSBwZXJpb2QuICovCisJ T2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJl bGF0aW9uR2V0UmVsaWQocmVsKSwgc3RhcnRudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigm bXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCU9iamVjdEFkZHJl c3NTdWJTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJl bGlkKHJlbCksIGVuZG51bSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZl cmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKgorCSAqIFRoZSByYW5nZSBjb2x1 bW4gaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLAorCSAqIGJ1dCB3ZSBjYW4ndCB1c2Ug REVQRU5ERU5DWV9JTlRFUk5BTAorCSAqIGJlY2F1c2UgZHJvcHBpbmcgdGhlIHRhYmxlIHdp bGwgY2hlY2sgZm9yIGRlcGVuZGVuY2llcyBvbiBhbGwgc3Vib2JqZWN0cyB0b28KKwkgKiAo aW4gZmluZERlcGVuZGVudE9iamVjdHMpLgorCSAqIEJ1dCBpZiB3ZSBtYWtlIGFuIEFVVE8g ZGVwZW5kZW5jeSBvbmUgd2F5IHdlIHdpbGwgYXV0by1kcm9wIHRoZSBjb2x1bW4KKwkgKiB3 aGVuIHdlIGRyb3AgdGhlIFBFUklPRCwKKwkgKiBhbmQgYSBOT1JNQUwgZGVwZW5kZW5jeSB0 aGUgb3RoZXIgd2F5IHdlIHdpbGwgZm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1bW4gZGlyZWN0 bHkuCisJICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJl bGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcmFuZ2VudW0pOworCXJlY29yZERl cGVuZGVuY3lPbigmcmVmZXJlbmNlZCwgJm15c2VsZiwgREVQRU5ERU5DWV9BVVRPKTsKKwly ZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9S TUFMKTsKKworCS8qCisJICogVGhlIGNvbnN0cmFpbnQgaXMgYW4gaW1wbGVtZW50YXRpb24g ZGV0YWlsLCBzbyB3ZSBtYXJrIGl0IGFzIHN1Y2guCisJICogKE5vdGUgdGhhdCBteXNlbGYg YW5kIHJlZmVyZW5jZWQgYXJlIHJldmVyc2VkIGZvciB0aGlzIG9uZS4pCisJICovCisJT2Jq ZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29ub2lk KTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJnJlZmVyZW5jZWQsICZteXNlbGYsIERFUEVOREVO Q1lfSU5URVJOQUwpOworCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVM b2NrKTsKKworCXJldHVybiBvaWQ7Cit9CisKIC8qCiAgKiBTdG9yZSBhIGNoZWNrLWNvbnN0 cmFpbnQgZXhwcmVzc2lvbiBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uLgogICoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbAppbmRleCBjNDAyYWU3Mjc0 MS4uNTBjYTBkMDVmODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3Jt YXRpb25fc2NoZW1hLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9u X3NjaGVtYS5zcWwKQEAgLTEyMDcsNyArMTIwNywyOCBAQCBHUkFOVCBTRUxFQ1QgT04gcGFy YW1ldGVycyBUTyBQVUJMSUM7CiAgKiBQRVJJT0RTIHZpZXcKICAqLwogCi0tLSBmZWF0dXJl IG5vdCBzdXBwb3J0ZWQKK0NSRUFURSBWSUVXIHBlcmlvZHMgQVMKKyAgICBTRUxFQ1QgY3Vy cmVudF9kYXRhYmFzZSgpOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMg dGFibGVfY2F0YWxvZywKKyAgICAgICAgICAgbmMubnNwbmFtZTo6aW5mb3JtYXRpb25fc2No ZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX3NjaGVtYSwKKyAgICAgICAgICAgYy5yZWxu YW1lOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgdGFibGVfbmFtZSwK KyAgICAgICAgICAgcC5wZXJuYW1lOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZp ZXIgQVMgcGVyaW9kX25hbWUsCisgICAgICAgICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShj LnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAgICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9w cml2aWxlZ2Uoc2EuYXR0cmVsaWQsIHNhLmF0dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERB VEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAgICAgICAgIFRIRU4gc2EuYXR0bmFtZTo6aW5m b3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyCisgICAgICAgICAgIEVORCBBUyBzdGFy dF9jb2x1bW5fbmFtZSwKKyAgICAgICAgICAgQ0FTRSBXSEVOIHBnX2hhc19yb2xlKGMucmVs b3duZXIsICdVU0FHRScpCisgICAgICAgICAgICAgICAgICBPUiBoYXNfY29sdW1uX3ByaXZp bGVnZShlYS5hdHRyZWxpZCwgZWEuYXR0bnVtLCAnU0VMRUNULCBJTlNFUlQsIFVQREFURSwg UkVGRVJFTkNFUycpCisgICAgICAgICAgICAgICAgVEhFTiBlYS5hdHRuYW1lOjppbmZvcm1h dGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIKKyAgICAgICAgICAgRU5EIEFTIGVuZF9jb2x1 bW5fbmFtZQorICAgIEZST00gcGdfcGVyaW9kIEFTIHAKKyAgICBKT0lOIHBnX2NsYXNzIEFT IGMgT04gYy5vaWQgPSBwLnBlcnJlbGlkCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgQVMgbmMg T04gbmMub2lkID0gYy5yZWxuYW1lc3BhY2UKKyAgICBKT0lOIHBnX2F0dHJpYnV0ZSBBUyBz YSBPTiAoc2EuYXR0cmVsaWQsIHNhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFy dCkKKyAgICBKT0lOIHBnX2F0dHJpYnV0ZSBBUyBlYSBPTiAoZWEuYXR0cmVsaWQsIGVhLmF0 dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJlbmQpCisgICAgV0hFUkUgTk9UIHBnX2lzX290 aGVyX3RlbXBfc2NoZW1hKG5jLm9pZCkKKyAgICAgIEFORCBjLnJlbGtpbmQgSU4gKCdyJywg J3YnKTsKKworR1JBTlQgU0VMRUNUIE9OIHBlcmlvZHMgVE8gUFVCTElDOwogCiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCAyZjNkZWQ4YTBlNy4uYTM3MmZiMGFhZTgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZApAQCAtMjYsNiArMjYsNyBAQCBiYWNrZW5k X3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwZ19uYW1lc3BhY2UuYycsCiAgICdwZ19vcGVyYXRv ci5jJywKICAgJ3BnX3BhcmFtZXRlcl9hY2wuYycsCisgICdwZ19wZXJpb2QuYycsCiAgICdw Z19wcm9jLmMnLAogICAncGdfcHVibGljYXRpb24uYycsCiAgICdwZ19yYW5nZS5jJywKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggOGJiMjkyNGI5Y2QuLjg1OTdi MGNjMmFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3Mu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtNDcsNiAr NDcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJf YWNsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3BvbGljeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKQEAgLTczNiw2ICs3MzcsMTAgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlwZV9tYXAKIAl7CiAJCSJkb21haW4gY29uc3Ry YWludCIsIE9CSkVDVF9ET01DT05TVFJBSU5UCiAJfSwKKwkvKiBPQ0xBU1NfUEVSSU9EICov CisJeworCQkicGVyaW9kIiwgT0JKRUNUX1BFUklPRAorCX0sCiAJLyogT0NMQVNTX0NPTlZF UlNJT04gKi8KIAl7CiAJCSJjb252ZXJzaW9uIiwgT0JKRUNUX0NPTlZFUlNJT04KQEAgLTEw MTQsNiArMTAxOSw3IEBAIGdldF9vYmplY3RfYWRkcmVzcyhPYmplY3RUeXBlIG9ianR5cGUs IE5vZGUgKm9iamVjdCwKIAkJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCQljYXNlIE9CSkVD VF9UQUJDT05TVFJBSU5UOgogCQkJY2FzZSBPQkpFQ1RfUE9MSUNZOgorCQkJY2FzZSBPQkpF Q1RfUEVSSU9EOgogCQkJCWFkZHJlc3MgPSBnZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0 KG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9iamVjdCksCiAJCQkJCQkJCQkJCQkJICAgJnJl bGF0aW9uLCBtaXNzaW5nX29rKTsKIAkJCQlicmVhazsKQEAgLTE1MTIsNiArMTUxOCwxMyBA QCBnZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0KE9iamVjdFR5cGUgb2JqdHlwZSwgTGlz dCAqb2JqZWN0LAogCQkJCUludmFsaWRPaWQ7CiAJCQlhZGRyZXNzLm9iamVjdFN1YklkID0g MDsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9QRVJJT0Q6CisJCQlhZGRyZXNzLmNsYXNz SWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQkJYWRkcmVzcy5vYmplY3RJZCA9IHJlbGF0aW9u ID8KKwkJCQlnZXRfcmVsYXRpb25fcGVyaW9kX29pZChyZWxvaWQsIGRlcG5hbWUsIG1pc3Np bmdfb2spIDoKKwkJCQlJbnZhbGlkT2lkOworCQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg b2JqZWN0IHR5cGU6ICVkIiwgKGludCkgb2JqdHlwZSk7CiAJfQpAQCAtMjMyOSw2ICsyMzQy LDcgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2Ug T0JKRUNUX1JVTEU6CiAJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1RB QkNPTlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfT1BD TEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CiAJCQlvYmpub2RlID0gKE5vZGUgKikg bmFtZTsKQEAgLTI0MzksNiArMjQ1Myw3IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lk IHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBlLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJ CWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBP QkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJaWYgKCFv YmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQo cmVsYXRpb24pLCByb2xlaWQpKQogCQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9P V05FUiwgb2JqdHlwZSwKIAkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxh dGlvbikpOwpAQCAtMzA4Nyw2ICszMTAyLDM4IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNv bnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJCWJyZWFr OwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJ cGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9kIHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJj aFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2Jq ZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQor CQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwK KwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2Qp IEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJaWYgKE9pZElzVmFsaWQocGVyLT5wZXJyZWxp ZCkpCisJCQkJeworCQkJCQlTdHJpbmdJbmZvRGF0YSByZWw7CisKKwkJCQkJaW5pdFN0cmlu Z0luZm8oJnJlbCk7CisJCQkJCWdldFJlbGF0aW9uRGVzY3JpcHRpb24oJnJlbCwgcGVyLT5w ZXJyZWxpZCwgZmFsc2UpOworCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBl cmlvZCAlcyBvbiAlcyIpLAorCQkJCQkJCQkJIE5hbWVTdHIocGVyLT5wZXJuYW1lKSwgcmVs LmRhdGEpOworCQkJCQlwZnJlZShyZWwuZGF0YSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7 CisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgXygicGVyaW9kICVzIiksCisJCQkJ CQkJCQkgTmFtZVN0cihwZXItPnBlcm5hbWUpKTsKKwkJCQl9CisKKwkJCQlSZWxlYXNlU3lz Q2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05W RVJTSU9OOgogCQkJewogCQkJCUhlYXBUdXBsZQljb25UdXA7CkBAIC00NDUxLDYgKzQ0OTgs MTAgQEAgZ2V0T2JqZWN0VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9i amVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJCQkJCQkJCSBtaXNzaW5nX29rKTsKIAkJCWJy ZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmJ1ZmZlciwgInBlcmlvZCIpOworCQkJYnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfQ09O VkVSU0lPTjoKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgImNvbnZlcnNp b24iKTsKIAkJCWJyZWFrOwpAQCAtNDk1OCw2ICs1MDA5LDI4IEBAIGdldE9iamVjdElkZW50 aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJ fQogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVw OworCQkJCUZvcm1fcGdfcGVyaW9kIHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0Nh Y2hlMShQRVJJT0RPSUQsCisJCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5v YmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJ CSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNU UlVDVChwZXJUdXApOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24g IiwKKwkJCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7 CisJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgmYnVmZmVyLCBwZXItPnBlcnJlbGlkLCBvYmpu YW1lLCBmYWxzZSk7CisJCQkJaWYgKG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0gbGFwcGVu ZCgqb2JqbmFtZSwgcHN0cmR1cChOYW1lU3RyKHBlci0+cGVybmFtZSkpKTsKKworCQkJCVJl bGVhc2VTeXNDYWNoZShwZXJUdXApOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NM QVNTX0NPTlZFUlNJT046CiAJCQl7CiAJCQkJSGVhcFR1cGxlCWNvblR1cDsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3BlcmlvZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li40NjViNWI2NzVlMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcGVyaW9kLmMKQEAgLTAsMCArMSwxMzIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHBnX3BlcmlvZC5jCisgKgkgIHJvdXRpbmVzIHRvIHN1cHBvcnQgbWFuaXB1bGF0 aW9uIG9mIHRoZSBwZ19wZXJpb2QgcmVsYXRpb24KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wZXJpb2QuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAi cG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1ZGUgImFj Y2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9k LmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNj YWNoZS5oIgorCisKKy8qCisgKiBEZWxldGUgYSBzaW5nbGUgcGVyaW9kIHJlY29yZC4KKyAq Lwordm9pZAorUmVtb3ZlUGVyaW9kQnlJZChPaWQgcGVyaW9kSWQpCit7CisJUmVsYXRpb24J cGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXA7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVu KFBlcmlvZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJdHVwID0gU2VhcmNo U3lzQ2FjaGUxKFBFUklPRE9JRCwgT2JqZWN0SWRHZXREYXR1bShwZXJpb2RJZCkpOworCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKSAvKiBzaG91bGQgbm90IGhhcHBlbiAqLworCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwgcGVyaW9k SWQpOworCisJLyogRnJ5IHRoZSBwZXJpb2QgaXRzZWxmICovCisJQ2F0YWxvZ1R1cGxlRGVs ZXRlKHBnX3BlcmlvZCwgJnR1cC0+dF9zZWxmKTsKKworCS8qIENsZWFuIHVwICovCisJUmVs ZWFzZVN5c0NhY2hlKHR1cCk7CisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNp dmVMb2NrKTsKK30KKworLyoKKyAqIGdldF9yZWxhdGlvbl9wZXJpb2Rfb2lkCisgKgkJRmlu ZCBhIHBlcmlvZCBvbiB0aGUgc3BlY2lmaWVkIHJlbGF0aW9uIHdpdGggdGhlIHNwZWNpZmll ZCBuYW1lLgorICoJCVJldHVybnMgcGVyaW9kJ3MgT0lELgorICovCitPaWQKK2dldF9yZWxh dGlvbl9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVybmFtZSwgYm9vbCBt aXNzaW5nX29rKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7 CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBza2V5WzJdOworCU9pZAkJCXBl ck9pZCA9IEludmFsaWRPaWQ7CisKKwkvKiBGZXRjaCB0aGUgcGVyaW9kIHR1cGxlIGZyb20g cGdfcGVyaW9kLiAqLworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25J ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZza2V5WzBdLAorCQkJCUFu dW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9P SURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CisJU2NhbktleUluaXQoJnNr ZXlbMV0sCisJCQkJQW51bV9wZ19wZXJpb2RfcGVybmFtZSwKKwkJCQlCVEVxdWFsU3RyYXRl Z3lOdW1iZXIsIEZfTkFNRUVRLAorCQkJCUNTdHJpbmdHZXREYXR1bShwZXJuYW1lKSk7CisK KwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3BlcmlvZCwgUGVyaW9kUmVsaWROYW1l SW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDIsIHNrZXkpOworCisJLyogVGhlcmUg Y2FuIGJlIGF0IG1vc3Qgb25lIG1hdGNoaW5nIHJvdyAqLworCWlmIChIZWFwVHVwbGVJc1Zh bGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJCXBlck9pZCA9ICgoRm9y bV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0dXBsZSkpLT5vaWQ7CisKKwlzeXN0YWJsZV9lbmRz Y2FuKHNjYW4pOworCisJLyogSWYgbm8gc3VjaCBwZXJpb2QgZXhpc3RzLCBjb21wbGFpbiAq LworCWlmICghT2lkSXNWYWxpZChwZXJPaWQpICYmICFtaXNzaW5nX29rKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJ IGVycm1zZygicGVyaW9kIFwiJXNcIiBmb3IgdGFibGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwKKwkJCQkJCXBlcm5hbWUsIGdldF9yZWxfbmFtZShyZWxpZCkpKSk7CisKKwl0YWJsZV9j bG9zZShwZ19wZXJpb2QsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gcGVyT2lkOwor fQorCisvKgorICogZ2V0X3BlcmlvZF9hdHRub3MKKyAqCQlHZXQgdGhlIGF0dG5vIG9mIHRo ZSBHRU5FUkFURUQgcmFuZ2V0eXBlIGNvbHVtbgorICoJCWZvciBhbGwgUEVSSU9EcyBpbiB0 aGlzIHRhYmxlLgorICovCitleHRlcm4gQml0bWFwc2V0CisqZ2V0X3BlcmlvZF9hdHRub3Mo T2lkIHJlbGlkKQoreworCUJpdG1hcHNldCAqYXR0bm9zID0gTlVMTDsKKwlSZWxhdGlvbglw Z19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2Nh bktleURhdGEgc2tleVsxXTsKKworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVs YXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZza2V5WzBdLAor CQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJl ciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CisKKwlzY2FuID0g c3lzdGFibGVfYmVnaW5zY2FuKHBnX3BlcmlvZCwgUGVyaW9kUmVsaWROYW1lSW5kZXhJZCwg dHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDEsIHNrZXkpOworCisJd2hpbGUgKEhlYXBUdXBsZUlz VmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdf cGVyaW9kIHBlcmlvZCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHR1cGxlKTsKKwor CQlhdHRub3MgPSBibXNfYWRkX21lbWJlcihhdHRub3MsIHBlcmlvZC0+cGVycmFuZ2UpOwor CX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocGdfcGVyaW9k LCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGF0dG5vczsKK30KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAppbmRleCA4MGM0MGVhZjU3OC4uMmMxZDFhMTBhN2Mg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAorKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKQEAgLTQ0OSw3ICs0NDks NyBAQCBUMTc2CVNlcXVlbmNlIGdlbmVyYXRvciBzdXBwb3J0CQkJTk8Jc3VwcG9ydGVkIGV4 Y2VwdCBmb3IgTkVYVCBWQUxVRSBGT1IKIFQxNzcJU2VxdWVuY2UgZ2VuZXJhdG9yIHN1cHBv cnQ6IHNpbXBsZSByZXN0YXJ0IG9wdGlvbgkJCVlFUwkKIFQxNzgJSWRlbnRpdHkgY29sdW1u czogc2ltcGxlIHJlc3RhcnQgb3B0aW9uCQkJWUVTCQogVDE4MAlTeXN0ZW0tdmVyc2lvbmVk IHRhYmxlcwkJCU5PCQotVDE4MQlBcHBsaWNhdGlvbi10aW1lIHBlcmlvZCB0YWJsZXMJCQlO TwkKK1QxODEJQXBwbGljYXRpb24tdGltZSBwZXJpb2QgdGFibGVzCQkJWUVTCQogVDE5MQlS ZWZlcmVudGlhbCBhY3Rpb24gUkVTVFJJQ1QJCQlZRVMJCiBUMjAwCVRyaWdnZXIgRERMCQkJ Tk8Jc2ltaWxhciBidXQgbm90IGZ1bGx5IGNvbXBhdGlibGUKIFQyMDEJQ29tcGFyYWJsZSBk YXRhIHR5cGVzIGZvciByZWZlcmVudGlhbCBjb25zdHJhaW50cwkJCVlFUwkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9hbHRlci5jCmluZGV4IGIyZTQyNjBhZWY3Li4zNDY3YjY4YzBjNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9hbHRlci5jCkBAIC02NjksNiArNjY5LDcgQEAgQWx0ZXJPYmplY3ROYW1lc3BhY2Vfb2lk KE9pZCBjbGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BPaWQsCiAKIAkJY2FzZSBPQ0xBU1Nf Q0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVSSU9E OgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNlIE9DTEFTU19MQU5HVUFHRToKIAkJ Y2FzZSBPQ0xBU1NfTEFSR0VPQkpFQ1Q6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb21tZW50LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMKaW5kZXgg ZTlkNTBmYzdkODcuLjA1ZmVmYjViNWNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb21tZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCkBA IC0xMDIsNiArMTAyLDE2IEBAIENvbW1lbnRPYmplY3QoQ29tbWVudFN0bXQgKnN0bXQpCiAJ CQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSksCiAJCQkJCQkgZXJy ZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5k KSkpOwogCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgorCQkJLyogUGVyaW9k cyBjYW4gb25seSBnbyBvbiB0YWJsZXMgKi8KKwkJCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5y ZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04pCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkJIGVycm1zZygi XCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWJyZWFrOwog CX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCmluZGV4IDg3YTJkYjRlMGY1Li40YWU5OTIx ZDNjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCkBAIC01MDksNiArNTA5LDcgQEAg ZG9lc19ub3RfZXhpc3Rfc2tpcHBpbmcoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmpl Y3QpCiAJCWNhc2UgT0JKRUNUX0RPTUNPTlNUUkFJTlQ6CiAJCWNhc2UgT0JKRUNUX0xBUkdF T0JKRUNUOgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9CSkVDVF9Q RVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJY2FzZSBP QkpFQ1RfUFVCTElDQVRJT05fUkVMOgogCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmluZGV4IGIxNDZkMmFhZjQ0Li5j ZjVhYTUzODZhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAt MTEzOCw2ICsxMTM4LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RUeXBlKE9iamVj dFR5cGUgb2J0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9P UEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2UgT0JKRUNUX1BFUklP RDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9QUk9DRURVUkU6CiAJ CWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgpAQCAtMTE5Niw2ICsxMTk3LDcgQEAgRXZlbnRU cmlnZ2VyU3VwcG9ydHNPYmplY3RDbGFzcyhPYmplY3RDbGFzcyBvYmpjbGFzcykKIAkJY2Fz ZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09MTEFUSU9OOgogCQljYXNlIE9DTEFT U19DT05TVFJBSU5UOgorCQljYXNlIE9DTEFTU19QRVJJT0Q6CiAJCWNhc2UgT0NMQVNTX0NP TlZFUlNJT046CiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCWNhc2UgT0NMQVNTX0xBTkdV QUdFOgpAQCAtMjIzNyw2ICsyMjM5LDcgQEAgc3RyaW5naWZ5X2dyYW50X29ianR5cGUoT2Jq ZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVD VF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2UgT0JKRUNUX1BF UklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElP TjoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNFOgpAQCAtMjMyMSw2ICsy MzI0LDcgQEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlw ZSkKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgog CQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJ CWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCWNh c2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJl bC5jCmluZGV4IDU2MDcyNzNiZjlmLi5hZjcxNzcxNzljZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9z ZWNsYWJlbC5jCkBAIC03OSw2ICs3OSw3IEBAIFNlY0xhYmVsU3VwcG9ydHNPYmplY3RUeXBl KE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2Ug T0JKRUNUX09QRkFNSUxZOgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNl IE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1Rf UFVCTElDQVRJT05fTkFNRVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDE0MjI2NjMyZGU0Li5mMDFiMTIy MDQ2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTQ0LDYgKzQ0LDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Rh dGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5oIgpAQCAtMTUzLDYgKzE1NCwxMSBAQCB0eXBl ZGVmIGVudW0gQWx0ZXJUYWJsZVBhc3MKIAlBVF9QQVNTX09MRF9JTkRFWCwJCQkvKiByZS1h ZGQgZXhpc3RpbmcgaW5kZXhlcyAqLwogCUFUX1BBU1NfT0xEX0NPTlNUUiwJCQkvKiByZS1h ZGQgZXhpc3RpbmcgY29uc3RyYWludHMgKi8KIAkvKiBXZSBjb3VsZCBzdXBwb3J0IGEgUkVO QU1FIENPTFVNTiBwYXNzIGhlcmUsIGJ1dCBub3QgY3VycmVudGx5IHVzZWQgKi8KKwkvKgor CSAqIFdlIG11c3QgYWRkIFBFUklPRHMgYWZ0ZXIgY29sdW1ucywgaW4gY2FzZSB0aGV5IHJl ZmVyZW5jZSBhIG5ld2x5LWFkZGVkIGNvbHVtbiwKKwkgKiBhbmQgYmVmb3JlIGNvbnN0cmFp bnRzLCBpbiBjYXNlIGEgbmV3bHktYWRkZWQgUEsvRksgcmVmZXJlbmNlcyB0aGVtLgorCSAq LworCUFUX1BBU1NfQUREX1BFUklPRCwJCQkvKiBBREQgUEVSSU9EICovCiAJQVRfUEFTU19B RERfQ09OU1RSLAkJCS8qIEFERCBjb25zdHJhaW50cyAoaW5pdGlhbCBleGFtaW5hdGlvbikg Ki8KIAlBVF9QQVNTX0NPTF9BVFRSUywJCQkvKiBzZXQgY29sdW1uIGF0dHJpYnV0ZXMsIGVn IE5PVCBOVUxMICovCiAJQVRfUEFTU19BRERfSU5ERVhDT05TVFIsCS8qIEFERCBpbmRleC1i YXNlZCBjb25zdHJhaW50cyAqLwpAQCAtMzYyLDYgKzM2OCw3IEBAIHN0YXRpYyB2b2lkIFJh bmdlVmFyQ2FsbGJhY2tGb3JUcnVuY2F0ZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiBz dGF0aWMgTGlzdCAqTWVyZ2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3Qg KnN1cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRp b24sIExpc3QgKipzdXBjb25zdHIsCiAJCQkJCQkJIExpc3QgKipzdXBub3RudWxscyk7Citz dGF0aWMgTGlzdCAqTWVyZ2VQZXJpb2RzKGNoYXIgKnJlbG5hbWUsIExpc3QgKnBlcmlvZHMs IExpc3QgKnRhYmxlRWx0cywgTGlzdCAqc3VwZXJzKTsKIHN0YXRpYyBMaXN0ICpNZXJnZUNo ZWNrQ29uc3RyYWludChMaXN0ICpjb25zdHJhaW50cywgY29uc3QgY2hhciAqbmFtZSwgTm9k ZSAqZXhwcik7CiBzdGF0aWMgdm9pZCBNZXJnZUF0dHJpYnV0ZXNJbnRvRXhpc3RpbmcoUmVs YXRpb24gY2hpbGRfcmVsLCBSZWxhdGlvbiBwYXJlbnRfcmVsKTsKIHN0YXRpYyB2b2lkIE1l cmdlQ29uc3RyYWludHNJbnRvRXhpc3RpbmcoUmVsYXRpb24gY2hpbGRfcmVsLCBSZWxhdGlv biBwYXJlbnRfcmVsKTsKQEAgLTQ0Myw2ICs0NTAsOCBAQCBzdGF0aWMgT2JqZWN0QWRkcmVz cyBBVEV4ZWNBZGRDb2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFi LAogCQkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiBzdGF0 aWMgYm9vbCBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwg Y29uc3QgY2hhciAqY29sbmFtZSwKIAkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsK K3N0YXRpYyBib29sIGNoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24g cmVsLCBjb25zdCBjaGFyICpwZXJuYW1lLAorCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlz dHMpOwogc3RhdGljIHZvaWQgYWRkX2NvbHVtbl9kYXRhdHlwZV9kZXBlbmRlbmN5KE9pZCBy ZWxpZCwgaW50MzIgYXR0bnVtLCBPaWQgdHlwaWQpOwogc3RhdGljIHZvaWQgYWRkX2NvbHVt bl9jb2xsYXRpb25fZGVwZW5kZW5jeShPaWQgcmVsaWQsIGludDMyIGF0dG51bSwgT2lkIGNv bGxpZCk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNEcm9wTm90TnVsbChSZWxhdGlv biByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsIGJvb2wgcmVjdXJzZSwKQEAgLTQ2Miw2ICs0 NzEsMTIgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxh dGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJCQkJCQkJIE5vZGUgKm5ld0Rl ZmF1bHQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhl Y0Nvb2tlZENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwK IAkJCQkJCQkJCQkJICAgTm9kZSAqbmV3RGVmYXVsdCk7CitzdGF0aWMgT2JqZWN0QWRkcmVz cyBBVEV4ZWNBZGRQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwKKwkJ CQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZv aWQgQVRFeGVjRHJvcFBlcmlvZChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcmlvZE5h bWUsCisJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJCQkgYm9vbCByZWN1 cnNlLCBib29sIHJlY3Vyc2luZywKKwkJCQkJCQkgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRp YyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3Qg Y2hhciAqY29sTmFtZSwKIAkJCQkJCQkJCSAgIE5vZGUgKmRlZiwgTE9DS01PREUgbG9ja21v ZGUpOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjU2V0SWRlbnRpdHkoUmVsYXRpb24g cmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLApAQCAtNjc0LDYgKzY4OSwxMCBAQCBzdGF0aWMg TGlzdCAqR2V0UGFyZW50ZWRGb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwog c3RhdGljIHZvaWQgQVREZXRhY2hDaGVja05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFy dGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0 eXBpZCwgY29uc3QgY2hhciAqY29tcHJlc3Npb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmli dXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKK3N0 YXRpYyB2b2lkIEFkZFJlbGF0aW9uTmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVm ICpwZXJpb2QpOworc3RhdGljIHZvaWQgVmFsaWRhdGVQZXJpb2QoUmVsYXRpb24gcmVsLCBQ ZXJpb2REZWYgKnBlcmlvZCk7CitzdGF0aWMgQ29uc3RyYWludCAqbWFrZV9jb25zdHJhaW50 X2Zvcl9wZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7CitzdGF0aWMg Q29sdW1uRGVmICptYWtlX3JhbmdlX2NvbHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVy aW9kKTsKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05MDIsNiArOTIxLDI2IEBAIERlZmluZVJl bGF0aW9uKENyZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJ CQkJCQlzdG10LT5wYXJ0Ym91bmQgIT0gTlVMTCwKIAkJCQkJCSZvbGRfY29uc3RyYWludHMs ICZvbGRfbm90bnVsbHMpOwogCisJLyoKKwkgKiBVc2luZyB0aGUgY29sdW1uIGxpc3QgKGlu Y2x1ZGluZyBpbmhlcml0ZWQgY29sdW1ucyksCisJICogZmluZCB0aGUgc3RhcnQvZW5kIGNv bHVtbnMgZm9yIGVhY2ggcGVyaW9kLgorCSAqIFBFUklPRHMgc2hvdWxkIGJlIGluaGVyaXRl ZCB0b28gKGJ1dCBhcmVuJ3QgeWV0KS4KKwkgKi8KKwlzdG10LT5wZXJpb2RzID0gTWVyZ2VQ ZXJpb2RzKHJlbG5hbWUsIHN0bXQtPnBlcmlvZHMsIHN0bXQtPnRhYmxlRWx0cywgaW5oZXJp dE9pZHMpOworCisJLyoKKwkgKiBGb3IgZWFjaCBQRVJJT0Qgd2UgbmVlZCB0byBjcmVhdGUg YSBHRU5FUkFURUQgY29sdW1uLAorCSAqIHNvIGFkZCB0aG9zZSB0byB0YWJsZUVsdHMuCisJ ICogVGhlc2UgY29sdW1ucyBhcmUgbm90IGluaGVyaXRlZCwKKwkgKiBzbyB3ZSBkb24ndCB3 b3JyeSBhYm91dCBjb25mbGljdHMgaW4gdGFibGVFbHRzLgorCSAqLworCWZvcmVhY2gobGlz dHB0ciwgc3RtdC0+cGVyaW9kcykKKwl7CisJCVBlcmlvZERlZiAqcGVyaW9kID0gKFBlcmlv ZERlZiAqKSBsZmlyc3QobGlzdHB0cik7CisJCUNvbHVtbkRlZiAqY29sID0gbWFrZV9yYW5n ZV9jb2x1bW5fZm9yX3BlcmlvZChwZXJpb2QpOworCQlzdG10LT50YWJsZUVsdHMgPSBsYXBw ZW5kKHN0bXQtPnRhYmxlRWx0cywgY29sKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhIHR1 cGxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgcmVsYXRpb24gc2NoZW1hLiAgTm90ZSB0aGF0IHRo aXMKIAkgKiBkZWFscyB3aXRoIGNvbHVtbiBuYW1lcywgdHlwZXMsIGFuZCBpbi1kZXNjcmlw dG9yIE5PVCBOVUxMIGZsYWdzLCBidXQKQEAgLTEyODcsNiArMTMyNiwyMSBAQCBEZWZpbmVS ZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAog CWZvcmVhY2gobGlzdHB0ciwgbm5jb2xzKQogCQlzZXRfYXR0bm90bnVsbChOVUxMLCByZWws IGxmaXJzdF9pbnQobGlzdHB0ciksIGZhbHNlLCBOb0xvY2spOwogCisJLyoKKwkgKiBDcmVh dGUgcGVyaW9kcyBmb3IgdGhlIHRhYmxlLiBUaGlzIG11c3QgY29tZSBhZnRlciB3ZSBjcmVh dGUgY29sdW1ucworCSAqIGFuZCBiZWZvcmUgd2UgY3JlYXRlIGluZGV4IGNvbnN0cmFpbnRz LiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlCisJICogYSBDSEVDSyBjb25zdHJhaW50 IGZvciB0aGUgcGVyaW9kLgorCSAqLworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+cGVyaW9k cykKKwl7CisJCVBlcmlvZERlZiAqcGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmlyc3QobGlz dHB0cik7CisKKwkJLyogRG9uJ3QgdXBkYXRlIHRoZSBjb3VudCBvZiBjaGVjayBjb25zdHJh aW50cyB0d2ljZSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJCUFkZFJl bGF0aW9uTmV3UGVyaW9kKHJlbCwgcGVyaW9kKTsKKwl9CisKIAlPYmplY3RBZGRyZXNzU2V0 KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsYXRpb25JZCk7CiAKIAkvKgpAQCAt MTQwMyw2ICsxNDU3LDI2NCBAQCBCdWlsZERlc2NGb3JSZWxhdGlvbihjb25zdCBMaXN0ICpj b2x1bW5zKQogCXJldHVybiBkZXNjOwogfQogCisvKgorICogbWFrZV9jb25zdHJhaW50X2Zv cl9wZXJpb2QKKyAqCisgKiBCdWlsZHMgYSBDSEVDSyBDb25zdHJhaW50IHRvIGVuc3VyZSBz dGFydCA8IGVuZC4KKyAqIFJldHVybnMgdGhlIENIRUNLIENvbnN0cmFpbnQuCisgKiBBbHNv IGZpbGxzIGluIHBlcmlvZC0+Y29uc3RyYWludG5hbWUgaWYgbmVlZGVkLgorICovCitzdGF0 aWMgQ29uc3RyYWludCAqCittYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChSZWxhdGlvbiBy ZWwsIFBlcmlvZERlZiAqcGVyaW9kKQoreworCUNvbHVtblJlZiAgKnNjb2wsICplY29sOwor CUNvbnN0cmFpbnQgKmNvbnN0cjsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZTsKKworCWlmIChw ZXJpb2QtPmNvbnN0cmFpbnRuYW1lID09IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5h bWUgPSBDaG9vc2VDb25zdHJhaW50TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp LAorCQkJCQkJCQkJCQkJCSAgcGVyaW9kLT5wZXJpb2RuYW1lLAorCQkJCQkJCQkJCQkJCSAg ImNoZWNrIiwKKwkJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCksCisJ CQkJCQkJCQkJCQkJICBOSUwpOworCXNjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCXNj b2wtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+c3Rh cnRjb2xuYW1lKSkpOworCXNjb2wtPmxvY2F0aW9uID0gMDsKKworCWVjb2wgPSBtYWtlTm9k ZShDb2x1bW5SZWYpOworCWVjb2wtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhw c3RyZHVwKHBlcmlvZC0+ZW5kY29sbmFtZSkpKTsKKwllY29sLT5sb2NhdGlvbiA9IDA7CisK Kwl0eXBlID0gbG9va3VwX3R5cGVfY2FjaGUocGVyaW9kLT5jb2x0eXBpZCwgVFlQRUNBQ0hF X0xUX09QUik7CisJaWYgKHR5cGUtPmx0X29wciA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGNhbm5vdCBiZSB1c2VkIGluIGEgUEVSSU9E IGJlY2F1c2UgaXRzIHR5cGUgJXMgaGFzIG5vIGxlc3MgdGhhbiBvcGVyYXRvciIsCisJCQkJ CQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgZm9ybWF0X3R5cGVfYmUocGVyaW9kLT5jb2x0eXBp ZCkpKSk7CisKKwljb25zdHIgPSBtYWtlTm9kZShDb25zdHJhaW50KTsKKwljb25zdHItPmNv bnR5cGUgPSBDT05TVFJfQ0hFQ0s7CisJY29uc3RyLT5jb25uYW1lID0gcGVyaW9kLT5jb25z dHJhaW50bmFtZTsKKwljb25zdHItPmRlZmVycmFibGUgPSBmYWxzZTsKKwljb25zdHItPmlu aXRkZWZlcnJlZCA9IGZhbHNlOworCWNvbnN0ci0+bG9jYXRpb24gPSAtMTsKKwljb25zdHIt PmlzX25vX2luaGVyaXQgPSBmYWxzZTsKKwljb25zdHItPnJhd19leHByID0gKE5vZGUgKikg bWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwKKwkJCQkJCQkJCQkJCSBnZXRfb3BuYW1lKHR5 cGUtPmx0X29wciksCisJCQkJCQkJCQkJCQkgKE5vZGUgKikgc2NvbCwKKwkJCQkJCQkJCQkJ CSAoTm9kZSAqKSBlY29sLAorCQkJCQkJCQkJCQkJIDApOworCWNvbnN0ci0+Y29va2VkX2V4 cHIgPSBOVUxMOworCWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uID0gZmFsc2U7CisJY29uc3Ry LT5pbml0aWFsbHlfdmFsaWQgPSB0cnVlOworCisJcmV0dXJuIGNvbnN0cjsKK30KKworLyoK KyAqIG1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJpb2QKKyAqCisgKiBCdWlsZHMgYSBHRU5F UkFURUQgQUxXQVlTIHJhbmdlIGNvbHVtbiBiYXNlZCBvbiB0aGUgUEVSSU9ECisgKiBzdGFy dC9lbmQgY29sdW1ucy4gUmV0dXJucyB0aGUgQ29sdW1uRGVmLgorICovCitDb2x1bW5EZWYg KgorbWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChQZXJpb2REZWYgKnBlcmlvZCkKK3sK KwljaGFyICpyYW5nZV90eXBlX25hbWVzcGFjZTsKKwljaGFyICpyYW5nZV90eXBlX25hbWU7 CisJQ29sdW1uRGVmICpjb2wgPSBtYWtlTm9kZShDb2x1bW5EZWYpOworCUNvbHVtblJlZiAq c3RhcnR2YXIsICplbmR2YXI7CisJRXhwciAqcmFuZ2VDb25zdHJ1Y3RvcjsKKworCWlmICgh Z2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZShwZXJpb2QtPnJuZ3R5cGlkLCAmcmFuZ2VfdHlw ZV9uYW1lLCAmcmFuZ2VfdHlwZV9uYW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2lu ZyByYW5nZSB0eXBlICVkIiwgcGVyaW9kLT5ybmd0eXBpZCk7CisKKwlzdGFydHZhciA9IG1h a2VOb2RlKENvbHVtblJlZik7CisJc3RhcnR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFr ZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOworCWVuZHZhciA9IG1h a2VOb2RlKENvbHVtblJlZik7CisJZW5kdmFyLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VT dHJpbmcocHN0cmR1cChwZXJpb2QtPmVuZGNvbG5hbWUpKSk7CisJcmFuZ2VDb25zdHJ1Y3Rv ciA9IChFeHByICopIG1ha2VGdW5jQ2FsbCgKKwkJCWxpc3RfbWFrZTIobWFrZVN0cmluZyhy YW5nZV90eXBlX25hbWVzcGFjZSksIG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lKSksCisJ CQlsaXN0X21ha2UyKHN0YXJ0dmFyLCBlbmR2YXIpLAorCQkJQ09FUkNFX0VYUExJQ0lUX0NB TEwsCisJCQlwZXJpb2QtPmxvY2F0aW9uKTsKKworCWNvbC0+Y29sbmFtZSA9IHBzdHJkdXAo cGVyaW9kLT5wZXJpb2RuYW1lKTsKKwljb2wtPnR5cGVOYW1lID0gbWFrZVR5cGVOYW1lKHJh bmdlX3R5cGVfbmFtZSk7CisJY29sLT5jb21wcmVzc2lvbiA9IE5VTEw7CisJY29sLT5pbmhj b3VudCA9IDA7CisJY29sLT5pc19sb2NhbCA9IHRydWU7CisJY29sLT5pc19ub3RfbnVsbCA9 IHRydWU7CisJY29sLT5pc19mcm9tX3R5cGUgPSBmYWxzZTsKKwljb2wtPnN0b3JhZ2UgPSAw OworCWNvbC0+c3RvcmFnZV9uYW1lID0gTlVMTDsKKwljb2wtPnJhd19kZWZhdWx0ID0gKE5v ZGUgKikgcmFuZ2VDb25zdHJ1Y3RvcjsKKwljb2wtPmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsK Kwljb2wtPmlkZW50aXR5ID0gMDsKKwljb2wtPmdlbmVyYXRlZCA9IEFUVFJJQlVURV9HRU5F UkFURURfU1RPUkVEOworCWNvbC0+Y29sbENsYXVzZSA9IE5VTEw7CisJY29sLT5jb2xsT2lk ID0gSW52YWxpZE9pZDsKKwljb2wtPmZkd29wdGlvbnMgPSBOSUw7CisJY29sLT5sb2NhdGlv biA9IHBlcmlvZC0+bG9jYXRpb247CisKKwlyZXR1cm4gY29sOworfQorCisvKgorICogVmFs aWRhdGVQZXJpb2QKKyAqCisgKiBMb29rIHVwIHRoZSBhdHRyaWJ1dGVzIHVzZWQgYnkgdGhl IFBFUklPRCwKKyAqIG1ha2Ugc3VyZSB0aGV5IGV4aXN0LCBhcmUgbm90IHN5c3RlbSBjb2x1 bW5zLAorICogYW5kIGhhdmUgdGhlIHNhbWUgdHlwZSBhbmQgY29sbGF0aW9uLgorICoKKyAq IFlvdSBtdXN0IGhhdmUgYSBSb3dFeGNsdXNpdmVMb2NrIG9uIHBnX2F0dHJpYnV0ZQorICog YmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAqCisgKiBBZGQgb3VyIGZpbmRpbmdz IHRvIHRoZXNlIFBlcmlvZERlZiBmaWVsZHM6CisgKgorICogY29sdHlwaWQgLSB0aGUgdHlw ZSBvZiBQRVJJT0QgY29sdW1ucy4KKyAqIHN0YXJ0YXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0 aGUgc3RhcnQgY29sdW1uLgorICogZW5kYXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgZW5k IGNvbHVtbi4KKyAqLworc3RhdGljIHZvaWQKK1ZhbGlkYXRlUGVyaW9kKFJlbGF0aW9uIHJl bCwgUGVyaW9kRGVmICpwZXJpb2QpCit7CisJSGVhcFR1cGxlIHN0YXJ0dHVwbGU7CisJSGVh cFR1cGxlIGVuZHR1cGxlOworCUZvcm1fcGdfYXR0cmlidXRlCWF0dHR1cGxlOworCU9pZAlh dHRjb2xsYXRpb247CisKKwkvKiBGaW5kIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlzdGFydHR1 cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCks IHBlcmlvZC0+c3RhcnRjb2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoc3RhcnR0 dXBsZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklO RURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwi JXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwlhdHR0dXBsZSA9IChGb3JtX3BnX2F0 dHJpYnV0ZSkgR0VUU1RSVUNUKHN0YXJ0dHVwbGUpOworCXBlcmlvZC0+Y29sdHlwaWQgPSBh dHR0dXBsZS0+YXR0dHlwaWQ7CisJYXR0Y29sbGF0aW9uID0gYXR0dHVwbGUtPmF0dGNvbGxh dGlvbjsKKwlwZXJpb2QtPnN0YXJ0YXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8q IE1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5z dGFydGF0dG51bSA8PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVz ZSBzeXN0ZW0gY29sdW1uIFwiJXNcIiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5zdGFy dGNvbG5hbWUpKSk7CisKKwkvKiBGaW5kIHRoZSBlbmQgY29sdW1uICovCisJZW5kdHVwbGUg PSBTZWFyY2hTeXNDYWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVy aW9kLT5lbmRjb2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZW5kdHVwbGUpKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVN TiksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9l cyBub3QgZXhpc3QiLAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBH RVRTVFJVQ1QoZW5kdHVwbGUpOworCXBlcmlvZC0+ZW5kYXR0bnVtID0gYXR0dHVwbGUtPmF0 dG51bTsKKworCS8qIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlp ZiAocGVyaW9kLT5lbmRhdHRudW0gPD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2co ImNhbm5vdCB1c2Ugc3lzdGVtIGNvbHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBl cmlvZC0+ZW5kY29sbmFtZSkpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNh bWUgdHlwZSAqLworCWlmIChwZXJpb2QtPmNvbHR5cGlkICE9IGF0dHR1cGxlLT5hdHR0eXBp ZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01J U01BVENIKSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9k IG11c3QgYmUgb2Ygc2FtZSB0eXBlIikpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGhh dmUgdGhlIHNhbWUgY29sbGF0aW9uICovCisJaWYgKGF0dGNvbGxhdGlvbiAhPSBhdHR0dXBs ZS0+YXR0Y29sbGF0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfQ09MTEFUSU9OX01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNv bHVtbnMgb2YgcGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwloZWFw X2ZyZWV0dXBsZShzdGFydHR1cGxlKTsKKwloZWFwX2ZyZWV0dXBsZShlbmR0dXBsZSk7Cit9 CisKKy8qCisgKiBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QKKyAqCisgKiBGaW5kIGEg c3VpdGFibGUgcmFuZ2UgdHlwZSBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgdGhpcyBwZXJp b2QuCisgKiBVc2UgdGhlIHJhbmdldHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lz ZSB0cnkgdG8gZmluZCBhCisgKiBub24tYW1iaWd1b3VzIGV4aXN0aW5nIHR5cGUuCisgKi8K Ky8vIFRPRE86IFRoaXMgY291bGQgYmUgc3RhdGljIG5vdworT2lkCitjaG9vc2VfcmFuZ2V0 eXBlX2Zvcl9wZXJpb2QoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJT2lkCXJuZ3R5cGlkOwor CisJaWYgKHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSAhPSBOVUxMKQorCXsKKwkJLyogTWFrZSBz dXJlIGl0IGV4aXN0cyAqLworCQlybmd0eXBpZCA9IFR5cGVuYW1lR2V0VHlwaWRFeHRlbmRl ZChwZXJpb2QtPnJhbmdldHlwZW5hbWUsIGZhbHNlKTsKKwkJaWYgKHJuZ3R5cGlkID09IElu dmFsaWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJSYW5nZSB0eXBlICVzIG5vdCBmb3VuZCIsIHBl cmlvZC0+cmFuZ2V0eXBlbmFtZSkpKTsKKworCQkvKiBNYWtlIHN1cmUgaXQgaXMgYSByYW5n ZSB0eXBlICovCisJCWlmICghdHlwZV9pc19yYW5nZShybmd0eXBpZCkpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkJIGVycm1zZygiVHlwZSAlcyBpcyBub3QgYSByYW5nZSB0eXBlIiwgcGVyaW9kLT5yYW5n ZXR5cGVuYW1lKSkpOworCisJCS8qIE1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSBjb2x1bW4g dHlwZSAqLworCQlpZiAoZ2V0X3JhbmdlX3N1YnR5cGUocm5ndHlwaWQpICE9IHBlcmlvZC0+ Y29sdHlwaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBkb2VzIG5v dCBtYXRjaCBjb2x1bW4gdHlwZSAlcyIsCisJCQkJCQkgcGVyaW9kLT5yYW5nZXR5cGVuYW1l LAorCQkJCQkJIGZvcm1hdF90eXBlX2JlKHBlcmlvZC0+Y29sdHlwaWQpKSkpOworCX0KKwll bHNlCisJeworCQlybmd0eXBpZCA9IGdldF9zdWJ0eXBlX3JhbmdlKHBlcmlvZC0+Y29sdHlw aWQpOworCQlpZiAocm5ndHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJt c2coIm5vIHJhbmdlIHR5cGUgZm9yICVzIGZvdW5kIGZvciBwZXJpb2QgJXMiLAorCQkJCQkJ CWZvcm1hdF90eXBlX2JlKHBlcmlvZC0+Y29sdHlwaWQpLAorCQkJCQkJCXBlcmlvZC0+cGVy aW9kbmFtZSksCisJCQkJCSBlcnJoaW50KCJZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5n ZSB0eXBlIHdpdGggQ1JFQVRFIFRZUEUiKSkpOworCisJfQorCisJcmV0dXJuIHJuZ3R5cGlk OworfQorCitzdGF0aWMgdm9pZAorQWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24gcmVs LCBQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsKKwlPaWQJ CQljb25vaWQ7CisJQ29uc3RyYWludCAqY29uc3RyOworCUxpc3QJICAgKm5ld2NvbnN0cnM7 CisKKwlhdHRyZWxhdGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7CisKKwkvKiBGaW5kIHRoZSBHRU5FUkFURUQgcmFuZ2UgY29sdW1u ICovCisKKwlwZXJpb2QtPnJuZ2F0dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxp ZChyZWwpLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCWlmIChwZXJpb2QtPnJuZ2F0dG51bSA9 PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJZWxvZyhFUlJPUiwgIm1pc3NpbmcgYXR0cmlidXRl ICVzIiwgcGVyaW9kLT5wZXJpb2RuYW1lKTsKKworCS8qIFRoZSBwYXJzZXIgaGFzIGFscmVh ZHkgZm91bmQgcGVyaW9kLT5jb2x0eXBpZCAqLworCisJY29uc3RyID0gbWFrZV9jb25zdHJh aW50X2Zvcl9wZXJpb2QocmVsLCBwZXJpb2QpOworCW5ld2NvbnN0cnMgPSBBZGRSZWxhdGlv bk5ld0NvbnN0cmFpbnRzKHJlbCwgTklMLCBsaXN0X21ha2UxKGNvbnN0ciksIGZhbHNlLCB0 cnVlLCB0cnVlLCBOVUxMKTsKKwljb25vaWQgPSAoKENvb2tlZENvbnN0cmFpbnQgKikgbGlu aXRpYWwobmV3Y29uc3RycykpLT5jb25vaWQ7CisKKwkvKiBTYXZlIGl0ICovCisJU3RvcmVQ ZXJpb2QocmVsLCBwZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZC0+c3RhcnRhdHRudW0sIHBl cmlvZC0+ZW5kYXR0bnVtLCBwZXJpb2QtPnJuZ2F0dG51bSwgY29ub2lkKTsKKworCXRhYmxl X2Nsb3NlKGF0dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIEVt aXQgdGhlIHJpZ2h0IGVycm9yIG9yIHdhcm5pbmcgbWVzc2FnZSBmb3IgYSAiRFJPUCIgY29t bWFuZCBpc3N1ZWQgb24gYQogICogbm9uLWV4aXN0ZW50IHJlbGF0aW9uCkBAIC0zMzU2LDYg KzM2NjgsMTY4IEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0 ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiB9CiAKIAorLyotLS0tLS0tLS0tCisg KiBNZXJnZVBlcmlvZHMKKyAqCQlSZXR1cm5zIG5ldyBwZXJpb2QgbGlzdCBnaXZlbiBpbml0 aWFsIHBlcmlvZHMgYW5kIHN1cGVyY2xhc3Nlcy4KKyAqCisgKiBGb3Igbm93IHdlIGRvbid0 IHN1cHBvcnQgaW5oZXJpdGVuY2Ugd2l0aCBQRVJJT0RzLAorICogYnV0IHdlIG1pZ2h0IG1h a2UgaXQgd29yayBldmVudHVhbGx5LgorICoKKyAqIFdlIGNhbiBvbWl0IGxvdHMgb2YgY2hl Y2tzIGhlcmUgYW5kIGFzc3VtZSBNZXJnZUF0dHJpYnV0ZXMgYWxyZWFkeSBkaWQgdGhlbSwK KyAqIGZvciBleGFtcGxlIHRoYXQgY2hpbGQgJiBwYXJlbnRzIGFyZSBub3QgYSBtaXggb2Yg cGVybWFuZW50IGFuZCB0ZW1wLgorICovCitzdGF0aWMgTGlzdCAqCitNZXJnZVBlcmlvZHMo Y2hhciAqcmVsbmFtZSwgTGlzdCAqcGVyaW9kcywgTGlzdCAqdGFibGVFbHRzLCBMaXN0ICpz dXBlcnMpCit7CisJTGlzdENlbGwgICAqZW50cnk7CisKKwkvKiBJZiB3ZSBoYXZlIGEgUEVS SU9EIHRoZW4gc3VwZXJzIG11c3QgYmUgZW1wdHkuICovCisKKwlpZiAobGlzdF9sZW5ndGgo cGVyaW9kcykgPiAwICYmIGxpc3RfbGVuZ3RoKHN1cGVycykgPiAwKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkgZXJybXNnKCJJbmhlcml0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhIHRhYmxlIGhh cyBhIFBFUklPRCIpKSk7CisKKwkvKiBJZiBhbnkgcGFyZW50IHRhYmxlIGhhcyBhIFBFUklP RCwgdGhlbiBmYWlsLiAqLworCisJZm9yZWFjaChlbnRyeSwgc3VwZXJzKQorCXsKKwkJT2lk CQkJcGFyZW50ID0gbGZpcnN0X29pZChlbnRyeSk7CisJCVJlbGF0aW9uCXJlbGF0aW9uOwor CQlSZWxhdGlvbglwZ19wZXJpb2Q7CisJCVN5c1NjYW5EZXNjIHNjYW47CisJCVNjYW5LZXlE YXRhIHNrZXlbMV07CisJCUhlYXBUdXBsZQl0dXBsZTsKKworCQkvKiBjYWxsZXIgYWxyZWFk eSBnb3QgbG9jayAqLworCQlyZWxhdGlvbiA9IHRhYmxlX29wZW4ocGFyZW50LCBOb0xvY2sp OworCQlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1No YXJlTG9jayk7CisKKwkJU2NhbktleUluaXQoJnNrZXlbMF0sCisJCQkJCUFudW1fcGdfcGVy aW9kX3BlcnJlbGlkLAorCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJ CQkJCU9iamVjdElkR2V0RGF0dW0ocGFyZW50KSk7CisKKwkJc2NhbiA9IHN5c3RhYmxlX2Jl Z2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJ CQkJCSAgTlVMTCwgMSwgc2tleSk7CisKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUg PSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygi SW5oZXJpdGluZyBmcm9tIGEgdGFibGUgd2l0aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVk IikpKTsKKworCQlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCQl0YWJsZV9jbG9zZShwZ19w ZXJpb2QsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xv Y2spOworCX0KKworCS8qCisJICogRmluZCB0aGUgc3RhcnQgJiBlbmQgY29sdW1ucyBhbmQg Z2V0IHRoZWlyIGF0dG5vIGFuZCB0eXBlLgorCSAqIEluIHRoZSBzYW1lIHBhc3MsIG1ha2Ug c3VyZSB0aGUgcGVyaW9kIGRvZXNuJ3QgY29uZmxpY3Qgd2l0aCBhbnkgY29sdW1uIG5hbWVz LgorCSAqIEFsc28gbWFrZSBzdXJlIHRoZSBzYW1lIHBlcmlvZCBuYW1lIGlzbid0IHVzZWQg bW9yZSB0aGFuIG9uY2UuCisJICovCisJZm9yZWFjaCAoZW50cnksIHBlcmlvZHMpCisJewor CQlQZXJpb2REZWYgKnBlcmlvZCA9IGxmaXJzdChlbnRyeSk7CisJCUxpc3RDZWxsICplbnRy eTI7CisJCWludCBpID0gMTsKKwkJT2lkIHN0YXJ0Y29sdHlwaWQgPSBJbnZhbGlkT2lkOwor CQlPaWQgZW5kY29sdHlwaWQgPSBJbnZhbGlkT2lkOworCQlPaWQJc3RhcnRjb2xjb2xsYXRp b24gPSBJbnZhbGlkT2lkOworCQlPaWQJZW5kY29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsK KworCQlwZXJpb2QtPnN0YXJ0YXR0bnVtID0gSW52YWxpZEF0dHJOdW1iZXI7CisJCXBlcmlv ZC0+ZW5kYXR0bnVtID0gSW52YWxpZEF0dHJOdW1iZXI7CisKKwkJaWYgKFN5c3RlbUF0dHJp YnV0ZUJ5TmFtZShwZXJpb2QtPnBlcmlvZG5hbWUpICE9IE5VTEwpCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkg ZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29s dW1uIG5hbWUiLAorCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQlmb3JlYWNo IChlbnRyeTIsIHBlcmlvZHMpCisJCXsKKwkJCVBlcmlvZERlZiAqcGVyaW9kMiA9IGxmaXJz dChlbnRyeTIpOworCisJCQlpZiAocGVyaW9kICE9IHBlcmlvZDIgJiYgc3RyY21wKHBlcmlv ZC0+cGVyaW9kbmFtZSwgcGVyaW9kMi0+cGVyaW9kbmFtZSkgPT0gMCkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJ CQkJCSBlcnJtc2coInBlcmlvZCBuYW1lIFwiJXNcIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9u Y2UiLAorCQkJCQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisJCX0KKworCQlmb3JlYWNo IChlbnRyeTIsIHRhYmxlRWx0cykKKwkJeworCQkJQ29sdW1uRGVmICpjb2wgPSBsZmlyc3Qo ZW50cnkyKTsKKwkJCWludDMyCWF0dHR5cG1vZDsKKwkJCUFjbFJlc3VsdCBhY2xyZXN1bHQ7 CisKKwkJCWlmIChzdHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCBjb2wtPmNvbG5hbWUpID09 IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElD QVRFX0NPTFVNTiksCisJCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxp Y3RzIHdpdGggYSBjb2x1bW4gbmFtZSIsCisJCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkp KTsKKworCQkJaWYgKHN0cmNtcChwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgY29sLT5jb2xuYW1l KSA9PSAwKQorCQkJeworCQkJCXBlcmlvZC0+c3RhcnRhdHRudW0gPSBpOworCisJCQkJdHlw ZW5hbWVUeXBlSWRBbmRNb2QoTlVMTCwgY29sLT50eXBlTmFtZSwgJnN0YXJ0Y29sdHlwaWQs ICZhdHR0eXBtb2QpOworCisJCQkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVS ZWxhdGlvbklkLCBzdGFydGNvbHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJ CQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90 eXBlKGFjbHJlc3VsdCwgc3RhcnRjb2x0eXBpZCk7CisKKwkJCQlzdGFydGNvbGNvbGxhdGlv biA9IEdldENvbHVtbkRlZkNvbGxhdGlvbihOVUxMLCBjb2wsIHN0YXJ0Y29sdHlwaWQpOwor CQkJfQorCisJCQlpZiAoc3RyY21wKHBlcmlvZC0+ZW5kY29sbmFtZSwgY29sLT5jb2xuYW1l KSA9PSAwKQorCQkJeworCQkJCXBlcmlvZC0+ZW5kYXR0bnVtID0gaTsKKworCQkJCXR5cGVu YW1lVHlwZUlkQW5kTW9kKE5VTEwsIGNvbC0+dHlwZU5hbWUsICZlbmRjb2x0eXBpZCwgJmF0 dHR5cG1vZCk7CisKKwkJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVHlwZVJlbGF0 aW9uSWQsIGVuZGNvbHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAo YWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFj bHJlc3VsdCwgZW5kY29sdHlwaWQpOworCisJCQkJZW5kY29sY29sbGF0aW9uID0gR2V0Q29s dW1uRGVmQ29sbGF0aW9uKE5VTEwsIGNvbCwgZW5kY29sdHlwaWQpOworCQkJfQorCisJCQlp Kys7CisJCX0KKworCQkvKiBEaWQgd2UgZmluZCB0aGUgY29sdW1ucz8gKi8KKwkJaWYgKHBl cmlvZC0+c3RhcnRhdHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIpCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkg ZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlz dCIsCisJCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUsIHJlbG5hbWUpKSk7CisJCWlmIChw ZXJpb2QtPmVuZGF0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJCSBl cnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwKKwkJCQkJCQlwZXJpb2QtPmVuZGNvbG5hbWUsIHJlbG5hbWUpKSk7CisKKwkJLyogQm90 aCBjb2x1bW5zIG11c3QgYmUgb2Ygc2FtZSB0eXBlICovCisJCWlmIChzdGFydGNvbHR5cGlk ICE9IGVuZGNvbHR5cGlkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQg Y29sdW1ucyBvZiBwZXJpb2QgbXVzdCBiZSBvZiBzYW1lIHR5cGUiKSkpOworCisJCS8qIEJv dGggY29sdW1ucyBtdXN0IGhhdmUgdGhlIHNhbWUgY29sbGF0aW9uICovCisJCWlmIChzdGFy dGNvbGNvbGxhdGlvbiAhPSBlbmRjb2xjb2xsYXRpb24pCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0NPTExBVElPTl9NSVNNQVRDSCksCisJCQkJCSBlcnJt c2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29s bGF0aW9uIikpKTsKKworCQlwZXJpb2QtPmNvbHR5cGlkID0gc3RhcnRjb2x0eXBpZDsKKwkJ cGVyaW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2Qp OworCX0KKworCXJldHVybiBwZXJpb2RzOworfQorCiAvKgogICogTWVyZ2VDaGVja0NvbnN0 cmFpbnQKICAqCQlUcnkgdG8gbWVyZ2UgYW4gaW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnQg d2l0aCBwcmV2aW91cyBvbmVzCkBAIC00NDEyLDEyICs0ODg2LDEyIEBAIEFsdGVyVGFibGUo QWx0ZXJUYWJsZVN0bXQgKnN0bXQsIExPQ0tNT0RFIGxvY2ttb2RlLAogICogZXhpc3Rpbmcg cXVlcnkgcGxhbnMuICBPbiB0aGUgYXNzdW1wdGlvbiBpdCdzIG5vdCB1c2VkIGZvciBzdWNo LCB3ZQogICogZG9uJ3QgaGF2ZSB0byByZWplY3QgcGVuZGluZyBBRlRFUiB0cmlnZ2Vycywg ZWl0aGVyLgogICoKLSAqIEFsc28sIHNpbmNlIHdlIGRvbid0IGhhdmUgYW4gQWx0ZXJUYWJs ZVV0aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQorICogQWxzbywgaWYgeW91IGRvbid0 IHBhc3MgYW4gQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQogICog dXNlZCBmb3IgYW55IHN1YmNvbW1hbmQgdHlwZXMgdGhhdCByZXF1aXJlIHBhcnNlIHRyYW5z Zm9ybWF0aW9uIG9yCiAgKiBjb3VsZCBnZW5lcmF0ZSBzdWJjb21tYW5kcyB0aGF0IGhhdmUg dG8gYmUgcGFzc2VkIHRvIFByb2Nlc3NVdGlsaXR5LgogICovCiB2b2lkCi1BbHRlclRhYmxl SW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCitBbHRlclRh YmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIEFsdGVy VGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJTE9D S01PREUJbG9ja21vZGUgPSBBbHRlclRhYmxlR2V0TG9ja0xldmVsKGNtZHMpOwpAQCAtNDQy Niw3ICs0OTAwLDcgQEAgQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21k cywgYm9vbCByZWN1cnNlKQogCiAJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKHJlbGlk KTsKIAotCUFUQ29udHJvbGxlcihOVUxMLCByZWwsIGNtZHMsIHJlY3Vyc2UsIGxvY2ttb2Rl LCBOVUxMKTsKKwlBVENvbnRyb2xsZXIoTlVMTCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2Nr bW9kZSwgY29udGV4dCk7CiB9CiAKIC8qCkBAIC00NTE5LDYgKzQ5OTMsOCBAQCBBbHRlclRh YmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMpCiAJCQljYXNlIEFUX0VuYWJsZVJlcGxpY2FS dWxlOgkvKiBtYXkgY2hhbmdlIFNFTEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9FbmFibGVS dWxlOiAvKiBtYXkgY2hhbmdlIFNFTEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9EaXNhYmxl UnVsZToJLyogbWF5IGNoYW5nZSBTRUxFQ1QgcnVsZXMgKi8KKwkJCWNhc2UgQVRfQWRkUGVy aW9kOiAvKiBzaGFyZXMgbmFtZXNwYWNlIHdpdGggY29sdW1ucywgYWRkcyBjb25zdHJhaW50 ICovCisJCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNz RXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKIApAQCAtNDgzNSw2ICs1MzExLDE0IEBAIEFU UHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNt ZCwKIAkJCS8qIFRoaXMgY29tbWFuZCBuZXZlciByZWN1cnNlcyAqLwogCQkJcGFzcyA9IEFU X1BBU1NfQUREX09USEVSQ09OU1RSOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9k OiAvKiBBTFRFUiBUQUJMRSAuLi4gQUREIFBFUklPRCBGT1IgbmFtZSAoc3RhcnQsIGVuZCkg Ki8KKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJM RSk7CisJCQlwYXNzID0gQVRfUEFTU19BRERfUEVSSU9EOworCQkJYnJlYWs7CisJCWNhc2Ug QVRfRHJvcFBlcmlvZDogLyogQUxURVIgVEFCTEUgLi4uIERST1AgUEVSSU9EIEZPUiBuYW1l ICovCisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFC TEUpOworCQkJcGFzcyA9IEFUX1BBU1NfRFJPUDsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0Fk ZElkZW50aXR5OgogCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwg QVRUX1RBQkxFIHwgQVRUX1ZJRVcgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAJCQkvKiBUaGlz IGNvbW1hbmQgbmV2ZXIgcmVjdXJzZXMgKi8KQEAgLTUyMzYsNiArNTcyMCwxNCBAQCBBVEV4 ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFU X0Nvb2tlZENvbHVtbkRlZmF1bHQ6CS8qIGFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCAqLwog CQkJYWRkcmVzcyA9IEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQocmVsLCBjbWQtPm51bSwg Y21kLT5kZWYpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJYWRkcmVz cyA9IEFURXhlY0FkZFBlcmlvZChyZWwsIChQZXJpb2REZWYgKikgY21kLT5kZWYsIGNvbnRl eHQpOworCQkJYnJlYWs7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCUFURXhlY0Ryb3BQ ZXJpb2QocmVsLCBjbWQtPm5hbWUsIGNtZC0+YmVoYXZpb3IsCisJCQkJCQkJCSBmYWxzZSwg ZmFsc2UsCisJCQkJCQkJCSBjbWQtPm1pc3Npbmdfb2spOworCQkJYnJlYWs7CiAJCWNhc2Ug QVRfQWRkSWRlbnRpdHk6CiAJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwg dGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAogCQkJCQkJCQkJICBjdXJfcGFzcywg Y29udGV4dCk7CkBAIC02MzgzLDYgKzY4NzUsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0 cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQljYXNlIEFUX0FkZENvbHVtbjoKIAkJ Y2FzZSBBVF9BZGRDb2x1bW5Ub1ZpZXc6CiAJCQlyZXR1cm4gIkFERCBDT0xVTU4iOworCQlj YXNlIEFUX0FkZFBlcmlvZDoKKwkJCXJldHVybiAiQUREIFBFUklPRCI7CiAJCWNhc2UgQVRf Q29sdW1uRGVmYXVsdDoKIAkJY2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgogCQkJcmV0 dXJuICJBTFRFUiBDT0xVTU4gLi4uIFNFVCBERUZBVUxUIjsKQEAgLTY0MDgsNiArNjkwMiw4 IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUp CiAJCQlyZXR1cm4gIkFMVEVSIENPTFVNTiAuLi4gU0VUIENPTVBSRVNTSU9OIjsKIAkJY2Fz ZSBBVF9Ecm9wQ29sdW1uOgogCQkJcmV0dXJuICJEUk9QIENPTFVNTiI7CisJCWNhc2UgQVRf RHJvcFBlcmlvZDoKKwkJCXJldHVybiAiRFJPUCBQRVJJT0QiOwogCQljYXNlIEFUX0FkZElu ZGV4OgogCQljYXNlIEFUX1JlQWRkSW5kZXg6CiAJCQlyZXR1cm4gTlVMTDsJCS8qIG5vdCBy ZWFsIGdyYW1tYXIgKi8KQEAgLTc0MTMsMTQgKzc5MDksMjkgQEAgQVRFeGVjQWRkQ29sdW1u KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAog LyoKICAqIElmIGEgbmV3IG9yIHJlbmFtZWQgY29sdW1uIHdpbGwgY29sbGlkZSB3aXRoIHRo ZSBuYW1lIG9mIGFuIGV4aXN0aW5nCiAgKiBjb2x1bW4gYW5kIGlmX25vdF9leGlzdHMgaXMg ZmFsc2UgdGhlbiBlcnJvciBvdXQsIGVsc2UgZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxz byBjaGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uLgogICovCiBzdGF0aWMgYm9vbAog Y2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNo YXIgKmNvbG5hbWUsCiAJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cykKIHsKLQlIZWFwVHVw bGUJYXR0VHVwbGU7CisJSGVhcFR1cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKIAlpbnQJCQlh dHRudW07CiAKKwkvKiBJZiB0aGUgbmFtZSBleGlzdHMgYXMgYSBwZXJpb2QsIHdlJ3JlIGRv bmUuICovCisJcGVyVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJ CQkgICBPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJ ICAgUG9pbnRlckdldERhdHVtKGNvbG5hbWUpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChw ZXJUdXBsZSkpCisJeworCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJ IGVycm1zZygiY29sdW1uIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5h bWUiLAorCQkJCQkJY29sbmFtZSkpKTsKKwl9CisKIAkvKgogCSAqIHRoaXMgdGVzdCBpcyBk ZWxpYmVyYXRlbHkgbm90IGF0dGlzZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVz IHRvCiAJICogYWRkIGEgY29sdW1uIG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwg aXQncyBnb25uYSBmYWlsIGFueXdheS4KQEAgLTc0NjQsNiArNzk3NSw3NiBAQCBjaGVja19m b3JfY29sdW1uX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29s bmFtZSwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIElmIGEgbmV3IHBlcmlvZCBuYW1l IHdpbGwgY29sbGlkZSB3aXRoIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGNvbHVtbiBvcgor ICogcGVyaW9kIFthbmQgaWZfbm90X2V4aXN0cyBpcyBmYWxzZV0gdGhlbiBlcnJvciBvdXQs IGVsc2UgZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxzbyBjaGVja19mb3JfY29sdW1uX25h bWVfY29sbGlzaW9uLgorICovCitzdGF0aWMgYm9vbAorY2hlY2tfZm9yX3BlcmlvZF9uYW1l X2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJ CWJvb2wgaWZfbm90X2V4aXN0cykKK3sKKwlIZWFwVHVwbGUJYXR0VHVwbGUsIHBlclR1cGxl OworCWludAkJCWF0dG51bTsKKworCS8qIFRPRE86IGltcGxlbWVudCBJRiBbTk9UXSBFWElT VFMgZm9yIHBlcmlvZHMgKi8KKwlBc3NlcnQoIWlmX25vdF9leGlzdHMpOworCisJLyogSWYg dGhlcmUgaXMgYWxyZWFkeSBhIHBlcmlvZCB3aXRoIHRoaXMgbmFtZSwgdGhlbiB3ZSdyZSBk b25lLiAqLworCXBlclR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJ CQkJICAgT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJ CSAgIFBvaW50ZXJHZXREYXR1bShwZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQo cGVyVHVwbGUpKQorCXsKKwkJaWYgKGlmX25vdF9leGlzdHMpCisJCXsKKwkJCVJlbGVhc2VT eXNDYWNoZShwZXJUdXBsZSk7CisKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgXCIl c1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJ CQkJCXBlcm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQlyZXR1 cm4gZmFsc2U7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBvZiBy ZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLAorCQkJCQkJcGVybmFtZSwgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwl9CisKKwkvKgorCSAqIHRoaXMgdGVzdCBp cyBkZWxpYmVyYXRlbHkgbm90IGF0dGlzZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRy aWVzIHRvCisJICogYWRkIGEgY29sdW1uIG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFt ZSwgaXQncyBnb25uYSBmYWlsIGFueXdheS4KKwkgKi8KKwlhdHRUdXBsZSA9IFNlYXJjaFN5 c0NhY2hlMihBVFROQU1FLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25H ZXRSZWxpZChyZWwpKSwKKwkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0ocGVybmFtZSkpOwor CWlmIChIZWFwVHVwbGVJc1ZhbGlkKGF0dFR1cGxlKSkKKwl7CisJCWF0dG51bSA9ICgoRm9y bV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVChhdHRUdXBsZSkpLT5hdHRudW07CisJCVJlbGVh c2VTeXNDYWNoZShhdHRUdXBsZSk7CisKKwkJLyoKKwkJICogV2UgdGhyb3cgYSBkaWZmZXJl bnQgZXJyb3IgbWVzc2FnZSBmb3IgY29uZmxpY3RzIHdpdGggc3lzdGVtIGNvbHVtbgorCQkg KiBuYW1lcywgc2luY2UgdGhleSBhcmUgbm9ybWFsbHkgbm90IHNob3duIGFuZCB0aGUgdXNl ciBtaWdodCBvdGhlcndpc2UKKwkJICogYmUgY29uZnVzZWQgYWJvdXQgdGhlIHJlYXNvbiBm b3IgdGhlIGNvbmZsaWN0LgorCQkgKi8KKwkJaWYgKGF0dG51bSA8PSAwKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJ CQkJIGVycm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVt IGNvbHVtbiBuYW1lIiwKKwkJCQkJCQlwZXJuYW1lKSkpOworCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygi cGVyaW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUiLAorCQkJ CQkJcGVybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEluc3Rh bGwgYSBjb2x1bW4ncyBkZXBlbmRlbmN5IG9uIGl0cyBkYXRhdHlwZS4KICAqLwpAQCAtODEx NSw2ICs4Njk2LDE1NSBAQCBBVEV4ZWNDb29rZWRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJl bCwgQXR0ck51bWJlciBhdHRudW0sCiAJcmV0dXJuIGFkZHJlc3M7CiB9CiAKKy8qCisgKiBB TFRFUiBUQUJMRSBBREQgUEVSSU9ECisgKgorICogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRo ZSBwZXJpb2QuCisgKi8KK3N0YXRpYyBPYmplY3RBZGRyZXNzCitBVEV4ZWNBZGRQZXJpb2Qo UmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250 ZXh0ICpjb250ZXh0KQoreworCVJlbGF0aW9uCQlhdHRyZWxhdGlvbjsKKwlPYmplY3RBZGRy ZXNzCWFkZHJlc3MgPSBJbnZhbGlkT2JqZWN0QWRkcmVzczsKKwlDb25zdHJhaW50CSAgICpj b25zdHI7CisJQ29sdW1uRGVmCSAgICpyYW5nZWNvbDsKKwlPaWQJCQkJY29ub2lkLCBwZXJp b2RvaWQ7CisJTGlzdAkJICAgKmNtZHMgPSBOSUw7CisJQWx0ZXJUYWJsZUNtZCAgKmNtZDsK KworCS8qCisJICogUEVSSU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3QgeWV0IGltcGxlbWVu dGVkLCBidXQgbWFrZSBzdXJlIG5vIG9uZSB1c2VzCisJICogdGhlIG5hbWUuCisJICovCisJ aWYgKHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCSBlcnJtc2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90 IHN1cHBvcnRlZCIpKSk7CisKKwkvKiBUaGUgcGVyaW9kIG5hbWUgbXVzdCBub3QgYWxyZWFk eSBleGlzdCAqLworCSh2b2lkKSBjaGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKHJl bCwgcGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxzZSk7CisKKwkvKiBQYXJzZSBvcHRpb25zICov CisJdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJpb2QpOworCisJYXR0cmVsYXRpb24gPSB0 YWJsZV9vcGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVZh bGlkYXRlUGVyaW9kKHJlbCwgcGVyaW9kKTsKKworCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9v c2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QocGVyaW9kKTsKKworCS8qIE1ha2UgdGhlIENIRUNL IGNvbnN0cmFpbnQgKi8KKwljb25zdHIgPSBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChy ZWwsIHBlcmlvZCk7CisJY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJY21kLT5z dWJ0eXBlID0gQVRfQWRkQ29uc3RyYWludDsKKwljbWQtPmRlZiA9IChOb2RlICopIGNvbnN0 cjsKKwljbWRzID0gbGFwcGVuZChjbWRzLCBjbWQpOworCUFsdGVyVGFibGVJbnRlcm5hbChS ZWxhdGlvbkdldFJlbGlkKHJlbCksIGNtZHMsIHRydWUsIGNvbnRleHQpOworCWNvbm9pZCA9 IGdldF9yZWxhdGlvbl9jb25zdHJhaW50X29pZChSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBl cmlvZC0+Y29uc3RyYWludG5hbWUsIGZhbHNlKTsKKworCS8qIE1ha2UgdGhlIHJhbmdlIGNv bHVtbiAqLworCXJhbmdlY29sID0gbWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChwZXJp b2QpOworCWNtZCA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCWNtZC0+c3VidHlwZSA9 IEFUX0FkZENvbHVtbjsKKwljbWQtPmRlZiA9IChOb2RlICopIHJhbmdlY29sOworCWNtZC0+ bmFtZSA9IHBlcmlvZC0+cGVyaW9kbmFtZTsKKwljbWQtPnJlY3Vyc2UgPSBmYWxzZTsgLyog bm8sIGxldCB0aGUgUEVSSU9EIHJlY3Vyc2UgaW5zdGVhZCAqLworCUFsdGVyVGFibGVJbnRl cm5hbChSZWxhdGlvbkdldFJlbGlkKHJlbCksIGxpc3RfbWFrZTEoY21kKSwgdHJ1ZSwgY29u dGV4dCk7CisJcGVyaW9kLT5ybmdhdHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVs aWQocmVsKSwgcGVyaW9kLT5wZXJpb2RuYW1lKTsKKwlpZiAocGVyaW9kLT5ybmdhdHRudW0g PT0gSW52YWxpZEF0dHJOdW1iZXIpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIGF0dHJpYnV0 ZSAlcyIsIHBlcmlvZC0+cGVyaW9kbmFtZSk7CisKKwkvKiBTYXZlIHRoZSBQZXJpb2QgKi8K KwlwZXJpb2RvaWQgPSBTdG9yZVBlcmlvZChyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVy aW9kLT5zdGFydGF0dG51bSwgcGVyaW9kLT5lbmRhdHRudW0sIHBlcmlvZC0+cm5nYXR0bnVt LCBjb25vaWQpOworCisJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBQZXJpb2RSZWxhdGlv bklkLCBwZXJpb2RvaWQpOworCisJdGFibGVfY2xvc2UoYXR0cmVsYXRpb24sIFJvd0V4Y2x1 c2l2ZUxvY2spOworCisJcmV0dXJuIGFkZHJlc3M7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJM RSBEUk9QIFBFUklPRAorICoKKyAqIExpa2UgRFJPUCBDT0xVTU4sIHdlIGNhbid0IHVzZSB0 aGUgbm9ybWFsIEFMVEVSIFRBQkxFIHJlY3Vyc2lvbiBtZWNoYW5pc20uCisgKi8KK3N0YXRp YyB2b2lkCitBVEV4ZWNEcm9wUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVy aW9kTmFtZSwKKwkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJIGJvb2wgcmVj dXJzZSwgYm9vbCByZWN1cnNpbmcsCisJCQkJCSBib29sIG1pc3Npbmdfb2spCit7CisJUmVs YXRpb24JcGdfcGVyaW9kOworCUZvcm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlTeXNTY2FuRGVz YyBzY2FuOworCVNjYW5LZXlEYXRhIGtleTsKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJ Zm91bmQgPSBmYWxzZTsKKworCS8qIEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3 YXMgZG9uZSBpbiBBVFByZXBDbWQsIGVsc2UgZG8gaXQgKi8KKwlpZiAocmVjdXJzaW5nKQor CQlBVFNpbXBsZVBlcm1pc3Npb25zKEFUX0Ryb3BQZXJpb2QsIHJlbCwgQVRUX1RBQkxFKTsK KworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVz aXZlTG9jayk7CisKKwkvKgorCSAqIEZpbmQgYW5kIGRyb3AgdGhlIHRhcmdldCBwZXJpb2QK KwkgKi8KKwlTY2FuS2V5SW5pdCgma2V5LAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlk LAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdl dERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdp bnNjYW4ocGdfcGVyaW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLAorCQkJCQkJCSAgdHJ1 ZSwgTlVMTCwgMSwgJmtleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9 IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBwZXJvYmo7 CisKKwkJcGVyaW9kID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJ CWlmIChzdHJjbXAoTmFtZVN0cihwZXJpb2QtPnBlcm5hbWUpLCBwZXJpb2ROYW1lKSAhPSAw KQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogUGVyZm9ybSB0aGUgYWN0dWFsIHBlcmlv ZCBkZWxldGlvbgorCQkgKi8KKwkJcGVyb2JqLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklk OworCQlwZXJvYmoub2JqZWN0SWQgPSBwZXJpb2QtPm9pZDsKKwkJcGVyb2JqLm9iamVjdFN1 YklkID0gMDsKKworCQlwZXJmb3JtRGVsZXRpb24oJnBlcm9iaiwgYmVoYXZpb3IsIDApOwor CisJCWZvdW5kID0gdHJ1ZTsKKworCQkvKiBwZXJpb2QgZm91bmQgYW5kIGRyb3BwZWQgLS0g bm8gbmVlZCB0byBrZWVwIGxvb3BpbmcgKi8KKwkJYnJlYWs7CisJfQorCisJc3lzdGFibGVf ZW5kc2NhbihzY2FuKTsKKworCWlmICghZm91bmQpCisJeworCQlpZiAoIW1pc3Npbmdfb2sp CisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJ TkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24g XCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChO T1RJQ0UsCisJCQkJCShlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wi IGRvZXMgbm90IGV4aXN0LCBza2lwcGluZyIsCisJCQkJCQkJcGVyaW9kTmFtZSwgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwg Um93RXhjbHVzaXZlTG9jayk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwl0YWJsZV9jbG9z ZShwZ19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogQUxURVIgVEFC TEUgQUxURVIgQ09MVU1OIEFERCBJREVOVElUWQogICoKQEAgLTE0MDU1LDYgKzE0Nzg1LDE1 IEBAIFJlbWVtYmVyQWxsRGVwZW5kZW50Rm9yUmVidWlsZGluZyhBbHRlcmVkVGFibGVJbmZv ICp0YWIsIEFsdGVyVGFibGVUeXBlIHN1YnR5cGUsCiAJCQkJUmVtZW1iZXJDb25zdHJhaW50 Rm9yUmVidWlsZGluZyhmb3VuZE9iamVjdC5vYmplY3RJZCwgdGFiKTsKIAkJCQlicmVhazsK IAorCQkJY2FzZSBPQ0xBU1NfUEVSSU9EOgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNn KCJjYW5ub3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kIiksCisJ CQkJCQkgZXJyZGV0YWlsKCIlcyBkZXBlbmRzIG9uIGNvbHVtbiBcIiVzXCIiLAorCQkJCQkJ CQkgICBnZXRPYmplY3REZXNjcmlwdGlvbigmZm91bmRPYmplY3QsIGZhbHNlKSwKKwkJCQkJ CQkJICAgY29sTmFtZSkpKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBPQ0xBU1NfUkVXUklU RToKIAkJCQkvKiBYWFggc29tZWRheSBzZWUgaWYgd2UgY2FuIGNvcGUgd2l0aCByZXZpc2lu ZyB2aWV3cyAqLwogCQkJCWlmIChzdWJ0eXBlID09IEFUX0FsdGVyQ29sdW1uVHlwZSkKQEAg LTE1OTMxLDcgKzE2NjcwLDcgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVB bGxTdG10ICpzdG10KQogCiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCgoTm9kZSAq KSBzdG10KTsKIAkJLyogT0lEIGlzIHNldCBieSBBbHRlclRhYmxlSW50ZXJuYWwgKi8KLQkJ QWx0ZXJUYWJsZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlKTsKKwkJQWx0 ZXJUYWJsZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlLCBOVUxMKTsKIAkJ RXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZUVuZCgpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCmlu ZGV4IGRjZTg5OGM3NTFjLi41NGJkYjRiZGVhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYwpAQCAt MTY5LDcgKzE2OSw3IEBAIERlZmluZVZpcnR1YWxSZWxhdGlvbihSYW5nZVZhciAqcmVsYXRp b24sIExpc3QgKnRsaXN0LCBib29sIHJlcGxhY2UsCiAJCQl9CiAKIAkJCS8qIEV2ZW50VHJp Z2dlckFsdGVyVGFibGVTdGFydCBjYWxsZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0J CQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlKTsKKwkJCUFsdGVy VGFibGVJbnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUsIE5VTEwpOwogCiAJCQkvKiBN YWtlIHRoZSBuZXcgdmlldyBjb2x1bW5zIHZpc2libGUgKi8KIAkJCUNvbW1hbmRDb3VudGVy SW5jcmVtZW50KCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgRGVmaW5lVmlydHVhbFJlbGF0aW9u KFJhbmdlVmFyICpyZWxhdGlvbiwgTGlzdCAqdGxpc3QsIGJvb2wgcmVwbGFjZSwKIAkJYXRj bWRzID0gbGlzdF9tYWtlMShhdGNtZCk7CiAKIAkJLyogRXZlbnRUcmlnZ2VyQWx0ZXJUYWJs ZVN0YXJ0IGNhbGxlZCBieSBQcm9jZXNzVXRpbGl0eVNsb3cgKi8KLQkJQWx0ZXJUYWJsZUlu dGVybmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSk7CisJCUFsdGVyVGFibGVJbnRlcm5hbCh2 aWV3T2lkLCBhdGNtZHMsIHRydWUsIE5VTEwpOwogCiAJCS8qCiAJCSAqIFRoZXJlIGlzIHZl cnkgbGl0dGxlIHRvIGRvIGhlcmUgdG8gdXBkYXRlIHRoZSB2aWV3J3MgZGVwZW5kZW5jaWVz LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCBhMmUzMzUwZDFjMy4uMjAxMTE3ZWFkOWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0xNjM5LDYgKzE2MzksOSBAQCBleHByTG9j YXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX0NvbnN0cmFpbnQ6CiAJCQlsb2Mg PSAoKGNvbnN0IENvbnN0cmFpbnQgKikgZXhwciktPmxvY2F0aW9uOwogCQkJYnJlYWs7CisJ CWNhc2UgVF9QZXJpb2REZWY6CisJCQlsb2MgPSAoKGNvbnN0IFBlcmlvZERlZiAqKSBleHBy KS0+bG9jYXRpb247CisJCQlicmVhazsKIAkJY2FzZSBUX0Z1bmN0aW9uUGFyYW1ldGVyOgog CQkJLyoganVzdCB1c2UgdHlwZW5hbWUncyBsb2NhdGlvbiAqLwogCQkJbG9jID0gZXhwckxv Y2F0aW9uKChOb2RlICopICgoY29uc3QgRnVuY3Rpb25QYXJhbWV0ZXIgKikgZXhwciktPmFy Z1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMjhkMjdhN2MzYzEuLjY4MDI0ODFmYzM4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKQEAgLTU5NCw3ICs1OTQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogJXR5cGUgPGtleXdvcmQ+IGNvbF9uYW1lX2tleXdvcmQgcmVzZXJ2ZWRfa2V5 d29yZAogJXR5cGUgPGtleXdvcmQ+IGJhcmVfbGFiZWxfa2V5d29yZAogCi0ldHlwZSA8bm9k ZT4JVGFibGVDb25zdHJhaW50IFRhYmxlTGlrZUNsYXVzZQorJXR5cGUgPG5vZGU+CVRhYmxl Q29uc3RyYWludCBUYWJsZUxpa2VDbGF1c2UgVGFibGVQZXJpb2QKICV0eXBlIDxpdmFsPglU YWJsZUxpa2VPcHRpb25MaXN0IFRhYmxlTGlrZU9wdGlvbgogJXR5cGUgPHN0cj4JCWNvbHVt bl9jb21wcmVzc2lvbiBvcHRfY29sdW1uX2NvbXByZXNzaW9uIGNvbHVtbl9zdG9yYWdlIG9w dF9jb2x1bW5fc3RvcmFnZQogJXR5cGUgPGxpc3Q+CUNvbFF1YWxMaXN0CkBAIC0yNjI0LDYg KzI2MjQsMjQgQEAgYWx0ZXJfdGFibGVfY21kOgogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSAk NDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxu YW1lPiBBREQgUEVSSU9EIEZPUiA8bmFtZT4gKDxuYW1lPiwgPG5hbWU+KSAqLworCQkJfCBB RERfUCBUYWJsZVBlcmlvZAorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VO b2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRkUGVyaW9kOwor CQkJCQluLT5kZWYgPSAkMjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJLyog QUxURVIgVEFCTEUgPG5hbWU+IERST1AgUEVSSU9EIEZPUiA8bmFtZT4gW1JFU1RSSUNUfENB U0NBREVdICovCisJCQl8IERST1AgUEVSSU9EIEZPUiBuYW1lIG9wdF9kcm9wX2JlaGF2aW9y CisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNt ZCk7CisJCQkJCW4tPnN1YnR5cGUgPSBBVF9Ecm9wUGVyaW9kOworCQkJCQluLT5uYW1lID0g JDQ7CisJCQkJCW4tPmJlaGF2aW9yID0gJDU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxz ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5h bWU+IEFERCBDT05TVFJBSU5UIC4uLiAqLwogCQkJfCBBRERfUCBUYWJsZUNvbnN0cmFpbnQK IAkJCQl7CkBAIC0zNzQzLDggKzM3NjEsMTAgQEAgVGFibGVFbGVtZW50OgogCQkJY29sdW1u RGVmCQkJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCBUYWJsZUxpa2VDbGF1c2UJCQkJCXsgJCQg PSAkMTsgfQogCQkJfCBUYWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQorCQkJfCBU YWJsZVBlcmlvZAkJCQkJCXsgJCQgPSAkMTsgfQogCQk7CiAKKwogVHlwZWRUYWJsZUVsZW1l bnQ6CiAJCQljb2x1bW5PcHRpb25zCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29u c3RyYWludAkJCQkJeyAkJCA9ICQxOyB9CkBAIC00MDk2LDYgKzQxMTYsMTkgQEAgVGFibGVM aWtlT3B0aW9uOgogCQk7CiAKIAorVGFibGVQZXJpb2Q6CisJCQlQRVJJT0QgRk9SIG5hbWUg JygnIG5hbWUgJywnIG5hbWUgJyknIG9wdF9kZWZpbml0aW9uCisJCQkJeworCQkJCQlQZXJp b2REZWYgKm4gPSBtYWtlTm9kZShQZXJpb2REZWYpOworCQkJCQluLT5wZXJpb2RuYW1lID0g JDM7CisJCQkJCW4tPnN0YXJ0Y29sbmFtZSA9ICQ1OworCQkJCQluLT5lbmRjb2xuYW1lID0g JDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkOTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJ CQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCiAvKiBDb25zdHJhaW50RWxlbSBz cGVjaWZpZXMgY29uc3RyYWludCBzeW50YXggd2hpY2ggaXMgbm90IGVtYmVkZGVkIGludG8K ICAqCWEgY29sdW1uIGRlZmluaXRpb24uIENvbENvbnN0cmFpbnRFbGVtIHNwZWNpZmllcyB0 aGUgZW1iZWRkZWQgZm9ybS4KICAqIC0gdGhvbWFzIDE5OTctMTItMDMKQEAgLTcxNTQsNiAr NzE4NywxNCBAQCBDb21tZW50U3RtdDoKIAkJCQkJbi0+Y29tbWVudCA9ICQ5OwogCQkJCQkk JCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJfCBDT01NRU5UIE9OIFBFUklPRCBhbnlfbmFt ZSBJUyBjb21tZW50X3RleHQKKwkJCQl7CisJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFrZU5v ZGUoQ29tbWVudFN0bXQpOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BFUklPRDsKKwkJ CQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDQ7CisJCQkJCW4tPmNvbW1lbnQgPSAkNjsKKwkJ CQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJCXwgQ09NTUVOVCBPTiBMQVJHRV9QIE9C SkVDVF9QIE51bWVyaWNPbmx5IElTIGNvbW1lbnRfdGV4dAogCQkJCXsKIAkJCQkJQ29tbWVu dFN0bXQgKm4gPSBtYWtlTm9kZShDb21tZW50U3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9yZWxhdGlvbi5jCmluZGV4IDM0YTBlYzU5MDE5Li4xN2U4NWE3YzgzYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRl ICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL2hlYXAuaCIKICNpbmNsdWRl ICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgog I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMzE4OSw2ICszMTkwLDcgQEAgZXhw YW5kTlNJdGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0g Km5zaXRlbSwKIAkJCQkgIGludCBzdWJsZXZlbHNfdXAsIGJvb2wgcmVxdWlyZV9jb2xfcHJp dnMsIGludCBsb2NhdGlvbikKIHsKIAlSYW5nZVRibEVudHJ5ICpydGUgPSBuc2l0ZW0tPnBf cnRlOworCUJpdG1hcHNldCAgKnBlcmlvZGF0dHMgPSBOVUxMOwogCVJURVBlcm1pc3Npb25J bmZvICpwZXJtaW5mbyA9IG5zaXRlbS0+cF9wZXJtaW5mbzsKIAlMaXN0CSAgICpuYW1lcywK IAkJCSAgICp2YXJzOwpAQCAtMzIxMiwxMiArMzIxNCwyMCBAQCBleHBhbmROU0l0ZW1BdHRy cyhQYXJzZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtLAogCQlw ZXJtaW5mby0+cmVxdWlyZWRQZXJtcyB8PSBBQ0xfU0VMRUNUOwogCX0KIAorCS8qIEdldCBQ RVJJT0QgY29sdW1ucyB0byBleGNsdWRlICovCisJaWYgKHJ0ZS0+cnRla2luZCA9PSBSVEVf UkVMQVRJT04pCisJCXBlcmlvZGF0dHMgPSBnZXRfcGVyaW9kX2F0dG5vcyhydGUtPnJlbGlk KTsKKwogCWZvcmJvdGgobmFtZSwgbmFtZXMsIHZhciwgdmFycykKIAl7CiAJCWNoYXIJICAg KmxhYmVsID0gc3RyVmFsKGxmaXJzdChuYW1lKSk7CiAJCVZhcgkJICAgKnZhcm5vZGUgPSAo VmFyICopIGxmaXJzdCh2YXIpOwogCQlUYXJnZXRFbnRyeSAqdGU7CiAKKwkJLyogSWYgdGhp cyBjb2x1bW4gaXMgZnJvbSBhIFBFUklPRCwgc2tpcCBpdCAqLworCQlpZiAoYm1zX2lzX21l bWJlcihwc3RhdGUtPnBfbmV4dF9yZXNubywgcGVyaW9kYXR0cykpCisJCQkJY29udGludWU7 CisKIAkJdGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgdmFybm9kZSwKIAkJCQkJCQkg KEF0dHJOdW1iZXIpIHBzdGF0ZS0+cF9uZXh0X3Jlc25vKyssCiAJCQkJCQkJIGxhYmVsLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggMDc3MmEwMjEwZTcuLjg0ZGYx ZDMyMTkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTM3LDYgKzM3 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNs dWRlICJjb21tYW5kcy9jb21tZW50LmgiCkBAIC04MCw2ICs4MSw3IEBAIHR5cGVkZWYgc3Ry dWN0CiAJYm9vbAkJaXNmb3JlaWduOwkJLyogdHJ1ZSBpZiBDUkVBVEUvQUxURVIgRk9SRUlH TiBUQUJMRSAqLwogCWJvb2wJCWlzYWx0ZXI7CQkvKiB0cnVlIGlmIGFsdGVyaW5nIGV4aXN0 aW5nIHRhYmxlICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8qIENvbHVtbkRlZiBpdGVtcyAq LworCUxpc3QJICAgKnBlcmlvZHM7CQkvKiBQZXJpb2REZWYgaXRlbXMgKi8KIAlMaXN0CSAg ICpja2NvbnN0cmFpbnRzOwkvKiBDSEVDSyBjb25zdHJhaW50cyAqLwogCUxpc3QJICAgKm5u Y29uc3RyYWludHM7CS8qIE5PVCBOVUxMIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqZmtj b25zdHJhaW50czsJLyogRk9SRUlHTiBLRVkgY29uc3RyYWludHMgKi8KQEAgLTExMSw2ICsx MTMsOCBAQCB0eXBlZGVmIHN0cnVjdAogCiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db2x1bW5E ZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgIENvbHVtbkRl ZiAqY29sdW1uKTsKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybVRhYmxlUGVyaW9kKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsCisJCQkJCQkJCSBQZXJpb2REZWYgKnBlcmlvZCk7CiBzdGF0aWMg dm9pZCB0cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwK IAkJCQkJCQkJCSBDb25zdHJhaW50ICpjb25zdHJhaW50KTsKIHN0YXRpYyB2b2lkIHRyYW5z Zm9ybVRhYmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LApAQCAtMjQwLDYg KzI0NCw3IEBAIHRyYW5zZm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcpCiAJY3h0LmluaFJlbGF0aW9ucyA9IHN0bXQtPmluaFJlbGF0 aW9uczsKIAljeHQuaXNhbHRlciA9IGZhbHNlOwogCWN4dC5jb2x1bW5zID0gTklMOworCWN4 dC5wZXJpb2RzID0gTklMOwogCWN4dC5ja2NvbnN0cmFpbnRzID0gTklMOwogCWN4dC5ubmNv bnN0cmFpbnRzID0gTklMOwogCWN4dC5ma2NvbnN0cmFpbnRzID0gTklMOwpAQCAtMjgwLDYg KzI4NSwxMCBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNvbnN0 IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCQkJCXRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oJmN4 dCwgKENvbHVtbkRlZiAqKSBlbGVtZW50KTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBUX1Bl cmlvZERlZjoKKwkJCQl0cmFuc2Zvcm1UYWJsZVBlcmlvZCgmY3h0LCAoUGVyaW9kRGVmICop IGVsZW1lbnQpOworCQkJCWJyZWFrOworCiAJCQljYXNlIFRfQ29uc3RyYWludDoKIAkJCQl0 cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQoJmN4dCwgKENvbnN0cmFpbnQgKikgZWxlbWVudCk7 CiAJCQkJYnJlYWs7CkBAIC0zNDcsNiArMzU2LDcgQEAgdHJhbnNmb3JtQ3JlYXRlU3RtdChD cmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkgKiBPdXRwdXQg cmVzdWx0cy4KIAkgKi8KIAlzdG10LT50YWJsZUVsdHMgPSBjeHQuY29sdW1uczsKKwlzdG10 LT5wZXJpb2RzID0gY3h0LnBlcmlvZHM7CiAJc3RtdC0+Y29uc3RyYWludHMgPSBjeHQuY2tj b25zdHJhaW50czsKIAlzdG10LT5ubmNvbnN0cmFpbnRzID0gY3h0Lm5uY29uc3RyYWludHM7 CiAKQEAgLTkxMyw2ICs5MjMsMTEzIEBAIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAJfQogfQogCit2b2lk Cit0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKFBlcmlvZERlZiAqcGVyaW9kKQoreworCUxpc3RD ZWxsICAgKm9wdGlvbjsKKwlEZWZFbGVtCSAgICpkY29uc3RyYWludG5hbWUgPSBOVUxMOwor CURlZkVsZW0JICAgKmRyYW5nZXR5cGVuYW1lID0gTlVMTDsKKworCWZvcmVhY2gob3B0aW9u LCBwZXJpb2QtPm9wdGlvbnMpCisJeworCQlEZWZFbGVtICAgICpkZWZlbCA9IChEZWZFbGVt ICopIGxmaXJzdChvcHRpb24pOworCisJCWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJj aGVja19jb25zdHJhaW50X25hbWUiKSA9PSAwKQorCQl7CisJCQlpZiAoZGNvbnN0cmFpbnRu YW1lKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0 aW9ucyIpKSk7CisJCQlkY29uc3RyYWludG5hbWUgPSBkZWZlbDsKKwkJfQorCQllbHNlIGlm IChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJyYW5nZXR5cGUiKSA9PSAwKQorCQl7CisJCQlp ZiAoZHJhbmdldHlwZW5hbWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9y IHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCWRyYW5nZXR5cGVuYW1lID0gZGVmZWw7CisJ CX0KKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJvcHRpb24gXCIlc1wiIG5vdCByZWNvZ25p emVkIiwgZGVmZWwtPmRlZm5hbWUpKSk7CisJfQorCisJaWYgKGRjb25zdHJhaW50bmFtZSAh PSBOVUxMKQorCQlwZXJpb2QtPmNvbnN0cmFpbnRuYW1lID0gZGVmR2V0U3RyaW5nKGRjb25z dHJhaW50bmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPmNvbnN0cmFpbnRuYW1lID0gTlVMTDsK KworCWlmIChkcmFuZ2V0eXBlbmFtZSAhPSBOVUxMKQorCQlwZXJpb2QtPnJhbmdldHlwZW5h bWUgPSBkZWZHZXRTdHJpbmcoZHJhbmdldHlwZW5hbWUpOworCWVsc2UKKwkJcGVyaW9kLT5y YW5nZXR5cGVuYW1lID0gTlVMTDsKK30KKworLyoKKyAqIHRyYW5zZm9ybVRhYmxlUGVyaW9k CisgKgkJdHJhbnNmb3JtIGEgUGVyaW9kRGVmIG5vZGUgd2l0aGluIENSRUFURSBUQUJMRSBv ciBBTFRFUiBUQUJMRQorICoJCVRPRE86IERvZXMgQUxURVIgVEFCTEUgcmVhbGx5IGNhbGwg dXM/PyBJdCBkb2Vzbid0IHNlZW0gbGlrZSBpdCBkb2VzLiBNYXliZSBpdCBzaG91bGQuIERp ZCBpdCBpbiBWaWsncyBvcmlnaW5hbCBwYXRjaD8KKyAqLworc3RhdGljIHZvaWQKK3RyYW5z Zm9ybVRhYmxlUGVyaW9kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBlcmlvZERlZiAqcGVy aW9kKQoreworCS8vIE9pZAkJCWNvbHR5cGlkOworCS8vIENvbHVtbkRlZiAgKmNvbDsKKwkv LyBMaXN0Q2VsbCAgICpjb2x1bW5zOworCisJaWYgKHN0cmNtcChwZXJpb2QtPnBlcmlvZG5h bWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIlBF UklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZCIpLAorCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJCQkJCXBlcmlvZC0+bG9jYXRpb24p KSk7CisKKwlpZiAoc3RyY21wKHBlcmlvZC0+c3RhcnRjb2xuYW1lLCBwZXJpb2QtPmVuZGNv bG5hbWUpID09IDApCisJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coImNvbHVtbiBcIiVzXCIg Y2FuJ3QgYmUgdGhlIHN0YXJ0IGFuZCBlbmQgY29sdW1uIGZvciBwZXJpb2QgXCIlc1wiIiwK KwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisK KwkvKgorCSAqIERldGVybWluZSB0aGUgY29sdW1uIGluZm8gYW5kIHJhbmdlIHR5cGUgc28g dGhhdCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnRzCisJICoga25vd3MgaG93IHRvIGNyZWF0 ZSBQUklNQVJZIEtFWS9VTklRVUUgY29uc3RyYWludHMgdXNpbmcgdGhpcyBQRVJJT0QuCisJ ICovCisJdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJpb2QpOworCisJLyoKKwkgKiBGaW5k IGEgc3VpdGFibGUgcmFuZ2UgdHlwZSBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgdGhpcyBw ZXJpb2QuCisJICogVXNlIHRoZSByYW5nZXR5cGUgb3B0aW9uIGlmIHByb3ZpZGVkLCBvdGhl cndpc2UgdHJ5IHRvIGZpbmQgYQorCSAqIG5vbi1hbWJpZ3VvdXMgZXhpc3RpbmcgdHlwZS4K KwkgKi8KKworI2lmZGVmIGFzZHNkZmEKKwkvKiBGaXJzdCBmaW5kIG91dCB0aGUgdHlwZSBv ZiB0aGUgcGVyaW9kJ3MgY29sdW1ucyAqLworCS8vIFRPRE86IEknbSBkb2luZyB0aGlzIGlu IERlZmluZVJlbGF0aW9uIG5vdywKKwkvLyB3aGljaCBzZWVtcyBsaWtlIGEgYmV0dGVyIHBs YWNlIHNpbmNlIGl0IGtub3dzIGFib3V0IGluaGVyaXRlZCBjb2x1bW5zLgorCXBlcmlvZC0+ Y29sdHlwaWQgPSBJbnZhbGlkT2lkOworCXBlcmlvZC0+cm5ndHlwaWQgPSBJbnZhbGlkT2lk OworCWZvcmVhY2ggKGNvbHVtbnMsIGN4dC0+Y29sdW1ucykKKwl7CisJCWNvbCA9IChDb2x1 bW5EZWYgKikgbGZpcnN0KGNvbHVtbnMpOworCQlpZiAoc3RyY21wKGNvbC0+Y29sbmFtZSwg cGVyaW9kLT5zdGFydGNvbG5hbWUpID09IDApCisJCXsKKwkJCWNvbHR5cGlkID0gdHlwZW5h bWVUeXBlSWQoY3h0LT5wc3RhdGUsIGNvbC0+dHlwZU5hbWUpOworCQkJYnJlYWs7CisJCX0K Kwl9CisJaWYgKGNvbHR5cGlkID09IEludmFsaWRPaWQpCisJCWVyZXBvcnQoRVJST1IsIChl cnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBjeHQtPnJlbGF0aW9uLT5yZWxuYW1l KSkpOworCisJcGVyaW9kLT5jb2x0eXBpZCA9IGNvbHR5cGlkOworCisJLyogTm93IG1ha2Ug c3VyZSBpdCBtYXRjaGVzIHJhbmdldHlwZW5hbWUgb3Igd2UgY2FuIGZpbmQgYSBtYXRjaGlu ZyByYW5nZSAqLworCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9w ZXJpb2QocGVyaW9kKTsKKyNlbmRpZgorCisJY3h0LT5wZXJpb2RzID0gbGFwcGVuZChjeHQt PnBlcmlvZHMsIHBlcmlvZCk7Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1UYWJsZUNvbnN0cmFp bnQKICAqCQl0cmFuc2Zvcm0gYSBDb25zdHJhaW50IG5vZGUgd2l0aGluIENSRUFURSBUQUJM RSBvciBBTFRFUiBUQUJMRQpAQCAtMTAwMyw2ICsxMTIwLDcgQEAgdHJhbnNmb3JtVGFibGVM aWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFi bGVfbGlrZV9jbGEKIAlBdHRyTnVtYmVyCXBhcmVudF9hdHRubzsKIAlSZWxhdGlvbglyZWxh dGlvbjsKIAlUdXBsZURlc2MJdHVwbGVEZXNjOworCUJpdG1hcHNldCAgKnBlcmlvZGF0dHM7 CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAljaGFyCSAgICpjb21tZW50OwogCVBhcnNlQ2Fs bGJhY2tTdGF0ZSBwY2JzdGF0ZTsKQEAgLTEwNTUsNiArMTE3Myw3IEBAIHRyYW5zZm9ybVRh YmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBUYWJsZUxpa2VDbGF1c2Ug KnRhYmxlX2xpa2VfY2xhCiAJfQogCiAJdHVwbGVEZXNjID0gUmVsYXRpb25HZXREZXNjcihy ZWxhdGlvbik7CisJcGVyaW9kYXR0cyA9IGdldF9wZXJpb2RfYXR0bm9zKFJlbGF0aW9uR2V0 UmVsaWQocmVsYXRpb24pKTsKIAogCS8qCiAJICogSW5zZXJ0IHRoZSBjb3BpZWQgYXR0cmli dXRlcyBpbnRvIHRoZSBjeHQgZm9yIHRoZSBuZXcgdGFibGUgZGVmaW5pdGlvbi4KQEAgLTEw NjQsMTAgKzExODMsMTggQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRD b250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEKIAlmb3IgKHBh cmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSB0dXBsZURlc2MtPm5hdHRzOwogCQkg cGFyZW50X2F0dG5vKyspCiAJewotCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyaWJ1dGUgPSBU dXBsZURlc2NBdHRyKHR1cGxlRGVzYywKLQkJCQkJCQkJCQkJCQlwYXJlbnRfYXR0bm8gLSAx KTsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRlOwogCQlDb2x1bW5EZWYgICpkZWY7 CiAKKwkJLyoKKwkJICogSWYgdGhpcyBjb2x1bW4gaXMgZnJvbSBhIFBFUklPRCwgc2tpcCBp dAorCQkgKiAoc2luY2UgTElLRSBuZXZlciBjb3BpZXMgUEVSSU9EcykuCisJCSAqLworCQlp ZiAoYm1zX2lzX21lbWJlcihwYXJlbnRfYXR0bm8sIHBlcmlvZGF0dHMpKQorCQkJY29udGlu dWU7CisKKwkJYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0cih0dXBsZURlc2MsIHBhcmVudF9h dHRubyAtIDEpOworCiAJCS8qCiAJCSAqIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMgaW4gdGhl IHBhcmVudC4KIAkJICovCkBAIC0zMDA4LDYgKzMxMzUsMTAgQEAgdHJhbnNmb3JtSW5kZXhT dG10KE9pZCByZWxpZCwgSW5kZXhTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmlu ZykKIAkJfQogCX0KIAorCS8qIHRha2UgY2FyZSBvZiB0aGUgcGVyaW9kICovCisJaWYgKHN0 bXQtPnBlcmlvZCkKKwkJc3RtdC0+cGVyaW9kLT5vaWQgPSBnZXRfcGVyaW9kX29pZChyZWxp ZCwgc3RtdC0+cGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxzZSk7CisKIAkvKgogCSAqIENoZWNr IHRoYXQgb25seSB0aGUgYmFzZSByZWwgaXMgbWVudGlvbmVkLiAgKFRoaXMgc2hvdWxkIGJl IGRlYWQgY29kZQogCSAqIG5vdyB0aGF0IGFkZF9taXNzaW5nX2Zyb20gaXMgaGlzdG9yeS4p CkBAIC0zNDY1LDYgKzM1OTYsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVs aWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCWN4dC5pbmhSZWxhdGlvbnMgPSBOSUw7CiAJ Y3h0LmlzYWx0ZXIgPSB0cnVlOwogCWN4dC5jb2x1bW5zID0gTklMOworCWN4dC5wZXJpb2Rz ID0gTklMOwogCWN4dC5ja2NvbnN0cmFpbnRzID0gTklMOwogCWN4dC5ubmNvbnN0cmFpbnRz ID0gTklMOwogCWN4dC5ma2NvbnN0cmFpbnRzID0gTklMOwpAQCAtMzUyNyw2ICszNjU5LDE1 IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQg KnN0bXQsCiAJCQkJCQkgKGludCkgbm9kZVRhZyhjbWQtPmRlZikpOwogCQkJCWJyZWFrOwog CisJCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCQl7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5k KG5ld2NtZHMsIGNtZCk7CisJCQkJCS8vIFdoeSBub3QgY2FsbCB0cmFuc2Zvcm1UYWJsZVBl cmlvZCBoZXJlPworCQkJCQkvLyBBaCBiZWNhdXNlIGl0IGxvb2tzIGF0IGN4dC0+Y29sdW1u cworCQkJCQkvLyBhbmQgaW4gYW4gQUxURVIgc3RhdGVtZW50IHRoZSBjb2x1bW5zIG1pZ2h0 IGFscmVhZHkgZXhpc3QgKG9yIG5vdCkuCisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJY2Fz ZSBBVF9BbHRlckNvbHVtblR5cGU6CiAJCQkJewogCQkJCQlDb2x1bW5EZWYgICpkZWYgPSBj YXN0Tm9kZShDb2x1bW5EZWYsIGNtZC0+ZGVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQpp bmRleCAxOTllYWU1MjVkMS4uZDA0Yzc1YjM5ODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZp bGUKQEAgLTc4LDYgKzc4LDcgQEAgT0JKUyA9IFwKIAlvcmFjbGVfY29tcGF0Lm8gXAogCW9y ZGVyZWRzZXRhZ2dzLm8gXAogCXBhcnRpdGlvbmZ1bmNzLm8gXAorCXBlcmlvZC5vIFwKIAlw Z19sb2NhbGUubyBcCiAJcGdfbHNuLm8gXAogCXBnX3VwZ3JhZGVfc3VwcG9ydC5vIFwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZXJpb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMGVkNDMwNGUxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcGVyaW9kLmMKQEAgLTAsMCArMSw1NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogcGVyaW9kLmMKKyAqCSAgRnVuY3Rpb25zIHRvIHN1cHBvcnQgcGVyaW9kcy4K KyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9k LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVz LmgiCisKKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2luY2x1ZGUgImZtZ3Iu aCIKKyNpbmNsdWRlICJub2Rlcy9wcmltbm9kZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdy cHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvcGVyaW9kLmgiCisjaW5jbHVkZSAidXRpbHMv cmFuZ2V0eXBlcy5oIgorCitEYXR1bSBwZXJpb2RfdG9fcmFuZ2UoVHVwbGVUYWJsZVNsb3Qg KnNsb3QsIGludCBzdGFydGF0dG5vLCBpbnQgZW5kYXR0bm8sIE9pZCByYW5nZXR5cGUpCit7 CisJRGF0dW0gc3RhcnR2YWx1ZTsKKwlEYXR1bSBlbmR2YWx1ZTsKKwlEYXR1bSByZXN1bHQ7 CisJYm9vbAlzdGFydGlzbnVsbDsKKwlib29sCWVuZGlzbnVsbDsKKwlMT0NBTF9GQ0lORk8o ZmNpbmZvLCAyKTsKKwlGbWdySW5mbwlmbGluZm87CisJRnVuY0V4cHIgICAqZjsKKworCUlu aXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgqZmNpbmZvLCAmZmxpbmZvLCAyLCBJbnZhbGlkT2lk LCBOVUxMLCBOVUxMKTsKKwlmID0gbWFrZU5vZGUoRnVuY0V4cHIpOworCWYtPmZ1bmNyZXN1 bHR0eXBlID0gcmFuZ2V0eXBlOworCWZsaW5mby5mbl9leHByID0gKE5vZGUgKikgZjsKKwlm bGluZm8uZm5fZXh0cmEgPSBOVUxMOworCisJLyogY29tcHV0ZSBvbGR2YWx1ZSAqLworCXN0 YXJ0dmFsdWUgPSBzbG90X2dldGF0dHIoc2xvdCwgc3RhcnRhdHRubywgJnN0YXJ0aXNudWxs KTsKKwllbmR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBlbmRhdHRubywgJmVuZGlzbnVs bCk7CisKKwlmY2luZm8tPmFyZ3NbMF0udmFsdWUgPSBzdGFydHZhbHVlOworCWZjaW5mby0+ YXJnc1swXS5pc251bGwgPSBzdGFydGlzbnVsbDsKKwlmY2luZm8tPmFyZ3NbMV0udmFsdWUg PSBlbmR2YWx1ZTsKKwlmY2luZm8tPmFyZ3NbMV0uaXNudWxsID0gZW5kaXNudWxsOworCisJ cmVzdWx0ID0gcmFuZ2VfY29uc3RydWN0b3IyKGZjaW5mbyk7CisJaWYgKGZjaW5mby0+aXNu dWxsKQorCQllbG9nKEVSUk9SLCAiZnVuY3Rpb24gJXUgcmV0dXJuZWQgTlVMTCIsIGZsaW5m by5mbl9vaWQpOworCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMKaW5kZXggYmIxOTdkOTU0YjYuLjczYTlkMGEzNDg2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg ImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNz LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGlj LmgiCkBAIC0xMDIxLDYgKzEwMjIsNjggQEAgZ2V0X2F0dG9wdGlvbnMoT2lkIHJlbGlkLCBp bnQxNiBhdHRudW0pCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoJCQkJLS0tLS0tLS0tLSBQ R19QRVJJT0QgQ0FDSEUgLS0tLS0tLS0tLQkJCQkgKi8KKworLyoKKyAqIGdldF9wZXJpb2Ru YW1lIC0gZ2l2ZW4gaXRzIE9JRCwgbG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElmIG1pc3Np bmdfb2sgaXMgZmFsc2UsIHRocm93IGFuIGVycm9yIGlmIHRoZSBwZXJpb2QgaXMgbm90IGZv dW5kLgorICogSWYgdHJ1ZSwganVzdCByZXR1cm4gSW52YWxpZE9pZC4KKyAqLworY2hhciAq CitnZXRfcGVyaW9kbmFtZShPaWQgcGVyaW9kaWQsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlI ZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJ CQkgT2JqZWN0SWRHZXREYXR1bShwZXJpb2RpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlk KHRwKSkKKwl7CisJCUZvcm1fcGdfcGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9wZ19wZXJp b2QpIEdFVFNUUlVDVCh0cCk7CisJCWNoYXIJICAgKnJlc3VsdDsKKworCQlyZXN1bHQgPSBw c3RyZHVwKE5hbWVTdHIocGVyaW9kX3R1cC0+cGVybmFtZSkpOworCQlSZWxlYXNlU3lzQ2Fj aGUodHApOworCQlyZXR1cm4gcmVzdWx0OworCX0KKworCWlmICghbWlzc2luZ19vaykKKwkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAlZCIsCisJCQkg cGVyaW9kaWQpOworCXJldHVybiBOVUxMOworfQorCisvKgorICogZ2V0X3BlcmlvZF9vaWQg LSBnZXRzIGl0cyByZWxhdGlvbiBhbmQgbmFtZSwgbG9vayB1cCBhIHBlcmlvZAorICoKKyAq IElmIG1pc3Npbmdfb2sgaXMgZmFsc2UsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYXN0IGlz IG5vdCBmb3VuZC4gIElmCisgKiB0cnVlLCBqdXN0IHJldHVybiBJbnZhbGlkT2lkLgorICov CitPaWQKK2dldF9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVyaW9kbmFt ZSwgYm9vbCBtaXNzaW5nX29rKQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNo U3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxpZCks CisJCQkJCQkgUG9pbnRlckdldERhdHVtKHBlcmlvZG5hbWUpKTsKKworCWlmIChIZWFwVHVw bGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfcGVyaW9kIHBlcmlvZF90dXAgPSAoRm9y bV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0cCk7CisJCU9pZCByZXN1bHQ7CisKKwkJcmVzdWx0 ID0gcGVyaW9kX3R1cC0+b2lkOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4g cmVzdWx0OworCX0KKworCWlmICghbWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAlcyIsCisJCQkgcGVyaW9kbmFtZSk7CisJcmV0 dXJuIEludmFsaWRPaWQ7Cit9CisKIC8qCQkJCS0tLS0tLS0tLS0gUEdfQ0FTVCBDQUNIRSAt LS0tLS0tLS0tCQkJCQkgKi8KIAogLyoKQEAgLTM1NjQsNiArMzYyNywzMCBAQCBnZXRfbXVs dGlyYW5nZV9yYW5nZShPaWQgbXVsdGlyYW5nZU9pZCkKIAkJcmV0dXJuIEludmFsaWRPaWQ7 CiB9CiAKK09pZAorZ2V0X3N1YnR5cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQpCit7CisJQ2F0 Q0xpc3QgKmNhdGxpc3Q7CisJT2lkCXJlc3VsdCA9IEludmFsaWRPaWQ7CisKKwljYXRsaXN0 ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShSQU5HRVNVQlRZUEUsIE9iamVjdElkR2V0RGF0dW0o c3VidHlwZU9pZCkpOworCisJaWYgKGNhdGxpc3QtPm5fbWVtYmVycyA9PSAxKQorCXsKKwkJ SGVhcFR1cGxlCXR1cGxlID0gJmNhdGxpc3QtPm1lbWJlcnNbMF0tPnR1cGxlOworCQlGb3Jt X3BnX3JhbmdlIHJuZ3R1cCA9IChGb3JtX3BnX3JhbmdlKSBHRVRTVFJVQ1QodHVwbGUpOwor CQlyZXN1bHQgPSBybmd0dXAtPnJuZ3R5cGlkOworCQlSZWxlYXNlQ2F0Q2FjaGVMaXN0KGNh dGxpc3QpOworCX0KKwllbHNlIGlmIChjYXRsaXN0LT5uX21lbWJlcnMgPiAxKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9EQVRBVFlQ RSksCisJCQkJIGVycm1zZygiYW1iaWd1b3VzIHJhbmdlIGZvciB0eXBlICVzIiwKKwkJCQkJ CWZvcm1hdF90eXBlX2JlKHN1YnR5cGVPaWQpKSkpOworCisJcmV0dXJuIHJlc3VsdDsKK30K KwogLyoJCQkJLS0tLS0tLS0tLSBQR19JTkRFWCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAqLwog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKaW5kZXggYzEwYTdiM2QwZDIu LmVmZDg0NTBiYWVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKQEAgLTQ5 LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19w YXJ0aXRpb25lZF90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNl LmgiCkBAIC00MjIsNiArNDIzLDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FjaGVkZXNj IGNhY2hlaW5mb1tdID0gewogCQlLRVkoQW51bV9wZ19wYXJ0aXRpb25lZF90YWJsZV9wYXJ0 cmVsaWQpLAogCQkzMgogCX0sCisJW1BFUklPRE5BTUVdID0geworCQlQZXJpb2RSZWxhdGlv bklkLAorCQlQZXJpb2RSZWxpZE5hbWVJbmRleElkLAorCQlLRVkoQW51bV9wZ19wZXJpb2Rf cGVycmVsaWQsCisJCQlBbnVtX3BnX3BlcmlvZF9wZXJuYW1lKSwKKwkJMzIKKwl9LAorCVtQ RVJJT0RPSURdID0geworCQlQZXJpb2RSZWxhdGlvbklkLAorCQlQZXJpb2RPYmplY3RJbmRl eElkLAorCQlLRVkoQW51bV9wZ19wZXJpb2Rfb2lkKSwKKwkJMzIKKwl9LAogCVtQUk9DTkFN RUFSR1NOU1BdID0gewogCQlQcm9jZWR1cmVSZWxhdGlvbklkLAogCQlQcm9jZWR1cmVOYW1l QXJnc05zcEluZGV4SWQsCkBAIC00ODAsNiArNDk0LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgY2FjaGVkZXNjIGNhY2hlaW5mb1tdID0gewogCQlLRVkoQW51bV9wZ19yYW5nZV9ybmdt dWx0aXR5cGlkKSwKIAkJNAogCX0sCisJW1JBTkdFU1VCVFlQRV0gPSB7CisJCVJhbmdlUmVs YXRpb25JZCwKKwkJUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJZCwKKwkJS0VZKEFudW1fcGdf cmFuZ2Vfcm5nc3VidHlwZSwKKwkJCUFudW1fcGdfcmFuZ2Vfcm5ndHlwaWQpLAorCQk0CisJ fSwKIAlbUkFOR0VUWVBFXSA9IHsKIAkJUmFuZ2VSZWxhdGlvbklkLAogCQlSYW5nZVR5cGlk SW5kZXhJZCwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2 ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwppbmRleCAyNTZk MWUzNWE0ZS4uMGEyNjk2YzU1OTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hp dmVyLmMKQEAgLTM1MTgsNiArMzUxOCw3IEBAIF9nZXRPYmplY3REZXNjcmlwdGlvbihQUUV4 cEJ1ZmZlciBidWYsIGNvbnN0IFRvY0VudHJ5ICp0ZSkKIAkJCSBzdHJjbXAodHlwZSwgIkRB VEFCQVNFIFBST1BFUlRJRVMiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5cGUsICJERUZBVUxU IikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiRksgQ09OU1RSQUlOVCIpID09IDAgfHwK KwkJCSBzdHJjbXAodHlwZSwgIlBFUklPRCIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwg IklOREVYIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiUlVMRSIpID09IDAgfHwKIAkJ CSBzdHJjbXAodHlwZSwgIlRSSUdHRVIiKSA9PSAwIHx8CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAx M2RhMjQ1M2ExMS4uMDE2MmZjNGZiZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNjYwMCw2ICs2 NjAwLDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCWlu dAkJCWlfcmVsdHlwZTsKIAlpbnQJCQlpX3JlbG93bmVyOwogCWludAkJCWlfcmVsY2hlY2tz OworCWludAkJCWlfbnBlcmlvZDsKIAlpbnQJCQlpX3JlbGhhc2luZGV4OwogCWludAkJCWlf cmVsaGFzcnVsZXM7CiAJaW50CQkJaV9yZWxwYWdlczsKQEAgLTY2NzcsNiArNjY3OCwxNCBA QCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiYy5yZWxoYXNvaWRzLCAiKTsKIAorCS8q IEluIFBHMTYgdXB3YXJkcyB3ZSBoYXZlIFBFUklPRHMuICovCisJaWYgKGZvdXQtPnJlbW90 ZVZlcnNpb24gPj0gMTYwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJ CQkJCQkgIihTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wZXJpb2QgV0hFUkUgcGVycmVsaWQg PSBjLm9pZCkgQVMgbnBlcmlvZHMsICIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksCisJCQkJCQkJICIwIEFTIG5wZXJpb2RzLCAiKTsKKwogCWlmIChmb3V0LT5y ZW1vdGVWZXJzaW9uID49IDkwMzAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwK IAkJCQkJCQkgImMucmVsaXNwb3B1bGF0ZWQsICIpOwpAQCAtNjgxNCw2ICs2ODIzLDcgQEAg Z2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCWlfcmVsdHlwZSA9 IFBRZm51bWJlcihyZXMsICJyZWx0eXBlIik7CiAJaV9yZWxvd25lciA9IFBRZm51bWJlcihy ZXMsICJyZWxvd25lciIpOwogCWlfcmVsY2hlY2tzID0gUFFmbnVtYmVyKHJlcywgInJlbGNo ZWNrcyIpOworCWlfbnBlcmlvZCA9IFBRZm51bWJlcihyZXMsICJucGVyaW9kcyIpOwogCWlf cmVsaGFzaW5kZXggPSBQUWZudW1iZXIocmVzLCAicmVsaGFzaW5kZXgiKTsKIAlpX3JlbGhh c3J1bGVzID0gUFFmbnVtYmVyKHJlcywgInJlbGhhc3J1bGVzIik7CiAJaV9yZWxwYWdlcyA9 IFBRZm51bWJlcihyZXMsICJyZWxwYWdlcyIpOwpAQCAtNjg5Nyw2ICs2OTA3LDcgQEAgZ2V0 VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCQl9CiAJCXRibGluZm9b aV0ucmVsdGFibGVzcGFjZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWx0 YWJsZXNwYWNlKSk7CiAJCXRibGluZm9baV0uaGFzb2lkcyA9IChzdHJjbXAoUFFnZXR2YWx1 ZShyZXMsIGksIGlfcmVsaGFzb2lkcyksICJ0IikgPT0gMCk7CisJCXRibGluZm9baV0ubnBl cmlvZCA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIGksIGlfbnBlcmlvZCkpOwogCQl0YmxpbmZv W2ldLmhhc3RyaWdnZXJzID0gKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxoYXN0 cmlnZ2VycyksICJ0IikgPT0gMCk7CiAJCXRibGluZm9baV0ucmVscGVyc2lzdGVuY2UgPSAq KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbHBlcnNpc3RlbmNlKSk7CiAJCXRibGluZm9baV0u cmVsaXNwb3B1bGF0ZWQgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbGlzcG9w dWxhdGVkKSwgInQiKSA9PSAwKTsKQEAgLTg2MzUsNyArODY0Niw3IEBAIGdldFRyYW5zZm9y bXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UcmFuc2Zvcm1zKQogLyoKICAqIGdldFRhYmxl QXR0cnMgLQogICoJICBmb3IgZWFjaCBpbnRlcmVzdGluZyB0YWJsZSwgcmVhZCBpbmZvIGFi b3V0IGl0cyBhdHRyaWJ1dGVzCi0gKgkgIChuYW1lcywgdHlwZXMsIGRlZmF1bHQgdmFsdWVz LCBDSEVDSyBjb25zdHJhaW50cywgZXRjKQorICoJICAobmFtZXMsIHR5cGVzLCBkZWZhdWx0 IHZhbHVlcywgQ0hFQ0sgY29uc3RyYWludHMsIFBFUklPRHMsIGV0YykKICAqCiAgKgltb2Rp ZmllcyB0YmxpbmZvCiAgKi8KQEAgLTg2ODgsNiArODY5OSw4IEBAIGdldFRhYmxlQXR0cnMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCWZv ciAoaW50IGkgPSAwOyBpIDwgbnVtVGFibGVzOyBpKyspCiAJewogCQlUYWJsZUluZm8gICp0 YmluZm8gPSAmdGJsaW5mb1tpXTsKKwkJaW50CQkJbmR1bXBhYmxlY2hlY2tzOwkvKiBudW1i ZXIgb2YgQ0hFQ0sgY29uc3RyYWludHMgdGhhdCBkbworCQkJCQkJCQkJCSAgIG5vdCBiZWxv bmcgdG8gYSBwZXJpb2QgKi8KIAogCQkvKiBEb24ndCBib3RoZXIgdG8gY29sbGVjdCBpbmZv IGZvciBzZXF1ZW5jZXMgKi8KIAkJaWYgKHRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFKQpAQCAtODcwMiw3ICs4NzE1LDggQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQlhcHBlbmRQUUV4 cEJ1ZmZlckNoYXIodGJsb2lkcywgJywnKTsKIAkJYXBwZW5kUFFFeHBCdWZmZXIodGJsb2lk cywgIiV1IiwgdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7CiAKLQkJaWYgKHRiaW5mby0+bmNo ZWNrID4gMCkKKwkJbmR1bXBhYmxlY2hlY2tzID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8t Pm5wZXJpb2Q7CisJCWlmIChuZHVtcGFibGVjaGVja3MgPiAwKQogCQl7CiAJCQkvKiBBbHNv IG1ha2UgYSBsaXN0IG9mIHRoZSBvbmVzIHdpdGggY2hlY2sgY29uc3RyYWludHMgKi8KIAkJ CWlmIChjaGVja29pZHMtPmxlbiA+IDEpIC8qIGRvIHdlIGhhdmUgbW9yZSB0aGFuIHRoZSAn eyc/ICovCkBAIC05MjM4LDE1ICs5MjUyLDM2IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAq Zm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQlwZ19sb2dfaW5m bygiZmluZGluZyB0YWJsZSBjaGVjayBjb25zdHJhaW50cyIpOwogCiAJCXJlc2V0UFFFeHBC dWZmZXIocSk7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKHEsCi0JCQkJCQkgICJTRUxFQ1QgYy50 YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAiCi0JCQkJCQkgICJwZ19jYXRh bG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkKSBBUyBjb25zcmMsICIKLQkJCQkJCSAg ImNvbmlzbG9jYWwsIGNvbnZhbGlkYXRlZCAiCi0JCQkJCQkgICJGUk9NIHVubmVzdCgnJXMn OjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgotCQkJCQkJICAiSk9JTiBw Z19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQp XG4iCi0JCQkJCQkgICJXSEVSRSBjb250eXBlID0gJ2MnICIKLQkJCQkJCSAgIk9SREVSIEJZ IGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCi0JCQkJCQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJ CWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE2MDAwMCkKKwkJeworCQkJLyoKKwkJCSAq IFBFUklPRHMgd2VyZSBhZGRlZCBpbiB2MTcgYW5kIHdlIGRvbid0IGR1bXAgQ0hFQ0sKKwkJ CSAqIGNvbnN0cmFpbnRzIGZvciB0aGVtLgorCQkJICovCisJCQlhcHBlbmRQUUV4cEJ1ZmZl cihxLAorCQkJCQkJCSAgIlNFTEVDVCBjLnRhYmxlb2lkLCBjLm9pZCwgY29ucmVsaWQsIGNv bm5hbWUsICIKKwkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMu b2lkKSBBUyBjb25zcmMsICIKKwkJCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQg IgorCQkJCQkJCSAgIkZST00gdW5uZXN0KCclcyc6OnBnX2NhdGFsb2cub2lkW10pIEFTIHNy Yyh0YmxvaWQpXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQg YyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCisJCQkJCQkJICAiV0hFUkUgY29u dHlwZSA9ICdjJyAiCisJCQkJCQkJICAiICAgQU5EIE5PVCBFWElTVFMgKFNFTEVDVCBGUk9N IHBnX3BlcmlvZCAiCisJCQkJCQkJICAiICAgICAgICAgICAgICAgICAgIFdIRVJFIChwZXJy ZWxpZCwgcGVyY29uc3RyYWludCkgPSAoY29ucmVsaWQsIGMub2lkKSkgIgorCQkJCQkJCSAg Ik9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMt PmRhdGEpOworCQl9CisJCWVsc2UKKwkJeworCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJ CQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAi CisJCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihjLm9pZCkgQVMg Y29uc3JjLCAiCisJCQkJCQkJICAiY29uaXNsb2NhbCwgY29udmFsaWRhdGVkICIKKwkJCQkJ CQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lk KVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGMgT04gKHNy Yy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgorCQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAn YycgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCisJCQkJ CQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9CiAKIAkJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5 KGZvdXQsIHEtPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CiAKQEAgLTkyNjgsNiArOTMwMyw3 IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBp bnQgbnVtVGFibGVzKQogCQkJT2lkCQkJY29ucmVsaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShy ZXMsIGosIGlfY29ucmVsaWQpKTsKIAkJCVRhYmxlSW5mbyAgKnRiaW5mbyA9IE5VTEw7CiAJ CQlpbnQJCQludW1jb25zOworCQkJaW50CQkJbmR1bXBhYmxlY2hlY2tzOwogCiAJCQkvKiBD b3VudCByb3dzIGZvciB0aGlzIHRhYmxlICovCiAJCQlmb3IgKG51bWNvbnMgPSAxOyBudW1j b25zIDwgbnVtQ29uc3RycyAtIGo7IG51bWNvbnMrKykKQEAgLTkyODcsMTIgKzkzMjMsMTMg QEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGlu dCBudW1UYWJsZXMpCiAJCQlpZiAoY3VydGJsaW5keCA+PSBudW1UYWJsZXMpCiAJCQkJcGdf ZmF0YWwoInVucmVjb2duaXplZCB0YWJsZSBPSUQgJXUiLCBjb25yZWxpZCk7CiAKLQkJCWlm IChudW1jb25zICE9IHRiaW5mby0+bmNoZWNrKQorCQkJbmR1bXBhYmxlY2hlY2tzID0gdGJp bmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCQlpZiAobnVtY29ucyAhPSBuZHVt cGFibGVjaGVja3MpCiAJCQl7CiAJCQkJcGdfbG9nX2Vycm9yKG5nZXR0ZXh0KCJleHBlY3Rl ZCAlZCBjaGVjayBjb25zdHJhaW50IG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAog CQkJCQkJCQkJICAiZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWludHMgb24gdGFibGUgXCIl c1wiIGJ1dCBmb3VuZCAlZCIsCi0JCQkJCQkJCQkgIHRiaW5mby0+bmNoZWNrKSwKLQkJCQkJ CQkgdGJpbmZvLT5uY2hlY2ssIHRiaW5mby0+ZG9iai5uYW1lLCBudW1jb25zKTsKKwkJCQkJ CQkJCSAgbmR1bXBhYmxlY2hlY2tzKSwKKwkJCQkJCQkgbmR1bXBhYmxlY2hlY2tzLCB0Ymlu Zm8tPmRvYmoubmFtZSwgbnVtY29ucyk7CiAJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRoZSBz eXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUgY29ycnVwdGVkLiIpOwogCQkJCWV4aXRfbmljZWx5 KDEpOwogCQkJfQpAQCAtOTM1MSw2ICs5Mzg4LDc5IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQlQUWNsZWFy KHJlcyk7CiAJfQogCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkrKykKKwl7 CisJCVRhYmxlSW5mbyAgKnRiaW5mbyA9ICZ0YmxpbmZvW2ldOworCisJCS8qCisJCSAqIEdl dCBpbmZvIGFib3V0IFBFUklPRCBkZWZpbml0aW9ucworCQkgKi8KKwkJaWYgKHRiaW5mby0+ bnBlcmlvZCA+IDApCisJCXsKKwkJCVBlcmlvZEluZm8gKnBlcmlvZHM7CisJCQlpbnQJCQlu dW1QZXJpb2RzOworCQkJaW50CQkJajsKKworCQkJLyogV2Ugc2hvdWxkbid0IGhhdmUgYW55 IHBlcmlvZHMgYmVmb3JlIHYxNyAqLworCQkJQXNzZXJ0KGZvdXQtPnJlbW90ZVZlcnNpb24g Pj0gMTYwMDAwKTsKKworCQkJcGdfbG9nX2luZm8oImZpbmRpbmcgcGVyaW9kcyBmb3IgdGFi bGUgXCIlcy4lc1wiIiwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFt ZSwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKKworCQkJcmVzZXRQUUV4cEJ1ZmZlcihx KTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJIlNFTEVDVCBwLnRhYmxlb2lkLCBw Lm9pZCwgcC5wZXJuYW1lLCAiCisJCQkJIiAgICAgICBzYS5hdHRuYW1lIEFTIHBlcnN0YXJ0 LCBlYS5hdHRuYW1lIEFTIHBlcmVuZCwgIgorCQkJCSIgICAgICAgci50eXBuYW1lIEFTIHJu Z3R5cGUsICIKKwkJCQkiICAgICAgIGMuY29ubmFtZSBBUyBjb25uYW1lICIKKwkJCQkiRlJP TSBwZ19jYXRhbG9nLnBnX3BlcmlvZCBBUyBwICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBn X2F0dHJpYnV0ZSBBUyBzYSBPTiAoc2EuYXR0cmVsaWQsIHNhLmF0dG51bSkgPSAocC5wZXJy ZWxpZCwgcC5wZXJzdGFydCkgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdfYXR0cmlidXRl IEFTIGVhIE9OIChlYS5hdHRyZWxpZCwgZWEuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBl cmVuZCkgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdfdHlwZSBBUyByIE9OIHIub2lkID0g cC5wZXJybmd0eXBlICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgQVMg YyBPTiBjLm9pZCA9IHAucGVyY29uc3RyYWludCAiCisJCQkJIldIRVJFIHAucGVycmVsaWQg PSAnJXUnOjpwZ19jYXRhbG9nLm9pZCAiCisJCQkJIk9SREVSIEJZIHAucGVybmFtZSIsCisJ CQkJdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7CisKKwkJCXJlcyA9IEV4ZWN1dGVTcWxRdWVy eShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOworCisJCQkvKgorCQkJICogSWYg d2UgZGlkbid0IGdldCB0aGUgbnVtYmVyIG9mIHJvd3Mgd2UgdGhvdWdodCB3ZSB3ZXJlIGdv aW5nIHRvLAorCQkJICogdGhlbiB0aG9zZSBKT0lOcyBkaWRuJ3Qgd29yay4KKwkJCSAqLwor CQkJbnVtUGVyaW9kcyA9IFBRbnR1cGxlcyhyZXMpOworCQkJaWYgKG51bVBlcmlvZHMgIT0g dGJpbmZvLT5ucGVyaW9kKQorCQkJeworCQkJCXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJleHBl Y3RlZCAlZCBwZXJpb2Qgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJCQkJ CQkgImV4cGVjdGVkICVkIHBlcmlvZHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIs CisJCQkJCQkJCQkgdGJpbmZvLT5ucGVyaW9kKSwKKwkJCQkJCQl0YmluZm8tPm5wZXJpb2Qs IHRiaW5mby0+ZG9iai5uYW1lLCBudW1QZXJpb2RzKTsKKwkJCQlwZ19sb2dfaW5mbygiKFRo ZSBzeXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUgY29ycnVwdGVkLikiKTsKKwkJCQlleGl0X25p Y2VseSgxKTsKKwkJCX0KKworCQkJcGVyaW9kcyA9IChQZXJpb2RJbmZvICopIHBnX21hbGxv YyhudW1QZXJpb2RzICogc2l6ZW9mKFBlcmlvZEluZm8pKTsKKwkJCXRiaW5mby0+cGVyaW9k cyA9IHBlcmlvZHM7CisKKwkJCWZvciAoaiA9IDA7IGogPCBudW1QZXJpb2RzOyBqKyspCisJ CQl7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm9ialR5cGUgPSBET19QRVJJT0Q7CisJCQkJcGVy aW9kc1tqXS5kb2JqLmNhdElkLnRhYmxlb2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBq LCAwKSk7CisJCQkJcGVyaW9kc1tqXS5kb2JqLmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZh bHVlKHJlcywgaiwgMSkpOworCQkJCUFzc2lnbkR1bXBJZCgmcGVyaW9kc1tqXS5kb2JqKTsK KwkJCQlwZXJpb2RzW2pdLmRvYmoubmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywg aiwgMikpOworCQkJCXBlcmlvZHNbal0uZG9iai5uYW1lc3BhY2UgPSB0YmluZm8tPmRvYmou bmFtZXNwYWNlOworCQkJCXBlcmlvZHNbal0ucGVydGFibGUgPSB0YmluZm87CisJCQkJcGVy aW9kc1tqXS5wZXJzdGFydCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgMykpOwor CQkJCXBlcmlvZHNbal0ucGVyZW5kID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA0 KSk7CisJCQkJcGVyaW9kc1tqXS5ybmd0eXBlID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVz LCBqLCA1KSk7CisJCQkJcGVyaW9kc1tqXS5jb25uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFs dWUocmVzLCBqLCA2KSk7CisJCQl9CisJCQlQUWNsZWFyKHJlcyk7CisJCX0KKwl9CisKIAlk ZXN0cm95UFFFeHBCdWZmZXIocSk7CiAJZGVzdHJveVBRRXhwQnVmZmVyKHRibG9pZHMpOwog CWRlc3Ryb3lQUUV4cEJ1ZmZlcihjaGVja29pZHMpOwpAQCAtMTA2MjEsNiArMTA3MzEsOCBA QCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRv YmopCiAJCWNhc2UgRE9fRktfQ09OU1RSQUlOVDoKIAkJCWR1bXBDb25zdHJhaW50KGZvdXQs IChjb25zdCBDb25zdHJhaW50SW5mbyAqKSBkb2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERP X1BFUklPRDoKKwkJCWJyZWFrOwogCQljYXNlIERPX1BST0NMQU5HOgogCQkJZHVtcFByb2NM YW5nKGZvdXQsIChjb25zdCBQcm9jTGFuZ0luZm8gKikgZG9iaik7CiAJCQlicmVhazsKQEAg LTE2MTU5LDYgKzE2MjcxLDMyIEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBj b25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJCQl9CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBB ZGQgbm9uLWluaGVyaXRlZCBQRVJJT0QgZGVmaW5pdGlvbnMsIGlmIGFueS4KKwkJCSAqLwor CQkJZm9yIChqID0gMDsgaiA8IHRiaW5mby0+bnBlcmlvZDsgaisrKQorCQkJeworCQkJCVBl cmlvZEluZm8gKnBlcmlvZCA9ICYodGJpbmZvLT5wZXJpb2RzW2pdKTsKKworCQkJCWNoYXIJ ICAgKm5hbWUgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5kb2JqLm5hbWUpKTsKKwkJCQlj aGFyCSAgICpzdGFydCA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnBlcnN0YXJ0KSk7CisJ CQkJY2hhcgkgICAqZW5kID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+cGVyZW5kKSk7CisJ CQkJY2hhcgkgICAqcm5ndHlwZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnJuZ3R5cGUp KTsKKwkJCQljaGFyCSAgICpjb25uYW1lID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+Y29u bmFtZSkpOworCisJCQkJaWYgKGFjdHVhbF9hdHRzID09IDApCisJCQkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHEsICIgKFxuICAgICIpOworCQkJCWVsc2UKKwkJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocSwgIixcbiAgICAiKTsKKworCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICJQ RVJJT0QgRk9SICVzICglcywgJXMpICIKKwkJCQkJCSJXSVRIIChyYW5nZXR5cGUgPSAlcywg Y2hlY2tfY29uc3RyYWludF9uYW1lID0gJXMpIiwKKwkJCQkJCQkJICBuYW1lLCBzdGFydCwg ZW5kLAorCQkJCQkJCQkgIHJuZ3R5cGUsIGNvbm5hbWUpOworCisJCQkJYWN0dWFsX2F0dHMr KzsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIEFkZCBub24taW5oZXJpdGVkIENIRUNLIGNvbnN0 cmFpbnRzLCBpZiBhbnkuCiAJCQkgKgpAQCAtMTYxNjcsNyArMTYzMDUsNyBAQCBkdW1wVGFi bGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkg KiBQQVJUSVRJT04gdGhhdCB3ZSdsbCBlbWl0IGxhdGVyIGV4cGVjdHMgdGhlIGNvbnN0cmFp bnQgdG8gYmUKIAkJCSAqIHRoZXJlLiAgKE5vIG5lZWQgdG8gZml4IGNvbmlzbG9jYWw6IEFU VEFDSCBQQVJUSVRJT04gZG9lcyB0aGF0KQogCQkJICovCi0JCQlmb3IgKGogPSAwOyBqIDwg dGJpbmZvLT5uY2hlY2s7IGorKykKKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVj ayAtIHRiaW5mby0+bnBlcmlvZDsgaisrKQogCQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpj b25zdHIgPSAmKHRiaW5mby0+Y2hlY2tleHByc1tqXSk7CiAKQEAgLTE2Mzg1LDcgKzE2NTIz LDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAq dGJpbmZvKQogCQkJICogRm9yIHBhcnRpdGlvbnMsIHRoZXkgd2VyZSBhbHJlYWR5IGR1bXBl ZCwgYW5kIGNvbmlzbG9jYWwKIAkJCSAqIGRvZXNuJ3QgbmVlZCBmaXhpbmcuCiAJCQkgKi8K LQkJCWZvciAoayA9IDA7IGsgPCB0YmluZm8tPm5jaGVjazsgaysrKQorCQkJZm9yIChrID0g MDsgayA8IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBrKyspCiAJCQl7CiAJ CQkJQ29uc3RyYWludEluZm8gKmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJzW2tdKTsK IApAQCAtMTY2ODcsNyArMTY4MjUsNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91 dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCWR1bXBUYWJsZVNlY0xhYmVsKGZvdXQs IHRiaW5mbywgcmVsdHlwZW5hbWUpOwogCiAJLyogRHVtcCBjb21tZW50cyBvbiBpbmxpbmVk IHRhYmxlIGNvbnN0cmFpbnRzICovCi0JZm9yIChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNr OyBqKyspCisJZm9yIChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVy aW9kOyBqKyspCiAJewogCQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNo ZWNrZXhwcnNbal0pOwogCkBAIC0xODc3Miw2ICsxODkxMCw3IEBAIGFkZEJvdW5kYXJ5RGVw ZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoqZG9ianMsIGludCBudW1PYmpzLAogCQkJY2Fz ZSBET19UUklHR0VSOgogCQkJY2FzZSBET19FVkVOVF9UUklHR0VSOgogCQkJY2FzZSBET19E RUZBVUxUX0FDTDoKKwkJCWNhc2UgRE9fUEVSSU9EOgogCQkJY2FzZSBET19QT0xJQ1k6CiAJ CQljYXNlIERPX1BVQkxJQ0FUSU9OOgogCQkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaAppbmRleCBkMWE2ZGMwNzIzMi4uYmZmOWVlODk3YmQgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIGVudW0KIAlET19UUklHR0VSLAogCURP X0NPTlNUUkFJTlQsCiAJRE9fRktfQ09OU1RSQUlOVCwJCQkvKiBzZWUgbm90ZSBmb3IgQ29u c3RyYWludEluZm8gKi8KKwlET19QRVJJT0QsCiAJRE9fUFJPQ0xBTkcsCiAJRE9fQ0FTVCwK IAlET19UQUJMRV9EQVRBLApAQCAtMzAwLDEyICszMDEsMTQgQEAgdHlwZWRlZiBzdHJ1Y3Qg X3RhYmxlSW5mbwogCWJvb2wJCXJvd3NlYzsJCQkvKiBpcyByb3cgc2VjdXJpdHkgZW5hYmxl ZD8gKi8KIAlib29sCQlmb3JjZXJvd3NlYzsJLyogaXMgcm93IHNlY3VyaXR5IGZvcmNlZD8g Ki8KIAlib29sCQloYXNvaWRzOwkJLyogZG9lcyBpdCBoYXZlIE9JRHM/ICovCisJYm9vbAkJ aGFzcGVyaW9kczsJCS8qIGRvZXMgaXQgaGF2ZSBhbnkgcGVyaW9kcz8gKi8KIAl1aW50MzIJ CWZyb3plbnhpZDsJCS8qIHRhYmxlJ3MgcmVsZnJvemVueGlkICovCiAJdWludDMyCQltaW5t eGlkOwkJLyogdGFibGUncyByZWxtaW5teGlkICovCiAJT2lkCQkJdG9hc3Rfb2lkOwkJLyog dG9hc3QgdGFibGUncyBPSUQsIG9yIDAgaWYgbm9uZSAqLwogCXVpbnQzMgkJdG9hc3RfZnJv emVueGlkOwkvKiB0b2FzdCB0YWJsZSdzIHJlbGZyb3plbnhpZCwgaWYgYW55ICovCiAJdWlu dDMyCQl0b2FzdF9taW5teGlkOwkvKiB0b2FzdCB0YWJsZSdzIHJlbG1pbm14aWQgKi8KIAlp bnQJCQluY2hlY2s7CQkJLyogIyBvZiBDSEVDSyBleHByZXNzaW9ucyAqLworCWludAkJCW5w ZXJpb2Q7CQkvKiAjIG9mIFBFUklPRCBkZWZpbml0aW9ucyAqLwogCU9pZAkJCXJlbHR5cGU7 CQkvKiBPSUQgb2YgdGFibGUncyBjb21wb3NpdGUgdHlwZSwgaWYgYW55ICovCiAJT2lkCQkJ cmVsb2Z0eXBlOwkJLyogdW5kZXJseWluZyB0eXBlIGZvciB0eXBlZCB0YWJsZSAqLwogCU9p ZAkJCWZvcmVpZ25fc2VydmVyOyAvKiBmb3JlaWduIHNlcnZlciBvaWQsIGlmIGFwcGxpY2Fi bGUgKi8KQEAgLTM1NSw2ICszNTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBfdGFibGVJbmZvCiAJ Ym9vbAkgICAqbm90bnVsbF9pbmg7CS8qIHRydWUgaWYgTk9UIE5VTEwgaGFzIG5vIGxvY2Fs IGRlZmluaXRpb24gKi8KIAlzdHJ1Y3QgX2F0dHJEZWZJbmZvICoqYXR0cmRlZnM7IC8qIERF RkFVTFQgZXhwcmVzc2lvbnMgKi8KIAlzdHJ1Y3QgX2NvbnN0cmFpbnRJbmZvICpjaGVja2V4 cHJzOyAvKiBDSEVDSyBjb25zdHJhaW50cyAqLworCXN0cnVjdCBfcGVyaW9kSW5mbyAqcGVy aW9kczsJLyogUEVSSU9EIGRlZmluaXRpb25zICovCiAJYm9vbAkJbmVlZHNfb3ZlcnJpZGU7 IC8qIGhhcyBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZICovCiAJY2hhcgkgICAqYW1u YW1lOwkJCS8qIHJlbGF0aW9uIGFjY2VzcyBtZXRob2QgKi8KIApAQCAtNDk0LDYgKzQ5OCwx NiBAQCB0eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8KIAlib29sCQlzZXBhcmF0ZTsJ CS8qIHRydWUgaWYgbXVzdCBkdW1wIGFzIHNlcGFyYXRlIGl0ZW0gKi8KIH0gQ29uc3RyYWlu dEluZm87CiAKK3R5cGVkZWYgc3RydWN0IF9wZXJpb2RJbmZvCit7CisJRHVtcGFibGVPYmpl Y3QgZG9iajsKKwlUYWJsZUluZm8gICpwZXJ0YWJsZTsKKwljaGFyCSAgICpwZXJzdGFydDsJ CS8qIHRoZSBuYW1lIG9mIHRoZSBzdGFydCBjb2x1bW4gKi8KKwljaGFyCSAgICpwZXJlbmQ7 CQkJLyogdGhlIG5hbWUgb2YgdGhlIGVuZCBjb2x1bW4gKi8KKwljaGFyCSAgICpybmd0eXBl OwkJLyogdGhlIG5hbWUgb2YgdGhlIHJhbmdlIHR5cGUgKi8KKwljaGFyCSAgICpjb25uYW1l OwkJLyogdGhlIG5hbWUgb2YgdGhlIENIRUNLIGNvbnN0cmFpbnQgKi8KK30gUGVyaW9kSW5m bzsKKwogdHlwZWRlZiBzdHJ1Y3QgX3Byb2NMYW5nSW5mbwogewogCUR1bXBhYmxlT2JqZWN0 IGRvYmo7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKaW5kZXggZjM1OGRkMjJiOWQuLmIyNWIz ODYyYWIyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC04NSw2ICs4NSw3IEBAIGVu dW0gZGJPYmplY3RUeXBlUHJpb3JpdGllcwogCVBSSU9fQ09OU1RSQUlOVCwKIAlQUklPX0lO REVYLAogCVBSSU9fSU5ERVhfQVRUQUNILAorCVBSSU9fUEVSSU9ELAogCVBSSU9fU1RBVFNF WFQsCiAJUFJJT19SVUxFLAogCVBSSU9fVFJJR0dFUiwKQEAgLTEyMCw2ICsxMjEsNyBAQCBz dGF0aWMgY29uc3QgaW50IGRiT2JqZWN0VHlwZVByaW9yaXR5W10gPQogCVBSSU9fQVRUUkRF RiwJCQkJLyogRE9fQVRUUkRFRiAqLwogCVBSSU9fSU5ERVgsCQkJCQkvKiBET19JTkRFWCAq LwogCVBSSU9fSU5ERVhfQVRUQUNILAkJCS8qIERPX0lOREVYX0FUVEFDSCAqLworCVBSSU9f UEVSSU9ELAkJCQkvKiBET19QRVJJT0QgKi8KIAlQUklPX1NUQVRTRVhULAkJCQkvKiBET19T VEFUU0VYVCAqLwogCVBSSU9fUlVMRSwJCQkJCS8qIERPX1JVTEUgKi8KIAlQUklPX1RSSUdH RVIsCQkJCS8qIERPX1RSSUdHRVIgKi8KQEAgLTEzNzAsNiArMTM3MiwxMSBAQCBkZXNjcmli ZUR1bXBhYmxlT2JqZWN0KER1bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1 ZnNpemUpCiAJCQkJCSAiRksgQ09OU1RSQUlOVCAlcyAgKElEICVkIE9JRCAldSkiLAogCQkJ CQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOwogCQkJcmV0dXJu OworCQljYXNlIERPX1BFUklPRDoKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJ ICJQRVJJT0QgJXMgIChJRCAlZCBPSUQgJXUpIiwKKwkJCQkJIG9iai0+bmFtZSwgb2JqLT5k dW1wSWQsIG9iai0+Y2F0SWQub2lkKTsKKwkJCXJldHVybjsKIAkJY2FzZSBET19QUk9DTEFO RzoKIAkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKIAkJCQkJICJQUk9DRURVUkFMIExBTkdV QUdFICVzICAoSUQgJWQgT0lEICV1KSIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVz Y3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDNmOGJmZjU5NTQ4Li42 MWM2OWYxMWVkOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTE5NDMsNiArMTk0Myw4IEBAIGRlc2NyaWJl T25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAKIAlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmYnVmLCAiXG5GUk9NIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGEiKTsK IAlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiXG5XSEVSRSBhLmF0dHJlbGlkID0gJyVzJyBB TkQgYS5hdHRudW0gPiAwIEFORCBOT1QgYS5hdHRpc2Ryb3BwZWQiLCBvaWQpOworCWlmIChw c2V0LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlxu QU5EIE5PVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdfY2F0YWxvZy5wZ19wZXJpb2QgcCBX SEVSRSBwLnBlcnJlbGlkID0gYS5hdHRyZWxpZCBBTkQgcC5wZXJyYW5nZSA9IGEuYXR0bnVt KSIpOwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJcbk9SREVSIEJZIGEuYXR0bnVt OyIpOwogCiAJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOwpAQCAtMjM2NSw2ICsyMzY3LDQw IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CVBHcmVzdWx0ICAgKnJlc3VsdCA9IE5VTEw7CiAJCWludAkJCXR1cGxlcyA9IDA7CiAKKwkJ LyogcHJpbnQgcGVyaW9kcyAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNzAwMDApCisJ CXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHF1b3Rl X2lkZW50KHAucGVybmFtZSksIHF1b3RlX2lkZW50KHMuYXR0bmFtZSkgQVMgc3RhcnRhdHQs IHF1b3RlX2lkZW50KGUuYXR0bmFtZSkgQVMgZW5kYXR0XG4iCisJCQkJCQkJICAiRlJPTSBw Z19wZXJpb2QgQVMgcFxuIgorCQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIHMgT04g KHMuYXR0cmVsaWQsIHMuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KVxuIgor CQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIGUgT04gKGUuYXR0cmVsaWQsIGUuYXR0 bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcmVuZClcbiIKKwkJCQkJCQkgICJXSEVSRSBwLnBl cnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJCQkJCQkgIG9p ZCk7CisJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQlpZiAoIXJlc3VsdCkK KwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMgPSBQUW50dXBs ZXMocmVzdWx0KTsKKworCQkJaWYgKHR1cGxlcyA+IDApCisJCQl7CisJCQkJcHJpbnRUYWJs ZUFkZEZvb3RlcigmY29udCwgXygiUGVyaW9kczoiKSk7CisJCQkJZm9yIChpID0gMDsgaSA8 IHR1cGxlczsgaSsrKQorCQkJCXsKKwkJCQkJLyogdW50cmFuc2xhdGVkIGNvbnN0cmFpbnQg bmFtZSBhbmQgZGVmICovCisJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgJXMg KCVzLCAlcykiLAorCQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCksCisJCQkJ CQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxKSwKKwkJCQkJCQkJCSAgUFFnZXR2YWx1 ZShyZXN1bHQsIGksIDIpKTsKKworCQkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBi dWYuZGF0YSk7CisJCQkJfQorCQkJfQorCQkJUFFjbGVhcihyZXN1bHQpOworCQl9CisKIAkJ LyogcHJpbnQgaW5kZXhlcyAqLwogCQlpZiAodGFibGVpbmZvLmhhc2luZGV4KQogCQl7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IGZkNTg4NjU5MDE0Li5lODRkOTBjMGU1 ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKQEAgLTkzLDYgKzkzLDcgQEAgdHlw ZWRlZiBlbnVtIE9iamVjdENsYXNzCiAJT0NMQVNTX0NBU1QsCQkJCS8qIHBnX2Nhc3QgKi8K IAlPQ0xBU1NfQ09MTEFUSU9OLAkJCS8qIHBnX2NvbGxhdGlvbiAqLwogCU9DTEFTU19DT05T VFJBSU5ULAkJCS8qIHBnX2NvbnN0cmFpbnQgKi8KKwlPQ0xBU1NfUEVSSU9ELAkJCQkvKiBw Z19wZXJpb2QgKi8KIAlPQ0xBU1NfQ09OVkVSU0lPTiwJCQkvKiBwZ19jb252ZXJzaW9uICov CiAJT0NMQVNTX0RFRkFVTFQsCQkJCS8qIHBnX2F0dHJkZWYgKi8KIAlPQ0xBU1NfTEFOR1VB R0UsCQkJLyogcGdfbGFuZ3VhZ2UgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvaGVhcC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKaW5kZXggMWQ3ZjgzODBk OTAuLjM1OTJhNDQ0YmQxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaApAQCAtMTIxLDYgKzEyMSwxMCBA QCBleHRlcm4gTGlzdCAqQWRkUmVsYXRpb25Ob3ROdWxsQ29uc3RyYWludHMoUmVsYXRpb24g cmVsLAogZXh0ZXJuIHZvaWQgUmVsYXRpb25DbGVhck1pc3NpbmcoUmVsYXRpb24gcmVsKTsK IGV4dGVybiB2b2lkIFNldEF0dHJNaXNzaW5nKE9pZCByZWxpZCwgY2hhciAqYXR0bmFtZSwg Y2hhciAqdmFsdWUpOwogCitleHRlcm4gT2lkIFN0b3JlUGVyaW9kKFJlbGF0aW9uIHJlbCwg Y29uc3QgY2hhciAqcGVyaW9kLAorCQkJCQkgICBBdHRyTnVtYmVyIHN0YXJ0bnVtLCBBdHRy TnVtYmVyIGVuZG51bSwKKwkJCQkJICAgQXR0ck51bWJlciByYW5nZW51bSwgT2lkIGNvbm9p ZCk7CisKIGV4dGVybiBOb2RlICpjb29rRGVmYXVsdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkgTm9kZSAqcmF3X2RlZmF1bHQsCiAJCQkJCQkgT2lkIGF0dHR5cGlkLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvbWVzb24uYnVpbGQKaW5kZXggMmJjYmUzMjdjZmUuLjU1OTZjNTIzYjdlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTYxLDYgKzYxLDcgQEAgY2F0YWxvZ19oZWFk ZXJzID0gWwogICAncGdfY29sbGF0aW9uLmgnLAogICAncGdfcGFyYW1ldGVyX2FjbC5oJywK ICAgJ3BnX3BhcnRpdGlvbmVkX3RhYmxlLmgnLAorICAncGdfcGVyaW9kLmgnLAogICAncGdf cmFuZ2UuaCcsCiAgICdwZ190cmFuc2Zvcm0uaCcsCiAgICdwZ19zZXF1ZW5jZS5oJywKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfaW5kZXguaAppbmRleCBlNGYzZjcwODA3MS4uYjRjY2YyZmE2OWUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2luZGV4LmgKQEAgLTQ4LDcgKzQ4LDYgQEAgQ0FUQUxPRyhwZ19p bmRleCwyNjEwLEluZGV4UmVsYXRpb25JZCkgQktJX1NDSEVNQV9NQUNSTwogCS8qIHZhcmlh YmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSwgYnV0IHdlIGFsbG93IGRpcmVjdCBhY2Nl c3MgdG8gaW5ka2V5ICovCiAJaW50MnZlY3RvcglpbmRrZXkgQktJX0ZPUkNFX05PVF9OVUxM OwkvKiBjb2x1bW4gbnVtYmVycyBvZiBpbmRleGVkIGNvbHMsCiAJCQkJCQkJCQkJCSAqIG9y IDAgKi8KLQogI2lmZGVmIENBVEFMT0dfVkFSTEVOCiAJb2lkdmVjdG9yCWluZGNvbGxhdGlv biBCS0lfTE9PS1VQX09QVChwZ19jb2xsYXRpb24pIEJLSV9GT1JDRV9OT1RfTlVMTDsJLyog Y29sbGF0aW9uIGlkZW50aWZpZXJzICovCiAJb2lkdmVjdG9yCWluZGNsYXNzIEJLSV9MT09L VVAocGdfb3BjbGFzcykgQktJX0ZPUkNFX05PVF9OVUxMOyAvKiBvcGNsYXNzIGlkZW50aWZp ZXJzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uZDJjZmZhMDdiY2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3BlcmlvZC5oCisgKgkgIGRlZmluaXRpb24gb2Yg dGhlICJwZXJpb2QiIHN5c3RlbSBjYXRhbG9nIChwZ19wZXJpb2QpCisgKgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIxLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgK KyAqCisgKiBOT1RFUworICoJICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBm aWxlIGFuZCBkZXJpdmVzIHNjaGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQR19QRVJJT0RfSAorI2RlZmluZSBQR19Q RVJJT0RfSAorCisjaW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX3BlcmlvZF9kLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ19wZXJp b2QgZGVmaW5pdGlvbi4gIGNwcCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVj dCBGb3JtRGF0YV9wZ19wZXJpb2QKKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxP RyhwZ19wZXJpb2QsODAwMCxQZXJpb2RSZWxhdGlvbklkKQoreworCU9pZAkJCW9pZDsJCQkv KiBPSUQgb2YgdGhlIHBlcmlvZCAqLworCU5hbWVEYXRhCXBlcm5hbWU7CQkvKiBuYW1lIG9m IHBlcmlvZCAqLworCU9pZAkJCXBlcnJlbGlkOwkJLyogT0lEIG9mIHJlbGF0aW9uIGNvbnRh aW5pbmcgdGhpcyBwZXJpb2QgKi8KKwlpbnQxNgkJcGVyc3RhcnQ7CQkvKiBjb2x1bW4gZm9y IHN0YXJ0IHZhbHVlICovCisJaW50MTYJCXBlcmVuZDsJCQkvKiBjb2x1bW4gZm9yIGVuZCB2 YWx1ZSAqLworCWludDE2CQlwZXJyYW5nZTsJCS8qIGNvbHVtbiBmb3IgcmFuZ2UgdmFsdWUg Ki8KKwlPaWQJCQlwZXJjb25zdHJhaW50OwkvKiBPSUQgb2YgKHN0YXJ0IDwgZW5kKSBjb25z dHJhaW50ICovCit9IEZvcm1EYXRhX3BnX3BlcmlvZDsKKworLyogLS0tLS0tLS0tLS0tLS0t LQorICoJCUZvcm1fcGdfcGVyaW9kIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1 cGxlIHdpdGgKKyAqCQl0aGUgZm9ybWF0IG9mIHBnX3BlcmlvZCByZWxhdGlvbi4KKyAqIC0t LS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBGb3JtRGF0YV9wZ19wZXJpb2QgKkZvcm1f cGdfcGVyaW9kOworCitERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3BlcmlvZF9vaWRf aW5kZXgsIDgwMDEsIFBlcmlvZE9iamVjdEluZGV4SWQsIHBnX3BlcmlvZCwgYnRyZWUob2lk IG9pZF9vcHMpKTsKK0RFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3BlcmlvZF9wZXJyZWxpZF9w ZXJuYW1lX2luZGV4LCA4MDAyLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLCBwZ19wZXJpb2Qs IGJ0cmVlKHBlcnJlbGlkIG9pZF9vcHMsIHBlcm5hbWUgbmFtZV9vcHMpKTsKKworZXh0ZXJu IHZvaWQgUmVtb3ZlUGVyaW9kQnlJZChPaWQgcGVyaW9kSWQpOworCitleHRlcm4gT2lkIGdl dF9yZWxhdGlvbl9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVybmFtZSwg Ym9vbCBtaXNzaW5nX29rKTsKK2V4dGVybiBCaXRtYXBzZXQgKmdldF9wZXJpb2RfYXR0bm9z KE9pZCByZWxpZCk7CisKKyNlbmRpZgkJCQkJCQkvKiBQR19QRVJJT0RfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19yYW5nZS5oCmluZGV4IGExZjUyNzEzMGJmLi5kOTdhOTViZDJmYiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcmFuZ2UuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIEZvcm1EYXRh X3BnX3JhbmdlICpGb3JtX3BnX3JhbmdlOwogCiBERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZ KHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCAzNTQyLCBSYW5nZVR5cGlkSW5kZXhJZCwgcGdf cmFuZ2UsIGJ0cmVlKHJuZ3R5cGlkIG9pZF9vcHMpKTsKIERFQ0xBUkVfVU5JUVVFX0lOREVY KHBnX3JhbmdlX3JuZ211bHRpdHlwaWRfaW5kZXgsIDIyMjgsIFJhbmdlTXVsdGlyYW5nZVR5 cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ211bHRpdHlwaWQgb2lkX29wcykpOwor REVDTEFSRV9VTklRVUVfSU5ERVgocGdfcmFuZ2Vfcm5nc3VidHlwZV9ybmd0eXBpZF9pbmRl eCwgODAwMywgUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJu Z3N1YnR5cGUgb2lkX29wcywgcm5ndHlwaWQgb2lkX29wcykpOwogCiAvKgogICogcHJvdG90 eXBlcyBmb3IgZnVuY3Rpb25zIGluIHBnX3JhbmdlLmMKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVj bWRzLmgKaW5kZXggOTY3Njk0NzJiYmIuLjg5ZTUzOGM3NTA0IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy90YWJsZWNtZHMuaApAQCAtNDAsNyArNDAsOCBAQCBleHRlcm4gTE9DS01PREUgQWx0ZXJU YWJsZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKTsKIAogZXh0ZXJuIHZvaWQgQVRFeGVjQ2hh bmdlT3duZXIoT2lkIHJlbGF0aW9uT2lkLCBPaWQgbmV3T3duZXJJZCwgYm9vbCByZWN1cnNp bmcsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAotZXh0ZXJuIHZvaWQgQWx0ZXJUYWJsZUludGVy bmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlKTsKK2V4dGVybiB2b2lk IEFsdGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJz ZSwKKwkJCQkJCQkgICBzdHJ1Y3QgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0 KTsKIAogZXh0ZXJuIE9pZAlBbHRlclRhYmxlTW92ZUFsbChBbHRlclRhYmxlTW92ZUFsbFN0 bXQgKnN0bXQpOwogCkBAIC0xMDgsNSArMTA5LDYgQEAgZXh0ZXJuIGJvb2wgUGFydENvbnN0 cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCiBleHRlcm4g dm9pZCBGaW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKE9pZCBvcGNsYXNzLAogCQkJCQkJCQkJ ICBPaWQgKnBlcmlvZG9wZXJvaWQsCiAJCQkJCQkJCQkgIE9pZCAqcGVyaW9kcHJvY29pZCk7 CitleHRlcm4gT2lkIGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChQZXJpb2REZWYgKnBl cmlvZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBUQUJMRUNNRFNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCmluZGV4IGM5MzY4MzExMjM5Li5jZWJmYzdhNDU0NSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaApAQCAtMjE0MSw2ICsyMTQxLDcgQEAgdHlwZWRlZiBlbnVtIE9iamVj dFR5cGUKIAlPQkpFQ1RfT1BFUkFUT1IsCiAJT0JKRUNUX09QRkFNSUxZLAogCU9CSkVDVF9Q QVJBTUVURVJfQUNMLAorCU9CSkVDVF9QRVJJT0QsCiAJT0JKRUNUX1BPTElDWSwKIAlPQkpF Q1RfUFJPQ0VEVVJFLAogCU9CSkVDVF9QVUJMSUNBVElPTiwKQEAgLTIyMjksNiArMjIzMCw4 IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX1ZhbGlkYXRlQ29uc3RyYWlu dCwJCS8qIHZhbGlkYXRlIGNvbnN0cmFpbnQgKi8KIAlBVF9BZGRJbmRleENvbnN0cmFpbnQs CQkvKiBhZGQgY29uc3RyYWludCB1c2luZyBleGlzdGluZyBpbmRleCAqLwogCUFUX0Ryb3BD b25zdHJhaW50LAkJCS8qIGRyb3AgY29uc3RyYWludCAqLworCUFUX0FkZFBlcmlvZCwJCQkJ LyogQUREIFBFUklPRCAqLworCUFUX0Ryb3BQZXJpb2QsCQkJCS8qIERST1AgUEVSSU9EICov CiAJQVRfUmVBZGRDb21tZW50LAkJCS8qIGludGVybmFsIHRvIGNvbW1hbmRzL3RhYmxlY21k cy5jICovCiAJQVRfQWx0ZXJDb2x1bW5UeXBlLAkJCS8qIGFsdGVyIGNvbHVtbiB0eXBlICov CiAJQVRfQWx0ZXJDb2x1bW5HZW5lcmljT3B0aW9ucywJLyogYWx0ZXIgY29sdW1uIE9QVElP TlMgKC4uLikgKi8KQEAgLTI0OTUsMTEgKzI0OTgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFy aWFibGVTaG93U3RtdAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUNyZWF0ZSBU YWJsZSBTdGF0ZW1lbnQKICAqCi0gKiBOT1RFOiBpbiB0aGUgcmF3IGdyYW0ueSBvdXRwdXQs IENvbHVtbkRlZiBhbmQgQ29uc3RyYWludCBub2RlcyBhcmUKLSAqIGludGVybWl4ZWQgaW4g dGFibGVFbHRzLCBhbmQgY29uc3RyYWludHMgYW5kIG5uY29uc3RyYWludHMgYXJlIE5JTC4g IEFmdGVyCi0gKiBwYXJzZSBhbmFseXNpcywgdGFibGVFbHRzIGNvbnRhaW5zIGp1c3QgQ29s dW1uRGVmcywgbm5jb25zdHJhaW50cyBjb250YWlucwotICogQ29uc3RyYWludCBub2RlcyBv ZiBDT05TVFJfTk9UTlVMTCB0eXBlIGZyb20gdmFyaW91cyBzb3VyY2VzLCBhbmQKLSAqIGNv bnN0cmFpbnRzIGNvbnRhaW5zIGp1c3QgQ09OU1RSX0NIRUNLIENvbnN0cmFpbnQgbm9kZXMu CisgKiBOT1RFOiBpbiB0aGUgcmF3IGdyYW0ueSBvdXRwdXQsIENvbHVtbkRlZiwgUGVyaW9k RGVmLCBhbmQgQ29uc3RyYWludCBub2RlcyBhcmUKKyAqIGludGVybWl4ZWQgaW4gdGFibGVF bHRzOyBwZXJpb2RzLCBjb25zdHJhaW50cywgYW5kIG5uY29uc3RyYWludHMgYXJlIE5JTC4g IEFmdGVyCisgKiBwYXJzZSBhbmFseXNpcywgdGFibGVFbHRzIGNvbnRhaW5zIGp1c3QgQ29s dW1uRGVmcywgcGVyaW9kcyBjb250YWlucyBqdXN0IFBlcmlvZERlZnMsCisgKiBubmNvbnN0 cmFpbnRzIGNvbnRhaW5zIENvbnN0cmFpbnQgbm9kZXMgb2YgQ09OU1RSX05PVE5VTEwgdHlw ZSBmcm9tIHZhcmlvdXMgc291cmNlcywKKyAqIGFuZCBjb25zdHJhaW50cyBjb250YWlucyBq dXN0IENPTlNUUl9DSEVDSyBDb25zdHJhaW50IG5vZGVzLgogICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICovCiAKQEAgLTI1MDgsNiArMjUxMSw3IEBAIHR5cGVkZWYgc3RydWN0IENy ZWF0ZVN0bXQKIAlOb2RlVGFnCQl0eXBlOwogCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyog cmVsYXRpb24gdG8gY3JlYXRlICovCiAJTGlzdAkgICAqdGFibGVFbHRzOwkJLyogY29sdW1u IGRlZmluaXRpb25zIChsaXN0IG9mIENvbHVtbkRlZikgKi8KKwlMaXN0CSAgICpwZXJpb2Rz OwkJLyogcGVyaW9kcyAobGlzdCBvZiBQZXJpb2REZWYgbm9kZXMpICovCiAJTGlzdAkgICAq aW5oUmVsYXRpb25zOwkvKiByZWxhdGlvbnMgdG8gaW5oZXJpdCBmcm9tIChsaXN0IG9mCiAJ CQkJCQkJCSAqIFJhbmdlVmFyKSAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJvdW5k OwkvKiBGT1IgVkFMVUVTIGNsYXVzZSAqLwpAQCAtMjUyMiw2ICsyNTI2LDMwIEBAIHR5cGVk ZWYgc3RydWN0IENyZWF0ZVN0bXQKIAlib29sCQlpZl9ub3RfZXhpc3RzOwkvKiBqdXN0IGRv IG5vdGhpbmcgaWYgaXQgYWxyZWFkeSBleGlzdHM/ICovCiB9IENyZWF0ZVN0bXQ7CiAKKwor LyogLS0tLS0tLS0tLQorICogRGVmaW5pdGlvbnMgZm9yIHBlcmlvZHMgaW4gQ3JlYXRlU3Rt dAorICogLS0tLS0tLS0tLQorICovCisKK3R5cGVkZWYgc3RydWN0IFBlcmlvZERlZgorewor CU5vZGVUYWcJCXR5cGU7CisJT2lkCQkJb2lkOwkJCS8qIHBlcmlvZCBvaWQsIG9uY2UgaXQn cyB0cmFuc2Zvcm1lZCAqLworCWNoYXIJICAgKnBlcmlvZG5hbWU7CQkvKiBwZXJpb2QgbmFt ZSAqLworCWNoYXIJICAgKnN0YXJ0Y29sbmFtZTsJLyogbmFtZSBvZiBzdGFydCBjb2x1bW4g Ki8KKwljaGFyCSAgICplbmRjb2xuYW1lOwkJLyogbmFtZSBvZiBlbmQgY29sdW1uICovCisJ QXR0ck51bWJlcglzdGFydGF0dG51bTsJLyogYXR0bnVtIG9mIHRoZSBzdGFydCBjb2x1bW4g Ki8KKwlBdHRyTnVtYmVyCWVuZGF0dG51bTsJCS8qIGF0dG51bSBvZiB0aGUgZW5kIGNvbHVt biAqLworCUF0dHJOdW1iZXIJcm5nYXR0bnVtOwkJLyogYXR0bnVtIG9mIHRoZSBHRU5FUkFU RUQgcmFuZ2UgY29sdW1uICovCisJTGlzdAkgICAqb3B0aW9uczsJCS8qIG9wdGlvbnMgZnJv bSBXSVRIIGNsYXVzZSAqLworCWNoYXIJICAgKmNvbnN0cmFpbnRuYW1lOwkvKiBuYW1lIG9m IHRoZSBDSEVDSyBjb25zdHJhaW50ICovCisJY2hhcgkgICAqcmFuZ2V0eXBlbmFtZTsJLyog bmFtZSBvZiB0aGUgcmFuZ2UgdHlwZSAqLworCU9pZAkJCWNvbHR5cGlkOwkJLyogdGhlIHN0 YXJ0L2VuZCBjb2wgdHlwZSAqLworCU9pZAkJCXJuZ3R5cGlkOwkJLyogdGhlIHJhbmdlIHR5 cGUgdG8gdXNlICovCisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3Ig LTEgaWYgdW5rbm93biAqLworfSBQZXJpb2REZWY7CisKIC8qIC0tLS0tLS0tLS0KICAqIERl ZmluaXRpb25zIGZvciBjb25zdHJhaW50cyBpbiBDcmVhdGVTdG10CiAgKgpAQCAtMzIzMyw2 ICszMjYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTdG10CiAJTGlzdAkgICAqaW5kZXhQ YXJhbXM7CS8qIGNvbHVtbnMgdG8gaW5kZXg6IGEgbGlzdCBvZiBJbmRleEVsZW0gKi8KIAlM aXN0CSAgICppbmRleEluY2x1ZGluZ1BhcmFtczsJLyogYWRkaXRpb25hbCBjb2x1bW5zIHRv IGluZGV4OiBhIGxpc3QKIAkJCQkJCQkJCQkgKiBvZiBJbmRleEVsZW0gKi8KKwlQZXJpb2RE ZWYgICpwZXJpb2Q7CQkJLyogVGhlIHBlcmlvZCBpbmNsdWRlZCBpbiB0aGUgaW5kZXggKi8K IAlMaXN0CSAgICpvcHRpb25zOwkJLyogV0lUSCBjbGF1c2Ugb3B0aW9uczogYSBsaXN0IG9m IERlZkVsZW0gKi8KIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbiAo cGFydGlhbC1pbmRleCBwcmVkaWNhdGUpICovCiAJTGlzdAkgICAqZXhjbHVkZU9wTmFtZXM7 IC8qIGV4Y2x1c2lvbiBvcGVyYXRvciBuYW1lcywgb3IgTklMIGlmIG5vbmUgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmggYi9zcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oCmluZGV4IDE0MDY1ODk0Nzc5Li5kODRkMDJiMDI4 MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaAorKysg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oCkBAIC00MCw1ICs0MCw2IEBA IGV4dGVybiBJbmRleFN0bXQgKmdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpo ZWFwUmVsLAogCQkJCQkJCQkJCSAgUmVsYXRpb24gc291cmNlX2lkeCwKIAkJCQkJCQkJCQkg IGNvbnN0IHN0cnVjdCBBdHRyTWFwICphdHRtYXAsCiAJCQkJCQkJCQkJICBPaWQgKmNvbnN0 cmFpbnRPaWQpOworZXh0ZXJuIHZvaWQgdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhQZXJpb2RE ZWYgKnBlcmlvZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQQVJTRV9VVElMQ01EX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggMjE0MzZkNWE0MDEuLjk2ZjFmZDdlODNlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaApAQCAtOTYsNiArOTYsOCBAQCBleHRlcm4gT2lkCWdldF9h dHR0eXBlKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pOwogZXh0ZXJuIHZvaWQgZ2V0 X2F0dHR5cGV0eXBtb2Rjb2xsKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJ CQkJCSAgT2lkICp0eXBpZCwgaW50MzIgKnR5cG1vZCwgT2lkICpjb2xsaWQpOwogZXh0ZXJu IERhdHVtIGdldF9hdHRvcHRpb25zKE9pZCByZWxpZCwgaW50MTYgYXR0bnVtKTsKK2V4dGVy biBjaGFyICpnZXRfcGVyaW9kbmFtZShPaWQgcGVyaW9kaWQsIGJvb2wgbWlzc2luZ19vayk7 CitleHRlcm4gT2lkCWdldF9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVy aW9kbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBPaWQJZ2V0X2Nhc3Rfb2lkKE9p ZCBzb3VyY2V0eXBlaWQsIE9pZCB0YXJnZXR0eXBlaWQsIGJvb2wgbWlzc2luZ19vayk7CiBl eHRlcm4gY2hhciAqZ2V0X2NvbGxhdGlvbl9uYW1lKE9pZCBjb2xsb2lkKTsKIGV4dGVybiBi b29sIGdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKE9pZCBjb2xsb2lkKTsKQEAgLTE5 OCw2ICsyMDAsNyBAQCBleHRlcm4gT2lkCWdldF9yYW5nZV9zdWJ0eXBlKE9pZCByYW5nZU9p ZCk7CiBleHRlcm4gT2lkCWdldF9yYW5nZV9jb2xsYXRpb24oT2lkIHJhbmdlT2lkKTsKIGV4 dGVybiBPaWQJZ2V0X3JhbmdlX211bHRpcmFuZ2UoT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBP aWQJZ2V0X211bHRpcmFuZ2VfcmFuZ2UoT2lkIG11bHRpcmFuZ2VPaWQpOworZXh0ZXJuIE9p ZAlnZXRfc3VidHlwZV9yYW5nZShPaWQgc3VidHlwZU9pZCk7CiBleHRlcm4gT2lkCWdldF9p bmRleF9jb2x1bW5fb3BjbGFzcyhPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8pOwogZXh0ZXJu IGJvb2wgZ2V0X2luZGV4X2lzcmVwbGlkZW50KE9pZCBpbmRleF9vaWQpOwogZXh0ZXJuIGJv b2wgZ2V0X2luZGV4X2lzdmFsaWQoT2lkIGluZGV4X29pZCk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9zeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUu aAppbmRleCAzZmIzMzE0YjZjYS4uYzk0MmU4NjczODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3N5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUu aApAQCAtNzUsNiArNzUsOCBAQCBlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCVBBUkFNRVRF UkFDTE5BTUUsCiAJUEFSQU1FVEVSQUNMT0lELAogCVBBUlRSRUxJRCwKKwlQRVJJT0ROQU1F LAorCVBFUklPRE9JRCwKIAlQUk9DTkFNRUFSR1NOU1AsCiAJUFJPQ09JRCwKIAlQVUJMSUNB VElPTk5BTUUsCkBAIC04NCw2ICs4Niw3IEBAIGVudW0gU3lzQ2FjaGVJZGVudGlmaWVyCiAJ UFVCTElDQVRJT05SRUwsCiAJUFVCTElDQVRJT05SRUxNQVAsCiAJUkFOR0VNVUxUSVJBTkdF LAorCVJBTkdFU1VCVFlQRSwKIAlSQU5HRVRZUEUsCiAJUkVMTkFNRU5TUCwKIAlSRUxPSUQs CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9k ZGxfZGVwYXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3Rf ZGRsX2RlcGFyc2UuYwppbmRleCA0ODU2M2IyY2YwMS4uYTk1NGU3MDMzODQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNl LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2Rl cGFyc2UuYwpAQCAtMTgzLDYgKzE4MywxMiBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZv KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0Ryb3BDb25zdHJhaW50OgogCQkJCXN0 cnR5cGUgPSAiRFJPUCBDT05TVFJBSU5UIjsKIAkJCQlicmVhazsKKwkJCWNhc2UgQVRfQWRk UGVyaW9kOgorCQkJCXN0cnR5cGUgPSAiQUREIFBFUklPRCI7CisJCQkJYnJlYWs7CisJCQlj YXNlIEFUX0Ryb3BQZXJpb2Q6CisJCQkJc3RydHlwZSA9ICJEUk9QIFBFUklPRCI7CisJCQkJ YnJlYWs7CiAJCQljYXNlIEFUX1JlQWRkQ29tbWVudDoKIAkJCQlzdHJ0eXBlID0gIihyZSkg QUREIENPTU1FTlQiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wZXJpb2RzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVy aW9kcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY0ODFj OWIzMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w ZXJpb2RzLm91dApAQCAtMCwwICsxLDE3NyBAQAorLyogU3lzdGVtIHBlcmlvZHMgYXJlIG5v dCBpbXBsZW1lbnRlZCAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRl LCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpKTsKK0VSUk9SOiAg UEVSSU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkCitMSU5FIDI6IGNyZWF0 ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBz eS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy8qIFBlcmlvZHMgbXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1bW5zICovCitj cmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBm b3IgcCAoYm9ndXMsIGRlKSk7CitFUlJPUjogIGNvbHVtbiAiYm9ndXMiIG9mIHJlbGF0aW9u ICJwdCIgZG9lcyBub3QgZXhpc3QKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsKK0VSUk9SOiAgY29s dW1uICJib2d1cyIgb2YgcmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAorLyogRGF0YSB0 eXBlcyBtdXN0IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJS T1I6ICBzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Ygc2FtZSB0 eXBlCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHRleHQgY29sbGF0ZSAiQyIs IGRlIHRleHQgY29sbGF0ZSAiUE9TSVgiLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJS T1I6ICBzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNv bGxhdGlvbgorLyogUGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9y IGNsYXNzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1s LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBubyByYW5nZSB0eXBlIGZvciB4 bWwgZm91bmQgZm9yIHBlcmlvZCBwCitISU5UOiAgWW91IGNhbiBkZWZpbmUgYSBjdXN0b20g cmFuZ2UgdHlwZSB3aXRoIENSRUFURSBUWVBFCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1l cyBhcmUgaW4gdGhlIHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGlu dGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitF UlJPUjogIHBlcmlvZCBuYW1lICJjdGlkIiBjb25mbGljdHMgd2l0aCBhIHN5c3RlbSBjb2x1 bW4gbmFtZQorY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRl LCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImlkIiBj b25mbGljdHMgd2l0aCBhIGNvbHVtbiBuYW1lCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBn aXZlbiBtb3JlIHRoYW4gb25jZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3IgcCAo ZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJwIiBzcGVjaWZpZWQgbW9yZSB0aGFu IG9uY2UKKy8qIE5vdyBtYWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQg KGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7 CisvKiBTRUxFQ1QgKiBleGNsdWRlcyB0aGUgUEVSSU9EICovCitpbnNlcnQgaW50byBwdCB2 YWx1ZXMgKDEsICcyMDAwLTAxLTAxJywgJzIwMDEtMDEtMDEnKTsKK3NlbGVjdCAqIGZyb20g cHQ7CisgaWQgfCAgICAgZHMgICAgIHwgICAgIGRlICAgICAKKy0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAxIHwgMDEtMDEtMjAwMCB8IDAxLTAxLTIwMDEKKygxIHJvdykK KworLyogWW91IGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20g cHQ7CisgaWQgfCAgICAgZHMgICAgIHwgICAgIGRlICAgICB8ICAgICAgICAgICAgcCAgICAg ICAgICAgIAorLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgMSB8IDAxLTAxLTIwMDAgfCAwMS0wMS0yMDAxIHwgWzAxLTAxLTIw MDAsMDEtMDEtMjAwMSkKKygxIHJvdykKKworLyogVHdvIGFyZSBva2F5ICovCitjcmVhdGUg dGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAx IChkcywgZGUpLCBwZXJpb2QgZm9yIHAyIChkcywgZGUpKTsKK2Ryb3AgdGFibGUgcHQyOwor LyoKKyAqIEFMVEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVyIHRhYmxlIHB0IGRyb3AgcGVy aW9kIGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUg KGRzLCBkZSk7CitFUlJPUjogIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBv cnRlZAorYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKKy8qIEFk ZGluZyBhIHNlY29uZCBvbmUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcDEgKGRzLCBkZSkpOworYWx0ZXIgdGFibGUg cHQyIGFkZCBwZXJpb2QgZm9yIHAyIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBD YW4ndCBkcm9wIGl0cyBjb2x1bW5zICovCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBk czsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIGRzIG9mIHRhYmxlIHB0IGJlY2F1c2Ug b3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxl IHB0IGRlcGVuZHMgb24gY29sdW1uIGRzIG9mIHRhYmxlIHB0CitISU5UOiAgVXNlIERST1Ag Li4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorYWx0ZXIg dGFibGUgcHQgZHJvcCBjb2x1bW4gZGU7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBk ZSBvZiB0YWJsZSBwdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRB SUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiBkZSBvZiB0YWJs ZSBwdAorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVu dCBvYmplY3RzIHRvby4KKy8qIENhbid0IGNoYW5nZSB0aGUgZGF0YSB0eXBlcyAqLworYWx0 ZXIgdGFibGUgcHQgYWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOworRVJST1I6ICBj YW5ub3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kCitERVRBSUw6 ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAiZHMiCithbHRlciB0 YWJsZSBwdCBhbHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CitFUlJPUjogIGNhbm5v dCBhbHRlciB0eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBwZXJpb2QKK0RFVEFJTDogIHBl cmlvZCBwIG9uIHRhYmxlIHB0IGRlcGVuZHMgb24gY29sdW1uICJkcyIKKy8qIGNvbHVtbi9w ZXJpb2QgbmFtZXNwYWNlIGNvbmZsaWN0cyAqLworYWx0ZXIgdGFibGUgcHQgYWRkIGNvbHVt biBwIGludGVnZXI7CitFUlJPUjogIGNvbHVtbiBuYW1lICJwIiBjb25mbGljdHMgd2l0aCBh IHBlcmlvZCBuYW1lCithbHRlciB0YWJsZSBwdCByZW5hbWUgY29sdW1uIGlkIHRvIHA7CitF UlJPUjogIGNvbHVtbiBuYW1lICJwIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lCith bHRlciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZvciB0YWJsZW9pZCAoZHMsIGRlKTsKK0VSUk9S OiAgcGVyaW9kIG5hbWUgInRhYmxlb2lkIiBjb25mbGljdHMgd2l0aCBhIHN5c3RlbSBjb2x1 bW4gbmFtZQorYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgIi4uLi4uLi4ucGcuZHJv cHBlZC40Li4uLi4uLi4iIChkcywgZGUpOworRVJST1I6ICBwZXJpb2QgbmFtZSAiLi4uLi4u Li5wZy5kcm9wcGVkLjQuLi4uLi4uLiIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZQor LyogYWRkaW5nIGNvbHVtbnMgYW5kIHRoZSBwZXJpb2QgYXQgdGhlIHNhbWUgdGltZSAqLwor Y3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlcik7CithbHRlciB0YWJsZSBwdDIgYWRkIGNv bHVtbiBkcyBkYXRlLCBhZGQgY29sdW1uIGRlIGRhdGUsIGFkZCBwZXJpb2QgZm9yIHAgKGRz LCBkZSk7Citkcm9wIHRhYmxlIHB0MjsKKy8qIEFtYmlndW91cyByYW5nZSB0eXBlcyByYWlz ZSBhbiBlcnJvciAqLworY3JlYXRlIHR5cGUgbXlkYXRlcmFuZ2UgYXMgcmFuZ2Uoc3VidHlw ZT1kYXRlKTsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgYW1iaWd1b3VzIHJhbmdlIGZvciB0 eXBlIGRhdGUKKy8qIFlvdSBjYW4gZ2l2ZSBhbiBleHBsaWNpdCByYW5nZSB0eXBlICovCitj cmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnbXlkYXRlcmFuZ2UnKSk7Citkcm9wIHR5 cGUgbXlkYXRlcmFuZ2U7CitFUlJPUjogIGNhbm5vdCBkcm9wIHR5cGUgbXlkYXRlcmFuZ2Ug YmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgcGVyaW9kIHAg b24gdGFibGUgcHQyIGRlcGVuZHMgb24gdHlwZSBteWRhdGVyYW5nZQorSElOVDogIFVzZSBE Uk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK2Ry b3AgdHlwZSBteWRhdGVyYW5nZSBjYXNjYWRlOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0 byBwZXJpb2QgcCBvbiB0YWJsZSBwdDIKK2Ryb3AgdGFibGUgcHQyOworY3JlYXRlIHRhYmxl IHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkg d2l0aCAocmFuZ2V0eXBlID0gJ2RhdGVyYW5nZScpKTsKKy8qIFJhbmdlIHR5cGUgaXMgbm90 IGZvdW5kICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUs IHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnbm90YXJhbmdlJykp OworRVJST1I6ICBSYW5nZSB0eXBlIG5vdGFyYW5nZSBub3QgZm91bmQKKy8qIFJhbmdlIHR5 cGUgaXMgdGhlIHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9 ICd0c3R6cmFuZ2UnKSk7CitFUlJPUjogIFJhbmdlIHR5cGUgdHN0enJhbmdlIGRvZXMgbm90 IG1hdGNoIGNvbHVtbiB0eXBlIGRhdGUKK2Ryb3AgdGFibGUgcHQyOworLyogQ1JFQVRFIFRB QkxFIChMSUtFIC4uLikgKi8KKy8qIFBlcmlvZHMgYXJlIG5vdCBjb3BpZWQgYnkgTElLRSwg c28gdGhlaXIgY29sdW1ucyBhcmVuJ3QgZWl0aGVyICovCitjcmVhdGUgdGFibGUgcHQyIChs aWtlIHB0KTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQyIgor IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCist LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBp ZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAgfCBk YXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKKworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4gYWRk IGEgcGVyaW9kIHJlZmVycmluZyB0byBMSUtFJ2QgY29sdW1ucyAqLworY3JlYXRlIHRhYmxl IG5vdF9wIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlKTsKK2NyZWF0ZSB0YWJsZSBw dDIgKGxpa2Ugbm90X3AsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAg ICAgICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CitQZXJpb2RzOgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJw dDJfcF9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2Fu IGFkZCBhIHBlcmlvZCB3aXRoIHRoZSBzYW1lIG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIg KGxpa2UgcHQsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAgICAgICAg ICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJp b2RzOgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcF9j aGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFkZCBh IHBlcmlvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxp a2UgcHQsIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAg ICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8 IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9k czoKKyAgICBwMiAoZHMsIGRlKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInB0Ml9wMl9j aGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuJ3QgYWRk IGEgcGVyaW9kIHdob3NlIG5hbWUgY29uZmxpY3RzIHdpdGggYSBMSUtFJ2QgY29sdW1uICov CitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsK K0VSUk9SOiAgcGVyaW9kIG5hbWUgImlkIiBjb25mbGljdHMgd2l0aCBhIGNvbHVtbiBuYW1l CisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKy8qIENhbid0IGluaGVyaXQgZnJvbSBh IHRhYmxlIHdpdGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKG5hbWUgdGV4dCkg aW5oZXJpdHMgKHB0KTsKK0VSUk9SOiAgSW5oZXJpdGluZyBmcm9tIGEgdGFibGUgd2l0aCBh IFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkCisvKiBDYW4ndCBpbmhlcml0IHdpdGggYSBwZXJp b2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CitFUlJPUjogIEluaGVyaXRpbmcg aXMgbm90IHN1cHBvcnRlZCB3aGVuIGEgdGFibGUgaGFzIGEgUEVSSU9ECitkcm9wIHRhYmxl IG5vdF9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggY2MyZjZiNDZl MGMuLmQ2YjhiOTZkODhlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAg LTQzLDcgKzQzLDcgQEAgdGVzdDogY29weSBjb3B5c2VsZWN0IGNvcHlkbWwgaW5zZXJ0IGlu c2VydF9jb25mbGljdAogIyBOb3RlOiBtYW55IG9mIHRoZSB0ZXN0cyBpbiBsYXRlciBncm91 cHMgZGVwZW5kIG9uIGNyZWF0ZV9pbmRleAogIyAtLS0tLS0tLS0tCiB0ZXN0OiBjcmVhdGVf ZnVuY3Rpb25fYyBjcmVhdGVfbWlzYyBjcmVhdGVfb3BlcmF0b3IgY3JlYXRlX3Byb2NlZHVy ZSBjcmVhdGVfdGFibGUgY3JlYXRlX3R5cGUgY3JlYXRlX3NjaGVtYQotdGVzdDogY3JlYXRl X2luZGV4IGNyZWF0ZV9pbmRleF9zcGdpc3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5n IGluZGV4X2luY2x1ZGluZ19naXN0Cit0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4 X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaW5nX2dp c3QgcGVyaW9kcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxl bCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZjBiZTg5MDIxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApAQCAtMCwwICsxLDExOSBAQAorLyog U3lzdGVtIHBlcmlvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCAqLworY3JlYXRlIHRhYmxlIHB0 IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90aW1l IChkcywgZGUpKTsKKworLyogUGVyaW9kcyBtdXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMg Ki8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVy aW9kIGZvciBwIChib2d1cywgZGUpKTsKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwg ZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsKKworLyogRGF0 YSB0eXBlcyBtdXN0IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50 ZWdlciwgZHMgZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOwor Y3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0IGNvbGxhdGUgIkMiLCBkZSB0 ZXh0IGNvbGxhdGUgIlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyogUGVy aW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNsYXNzICovCitjcmVh dGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJpb2QgZm9yIHAg KGRzLCBkZSkpOworCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUgaW4gdGhlIHNh bWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUs IGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitjcmVhdGUgdGFibGUgcHQg KGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkp OworCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBnaXZlbiBtb3JlIHRoYW4gb25jZSAqLwor Y3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2Qg Zm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIE5vdyBtYWtl IG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFNFTEVDVCAqIGV4 Y2x1ZGVzIHRoZSBQRVJJT0QgKi8KK2luc2VydCBpbnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAt MDEtMDEnLCAnMjAwMS0wMS0wMScpOworc2VsZWN0ICogZnJvbSBwdDsKKworLyogWW91IGNh biBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20gcHQ7CisKKy8qIFR3 byBhcmUgb2theSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMsIGRlKSwgcGVyaW9kIGZvciBwMiAoZHMsIGRl KSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyoKKyAqIEFMVEVSIFRBQkxFIHRlc3RzCisgKi8K K2FsdGVyIHRhYmxlIHB0IGRyb3AgcGVyaW9kIGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRk IHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSk7CithbHRlciB0YWJsZSBwdCBhZGQg cGVyaW9kIGZvciBwIChkcywgZGUpOworCisvKiBBZGRpbmcgYSBzZWNvbmQgb25lICovCitj cmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2Qg Zm9yIHAxIChkcywgZGUpKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwMiAo ZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4ndCBkcm9wIGl0cyBjb2x1bW5z ICovCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK2FsdGVyIHRhYmxlIHB0IGRy b3AgY29sdW1uIGRlOworCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEgdHlwZXMgKi8KK2Fs dGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKK2FsdGVyIHRh YmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKKworLyogY29sdW1uL3Bl cmlvZCBuYW1lc3BhY2UgY29uZmxpY3RzICovCithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1u IHAgaW50ZWdlcjsKK2FsdGVyIHRhYmxlIHB0IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKK2Fs dGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHRhYmxlb2lkIChkcywgZGUpOworYWx0ZXIg dGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4uLi4uLi4i IChkcywgZGUpOworCisvKiBhZGRpbmcgY29sdW1ucyBhbmQgdGhlIHBlcmlvZCBhdCB0aGUg c2FtZSB0aW1lICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyKTsKK2FsdGVyIHRh YmxlIHB0MiBhZGQgY29sdW1uIGRzIGRhdGUsIGFkZCBjb2x1bW4gZGUgZGF0ZSwgYWRkIHBl cmlvZCBmb3IgcCAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBBbWJpZ3VvdXMg cmFuZ2UgdHlwZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdl IGFzIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFlvdSBjYW4g Z2l2ZSBhbiBleHBsaWNpdCByYW5nZSB0eXBlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBp bnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5n ZXR5cGUgPSAnbXlkYXRlcmFuZ2UnKSk7Citkcm9wIHR5cGUgbXlkYXRlcmFuZ2U7Citkcm9w IHR5cGUgbXlkYXRlcmFuZ2UgY2FzY2FkZTsKK2Ryb3AgdGFibGUgcHQyOworY3JlYXRlIHRh YmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBk ZSkgd2l0aCAocmFuZ2V0eXBlID0gJ2RhdGVyYW5nZScpKTsKKworLyogUmFuZ2UgdHlwZSBp cyBub3QgZm91bmQgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdub3RhcmFu Z2UnKSk7CisKKy8qIFJhbmdlIHR5cGUgaXMgdGhlIHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0 YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywg ZGUpIHdpdGggKHJhbmdldHlwZSA9ICd0c3R6cmFuZ2UnKSk7Citkcm9wIHRhYmxlIHB0MjsK KworLyogQ1JFQVRFIFRBQkxFIChMSUtFIC4uLikgKi8KKworLyogUGVyaW9kcyBhcmUgbm90 IGNvcGllZCBieSBMSUtFLCBzbyB0aGVpciBjb2x1bW5zIGFyZW4ndCBlaXRoZXIgKi8KK2Ny ZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKwor LyogQ2FuIGFkZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8gTElLRSdkIGNvbHVtbnMgKi8KK2Ny ZWF0ZSB0YWJsZSBub3RfcCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSk7CitjcmVh dGUgdGFibGUgcHQyIChsaWtlIG5vdF9wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQg cHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCB3aXRoIHRoZSBz YW1lIG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcCAo ZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4gYWRkIGEgcGVy aW9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBw dCwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOwor CisvKiBDYW4ndCBhZGQgYSBwZXJpb2Qgd2hvc2UgbmFtZSBjb25mbGljdHMgd2l0aCBhIExJ S0UnZCBjb2x1bW4gKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3Ig aWQgKGRzLCBkZSkpOworCisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKworLyogQ2Fu J3QgaW5oZXJpdCBmcm9tIGEgdGFibGUgd2l0aCBhIHBlcmlvZCAqLworY3JlYXRlIHRhYmxl IHB0MiAobmFtZSB0ZXh0KSBpbmhlcml0cyAocHQpOworCisvKiBDYW4ndCBpbmhlcml0IHdp dGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwg cGVyaW9kIGZvciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CisKK2Ryb3AgdGFi bGUgbm90X3A7Ci0tIAoyLjQyLjAKCg== --------------iqvziU4Z040MH3WdnoYY4mNT--